[Numpy-discussion] assert_equal(-0.0, 0.0) fails.

2014-04-14 Thread Warren Weckesser
The test function numpy.testing.assert_equal fails when comparing -0.0 and 0.0:

In [16]: np.testing.assert_equal(-0.0, 0.0)
---
AssertionErrorTraceback (most recent call last)
ipython-input-16-4063bd6da228 in module()
 1 np.testing.assert_equal(-0.0, 0.0)

/Users/warren/anaconda/lib/python2.7/site-packages/numpy/testing/utils.pyc
in assert_equal(actual, desired, err_msg, verbose)
309 elif desired == 0 and actual == 0:
310 if not signbit(desired) == signbit(actual):
-- 311 raise AssertionError(msg)
312 # If TypeError or ValueError raised while using isnan and
co, just handle
313 # as before

AssertionError:
Items are not equal:
 ACTUAL: -0.0
 DESIRED: 0.0

There is code that checks for this specific case, so this is
intentional.  But this is not consistent with how negative zeros in
arrays are compared:

In [22]: np.testing.assert_equal(np.array(-0.0), np.array(0.0))  # PASS

In [23]: a = np.array([-0.0])

In [24]: b = np.array([0.0])

In [25]: np.testing.assert_array_equal(a, b)  # PASS


Is there a reason the values are considered equal in an array, but not
when compared as scalars?

Warren
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] assert_equal(-0.0, 0.0) fails.

2014-04-14 Thread Ralf Gommers
On Mon, Apr 14, 2014 at 1:09 PM, Warren Weckesser 
warren.weckes...@gmail.com wrote:

 The test function numpy.testing.assert_equal fails when comparing -0.0 and
 0.0:

 In [16]: np.testing.assert_equal(-0.0, 0.0)
 ---
 AssertionErrorTraceback (most recent call last)
 ipython-input-16-4063bd6da228 in module()
  1 np.testing.assert_equal(-0.0, 0.0)

 /Users/warren/anaconda/lib/python2.7/site-packages/numpy/testing/utils.pyc
 in assert_equal(actual, desired, err_msg, verbose)
 309 elif desired == 0 and actual == 0:
 310 if not signbit(desired) == signbit(actual):
 -- 311 raise AssertionError(msg)
 312 # If TypeError or ValueError raised while using isnan and
 co, just handle
 313 # as before

 AssertionError:
 Items are not equal:
  ACTUAL: -0.0
  DESIRED: 0.0

 There is code that checks for this specific case, so this is
 intentional.  But this is not consistent with how negative zeros in
 arrays are compared:

 In [22]: np.testing.assert_equal(np.array(-0.0), np.array(0.0))  # PASS

 In [23]: a = np.array([-0.0])

 In [24]: b = np.array([0.0])

 In [25]: np.testing.assert_array_equal(a, b)  # PASS


 Is there a reason the values are considered equal in an array, but not
 when compared as scalars?


Unlikely to be intentional. I expect this was a fix to assert_equal that
wasn't synced to assert_array_equal.

Ralf
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion