X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fgmprat.h;h=e0c9849a36455e97707aaabae2369efd9c6f9b8d;hp=3e275d28a61e739b7650eb3a91e4b2f7d1b20667;hb=b716ae547424e4e4bbda86781a151c31e3a64e67;hpb=67539822c80c8057d850b542abc142c189bd3f05 diff --git a/src/gmprat.h b/src/gmprat.h index 3e275d2..e0c9849 100644 --- a/src/gmprat.h +++ b/src/gmprat.h @@ -33,7 +33,7 @@ class Gmprat return "-" + operator-().Str(); } double p = Log10(); - if (isinf(p)) + if (std::isinf(p)) return "0"; int P = (int)p; @@ -104,6 +104,11 @@ class Gmprat Gmprat Abs() const {Gmprat a(*this); mpq_abs(a.m_op, a.m_op); return a;} + size_t Size() const + { + return sizeof(uint64_t) * (mpq_numref(m_op)->_mp_alloc + mpq_denref(m_op)->_mp_alloc); + } + private: friend std::ostream& operator<<(std::ostream& os, const Gmprat & fith); mpq_t m_op; @@ -116,7 +121,13 @@ inline std::ostream & operator<<(std::ostream & os, const Gmprat & fith) } +#if REALTYPE != 9 +inline std::string Str(const Gmprat & g) {return g.Str();} +inline double Log10(const Gmprat & g) {return g.Log10();} +inline size_t Size(const Gmprat & g) {return g.Size();} +inline Gmprat Abs(const Gmprat & g) {return g.Abs();} +#endif #endif //_GMPRAT_H