この差の原因は、求める点の x が 1 であることと 0 であることだと思われる。 自然対数の方では、x=1 なので、h がとても小さくなったとき、 x+h がオーダーの大きく違う二つの数の足し算となってしまっていて、うまく計算できない。 一方で、sinの方では、x=0 なので、h がとても小さくなっても、x+h (=h) の計算に問題がない。 試しに、自然対数の方で、h=0.5**i と変更して計算を実行してみたところ、 h が小さくなるにつれて順調に誤差が小さくなり、h=1e-15 で誤差も 1e-15 程度になっていた。 これは、このような h では二進数表現をする際に誤差が生じないことが原因であると思われる。 また、sinの方で x=pi として計算を実行してみたところ、 はじめの自然対数の方と同様に途中までしか誤差が減少しない様子が見られた。