summaryrefslogtreecommitdiff
path: root/src/util/rational_gmp_imp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/rational_gmp_imp.h')
-rw-r--r--src/util/rational_gmp_imp.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/util/rational_gmp_imp.h b/src/util/rational_gmp_imp.h
index 02ccc273c..273b3072d 100644
--- a/src/util/rational_gmp_imp.h
+++ b/src/util/rational_gmp_imp.h
@@ -28,6 +28,11 @@
namespace CVC4 {
+class CVC4_PUBLIC RationalFromDoubleException : public Exception {
+public:
+ RationalFromDoubleException(double d) throw();
+};
+
/**
** A multi-precision rational constant.
** This stores the rational as a pair of multi-precision integers,
@@ -172,12 +177,7 @@ public:
return Integer(d_value.get_den());
}
- /** Return an exact rational for a double d. */
- static Rational fromDouble(double d){
- Rational q;
- mpq_set_d(q.d_value.get_mpq_t(), d);
- return q;
- }
+ static Rational fromDouble(double d) throw(RationalFromDoubleException);
/**
* Get a double representation of this Rational, which is
@@ -234,6 +234,10 @@ public:
return Integer(q);
}
+ Rational floor_frac() const {
+ return (*this) - Rational(floor());
+ }
+
Rational& operator=(const Rational& x){
if(this == &x) return *this;
d_value = x.d_value;
@@ -326,6 +330,10 @@ public:
uint32_t denLen = getDenominator().length();
return numLen + denLen;
}
+
+ /** Equivalent to calling (this->abs()).cmp(b.abs()) */
+ int absCmp(const Rational& q) const;
+
};/* class Rational */
struct RationalHashFunction {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback