本文主要是介绍迭代快速算平方根的c++程序(Carmack的QUAKE3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链接:http://www.zhihu.com/question/20396457/answer/23658441
来源:知乎
/* ================ SquareRootFloat ================ */#include <iostream>
float SquareRootFloat(float number) { long i; float x, y; const float f = 1.5F; x = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); //魔术数 y = * ( float * ) &i; y = y * ( f - ( x * y * y ) ); y = y * ( f - ( x * y * y ) ); //迭代 1/sqrt(number) //y = y * ( f - ( x * y * y ) ); //迭代 1/sqrt(number),如需要更高的精度请迭代多次 return number * y;
}
这篇关于迭代快速算平方根的c++程序(Carmack的QUAKE3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!