Hi,
sreal::shift does have wrong bounds on exponent shift (that was copied over
from shift_right).
Bootstrapped/regtested x86_64-linux, comitted as obvious.
Honza
* sreal.h (sreal::shift): Fix sanity check.
Index: sreal.h
===================================================================
--- sreal.h (revision 219073)
+++ sreal.h (working copy)
@@ -87,8 +87,8 @@ public:
/* Zero needs no shifting. */
if (!m_sig)
return *this;
- gcc_checking_assert (s <= SREAL_BITS);
- gcc_checking_assert (s >= -SREAL_BITS);
+ gcc_checking_assert (s <= SREAL_MAX_EXP);
+ gcc_checking_assert (s >= -SREAL_MAX_EXP);
/* Overflows/drop to 0 could be handled gracefully, but hopefully we do not
need to do so. */