[GIT] ppl/ppl(master): Fixed assignment to int.
Module: ppl/ppl Branch: master Commit: 7d02c66706d0ae61f3334658327806ddf44be05a URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=7d02c66706d0a...
Author: Abramo Bagnara abramo.bagnara@gmail.com Date: Sun May 3 10:28:04 2009 +0200
Fixed assignment to int.
---
src/checked.cc | 4 ++++ src/checked.defs.hh | 7 +++---- src/checked_int.inlines.hh | 10 +++++----- 3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/checked.cc b/src/checked.cc index e21c25d..3529e87 100644 --- a/src/checked.cc +++ b/src/checked.cc @@ -26,6 +26,10 @@ site: http://www.cs.unipr.it/ppl/ . */
namespace Parma_Polyhedra_Library {
+Minus_Infinity MINUS_INFINITY; +Plus_Infinity PLUS_INFINITY; +Not_A_Number NOT_A_NUMBER; + namespace Checked {
//! Holds the precision parameter used for rational sqrt calculations. diff --git a/src/checked.defs.hh b/src/checked.defs.hh index a1e76a9..207cb41 100644 --- a/src/checked.defs.hh +++ b/src/checked.defs.hh @@ -534,10 +534,9 @@ struct Is_Special<Plus_Infinity> : public True {}; template <> struct Is_Special<Not_A_Number> : public True {};
- -#define MINUS_INFINITY Minus_Infinity() -#define PLUS_INFINITY Plus_Infinity() -#define NOT_A_NUMBER Not_A_Number() +extern Minus_Infinity MINUS_INFINITY; +extern Plus_Infinity PLUS_INFINITY; +extern Not_A_Number NOT_A_NUMBER;
#ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS /*! \ingroup PPL_CXX_interface */ diff --git a/src/checked_int.inlines.hh b/src/checked_int.inlines.hh index 3c20853..d3a5d68 100644 --- a/src/checked_int.inlines.hh +++ b/src/checked_int.inlines.hh @@ -561,9 +561,9 @@ assign_signed_int_mpz(To& to, const mpz_class& from, Rounding_Dir dir) { } if (from.fits_slong_p()) { signed long v = from.get_si(); - if (v < C_Integer<To>::min) + if (v < Extended_Int<To_Policy, To>::min) return set_neg_overflow_int<To_Policy>(to, dir); - if (v > C_Integer<To>::max) + if (v > Extended_Int<To_Policy, To>::max) return set_pos_overflow_int<To_Policy>(to, dir); to = v; return V_EQ; @@ -610,7 +610,7 @@ assign_unsigned_int_mpz(To& to, const mpz_class& from, Rounding_Dir dir) { } if (from.fits_ulong_p()) { unsigned long v = from.get_ui(); - if (v > C_Integer<To>::max) + if (v > Extended_Int<To_Policy, To>::max) return set_pos_overflow_int<To_Policy>(to, dir); to = v; return V_EQ; @@ -1109,7 +1109,7 @@ template <typename To_Policy, typename From_Policy, typename Type> inline Result div_2exp_signed_int(Type& to, const Type x, unsigned int exp, Rounding_Dir dir) { - if (exp >= sizeof(Type) * 8) { + if (exp > sizeof(Type) * 8 - 1) { zero: to = 0; if (round_ignore(dir)) @@ -1121,7 +1121,7 @@ div_2exp_signed_int(Type& to, const Type x, unsigned int exp, else return V_EQ; } - if (exp >= sizeof(Type) * 8 - 1) { + if (exp == sizeof(Type) * 8 - 1) { if (x == C_Integer<Type>::min) { to = -1; return V_EQ;
participants (1)
-
Abramo Bagnara