※ 引述《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次
但是当我们要计算各种大数字的平方根就会浪费更多时间
而上面的神奇数字就能直接把计算量减低许多
开根号是蛮基础的数学计算 电脑就是各种数字计算
用越高的效率得到平方根 程式的效能就越好
所以这个神奇数字超屌的