GNU libc の atanh が完全に正しく丸められる

GNU libcのatanhが完全に正しく丸められるという発表は、数値計算における重要なマイルストーンです。atanhは逆双曲正接関数で、科学技術計算や工学分野で広く使用される基本的な数学関数です。

GNU libcのatanhが完全に正しく丸められるという発表は、数値計算における重要なマイルストーンです。atanhは逆双曲正接関数で、科学技術計算や工学分野で広く使用される基本的な数学関数です。

従来の標準数学ライブラリは、計算結果の誤差が約1 ULP(最後のビットの単位)以内という精度を目指していましたが、完全に正しく丸められるということは、理論上の無限精度の結果を浮動小数点形式で表現する際に、最も近い値になるということを意味しており、これは数値計算の精度において理想的な状態です。単精度浮動小数点数の場合、全入力値は約40億個に限定されるため徹底的なテストが可能ですが、倍精度の場合は入力値が膨大で完全な網羅的テストは現実的ではありません。

現在の主要プロジェクトとして、標準数学ライブラリ関数を段階的に完全に正しく丸められる仕様へ移行する取り組みが行われており、GNU libcのこの実現は数値計算の信頼性と正確性を向上させる重要な進歩となります。

HNの反応

浮動小数点計算の精度向上プロジェクトに対する高い関心を示すコミュニティ。過去のゲーム記録がatanhの変更で影響を受けた具体例や、関連する重要な研究資料へのリンク共有により、技術的な深みのある活発な議論が展開されています。

注目コメント

「この10年間の主要なプロジェクトの一つは、標準数学ライブラリ関数を、従来の精度目標である約1 ULP(最後のビットがずれている)ではなく、完全に正しく丸められた状態へ移行することです。単精度一変数関数の場合、わずか40億個の入力値しかないため、全ての入力値を網羅的にテストするのは容易です。しかし倍精度はあまりに多くの入力値があるため、実行不可能なほどです。」— @jcranmer

元記事を読むHN討議を見る