Math.exp(x) = 1.0 となる x はどのような範囲か調べてみた。
% ruby -e ' u1 = (-1.0..1.0).bsearch {|x| 1.0 <= Math.exp(x) } u2 = (-1.0..1.0).bsearch {|x| 1.0 < Math.exp(x) } p [u1, "%a" % u1, Math.exp(u1)] p [u2, "%a" % u2, Math.exp(u2)] ' [-5.551115123125783e-17, "-0x1p-54", 1.0] [1.1102230246251565e-16, "0x1p-53", 1.0000000000000002]
-5.551115123125783e-17 以上 1.1102230246251565e-16 未満のようだ。
0x1p-53 などとぴったりな値なのは... exp(x) は x=0 で y=1 で傾きが 1 なんだから、そりゃそうなるか。
[latest]