Logarithm of zero in Python

Santiago Gil picture Santiago Gil · Mar 23, 2017 · Viewed 9.2k times · Source

I am trying to do a logarithm of zero in Python.

from math import log
log(0)

And this raises me an exception.

ValueError: math domain error

I understand that a log of a negative number is mathematically undefined, and that's why Python's log can raise this ValueError exception. But why does it raise also the exception when calling it with a zero value? It should return a -inf value, and I've seen that infinite numbers can be represented in Python (as in here).

Can I deal with this problem without personally treating it? I mean personally when doing something like this.

from math import log, inf
foo = ... # Random value.
if foo != 0: return log(foo)
else: return -inf

Answer

The Quantum Physicist picture The Quantum Physicist · Mar 23, 2017

Actually Python is not wrong. The logarithm of zero is also undefined, which is because it's a limit, and it's -inf only from the right, not from the left:

enter image description here

So, no, you have to deal with this yourself. That's wrong, but you can do that. something like this: log(x) if x != 0 else -inf.