[Numpy-discussion] What type should / return in python 3k when applied to two integer types?

Charles R Harris charlesr.harris@gmail....
Thu Aug 27 14:57:40 CDT 2009


On Thu, Aug 27, 2009 at 1:46 PM, Robert Kern <robert.kern@gmail.com> wrote:

> On Thu, Aug 27, 2009 at 12:43, Charles R
> Harris<charlesr.harris@gmail.com> wrote:
> >
> >
> > On Thu, Aug 27, 2009 at 1:27 PM, Robert Kern <robert.kern@gmail.com>
> wrote:
> >>
> >> On Thu, Aug 27, 2009 at 11:24, Charles R
> >> Harris<charlesr.harris@gmail.com> wrote:
> >> > I'm thinking double. There is a potential loss of precision for 64 bit
> >> > ints
> >> > but nothing else seems reasonable for a default. Thoughts?
> >>
> >> Python int / Python int => Python float
> >>
> >> no matter how many decimal places the two ints have. I also say double.
> >
> > What about //?
> >
> > In [1]: x = ones(1, dtype=uint64)
> >
> > In [2]: y = ones(1, dtype=int64)
> >
> > In [3]: floor_divide(x,y).dtype
> > Out[3]: dtype('float64')
>
> Ewww. It should be an appropriate integer type. Probably whatever x*y is.
>

In [5]: (x*y).dtype
Out[5]: dtype('float64')
 ??

The problem is that numpy doesn't have an integer type that can support all
the possible return values. Python doesn't have that problem, so mapping
Python behaviour to numpy is a square peg round hole sort of thing. Float64
doesn't do the job either. The only two really "correct" options would seem
to be raising an error for this combination of types or returning object
arrays containing long ints.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20090827/0dbfe86d/attachment.html 


More information about the NumPy-Discussion mailing list