summaryrefslogtreecommitdiff
path: root/src/util/rational_cln_imp.h
diff options
context:
space:
mode:
authorTim King <taking@cs.nyu.edu>2012-12-01 02:09:02 +0000
committerTim King <taking@cs.nyu.edu>2012-12-01 02:09:02 +0000
commitb66fc3eac2717e8a887f1d4603c15cbcb7460e98 (patch)
tree83e5bfcf946d7043abdb36a809a7f17013043c4a /src/util/rational_cln_imp.h
parent5d4ee83cd9b245810c35b0aa17bb51b5a456c24b (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.h8
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) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback