On Wed, Dec 29, 2021 at 9:59 AM Charles R Harris <charlesr.har...@gmail.com>
wrote:

> On Tue, Dec 28, 2021 at 2:54 PM Warren Weckesser <
> warren.weckes...@gmail.com> wrote:
>
>> On 12/28/21, Lev Maximov <lev.maxi...@gmail.com> wrote:
>> > On Tue, Dec 28, 2021 at 3:43 PM Evgeni Burovski
>> > <evgeny.burovs...@gmail.com>
>> > wrote:
>> >
>> >> Very nice overview!
>> >>
>> >> One question and one suggestion:
>> >>
>> >> 1. Is integer wraparound guaranteed for signed ints, or is it an
>> >> implementation detail? For unsigned ints, sure, it's straight from a C
>> >> standard; what about signed types however.
>> >>
>> > Signed ints wraparound in just the same way as unsigned, both in C and
>> in
>> > NumPy. Added an illustration.
>>
>> Overflow of *signed* ints in the C language is *undefined behavior*.
>> In practice, most compilers might do what you expect, but the
>> wrap-around behavior is not guaranteed and should not be relied on.
>>
>> Warren
>>
>>
> There used to be one's complement machines. I expect Numpy will break
> badly if it is compiled for anything that doesn't use two's complement.
>

Chuck
>

Yes, according to C standard signed integer overflow is undefined behavior.

So, does NumPy guarantee wraparound for signed ints overflow?
(at least provided that the platform is two's complement)

There is an open issue
"Document behavior of casts and overflows for signed integer types" #17982
https://github.com/numpy/numpy/issues/17982
There is some discussion, but no definitive answer.

As a side note, Rust has both checked/unchecked wraparound arithmetic and
saturated arithmetic
as specialized methods:

pub const fn saturating_add(self, rhs: u32) -> u32
pub fn saturating_add_signed(self, rhs: i32) -> u32       (experimental)
pub const fn saturating_mul(self, rhs: u32) -> u32
etc.

Best wishes,
Lev

> _______________________________________________
> NumPy-Discussion mailing list -- numpy-discussion@python.org
> To unsubscribe send an email to numpy-discussion-le...@python.org
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: lev.maxi...@gmail.com
>
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to