[NumPy-Tickets] [NumPy] #1882: power function in NumPy returns wrong values withing the dtype range
NumPy Trac
numpy-tickets@scipy....
Mon Jun 27 23:55:32 CDT 2011
#1882: power function in NumPy returns wrong values withing the dtype range
-------------------------+--------------------------------------------------
Reporter: abx_numpy | Owner: somebody
Type: defect | Status: new
Priority: normal | Milestone: Unscheduled
Component: numpy.core | Version: 1.6.0
Keywords: numpy.power |
-------------------------+--------------------------------------------------
numpy.power(a,i) returns wrong values even when they are within the range
determined by dtype. Example:
>>> import math, sys
>>> import numpy as np
>>> a = range(41,56,2)
>>> b = np.array(a); b.dtype
dtype('int64')
>>> for x in a:
... print x, ':', x**10 - math.pow(x,10)
...
41 : 0.0
43 : 0.0
45 : 0.0
47 : 0.0
49 : 0.0
51 : 0.0
53 : 0.0
55 : 0.0
>>> for x in b:
... print x, ':', x**10 - np.power(x,10)
...
41 : 1
43 : 1
45 : 1
47 : 1
49 : 1
51 : -7
53 : -7
55 : -15
>>> # the resuls are wrong only for odd integers:
>>> c = np.array([56],dtype=np.int64)
>>> print c[0], ':', 56**10 - (np.power(c,10))[0]
(56, ':', 0)
>>> d = np.array([57],dtype=np.int64)
>>> print d[0], ':', 57**10 - (np.power(d,10))[0]
(57, ':', -15)
>>> # I am on 64-bit machine (MacBookPro, Intel, 10.6)
>>> 57**10 < sys.maxint
True
>>> sys.maxint - (2**63 - 1)
>>> 0L
>>> i = int(d[0])
>>> i**10 - d[0]**10
0
>>> i**10 - (d**10)[0]
-15
The last two outputs indicate that this is likely the ufunc problem.
--
Ticket URL: <http://projects.scipy.org/numpy/ticket/1882>
NumPy <http://projects.scipy.org/numpy>
My example project
More information about the NumPy-Tickets
mailing list