I get a Overflow error when i try this calculation, but i cant figure out why.
The number you’re asking math.exp to calculate has, in decimal, over 110,000 digits. That’s slightly outside of the range of a double, so it causes an overflow.
To fix it use:
try: ans = math.exp(200000) except OverflowError: ans = float('inf')
I think the value gets too large to fit into a
double in python which is why you get the
OverflowError. The largest value I can compute the
exp of on my machine in Python is just sligthly larger than 709.78271.
This may give you a clue why:
Notice the 111442 exponent.
Unfortunately, no one explained what the real solution was. I solved the problem using:
from mpmath import *
You can find the documentation below:
Try np.exp() instead of math.exp()
Numpy handles overflows more gracefully, np.exp(999) results in inf
and 1. / (1. + np.exp(999)) therefore simply results in zero
import math import numpy as np print(1-np.exp(-4*1000000*-0.0641515994108))