int MAPM::digits(const MAPM &otherVal) const { int maxd=myDigits(); int his=m_apm_significant_digits_mt(otherVal.cval()); if (maxd<his) maxd=his; return maxd; }
MAPM::MAPM(const MAPM &m) { myVal=(M_APM)m.cval(); ref(myVal); }
void MAPM::integer_div_rem(const MAPM &denom,MAPM ",MAPM &rem) const { m_apm_integer_div_rem_mt(quot.val(),rem.val(),cval(),denom.cval()); }
MAPM MAPM::lcm(const MAPM &m) const { MAPM ret; m_apm_lcm_mt(ret.val(),cval(),m.cval()); return ret; }
MAPM MAPM::integer_divide(const MAPM &denom) const { MAPM ret; m_apm_integer_divide_mt(ret.val(),cval(),denom.cval()); return ret; }
MAPM MAPM::atan2(const MAPM &x,int toDigits) const { MAPM ret; m_apm_arctan2_mt(ret.val(),toDigits,cval(),x.cval()); return ret; }
MAPM MAPM::gcd(const MAPM &m) const { MAPM ret; m_apm_gcd_mt(ret.val(),cval(),m.cval()); return ret; }
MAPM MAPM::divide(const MAPM &m,int toDigits) const { MAPM ret; m_apm_divide_mt(ret.val(),toDigits,cval(),m.cval()); return ret; }
MAPM MAPM::pow(const MAPM &m,int toDigits) const { MAPM ret; m_apm_pow_mt(ret.val(),toDigits,cval(), m.cval()); return ret; }
MAPM operator*(const MAPM &a,const MAPM &b) { MAPM ret; m_apm_multiply_mt(ret.val(),a.cval(),b.cval()); return ret; }
MAPM operator-(const MAPM &a,const MAPM &b) { MAPM ret; m_apm_subtract_mt(ret.val(),a.cval(),b.cval()); return ret; }
MAPM operator+(const MAPM &a,const MAPM &b) { MAPM ret; m_apm_add_mt(ret.val(),a.cval(),b.cval()); return ret; }
int MAPM::compare(const MAPM &m) const { return m_apm_compare(cval(),m.cval()); }
bool MAPM::operator>=(const MAPM &m) const { return m_apm_compare(cval(),m.cval())>=0; }