学界 vs. 商界
- Yuli - 科学松鼠会汉化: Oicebot & Ent. 0x5f375a86来自一个传奇算法,出自John Carmack开发的《雷神之锤3》的3D引擎. 这个引擎的源代码里包括一个反平方倒数的算法,其速度要比标准的牛顿迭代法快上几十倍,而其中的关键是一行神秘的代码和一个莫名其妙的数字:[ i = 0x5f3759df - ( i >> 1 ); // what the fuck.
恭喜你发现本文的秘密!
0x5f375a86来自一个传奇算法,出自John Carmack开发的《雷神之锤3》的3D引擎。
[ i = 0x5f3759df - ( i >> 1 );
// what the fuck? ] 。没有人知道
Carmack是怎么发现这个数字的。普度大学的数学家Lomont觉得很好玩,于是自己从理论推导出了一个可能的最佳值0x5f375a86,和Carmack的接近但略微好一丁点,他很怀疑Carmack其实是用试错法找到原来的数的……于是Lomont写了一篇文章发表了这个算法,称之为“Fast inverse square root”。天知道还有多少这样的神奇算法藏在各种商业软件里,不为人知。