[Numpy-discussion] uint64 typecasting with scalars broken (?)
Travis Oliphant
oliphant.travis at ieee.org
Mon Apr 23 21:44:20 EDT 2007
Christian Marquardt wrote:
> Hello,
>
> The following is what I expected...
>
> >>> y = 1234
> >>> x = array([1], dtype = "uint64")
> >>> print x + y, (x + y).dtype.type
> [1235] <type 'numpy.uint64'>
>
>
This is "what you expect" only because y is a scalar and cannot
determine the "kind" of the output.
> but is this the way it should be? (numpy 1.0.2, Linux, Intel comilers)
>
> >>> print x[0] + y, type(x[0] + y)
> 1235.0 <type 'numpy.float64'>
>
This is correct (sort of) because in a mixed operation between uint64
and int32, because there is no int128, the sum must be placed in a
float. In reality it should be a long-double float but it was decided
not to perpetuate long double floats like this because then on 64-bit
platforms they would be showing up everywhere.
-Travis
More information about the NumPy-Discussion
mailing list