平方根倒数快速算法
平方根倒数快速算法
- 前言
- 版权
- 推荐
- 平方根倒数快速算法
- 背景知识
- 浮点数
- 牛顿迭代法
- 最后
前言
2023-10-27 19:26:49
以下内容源自《平方根倒数快速算法》
仅供学习交流使用
版权
禁止其他平台发布时删除以下此话
本文首次发布于CSDN平台
作者是CSDN@日星月云
博客主页是https://jsss-1.blog.csdn.net
禁止其他平台发布时删除以上此话
推荐
什么代码让程序员之神感叹“卧槽”?
平方根倒数快速算法
《雷神之锤III竞技场》源代码中平方根倒数速算法如下:
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
return y;
}
背景知识
浮点数
众所周知,32位浮点数是这样存储在计算机中的:
s E M
[31] [30 - 23] [22 - 0]
即:1位符号位(sign),8位指数位(exponent),23位尾数(mantissa),指数被偏置127以适应正指数和负指数,尾数不存储前导1,因此将M视为小数点右边的二进制数,因此M/223 ∈(0,1)表示的值为:
x =(-1)S(1+ M/223)2E-127
这部分内容可以在任何一本讲计算机系统的课本的前几章里找到,不再赘述。
牛顿迭代法
最后
我们都有光明的未来
祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦