浮動小数点数小話
概要
浮動小数点数の各種話題を取り扱っています。
筆者がこれまでにブログ、Qiita等に書いた内容の一部と、新規の書き下ろしを含みます。
技術書典16(2024年5月)以降に頒布するバージョン1.1では、いくつかの誤字を訂正しました。
目次
- はじめに
- 第1章 浮動小数点数の基礎
- 1.1 浮動小数点数とは
- 1.2 浮動小数点数の規格
- 1.3 浮動小数点形式
- 1.4 浮動小数点数の数学的な見方
- 1.5 浮動小数点数のビット列による表現
- 1.6 IEEE準拠でない浮動小数点形式
- 第2章 十六進表記
- 2.1 浮動小数点数の十六進表記
- 2.2 二進浮動小数点数の十進表記
- 2.3 十六進表記が役立つ具体的な場面の例
- 第3章 FMA (fused multiply-add) の話
- 3.1 FMAとは、FMAを含む規格
- 3.2 FMAを使うコードの書き方
- 3.3 FMAの実装の落とし穴
- 3.4 ハードウェアFMA
- 第4章 丸め方法とその指定
- 4.1 丸め方法いろいろ
- 4.2 IEEE 754での規定
- 4.3 C言語での丸めの変更方法
- 4.4 各種アーキテクチャの対応状況
- 第5章 二段階丸めとその問題点
- 5.1 中間の精度が64ビットの場合の例 (x87 FPU)
- 5.2 FMAの間違った実装
- 5.3 十進数の場合
- 5.4 幅を縮小する演算
- 5.5 二段階で丸めても問題ない場合
- 5.6 奇数丸めの利用
- 第6章 浮動小数点例外
- 6.1 例外いろいろ
- 6.2 デフォルトの処理方法と状態フラグ
- 6.3 他の処理方法
- 6.4 C言語での扱い
正誤表
これらはバージョン1.1で修正済みです。
- 11ページ
- 誤:
0x1.23ap3
という表記は\(\bigl(1+\frac{2}{16}+\frac{3}{16}+\frac{10}{16^3}\bigr)\times 2^{32}\)という実数を表します。
- 正:
0x1.23ap3
という表記は\(\bigl(1+\frac{2}{16}+\frac{3}{16}+\frac{10}{16^3}\bigr)\times 2^{3}\)という実数を表します。
- 13ページ
- 誤1:
0x1.coffeep7
- 正1:
0x1.c0ffeep7
- 誤2:十進進浮動小数点数
- 正2:十進浮動小数点数
- 43ページ
- 誤:Techinical Specification
- 正:Technical Specification
- 50ページ
- 誤:
- 丸めた結果で判定する:指数部の範囲が無制限だと仮定して丸めた結果が開区間\((-b^{\mathit{emin}},b^{\mathit{emax}})\)に入る場合に例外が発生する。
- 丸める前の値で判定する:演算結果の正確な値が開区間\((-b^{\mathit{emin}},b^{\mathit{emax}})\)に入る場合に例外が発生する。
- 正:
- 丸めた結果で判定する:指数部の範囲が無制限だと仮定して丸めた結果の絶対値が開区間\((0,b^{\mathit{emin}})\)に入る場合に例外が発生する。
- 丸める前の値で判定する:演算結果の正確な値の絶対値が開区間\((0,b^{\mathit{emin}})\)に入る場合に例外が発生する。
- 51ページ
- 誤:denormalized operanod
- 正:denormalized operand
「だめぽラボ」のページトップへ