pythonnumpy

Smallest positive float64 number


I need to find a numpy.float64 value that is as close to zero as possible.

Numpy offers several constants that allow to do something similar:

These are both reasonably small, but when I do this

>>> x = np.finfo(np.float64).tiny
>>> x / 2
6.9533558078350043e-310

the result is even smaller. When using an impromptu binary search I can get down to about 1e-323, before the value is rounded down to 0.0.

Is there a constant for this in numpy that I am missing? Alternatively, is there a right way to do this?


Solution

  • Use np.nextafter.

    >>> import numpy as np
    >>> np.nextafter(0, 1)
    4.9406564584124654e-324
    >>> np.nextafter(np.float32(0), np.float32(1))
    1.4012985e-45