Python: OverflowError: math range error

I get a Overflow error when i try this calculation, but i cant figure out why.

1-math.exp(-4*1000000*-0.0641515994108)
1

6 Answers

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.

0

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:

1

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))

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like