+#elif REAL == REAL_RATIONAL_ARBINT
+ typedef Rational<Arbint> Real;
+ inline float Float(const Real & r) {return (float)r.ToDouble();}
+ inline double Double(const Real & r) {return r.ToDouble();}
+ inline Rational<Arbint> pow(const Rational<Arbint> & a, const Rational<Arbint> & b)
+ {
+ Arbint P(std::pow(static_cast<double>(a.P), b.ToDouble()));
+ Arbint Q(std::pow(static_cast<double>(a.Q), b.ToDouble()));
+ return Rational<Arbint>(P,Q);
+ }