ported to MPFR