Fix for a CLN related bug on 32 bit systems. Integer((1<<29)+1) and Integer((long...
authorTim King <taking@cs.nyu.edu>
Sat, 1 Dec 2012 02:09:02 +0000 (02:09 +0000)
committerTim King <taking@cs.nyu.edu>
Sat, 1 Dec 2012 02:09:02 +0000 (02:09 +0000)
src/util/integer_cln_imp.h
src/util/rational_cln_imp.h

index 07e85c118e00b6f850d3a86d104b20efba1d53d3..211c40741a111334b73e42e4fb24ef0665026079 100644 (file)
@@ -120,8 +120,8 @@ public:
 
   Integer(const Integer& q) : d_value(q.d_value) {}
 
-  Integer(  signed int z) : d_value(z) {}
-  Integer(unsigned int z) : d_value(z) {}
+  Integer(  signed int z) : d_value((signed long int)z) {}
+  Integer(unsigned int z) : d_value((unsigned long int)z) {}
   Integer(  signed long int z) : d_value(z) {}
   Integer(unsigned long int z) : d_value(z) {}
 
@@ -192,35 +192,17 @@ public:
     return *this;
   }
 
-  /*
-  Integer operator/(const Integer& y) const {
-    return Integer( cln::floor1(d_value, y.d_value) );
-  }
-  Integer& operator/=(const Integer& y) {
-    d_value = cln::floor1(d_value, y.d_value);
-    return *this;
-  }
-
-  Integer operator%(const Integer& y) const {
-    return Integer( cln::floor2(d_value, y.d_value).remainder );
-  }
-  Integer& operator%=(const Integer& y) {
-    d_value = cln::floor2(d_value, y.d_value).remainder;
-    return *this;
-  }
-  */
-
 
   Integer bitwiseOr(const Integer& y) const {
-    return Integer(cln::logior(d_value, y.d_value));  
+    return Integer(cln::logior(d_value, y.d_value));
   }
 
   Integer bitwiseAnd(const Integer& y) const {
-    return Integer(cln::logand(d_value, y.d_value));  
+    return Integer(cln::logand(d_value, y.d_value));
   }
 
   Integer bitwiseXor(const Integer& y) const {
-    return Integer(cln::logxor(d_value, y.d_value));  
+    return Integer(cln::logxor(d_value, y.d_value));
   }
 
   Integer bitwiseNot() const {
@@ -401,8 +383,6 @@ public:
     return d_value == -1;
   }
 
-  //friend std::ostream& operator<<(std::ostream& os, const Integer& n);
-
   long getLong() const {
     // ensure there isn't overflow
     CheckArgument(d_value <= std::numeric_limits<long>::max(), this,
@@ -445,7 +425,7 @@ public:
    */
   unsigned isPow2() const {
     if (d_value <= 0) return 0;
-    // power2p returns n such that d_value = 2^(n-1) 
+    // power2p returns n such that d_value = 2^(n-1)
     return cln::power2p(d_value);
   }
 
index 4877c0ea6d69cf92044534542e45ce1b23a0ee3f..88327b4000df07086850f4cb904543598bfcd9bf 100644 (file)
@@ -125,8 +125,8 @@ public:
   /**
    * Constructs a canonical Rational from a numerator.
    */
-  Rational(signed int n) : d_value(n) { }
-  Rational(unsigned int n) : d_value(n) { }
+  Rational(signed int n) : d_value((signed long int)n) { }
+  Rational(unsigned int n) : d_value((unsigned long int)n) { }
   Rational(signed long int n) : d_value(n) { }
   Rational(unsigned long int n) : d_value(n) { }
 
@@ -138,10 +138,10 @@ public:
   /**
    * Constructs a canonical Rational from a numerator and denominator.
    */
-  Rational(signed int n, signed int d) : d_value(n) {
+  Rational(signed int n, signed int d) : d_value((signed long int)n) {
     d_value /= d;
   }
-  Rational(unsigned int n, unsigned int d) : d_value(n) {
+  Rational(unsigned int n, unsigned int d) : d_value((unsigned long int)n) {
     d_value /= d;
   }
   Rational(signed long int n, signed long int d) : d_value(n) {