C ++中的快速反平方根
在这个问题上,我们得到一个整数x。我们的任务是计算32位浮点数的快速反平方根() 。
查找数字的平方根的算法在编程中非常有用,例如视频游戏中的矢量归一化, 3D图形等。
算法:
步骤1: 该算法将浮点值转换为整数。
步骤2: 操作整数值并返回平方根倒数的近似值。
步骤3: 使用步骤1中使用的相同方法,将整数值转换回浮点数。
步骤4: 使用牛顿法进行近似以提高精度。
演示算法工作的程序:
示例
#include<iostream>
using namespace std;
float calcInvSqRoot( float n ) {
const float threehalfs = 1.5F;
float y = n;
long i = * ( long * ) &y;
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
y = y * ( threehalfs - ( (n * 0.5F) * y * y ) );
return y;
}
int main(){
int n = 256;
float invSqRoot = calcInvSqRoot(n);
cout<<"数的平方根 "<<n<<" is "<<invSqRoot;
return 0;
}输出-
数的平方根 256 is 0.0623942
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练