On Thu, Nov 15, 2012 at 11:37 PM, Charles R Harris < charlesr.har...@gmail.com> wrote:
> > > On Thu, Nov 15, 2012 at 8:24 PM, Gökhan Sever <gokhanse...@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 >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion