[Numpy-discussion] float32 to float64 casting

Charles R Harris charlesr.harris at gmail.com
Fri Nov 16 02:07:08 EST 2012


On Thu, Nov 15, 2012 at 11:37 PM, Charles R Harris <
charlesr.harris at gmail.com> wrote:

>
>
> On Thu, Nov 15, 2012 at 8:24 PM, Gökhan Sever <gokhansever at gmail.com>wrote:
>
>> Hello,
>>
>> Could someone briefly explain why are these two operations are casting my
>> float32 arrays to float64?
>>
>> I1 (np.arange(5, dtype='float32')).dtype
>> O1 dtype('float32')
>>
>> I2 (100000*np.arange(5, dtype='float32')).dtype
>> O2 dtype('float64')
>>
>
> This one is depends on the size of the multiplier and is first present in
> 1.6.0. I suspect it is a side effect of making the type conversion code
> sensitive to magnitude.
>
>
>>
>>
>>
>> I3 (np.arange(5, dtype='float32')[0]).dtype
>> O3 dtype('float32')
>>
>> I4 (1*np.arange(5, dtype='float32')[0]).dtype
>> O4 dtype('float64')
>>
>
> This one probably depends on the fact that the element is a scalar, but
> doesn't look right. Scalars are promoted differently. Also holds in numpy
> 1.5.0 so is of old provenance.
>
>
This one has always bothered me:

In [3]: (-1*arange(5, dtype=uint64)).dtype
Out[3]: dtype('float64')

And there is another where the result is an object array, but I can't
recall it at the moment.

Chuck



> Chuck
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20121116/1d338fea/attachment.html>


More information about the NumPy-Discussion mailing list