typedef mpfr::mpreal Real;
inline double Double(const Real & r) {return r.toDouble();}
inline float Float(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());}
typedef mpfr::mpreal Real;
inline double Double(const Real & r) {return r.toDouble();}
inline float Float(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());}