以下のコードは、いくつかのビット ハックによって高速な逆平方根演算を実行します。このアルゴリズムはおそらく 1990 年代初頭に Silicon Graphics によって開発され、Quake 3 にも登場しました。 より詳しい情報
ただし、 GCC C++ コンパイラから次の警告が表示されます。
static_cast
そのような状況では、reinterpret_cast
またはdynamic_cast
代わりに使用する必要がありますか?
float InverseSquareRoot(float x)
{
float xhalf = 0.5f*x;
int32_t i = *(int32_t*)&x;
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}