क्या Quake के फास्ट इनवर्स स्क्वायर रूट को Rust में लागू किया जा सकता है?
सभी को नमस्कार! मैं Rust सीख रहा हूँ और Quake III Arena गेम के प्रसिद्ध InvSqrt() फंक्शन पर पहुँच गया हूँ, जो bit hacks के माध्यम से 1/sqrt(x) को अविश्वसनीय रूप से तेज़ी से गणना करता है। C/C++ में यह इस प्रकार दिखता है:\n\n```c\nfloat Q_rsqrt(float number) {\n long i;\n float x2, y;\n const float threehalfs = 1.5F;\n\n x2 = number * 0.5F;\n y = number;\n i = * ( long * ) &y; // खतरनाक कास्ट (type punning)\n i = 0x5f3759df - ( i >> 1 ); // जादुई कॉन्स्टेंट\n y = * ( float * ) &i;\n y = y * ( threehalfs - ( x2 * y * y ) ); // एक न्यूटन इटरेशन\n return y;\n}\n```\n\nसमस्या यह है कि Rust में पॉइंटर्स का ऐसा सीधा कास्ट (`*(long*)&y`) अनिर्धारित व्यवहार (UB) माना जाता है और निषिद्ध है। मैंने `transmute` के माध्यम से ऐसा करने का प्रयास किया:\n\n```rust\nfn inv_sqrt(x: f32) -> f32 {\n