[Numpy-discussion] bug triggered by array.astype()

Travis Oliphant oliphant.travis at ieee.org
Sun Jan 29 00:25:04 EST 2006


Gerard Vermeulen wrote:

>>>>from numpy import *
>>>>core.__version__
>>>>        
>>>>
>'0.9.5.2019'
>  
>
>>>>v = linspace(0, 2*pi)
>>>>c = (255<<24)*cos(v) + (255<<16)*cos(v+2*pi/3) + (255<<8)*cos(v+4*pi/3) + 255
>>>>c.astype(UInt32)
>>>>        
>>>>
>Traceback (most recent call last):
>  File "<stdin>", line 1, in ?
>SystemError: Objects/longobject.c:257: bad argument to internal function
>  
>
>
>  
>
Thanks for this test.  The problem stems from the (255<<24) which (on 
32-bit platform) generates a long-integer object.   Currently, 
long-integers are converted to object arrays, thus this operation causes 
your entire calculation to be done using Python objects.

Then, you try to convert the whole thing to UInt32 which is giving the 
error.  I'll look into the error.

In the meantime, you can avoid going through object arrays using an 
int64 scalar:

int64(255<24)*cos(v) + ...


-Travis





More information about the NumPy-Discussion mailing list