diff options
author | Tim King <taking@cs.nyu.edu> | 2012-12-01 02:09:02 +0000 |
---|---|---|
committer | Tim King <taking@cs.nyu.edu> | 2012-12-01 02:09:02 +0000 |
commit | b66fc3eac2717e8a887f1d4603c15cbcb7460e98 (patch) | |
tree | 83e5bfcf946d7043abdb36a809a7f17013043c4a /src/util/rational_cln_imp.h | |
parent | 5d4ee83cd9b245810c35b0aa17bb51b5a456c24b (diff) |
Fix for a CLN related bug on 32 bit systems. Integer((1<<29)+1) and Integer((long int)((1<<29)+1)) gave different values. This was confirmed on vm-int1.cims.nyu.edu. See http://www.ginac.de/CLN/cln_3.html#SEC15 for more details. rational_white and integer_white have tests covering this.
Diffstat (limited to 'src/util/rational_cln_imp.h')
-rw-r--r-- | src/util/rational_cln_imp.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/util/rational_cln_imp.h b/src/util/rational_cln_imp.h index 4877c0ea6..88327b400 100644 --- a/src/util/rational_cln_imp.h +++ b/src/util/rational_cln_imp.h @@ -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) { |