mpz_prevprime
Marco Bodrato
bodrato at mail.dm.unipi.it
Mon Mar 9 09:05:02 UTC 2020
Ciao,
Il 2020-03-09 02:56 Seth Troisi ha scritto:
> From Marco Bodrato's analysis I got inspired and modified nextprime to
Your analysis is much deeper than mine :-)
I do not have much time now... but I glanced at the code and write here
a few comments.
> You can see some of my thresholds and testing input in this google
> sheet[1]. The end result is sieve up ~ LOG2(N) ^ (20/7) / 3268
Funny numbers :-)
In the code, you compute LOG2(N) ^ (20/7) / 3268. (A comment says "/
1880")
Then, if the result is greater than 430000000, you cut it.
Cutting seems a good idea, but I'd do the reverse:
if nbits is larger than (430000000*3268) ^ (7/20) = 17940, set limit to
430000000,
compute otherwise.
> For 10,000 bit numbers this sieves up to 80 million (which takes ~4
> seconds but reduces nextprime from ~300seconds to ~200 seconds)
Seems interesting :-)
> I cleaned up the code without any of the debug printing in the 3rd
> patch nextprime_sieve_clean.patch which I'd love people to consider
Some random comments:
If you use TMP_DECL, then you don't need to use also TMP_SDECL.
The same for TMP_MARK and TMP_SMARK; or TMP_FREE and TMP_SFREE.
I'm happy to see that you used gmp_primesieve and the macros for it,
but...
... maybe that code is too messy? I mean, my code with the
LOOP_ON_SIEVE_ macros...
You did not use that sieve to directly loop on primes, but you used it
to loop on primes for building a primegap table, and then use that table
to loop on primes...
Did you try to use the gmp_primesieve function directly?
If sieve_limit = 430000000, you are allocating 17M for mp_limb_t *sieve,
then another 22M for primegap_tmp, and both are kept in memory.
I believe that looping with primegap is faster, but... how many times do
we need too loop, on average? I mean, how often is the /*Sieve next
segment*/ code used?
In the array char *sieve, you use only the even entries. Maybe you can
reduce its size by half, and remove some "*2" around the code?
Ĝis,
m
More information about the gmp-devel
mailing list