IT用語集 › プログラミング › 高速逆平方根

高速逆平方根

プログラミング Svenska → 更新: 2026-10-26

浮動小数点数のビット列を整数として読み、魔法の定数から引き、ニュートン法を1回かけるだけで1/√xを近似するビットハック。

ゲームではライティングや反射、物理演算のためにベクトルの正規化を絶えず行い、そのたびに1/√xが必要になる。1990年代のCPUでは除算も平方根も遅かった。Quake III Arena(1999年)のQ_rsqrtは、IEEE 754の浮動小数点数のビット列を整数として解釈する。指数部は右シフトするとおおよそ対数が半分になる性質を持つ。これを0x5F3759DFから引くと大まかな推定値が得られ、ニュートン・ラフソン法を1回反復すれば誤差は1%未満に収まる。

広く知られるようになったのは、id Softwareが2005年にソースコードを公開してからで、有名になったコメント// what the fuck?もそのまま残っていた。起源は3dfxを経て、Ardent ComputerのGreg Walshまでたどられている。ゲームの発売と同じ年にx86はSSEでrsqrtss命令を獲得したので、今日ではこの技法はほぼ博物館の展示品である。

← 用語集に戻る