On Tue, 27 Feb 2018, Marco Bodrato wrote:
The realway to speed-up that loop is to use the suggestion in gmpxx.h to
compute a rational+1, both for mini-gmp and the full GMP library:
struct __gmp_unary_increment
{
static void eval(mpz_ptr z) { mpz_add_ui(z, z, 1); }
static void eval(mpq_ptr q)
{ mpz_add(mpq_numref(q), mpq_numref(q), mpq_denref(q)); }
static void eval(mpf_ptr f) { mpf_add_ui(f, f, 1); }
};
If I write q = 1 + 1 / q, gmpxx currently generates:
mpq_inv(q, q);
mpz_addmul_ui(num, den, 1);
Not quite optimal yet :-(
--
Marc Glisse
_______________________________________________
gmp-devel mailing list
gmp-devel@gmplib.org
https://gmplib.org/mailman/listinfo/gmp-devel