Wraparound multiplicaton vs mullo

David Harvey dmharvey at cims.nyu.edu
Sat Oct 17 23:39:01 CEST 2009

On Oct 17, 2009, at 5:03 PM, Niels Möller wrote:

>> How about recursing into the same routine for the multiplication
>> modulo 2^(n/2) - 1?
> The current code is not organized that way, it evaluates the
> polynomial at +1, -1 (for x^2-1) and +1, -1, i (for x^4-1), performs
> full balanced multiplication for each point, then interpolates a
> polynomial of the same degree as the inputs, evaluates that polynomial
> at B^{n/2} or B^{n/4}, and in that evaluation, the highest coefficient
> wraps around.

Ok I see.

There are so many more options along these lines.... one could do x^2  
- x = x*(x-1), i.e. arithmetic modulo B^(2n) - B^n; I think this  
could still be successfully used for REDC, but this needs some more  
thought. I expect the evaluation/interpolation for x^2 - x would be  
slightly cheaper than for x^2 - 1.

Then of course x^3 - x, or more generally (x - a[1]) ... (x - a[n]).  
So e.g. instead of x^4 - 1, you could do x^4 - 5*x^2 + 4 = (x^2 - 1)  
* (x^2 - 4). I bet that could be made faster than using x^4 - 1.

Perhaps there should be a sequence of best algorithms, one for each  
number of pieces?


More information about the gmp-devel mailing list