On Do, 2015-12-17 at 13:43 +0000, Nico Schlömer wrote: > Hi everyone, > > > I noticed a funny behavior in numpy's array_equal. The two arrays > ``` > a1 = numpy.array( > [3.14159265358979320], > dtype=numpy.float64 > ) > a2 = numpy.array( > [3.14159265358979329], > dtype=numpy.float64 > ) > ``` > (differing the in the 18th overall digit) are reported equal by > array_equal:
If you have some spare cycles, maybe you can open a pull request to add np.isclose to the "See Also" section? - Sebastian > ``` > print(numpy.array_equal(a1, a2)) > > # output: true > ``` > That's expected because the difference is only in the 18th overall > digit, and the mantissa length of float64 is 52 bits [1], i.e., approx > 15.6 decimal digits. Moving the difference to the 17th overall digit > should also be fine, however: > ``` > a1 = numpy.array( > [3.1415926535897930], > dtype=numpy.float64 > ) > a2 = numpy.array( > [3.1415926535897939], > dtype=numpy.float64 > ) > > > print(numpy.array_equal(a1, a2)) > # output: false > ``` > It gets even more visible with float32 and its 23 mantissa bits (i.e., > 6.9 decimal digits): > ``` > a1 = numpy.array( > [3.14159260], > dtype=numpy.float32 > ) > a2 = numpy.array( > [3.14159269], > dtype=numpy.float32 > ) > > > print(numpy.array_equal(a1, a2)) > # output: false > ``` > The difference is only in the 9th decimal digit, still `array_equal_ > detects the difference. > > > I'm not sure where I'm going wrong here. Any hints? > > > Cheers, > Nico > > > > > [1] https://docs.scipy.org/doc/numpy-1.10.1/user/basics.types.html > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion
signature.asc
Description: This is a digitally signed message part
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion