[Numpy-discussion] array_equal too strict?

Daπid davidmenhur at gmail.com
Thu Dec 17 09:01:48 EST 2015

On 17 December 2015 at 14:43, Nico Schlömer <nico.schloemer at gmail.com>

> I'm not sure where I'm going wrong here. Any hints?

You are dancing around the boundary between close floating point numbers,
and when you are dealing with ULPs, number of decimal places is a bad
measure. Working with plain numbers, instead of arrays (just so that the
numbers are printed in full detail)

a1 = np.float64(3.1415926535897930)
a2 = np.float64(3.1415926535897939)

They are numerically different:
a2 - a1

In epsilons (defined as the smallest number such that (1 + eps) - 1 > 0):
(a2 - a1) / np.finfo(np.float64).eps

In fact, there is one number in between, two epsilons away from each one:
np.nextafter(a1, a2)

np.nextafter(np.nextafter(a1, 10), 10) - a2

The next number on the other side:
np.nextafter(a1, 0)

For more information:

print np.finfo(np.float64)
Machine parameters for float64
precision= 15   resolution= 1.0000000000000001e-15
machep=   -52   eps=        2.2204460492503131e-16
negep =   -53   epsneg=     1.1102230246251565e-16
minexp= -1022   tiny=       2.2250738585072014e-308
maxexp=  1024   max=        1.7976931348623157e+308
nexp  =    11   min=        -max

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20151217/4d9cbe94/attachment.html>

More information about the NumPy-Discussion mailing list