ここでは,浮動小数点数の丸めの制御について勉強します。言語としてはCおよびC++を基本的には用います。また,数値計算用の言語の利用もします。商用ソフトウエアについても紹介しますが,基本的には,フリーでopen sourceのソフトウエアを紹介します。
現在,最も手にしやすいのは,IntelのCPUをもつパソコンでしょう。また,大学には多くのワークステーションも入っています。ここでは,UNIX系のOSやWindows98などが動いていることでしょう。
以下にこのようなシステムで浮動小数点数の丸めの制御を行う方法を表にまとめてみました。
丸めの制御を行って,数学的に正しい結論を高速に求めるプログラム例を示そう。
a=(a1,a2,…,an)とb=(b1,b2,…,b3)を倍精度浮動小数点数を要素とするn次元ベクトルとする。ベクトルaとbの内積c=(a,b)の値の下限と上限を計算するプログラムを書いてみよう。
問1. 上のプログラムのround.hを実際に自分の環境に適するように作成してプログラムを実行せよ。(解答)
問2. 上のプログラムでは,完全な厳密さという意味では,不完全な所がある。どこか。
丸めの指定が結果にどのような影響を与えるかを見る例を与えよう。次のプログラムを実行してみて欲しい。