平方根倒数快速算法
  RPXY88prxrad 2023年11月02日 43 0



平方根倒数快速算法

  • 前言
  • 版权
  • 推荐
  • 平方根倒数快速算法
  • 背景知识
  • 浮点数
  • 牛顿迭代法
  • 最后


前言

2023-10-27 19:26:49


推荐

什么代码让程序员之神感叹“卧槽”?

平方根倒数快速算法

《雷神之锤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

这部分内容可以在任何一本讲计算机系统的课本的前几章里找到,不再赘述。

牛顿迭代法

最后

我们都有光明的未来

祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  1BnnW8rtw7M9   2023年12月22日   120   0   0 算法i++i++mathMath算法
RPXY88prxrad