
Module: ppl/ppl Branch: master Commit: 8eebe6d762e82c521dd7c0be6206df2928e4fcb1 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=8eebe6d762e82...
Author: Abramo Bagnara abramo.bagnara@gmail.com Date: Thu Nov 3 10:15:26 2011 +0100
Fixed bool vs. numeric unsafe mixing. Detected by ECLAIR service utypflag.
---
src/Float.defs.hh | 24 ++++++++++++------------ src/Float.inlines.hh | 24 ++++++++++++------------ src/Interval_Info.defs.hh | 2 +- src/checked.cc | 2 +- 4 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/src/Float.defs.hh b/src/Float.defs.hh index 541b9df..1e50ecc 100644 --- a/src/Float.defs.hh +++ b/src/Float.defs.hh @@ -66,9 +66,9 @@ struct float_ieee754_half { - static_cast<int>(MANTISSA_BITS); static const Floating_Point_Format floating_point_format = IEEE754_HALF; int is_inf() const; - int is_nan() const; + bool is_nan() const; int is_zero() const; - int sign_bit() const; + bool sign_bit() const; void negate(); void dec(); void inc(); @@ -99,9 +99,9 @@ struct float_ieee754_single { - static_cast<int>(MANTISSA_BITS); static const Floating_Point_Format floating_point_format = IEEE754_SINGLE; int is_inf() const; - int is_nan() const; + bool is_nan() const; int is_zero() const; - int sign_bit() const; + bool sign_bit() const; void negate(); void dec(); void inc(); @@ -145,9 +145,9 @@ struct float_ieee754_double { - static_cast<int>(MANTISSA_BITS); static const Floating_Point_Format floating_point_format = IEEE754_DOUBLE; int is_inf() const; - int is_nan() const; + bool is_nan() const; int is_zero() const; - int sign_bit() const; + bool sign_bit() const; void negate(); void dec(); void inc(); @@ -177,9 +177,9 @@ struct float_ibm_single { - static_cast<int>(MANTISSA_BITS); static const Floating_Point_Format floating_point_format = IBM_SINGLE; int is_inf() const; - int is_nan() const; + bool is_nan() const; int is_zero() const; - int sign_bit() const; + bool sign_bit() const; void negate(); void dec(); void inc(); @@ -230,9 +230,9 @@ struct float_intel_double_extended { static const Floating_Point_Format floating_point_format = INTEL_DOUBLE_EXTENDED; int is_inf() const; - int is_nan() const; + bool is_nan() const; int is_zero() const; - int sign_bit() const; + bool sign_bit() const; void negate(); void dec(); void inc(); @@ -269,9 +269,9 @@ struct float_ieee754_quad { static const int EXPONENT_MIN_DENORM = EXPONENT_MIN - static_cast<int>(MANTISSA_BITS); int is_inf() const; - int is_nan() const; + bool is_nan() const; int is_zero() const; - int sign_bit() const; + bool sign_bit() const; void negate(); void dec(); void inc(); diff --git a/src/Float.inlines.hh b/src/Float.inlines.hh index ba3a42b..a456606 100644 --- a/src/Float.inlines.hh +++ b/src/Float.inlines.hh @@ -39,7 +39,7 @@ float_ieee754_half::is_inf() const { return 0; }
-inline int +inline bool float_ieee754_half::is_nan() const { return (word & ~SGN_MASK) > POS_INF; } @@ -58,7 +58,7 @@ float_ieee754_half::negate() { word ^= SGN_MASK; }
-inline int +inline bool float_ieee754_half::sign_bit() const { return !!(word & SGN_MASK); } @@ -100,7 +100,7 @@ float_ieee754_single::is_inf() const { return 0; }
-inline int +inline bool float_ieee754_single::is_nan() const { return (word & ~SGN_MASK) > POS_INF; } @@ -119,7 +119,7 @@ float_ieee754_single::negate() { word ^= SGN_MASK; }
-inline int +inline bool float_ieee754_single::sign_bit() const { return !!(word & SGN_MASK); } @@ -163,7 +163,7 @@ float_ieee754_double::is_inf() const { return 0; }
-inline int +inline bool float_ieee754_double::is_nan() const { uint32_t a = msp & ~MSP_SGN_MASK; return a > MSP_POS_INF || (a == MSP_POS_INF && lsp != LSP_INF); @@ -185,7 +185,7 @@ float_ieee754_double::negate() { msp ^= MSP_SGN_MASK; }
-inline int +inline bool float_ieee754_double::sign_bit() const { return !!(msp & MSP_SGN_MASK); } @@ -247,7 +247,7 @@ float_ibm_single::is_inf() const { return 0; }
-inline int +inline bool float_ibm_single::is_nan() const { return (word & ~SGN_MASK) > POS_INF; } @@ -266,7 +266,7 @@ float_ibm_single::negate() { word ^= SGN_MASK; }
-inline int +inline bool float_ibm_single::sign_bit() const { return !!(word & SGN_MASK); } @@ -311,7 +311,7 @@ float_intel_double_extended::is_inf() const { return 0; }
-inline int +inline bool float_intel_double_extended::is_nan() const { return (msp & MSP_POS_INF) == MSP_POS_INF && lsp != LSP_INF; @@ -334,7 +334,7 @@ float_intel_double_extended::negate() { msp ^= MSP_SGN_MASK; }
-inline int +inline bool float_intel_double_extended::sign_bit() const { return !!(msp & MSP_SGN_MASK); } @@ -392,7 +392,7 @@ float_ieee754_quad::is_inf() const { return 0; }
-inline int +inline bool float_ieee754_quad::is_nan() const { return (msp & ~MSP_SGN_MASK) == MSP_POS_INF && lsp != LSP_INF; @@ -414,7 +414,7 @@ float_ieee754_quad::negate() { msp ^= MSP_SGN_MASK; }
-inline int +inline bool float_ieee754_quad::sign_bit() const { return !!(msp & MSP_SGN_MASK); } diff --git a/src/Interval_Info.defs.hh b/src/Interval_Info.defs.hh index 3c12f2f..9312dfd 100644 --- a/src/Interval_Info.defs.hh +++ b/src/Interval_Info.defs.hh @@ -178,7 +178,7 @@ public: const_int_nodef(upper_open_bit, upper_special_bit + store_special); const_int_nodef(upper_normalized_bit, upper_open_bit + store_open); const_int_nodef(cardinality_is_bit, upper_normalized_bit + cache_normalized); - const_int_nodef(cardinality_0_bit, cardinality_is_bit + (cache_empty || cache_singleton)); + const_int_nodef(cardinality_0_bit, cardinality_is_bit + ((cache_empty || cache_singleton) ? 1 : 0)); const_int_nodef(cardinality_1_bit, cardinality_0_bit + cache_empty); const_int_nodef(next_bit, cardinality_1_bit + cache_singleton); Interval_Info_Bitset() { diff --git a/src/checked.cc b/src/checked.cc index 842611f..ed71a67 100644 --- a/src/checked.cc +++ b/src/checked.cc @@ -404,7 +404,7 @@ input_mpq(mpq_class& to, std::istream& is) { mpz_ptr den = to.get_den().get_mpz_t(); mpz_set_str(num, num_struct.mantissa.c_str(), num_struct.base); if (den_struct.base) { - if (num_struct.neg_mantissa ^ den_struct.neg_mantissa) + if (num_struct.neg_mantissa != den_struct.neg_mantissa) mpz_neg(num, num); mpz_set_str(den, den_struct.mantissa.c_str(), den_struct.base); if (num_struct.exponent || den_struct.exponent) {