mpz_prevprime
Niels Möller
nisse at lysator.liu.se
Thu Jan 30 14:23:23 UTC 2020
tg at gmplib.org (Torbjörn Granlund) writes:
> We have tried to stick to a limit of 1 s on a reasonable current
> computer. Most tests should use much less, if possible.
Maybe it would make sense with a command line option or environment
variable to the test binaries to enable certain more expensive tests
(rather than just tweaking the number of repetitions).
nextprime.c includes the loop
#define INCR_LIMIT 0x10000 /* deep science */
for (difference = incr = 0; incr < INCR_LIMIT; difference += 2)
where it's a bit challenging to quickly test the case of the loop
running to the end. I think the test changes by Seth
(https://github.com/sethtroisi/libgmp/pull/12/commits/7e884d040d94346bb8428e99a3d64d30f3701f3a)
adds test coverage for this particular condition. According to comments,
// This takes ~3 seconds
// Gap 33008 from P454 = 55261931 * 1063#/210 - 13116
I don't know the distribution of primegaps, but to make the test run
fast, we'd want a gap where as many as possible of the composites in the
interval have some really small factor, to minimize the number of calls to
mpz_millerrabin within the loop.
Perhaps one can use crt to construct a number k such that
k = 1 (mod 2) ; k odd
k = 0 (mod 3)
k + 2 = 0 (mod 5)
k + 4 = 0 (mod 7)
k + 6 = 0 (mod 3) ; redundant
k + 8 = 0 (mod 11)
k + 10 = 0 (mod 13)
k + 12 = 0 (mod 5) ; redundant
etc ? How big gap would that give us, if we used all the tabulated
primes? (The current prime list includes 167 primes, that number
probably based on long obsolete benchmarks).
I imagine the function could also be generally sped up a bit by
increasing the size of prime list and using tabulated 2-adic inverses
for the divisibility checks.
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.
More information about the gmp-devel
mailing list