# best way to do "fermat" primalty checks

Décio Luiz Gazzoni Filho decio at decpp.net
Mon Nov 14 01:56:38 CET 2005

```On Nov 13, 2005, at 10:35 PM, Torbjorn Granlund wrote:

> Jim Fougeron <jfoug at cox.net> writes:
>
>   1. FFT utilization.  The fastest way to do this, is to put all
> variables
>   into FFT space, and build primatives which work in FFT space
> (square,
>   mult, add reduction), so you never leave FFT until the final
> answer is
>   given.  I believe (I could VERY rightly be wrong), that GMP is not
>   written this way, and does conversions into and out of FFT for each
>   squaring/mult.  That is why GMP does not scale well when moving
> to HUGE
>   numbers.
>
> I'd really like to know how to compute an arbitrary mod in FFT space.
>

Seconded, I'm not aware of any method that does this. Maybe he's
talking about e.g. precomputing generalized inverses for Barrett
reduction?

> I don't think GMP's behaviour for HUGE numbers is affected by
> wheather we
> convert froth and back into FFT space.  The problem might be with
> memory
> locality of the present FFT code.  (We exnter and exit FFT space
> not just
> for HUGE numbers, but for large numbers as well.)
>

Keeping values in FFT space might be an interesting improvement,
particularly in powering algorithms which perform a few
precomputations and use them repeatedly throughout the algorithm.
This could even be exposed to the programmer -- i.e. provide
alternate functions for multiplication that can be performed in three
steps:

1. forward FFT
2. pointwise multiplication
3. inverse FFT and carry propagation

Then, the programmer could save the work of a few FFTs. I understand
this idea might not be welcome due to the mess it creates, though.

>   2. Reduce the reduction.   If a special purpose modular reduction
>   can be acived, you can up to gain 3x speed improvement over
>   "standard" reduction methods.
>
> Not sure what you're takng about here.  Of course, reducing mod a
> Mersenne prime, or other close power-of-2, can be done with complexity
> O(n).

Not only that, but Proth and Riesel primes as Jim mentioned. However,
I'm also not sure what he means here -- Barrett reduction using
Newton division, Montgomery reduction, or something else entirely?

Request for more information seconded.

Décio

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : http://gmplib.org/list-archives/gmp-discuss/attachments/20051114/b24a6b7e/PGP.bin
```

More information about the gmp-discuss mailing list