#elif REALTYPE == REAL_VFPU
typedef VFPU::VFloat Real;
inline float Float(const Real & r) {return r.m_value;}
inline double Double(const Real & r) {return r.m_value;}
#elif REALTYPE == REAL_VFPU
typedef VFPU::VFloat Real;
inline float Float(const Real & r) {return r.m_value;}
inline double Double(const Real & r) {return r.m_value;}
#elif REALTYPE == REAL_RATIONAL
typedef Rational<int64_t> Real;
inline float Float(const Real & r) {return (float)r.ToDouble();}
inline double Double(const Real & r) {return r.ToDouble();}
#elif REALTYPE == REAL_RATIONAL
typedef Rational<int64_t> Real;
inline float Float(const Real & r) {return (float)r.ToDouble();}
inline double Double(const Real & r) {return r.ToDouble();}
inline int64_t Int64(const Real & r) {return r.toLong();}
inline Real Sqrt(const Real & r) {return mpfr::sqrt(r, mpfr::mpreal::get_default_rnd());}
inline Real Abs(const Real & r) {return mpfr::abs(r, mpfr::mpreal::get_default_rnd());}
inline int64_t Int64(const Real & r) {return r.toLong();}
inline Real Sqrt(const Real & r) {return mpfr::sqrt(r, mpfr::mpreal::get_default_rnd());}
inline Real Abs(const Real & r) {return mpfr::abs(r, mpfr::mpreal::get_default_rnd());}
#elif REALTYPE == REAL_IRRAM
typedef iRRAM::REAL Real;
inline double Double(const Real & r) {return r.as_double(53);}
inline float Float(const Real & r) {return r.as_double(53);}
inline int64_t Int64(const Real & r) {return (int64_t)r.as_double(53);}
inline Real Sqrt(const Real & r) {return iRRAM::sqrt(r);}
#elif REALTYPE == REAL_IRRAM
typedef iRRAM::REAL Real;
inline double Double(const Real & r) {return r.as_double(53);}
inline float Float(const Real & r) {return r.as_double(53);}
inline int64_t Int64(const Real & r) {return (int64_t)r.as_double(53);}
inline Real Sqrt(const Real & r) {return iRRAM::sqrt(r);}