5
ジョンカーマックの異常な高速逆平方根(Quake III)
ジョンカーマックは(float)(1.0/sqrt(x))、奇妙な0x5f3759df定数を含め、通常の4倍の速度でフロートの逆平方根を計算する、Quake IIIソースコードに特別な機能を備えています。以下のコードを参照してください。誰かがここで何が起こっているのか、なぜこれが通常の実装よりもはるかに速く機能するのかを行ごとに説明できますか? float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); y = * ( float * ) …