|
From: | John W. Eaton |
Subject: | [Octave-bug-tracker] [bug #54572] int64 does not saturate correctly in negative direction |
Date: | Tue, 28 Aug 2018 02:01:59 -0400 (EDT) |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 |
Follow-up Comment #4, bug #54572 (project octave): Hmm, it seems to work for me: octave:1> (intmin('int64') - 1) ans = -9223372036854775808 octave:2> (intmin('int64') - 2) ans = -9223372036854775808 octave:3> (intmin('int64') - 3) ans = -9223372036854775808 What happens for you with the following? intmin ('int64') - int64 (1) intmin ('int64') - int64 (2) intmin ('int64') - int64 (3) The code for the mixed int64/double operations is in oct-inttypes.cc. The code for the int64 - double is just INT_DOUBLE_BINOP_DECL (-, int64) { return x + (-y); } in which X is an octave_int64 object and Y is a double value. The operator + function tries to be careful about valid ranges but is there trouble here because the range of signed integers is not symmetric? Or is there something else going on here? What code path is taken on your system? _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?54572> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
[Prev in Thread] | Current Thread | [Next in Thread] |