What are the axes in the chart of your original post?

By the way, I wonder how commonly next_prime is used to generate a
large sequence of straight consecutive primes, in which case I think
it would be very beneficial to implement a segmented sieve that keeps
some state between calls, having the successive primes already sieved
and queued up after the first call etc.  Probably would make the most
sense a new/separate interface designed explicitly for that case.

Because a segmented sieve would be 1000's of times faster (for single
limbs sizes at least).  See the application "primesieve" (
https://github.com/kimwalisch/primesieve ) for an example of a very
efficient sieve algorithm that works up to 2^64.
Even the simplified example implementation as part of primesieve's
docs is quite fast:
https://github.com/kimwalisch/primesieve/wiki/Segmented-sieve-of-Eratosthenes
(eg. primes up to 1e9 in 0.65s)

As a rough comparison I ran mpz_nextprime consecutively up to 1e9 and
it took a total of 16m22.553s (on a Ryzen 2700x @4.0GHz).

Hans

On Tue, Sep 3, 2019 at 6:41 PM Seth Troisi <brain...@gmail.com> wrote:
>
> I think this small cleanup patch is appropriate given the testing of the
> other
> patch which I've tried several variations of and have been unable to improve
> beyond the existing implementation.
>
> The idea is to try and avoid performing modulo by storing the distance to
> the
> next multiple of each prime. This avoids divisions, unfortunately it
> requires
> writing back to the table each time a multiple is passed.
>
> I'm happy to look at other ideas but I think these comments can be cleaned
> up.
> _______________________________________________
> gmp-devel mailing list
> gmp-devel@gmplib.org
> https://gmplib.org/mailman/listinfo/gmp-devel
_______________________________________________
gmp-devel mailing list
gmp-devel@gmplib.org
https://gmplib.org/mailman/listinfo/gmp-devel

Reply via email to