数値計算は浮動小数点数を用いて行うのが現代では一般的である。これは,浮動小数点数がハードウエア的にサポートされ,例えば,有理数演算に比べて圧倒的に高速であるからである。
浮動小数点数の表現は,IBM方式など様々なものがあったが,1985年IEEE754が制定され,標準化された。現在のほとんどのCPUはIEEE754に従う,浮動小数点数が実装されている。IntelのPentiumもそうである。
IEEE754とはどんなものか。IEEE754によって標準化されているのは2進の倍精度浮動小数点数である。
まず,規格を読んでおく必要がある。浮動小数点数の規格IEEE754はつぎのサイトでその規格書を読むことができる。
IEEE Standard for Binary Floating-Point Arithmetic
この規格書を読んでみましょう。PentiumIII,IVやSunのCPUなどほとんどすべての計算機はこの規格を満たしています。また、佐賀大皆本さんのIEEE754に関する資料(pdf)が詳しくまた丁寧に書かれていて参考になります。
注意
1. IEEE754の企画書の日本語訳 及びIEEE Standard 754 Floating Point Numbersもある。
2. 解説としては浮動小数点演算についても参考になる。また,当事者であるW. Kahanの解説 もある。 制定の歴史を語った文書もある (An Interview with the Old Man of Floating-Point)。
3.現在ではIntelのPentium CPUを含むほとんどのマシンがIEEE754に従っているが、どのようなCPUが例外かなどは Interval FAQの記録:What machines support IEEE754? が参考になる。
4.また、IEEE754にしたがってどのように浮動小数点演算が実装されているかの例は、例えば、 IntelのPentiumIIIのマニュアルなどを見るとよい。
5.与えれたCPUがIEEE754規格を満たしているかどうかをチェックするプログラムが存在する (TestFloat)。TestFloat1はソフトウエアでシミュレートされた浮動小数点システム SoftFoat と対象としているハードウエアの実行結果を比較して、違いが あるとバグの候補として出力するようなソフトウエアである。
次に、浮動小数点数に親しむことを考えよう。
今回の講義ノートを読んでほしい。C言語を利用することを原則とする。環境としてはWindows+Cygwinを考えよう。Cでかかれた数値計算ツール(著者の開発したもの)Slabを用いることにする。Slabの最新版(Slab121_cyg.tzg 約4M)をここにおくので、利用してほしい。
©大石進一
このページのURIはhttp://www.oishi.info.waseda.ac.jp/~oishi/lec2003/float.htm
最終更新:2003/9/21