← Back to context

Comment by zarzavat

4 hours ago

Apparently Python throws an exception. This surprised me, I expected it to only throw for integers. Throwing for floats is weird and unsafe.

    >>> import math
    >>> math.log(0.0)
    Traceback (most recent call last):
      File "<python-input-2>", line 1, in <module>
        math.log(0.0)
        ~~~~~~~~^^^^^
    ValueError: expected a positive input, got 0.0

though if you use numpy floats you only get a warning:

    >>> import numpy as np
    >>> np.log(np.float64(0))
    <python-input-1>:1: RuntimeWarning: divide by zero encountered in log
    np.float64(-inf)

JavaScript works as expected:

    > Math.log(0.0)
    -Infinity
    > Math.log(-0.0)
    -Infinity
    > Math.log(-0.1)
    NaN