কম্পিউটার

C++ এ দ্রুত বিপরীত বর্গমূল


এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা x দেওয়া হয়েছে। আমাদের কাজ হল দ্রুত বিপরীত বর্গমূল () গণনা করা ) একটি 32-বিট ফ্লোটিং পয়েন্ট সংখ্যা।

সংখ্যার বিপরীত বর্গমূল বের করার অ্যালগরিদমটি প্রোগ্রামিং-এ দারুণ কাজে লাগে, যেমন ভিডিও গেমে ভেক্টর স্বাভাবিককরণ, 3D গ্রাফিক্স, ইত্যাদিতে।

অ্যালগরিদম:

ধাপ 1: অ্যালগরিদম ফ্লোটিং পয়েন্ট মানকে পূর্ণসংখ্যাতে রূপান্তর করে।

ধাপ 2: পূর্ণসংখ্যা মানের উপর কাজ করুন এবং বিপরীত বর্গমূলের আনুমানিক মান প্রদান করুন।

ধাপ 3: ধাপ 1 এ ব্যবহৃত একই পদ্ধতি ব্যবহার করে পূর্ণসংখ্যার মানটিকে ফ্লোটিং পয়েন্টে রূপান্তর করুন।

পদক্ষেপ 4: নিউটনের পদ্ধতি ব্যবহার করে নির্ভুলতা উন্নত করার জন্য অনুমান করা হয়েছে।

অ্যালগরিদমের কাজ চিত্রিত করার জন্য প্রোগ্রাম:

উদাহরণ

#include<iostream>
using namespace std;

float calcInvSqRoot( float n ) {
   
   const float threehalfs = 1.5F;
   float y = n;
   
   long i = * ( long * ) &y;

   i = 0x5f3759df - ( i >> 1 );
   y = * ( float * ) &i;
   
   y = y * ( threehalfs - ( (n * 0.5F) * y * y ) );
   
   return y;
}

int main(){
   
   int n = 256;
   float invSqRoot = calcInvSqRoot(n);
   cout<<"The inverse square root of the number "<<n<<" is "<<invSqRoot;
   
   return 0;
}

আউটপুট −

The inverse square root of the number 256 is 0.0623942

  1. সি++ এ সিমেট্রিক ট্রি

  2. C++ এ বাইনারি ট্রি টিল্ট

  3. C++ অ্যাডাম নম্বর

  4. C++ এ NaN কি?