[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