この計算を試みるとオーバーフローエラーが発生しますが、その理由はわかりません。
1-math.exp(-4*1000000*-0.0641515994108)
Math.expに計算を依頼する数値は、10進数で110,000桁を超えています。これはdoubleの範囲のわずかに外側にあるため、オーバーフローが発生します。
それを修正するには:
try:
ans = math.exp(200000)
except OverflowError:
ans = float('inf')
値が大きすぎてpythonのdouble
に収まらないので、OverflowError
を取得する理由です。 Pythonでマシン上のexp
を計算できる最大値は、709.78271よりわずかに大きいだけです。
これにより、次の理由がわかります。
http://www.wolframalpha.com/input/?i=math.exp%28-4*1000000*-0.0641515994108%29
111442指数に注意してください。