it.xnews.jp
出典: Computer, Enhance! 原文公開: 2022-09-26 生成: 2026-08-20 読了 約 2 分 model: claude-haiku-4-5 原文: https://www.computerenhance.com/p/turns-are-better-than-radians raw.md

ラジアンより効率的な「ターン」表現

三角関数のコード最適化において、ラジアンではなく「ターン」([0,1] の範囲で円を表現する方法)を使用する方が計算効率が良いと、Computer, Enhance! が2022年9月26日に論じた。多くのコードベースが不要に pi や tau を乗算してから三角関数を呼び出し、ライブラリ実装がすぐに除算し直しているという非効率性を指摘している。

現在のラジアン表現の問題点

多くのプログラムは三角関数を呼び出す前に角度に pi または tau を乗算している。例えば Godot Engine のコードベースでは、周期的な値に tau を乗算してから sin を呼び出しており、AVX2 実装の sin は入力に定数 1.27323954473516(4/pi に相当)を乗算している。このアプローチでは、呼び出し側が pi を乗算し、ライブラリ側がそれを除算するという不要な計算が発生している。

CUDA の sincospi 組み込み関数も入力に pi を乗算した値の正弦と余弦を計算するように設計されており、この非効率性が広く浸透していることが分かる。

円をターン値で表現する図解

ターン表現による効率化

ターン表現では、0 が 0 度、0.25 が 90 度、0.5 が 180 度、0.75 が 270 度、1 が 360 度、2 が 720 度に対応する。この [0,1] の正規化範囲を使用することで、三角関数に直接渡すだけで計算が完結し、余分な乗算や除算が不要になる。

最適化により、pi(3.14159...)や tau(6.28318...)の定数乗算を削除できることで、計算量が削減される。特に大規模なコードベースではこの最適化の効果が顕著になる。

この記事は元記事の事実のみに基づいて自動生成されました。

出典

Computer, Enhance!, "Turns are Better than Radians", https://www.computerenhance.com/p/turns-are-better-than-radians

筆者の見立て

この記事をシェア