樋口です。
----- Original Message -----
From: "Hiroyuki Shimada" <shimaden@....jp>
To: <extremeprogramming-jp@....jp>
Sent: Thursday, March 13, 2003 12:36 AM
Subject: [XP-jp:04208] Re: 浮動小数点演算や幾何演算のテスト
> 浮動小数は初心者なのですが、単純に
> std::numeric_limits<double>::epsilon() ではだめなのでしょうか。
これは「機械イプシロン」と呼ばれ、
1.0 + e != 1.0 となる最小の値 e のことです。
つまり浮動小数点数の「仮数部の精度」を示します。
普通の double だと 2.2204460492503131E-16 とかです。
float だと 1.19209290e-07 とかです。
(環境で異なるので注意。)
「仮数部の精度」なので、
演算をすると、「仮数部」にそれ以上の誤差が発生します。
(a±e) * (b±e) を考えればわかるかと思います。
また、「仮数部の精度」なので、
指数を含んだ値とはそのまま演算できません。
そのまま fabs(x - r) < e というような判定には使うことはできません。
しかし、コンピュータでの数値計算って、
しっかり教えてくれるところないですよねぇ。
困ったもんです。
// 樋口 勝也
// bugbear@....nu