+#elif REALTYPE == REAL_PARANOIDNUMBER
+ typedef ParanoidNumber Real;
+ inline double Double(const Real & r) {return r.Digit();}
+ inline float Float(const Real & r) {return r.Digit();}
+ inline int64_t Int64(const Real & r) {return (int64_t)r.Digit();}
+ inline Real Sqrt(const Real & r) {return Real(sqrt(r.Digit()));}
+ inline Real RealFromStr(const char * str) {return Real(str);}
+ inline Real Abs(const Real & a) {return Real(fabs(a.Digit()));}
+#elif REALTYPE == REAL_GMPRAT
+ typedef Gmprat Real;
+ inline double Double(const Real & r) {return r.ToDouble();}
+ inline float Float(const Real & r) {return (float)(r.ToDouble());}
+ inline int64_t Int64(const Real & r) {return (int64_t)r.ToDouble();}
+ inline Real Sqrt(const Real & r) {return Real(sqrt(r.ToDouble()));}
+ inline Real RealFromStr(const char * str) {return Real(strtod(str, NULL));}
+ inline Real Abs(const Real & a) {return (a > Real(0)) ? a : Real(0)-a;}
+