Well that's fine for binops with the same types, but it's not so
obvious which type to cast to when mixing signed and unsigned types.
Should the type of N.int32(10)+N.uint32(10) be int32, uint32 or int64?
Given your answer what should the type of N.int64(10)+N.uint64(10) be
(which is the case in the bug)?

The current casting rules for the unsigned + signed integral types in
numpy seems to be:
        int32   uint32  int64   uint64
int32   int32   int64   int64   float64
uint32          uint32  int64   uint64
int64                   int64   float64
uint64                          uint64

This does seem slightly barmy in cases. For reference here is what C uses:
        int32   uint32  int64   uint64
int32   int32   uint32  int64   uint64
uint32          uint32  uint64  uint64
int64                   int64   uint64
uint64                          uint64

So numpy currently seems to prefer to keep sign preserved and extends
the width of the result when it can. C prefers to keep overflows
minimized and never extends the width of the result.

James
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to