※ 引述《Gwaewluin (神無月 孝臣)》之銘言:
: x2 = number * 0.5F;
: y = number;
: i = * ( long * ) &y; // evil floating point bit level hacking
: (對邪惡浮點數的位元hack)
: i = 0x5f3759df - ( i >> 1 ); // what the fuck?
: y = * ( float * ) &i;
: y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration (第一次迭代)
→ M4Tank: 淦 講中文12/10 18:38
OK
一般而言如果要做平方根計算要怎麼辦? 最爛的辦法就是從1開始算
例如121的平方根 就從1平方 2平方 開始算到11之後得到解答
更好一點的算法就是用/2的
先算121/2也就是60的平方
發現太大了就再/2算30依序下去->15->7->11就會得到答案了
計算量從11次變成5次
但是當我們要計算各種大數字的平方根就會浪費更多時間
而上面的神奇數字就能直接把計算量減低許多
開根號是蠻基礎的數學計算 電腦就是各種數字計算
用越高的效率得到平方根 程式的效能就越好
所以這個神奇數字超屌的