IEEE754 での計算機イプシロンの値

計算機イプシロンの定義 その 1 : 「1 と、1より大きい最小の浮動小数点数の差」

計算機イプシロンの定義 その 2 : 「1 と、1より大きい最小の浮動小数点数の差の半分」

Higham は(その1)を, Goldberg, Matlab, LAPACK の S/DLAMCH は(その2)を採用する.

IEEE754 の場合,仮数部のビット長は,暗黙の省略の 1 を含めて 53 ビット. 1 より大きい最小の浮動小数点数は

(-1)^0 x 2^0 x 1.0000000000000000000000000000000000000000000000000001     (仮数部は 2 進法表記)
= 1 + 2^{-52}
したがって Higham 流の定義では,計算機イプシロンの値は 2^{-52} となり, Goldberg 流では 2^{-53} となる.

2^{-52} = 2.220446049250313080847263336181640625 x 10^{-16}
2^{-53} = 1.1102230246251565404236316680908203125 x 10^{-16}
C99 の 16 進浮動小数点表記では
const double MACHINE_EPS = 0x1P-52; // Higham
const double MACHINE_EPS = 0x1P-53; // Goldberg

fujiwara (at) acs.i.kyoto-u.ac.jp