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