計算機イプシロンの定義 その 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 進法表記)したがって Higham 流の定義では,計算機イプシロンの値は 2^{-52} となり, Goldberg 流では 2^{-53} となる.
= 1 + 2^{-52}
2^{-52} = 2.220446049250313080847263336181640625 x 10^{-16}C99 の 16 進浮動小数点表記では
2^{-53} = 1.1102230246251565404236316680908203125 x 10^{-16}
const double MACHINE_EPS = 0x1P-52; // Higham
const double MACHINE_EPS = 0x1P-53; // Goldberg