[Numpy-discussion] Strange Error with NumPy

David Warde-Farley dwf@cs.toronto....
Thu Aug 6 17:16:57 CDT 2009


On 6-Aug-09, at 6:01 PM, Nanime Puloski wrote:

> Can anyone explain to me why I receive an error(AtrributeError) in  
> NumPy
> when I do numpy.sin(2**64), but not when I do numpy.sin(2.0**64),
> numpy.sin(float(2**64)) or even numpy.sin(2)?

In [6]: type(2**64)
Out[6]: <type 'long'>

In [7]: type(2)
Out[7]: <type 'int'>

In [8]: type(2.0**64)
Out[8]: <type 'float'>

Probably because 2**64 yields a long, which is an arbitrary precision  
type in Python, and numpy is having trouble casting it to something it  
can use (it's too big for numpy.int64). Notice that np.sin(2**63 - 1)  
works fine while np.sin(2**63) doesn't - 2**63 - 1 is the largest  
value that an int64 can hold.

You're right that it could be approximately represented as a float32  
or float64, but numpy won't cast from exact types to inexact types  
without you telling it to do so.

I agree that the error message is less than ideal.

David


More information about the NumPy-Discussion mailing list