इस समस्या में, हमें एक पूर्णांक 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