Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

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. C++ में सिमेट्रिक ट्री C++ में सिमेट्रिक ट्री

    मान लीजिए हमारे पास एक बाइनरी ट्री है और कार्य यह जांचना है कि क्या यह स्वयं की समरूपता का निर्माण करता है या नहीं। एक सिमेट्रिक बाइनरी ट्री स्वयं की दर्पण छवि का निर्माण करता है। उदाहरण के लिए इनपुट-1:             आउटपुट: True व्याख्या: चूंकि दिया गया बाइनरी ट्री

  1. C++ में बाइनरी ट्री टिल्ट C++ में बाइनरी ट्री टिल्ट

    मान लीजिए हमारे पास बाइनरी ट्री का रूट नोड है; कार्य हर नोड के टिल्ट का योग ढूंढना और लौटाना है। बाइनरी ट्री का टिल्ट प्रत्येक लेवल में लेफ्ट सबट्री और राइट सबट्री में चाइल्ड नोड्स के निरपेक्ष अंतर को ढूंढकर बाइनरी ट्री का निर्माण करने के अलावा कुछ नहीं है। किसी विशेष लेवल पर, जिन नोड्स के कोई चाइल्

  1. - C++ में NaN क्या है?

    NaN (Not a Number) की परिभाषा NaN Not a Number का संक्षिप्त रूप है। यह अपरिभाषित या गैर-प्रतिनिधित्व योग्य फ्लोटिंग-पॉइंट एलिमेंट्स को इंगित करता है। NaN का एक उदाहरण किसी ऋणात्मक संख्या का वर्गमूल है, या 0/0 का परिणाम। उदाहरण #include <iostream> #include <cmath> using namespace std; i