python math domain errors in math.log function

As long as your input is within the half-open interval (0, 1] (not including 0), you are fine. You can’t be too close to zero:

>>> math.log(sys.float_info.min)
-708.3964185322641

So simply checking for exactly zero (maybe as the result of an underflow) should be enough, or alternatively catch the exception and handle it.

EDIT: This also holds for the denormal minimum floating point number:

>>> math.log(sys.float_info.min * sys.float_info.epsilon)
-744.4400719213812

Leave a Comment