[C/C++] 快速求 sqrt 倒數的方法
float InvSqrt (float x) {
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}
因為最近都在自己寫 fixed-point 的三角函數運算,所以就莫名其妙地找到這個東西了。
http://blog.ijliao.info/archives/2006/12/04/2739/
詳情可以參考上述網址內容,其實主要就是說Ryszard Sommefeldt回憶起他曾看過的這段code,這段code確實是很有趣,很令人驚訝,在這樣的實作方法下,可以比標準函式庫所提供的方法快四倍。
以下網址還有提到快速的sqrt演算法:
發佈留言
很抱歉,必須登入網站才能發佈留言。