最近ブログでこのコードを見つけました - これは Quake3 Engine からのものです。これは、ニュートン ラプソン法を使用して逆平方根を高速に計算するためのものです。
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;
}
する理由は何int i = *(int*)&x;
ですか?代わりに行うint i = (int) x;
と、まったく異なる結果が得られます。