On Wed, Jul 23, 2014 at 6:19 PM, Julian Taylor
<jtaylor.deb...@googlemail.com> wrote:
> hi,
> it recently came to my attention that the default integer type in numpy
> on windows 64 bit is a 32 bit integers [0].
> This seems like a quite serious problem as it means you can't use any
> integers created from python integers < 32 bit to index arrays larger
> than 2GB.
> For example np.product(array.shape) which will never overflow on linux
> and mac, can overflow on win64.

Currently, on win64, we use Python long integer objects for `.shape`
and related attributes. I wonder if we could return numpy int64
scalars instead. Then np.product() (or anything else that consumes
these via np.asarray()) would infer the correct dtype for the result.

> I think this is a very dangerous platform difference and a quite large
> inconvenience for win64 users so I think it would be good to fix this.
> This would be a very large change of API and probably also ABI.

Yes. Not only would it be a very large change from the status quo, I
think it introduces *much greater* platform difference than what we
have currently. The assumption that the default integer object
corresponds to the platform C long, whatever that is, is pretty
heavily ingrained.

> But as we also never officially released win64 binaries we could change
> it for from source compilations and give win64 binary distributors the
> option to keep the old ABI/API at their discretion.

That option would make the problem worse, not better.

-- 
Robert Kern
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to