efficiency bug in mpz_powm_ui?
Marco Bodrato
bodrato at mail.dm.unipi.it
Sat Feb 29 23:19:21 UTC 2020
Ciao,
Il 2020-02-29 11:54 paul zimmermann ha scritto:
> it seems that mpz_powm_ui is highly inefficient when BASE^EXP has about
> the
> same size as MOD, in which case it could first compute BASE^EXP
> exactly, then
> perform only one reduction:
You are right, mpz_powm_ui does not implement an algorithm that is
optimal for every possible use-case. But I'd not consider this a bug :-)
> mpz_ui_pow_ui (x, 2, e);
> mpz_mod (r1, x, y);
I'm not sure that mpz_ui_pow_ui (x, 2, e) is the more efficient way to
obtain a value x with only the bit e set to 1 :-)
But of course, in this context, the following _mod dominates
asymptotically.
> mpz_set_ui (x, 2);
> mpz_powm_ui (r2, x, e, y);
Thanks to a recent change, this function should be faster now, when base
is 2:
https://gmplib.org/repo/gmp/rev/63e53ddfd210
Even if there is not jet any special code for the special case "BASE^EXP
has about the same size as MOD".
Ĝis,
m
More information about the gmp-bugs
mailing list