mpn_perfpow: do we need a special GCD for mp_bitcnt_t?

bodrato at bodrato at
Mon Sep 1 09:33:56 UTC 2014


I removed some code from mpn_perfpow, because it did the same job of the
more carefully refined mpn_remove function.

I measured a 5% speed-up with
$ time tests/mpz/t-perfpow 10000

$ valgrind tests/mpz/t-perfpow 10000
says that also the total memory allocated is smaller with the new code.

Using mpn_remove does not solve a little issue, the mixed use of
mp_bitcnt_t and mp_limb_t. When a prime factor is removed from the
examined number, the exponent is returned as mp_bitcnt_t, the returned
value is then casted to mp_limb_t, because we need the GCD of the
exponents and mpn_gcd_1 wants limbs.

Should we write an "ad hoc" GCD function for mp_bitcnt_t? We expect small
exponents and small results here...



More information about the gmp-devel mailing list