多倍長浮動小数演算

Arbitrary-Precision Floating-Point Arithmetic

概要

IEEE 754 の標準的な浮動小数点数では精度が足りない場面 ―― 1000 桁の $\pi$ を求めたい、数値的に不安定な計算を正しく行いたい、常に正しい丸めを保証したい ―― に応えるのが多倍長浮動小数演算である。本シリーズでは、多倍長浮動小数点数の表現・演算から、平方根・N 次根、初等関数、数学定数、そして高速級数計算法(Binary Splitting)まで、データ構造からアルゴリズムまでを全10章で体系的に扱う。

レベル別

  • 入門(1章)

    多倍長浮動小数点数入門

  • 初級(2章)

    多倍長浮動小数点数の表現 / 多倍長浮動小数点演算

  • 中級(3章)

    Float 平方根と逆数平方根 / 高精度初等関数 / 数学定数の計算

  • 上級(4章)

    Zimmermann 再帰平方根 / N 次根の精度倍増 Newton 法 / N 次根の初期近似 / Binary Splitting と超幾何級数

全章一覧

入門 (1 章)

  1. 第1章 多倍長浮動小数点数入門

    IEEE 754 の限界、誤差解析、条件数、多倍長 Float が必要な場面、主要ライブラリ (MPFR, sangi, mpmath)

初級 (2 章)

  1. 第2章 多倍長浮動小数点数の表現

    仮数・指数・符号、正規化、特殊値 (inf, nan)、effective_bits、丸めモード

  2. 第3章 多倍長浮動小数点演算

    加減乗除、正しい丸め、Kahan summation、FloatOps 3 引数 API、buffer 再利用

中級 (3 章)

  1. 第4章 Float 平方根と逆数平方根

    Newton 法による平方根、逆数平方根テーブル、精度倍増、初期近似の構築

  2. 第5章 高精度初等関数

    exp, log, sin, cos, tan, atan、引数削減、Taylor 級数、AGM、正しい丸めの保証

  3. 第6章 数学定数の計算

    π (Chudnovsky, Gauss-Legendre, BBP)、e、γ (Brent-McMillan)、ln 2、Catalan 定数、キャッシュ

上級 (4 章)

  1. 第7章 Zimmermann 再帰平方根

    sqrtrem の再帰分割統治、dc_sqrtrem、3 層の isSquare フィルター

  2. 第8章 N 次根の精度倍増 Newton 法

    $x^n = a$ の Newton 反復、精度倍増、収束次数、多倍長での実装

  3. 第9章 N 次根の初期近似

    double 初期値の精度確保、根抽出の前段階、exponent 正規化

  4. 第10章 Binary Splitting と超幾何級数

    BS の $O(M(n) \log^2 n)$、Chudnovsky π、Brent-McMillan γ、4-way 並列、NTT 連携の限界

読み物

  • コンピュータが 0.1 を蓄えられない話 [読み物]

    なぜ二進法は 0.1 を正確に持てないのか。丸めという取引から、桁を増やして「正しさ」を買い戻す多倍長演算の発想まで、肩の力を抜いて語る。