MPFR is missing a "mpfr_ui_div_ui"
Strangely, MPFR is lacking a mpfr_ui_div_ui
function, that is, a function that calculates the fraction of two small
unsigned integers to very high accuracy. Until now I’ve been calculating
it like this:
mpfr_set_ui(invprime, prime[i], GMP_RNDN);
mpfr_ui_div(invprime, 1, invprime, GMP_RNDN);
which is very slow! The reason is probably that the mpfr_ui_div is
calculated using all bits in invprime, even though most of them are
zero. A much faster method is to prepare a two-bit one constant like
this:
mpfr_t one;
mpfr_init2(one, 2);
mpfr_set_ui(one, 1, GMP_RNDN);
and then do this:
mpfr_div_ui(invprime, one, primes[i], GMP_RNDN);