Mercurial > hg > octave-nkf
diff liboctave/oct-inttypes.h @ 4920:b22a7a1db0d5
[project @ 2004-07-27 18:15:25 by jwe]
author | jwe |
---|---|
date | Tue, 27 Jul 2004 18:16:18 +0000 |
parents | a1073eef650c |
children | 1a499d0c58f5 |
line wrap: on
line diff
--- a/liboctave/oct-inttypes.h +++ b/liboctave/oct-inttypes.h @@ -279,7 +279,7 @@ octave_int<T1> \ operator OP (const octave_int<T1>& x, const T2& y) \ { \ - return x.value () OP y; \ + return ((x.value () OP y) > std::numeric_limits<T1>::max ()) ? 0 : (x.value () OP y); \ } OCTAVE_INT_BITSHIFT_OP (<<) @@ -287,12 +287,13 @@ template <class T> octave_int<T> -bitshift (const octave_int<T>& a, int n) +bitshift (const octave_int<T>& a, int n, + const octave_int<T>& mask = std::numeric_limits<T>::max ()) { if (n > 0) - return a << n; + return (a.value () << n) & mask.value (); else if (n < 0) - return a >> -n; + return (a.value () >> -n) & mask.value (); else return a; }