平方根倒数速算法(Fast Inverse Square Root)是适用于快速计算积的算术平方根的倒数(在此需取符合IEEE 754标准格式的32位浮点数)的一种算法。此算法最早被认为是由约翰·卡马克所发明,但后来的调查显示,该算法在这之前就于计算机图形学的硬件与软件领域(如SGI和3dfx)有所应用,此算法至今为止仍未能确切知晓算法中所...
因为我们要求的是平方根的倒数,所以我们的初始值 y_0\ge0 ,那么 R_1-[\frac{E}{2}] 必然大于0。要对所有 E \in [0,254] 成立,则 R_1 必然大于等于128。 (这里对上述结论做详细解释:对于偶数 E 来说其最大值为254,则输入 x 的最大值为 X \cdot 2^{127} ,常数 R 转化成类似形式 Y\cdot...
快速求平方根倒数的算法(通常被称为“快速逆平方根”或“Fast Inverse Square Root”,也被称为“0x5f3759df”算法)是一个在早期的计算机图形学(特别是在3D渲染中)中广泛使用的技巧,用于快速近似地计算一个浮点数的平方根倒数。若要求取照明和投影的波动角度与反射效果,就常需计算平方根倒数。这个算法最初是在Int...
在计算平方根的倒数时,传统的计算方法是先计算a的平方根sqrt(a),再计算它的倒数1/sqrt(a)。但在计算平方根时使用了牛顿迭代法,大量的浮点运算速度很慢。 而快速平方根倒数算法则将输入的32位浮点数a作为一个整数i,用“魔术数字”0x5f3759df减去i右移一位的值产生近似的估值y,再使用牛顿迭代法迭代一次,就得...
快速求平方根倒数算法(Fast inverse square root algorithm)是由Quake游戏引擎开发者编写的。这个算法以其神秘和高效而闻名,因为它可以在没有使用平方根函数的情况下快速计算一个数的平方根的倒数。基本步骤如下: 1. 将待求平方根倒数的float浮点数,比如x(不可以是double)转化成一个IEEE 754浮点格式32位int整数: ...
平方根倒数速算法(Fast Inverse Square Root),一种适用于快速计算积的算术平方根的倒数的算法,通常应用于计算机图形学领域,特别是用于计算照明和投影的波动角度与反射效果。此算法最初可能由SGI在90年代初发明,并在1999年《雷神之锤III竞技场》的源代码中应用。该算法显著减少了求平方根倒数时浮点...
平方根倒数速算法(Fast Inverse Square Root)是一种适用于快速计算平方根倒数的算法,尤其适用于计算机图形学领域。该算法通过减少浮点运算操作的耗费,提高计算效率。在《雷神之锤III竞技场》源代码中,该算法实现了快速求平方根倒数的功能,代码中包含了一个被称为“魔数”的常数,即0x5f3759df。该...
代码中的关键步骤是计算初始值$x_0$,通过位操作和位移操作实现这一目标。常数项0x5f3759df在计算$x_0$中扮演着重要角色,其设计基于对输入$x$的二进制表示的深入理解。通过反推计算过程,我们发现该常数旨在将输入$x$的指数部分转换为接近正确的平方根倒数的初始值。在解析算法工作原理的同时,我们...
以下摘自:http://tbl.javaeye.com/blog/231425雷神之锤III》里求平方根倒数的函数(快速平方根(倒数)算法) 至于那个0x5f3759df,呃,我只能说,的确是一个超级的Magic Number。 那个Magic Number是可以推导出来的,但我并不打算在这里讨论,因为实在太繁琐了。简单来说,其原理如下:因为IEEE的浮点数中,尾数M省略了最...
算法有两步是核心,一个就是魔数:0x5f3759df,还有一个就是 y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration 下面介绍如下: 输入 , 目标是计算 ,列出方程就是: 令 则目标就是求解这个方程的根, 这里有牛顿迭代法可以求解,牛顿迭代介绍比较多,这里不再缀述,直接给出公式: ...