এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা 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