Bill Allombert on Thu, 17 Mar 2005 10:53:32 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: modular square roots


On Sun, Mar 13, 2005 at 12:05:58AM +0100, Bill Allombert wrote:
> We normally use Tonelli-Shanks, but we use Cipolla algorithm if e=v_2(p)
> is large: see
> 
> src/basemath/arith1.c: line 1312
>   /* If `e' is "too big", use Cipolla algorithm ! [GTL] */
>     if (e*(e-1) > 20 + 8 * bit_accuracy(lgefint(p)))    
> 
> Would you propose a different criterion ?

Gonzalo Tornaria told me that this criterion was optimal for random
values of the radicand in average, but it was not for -1 and powers of
two.

So eventually we could special case -1 and use another criterion in that
case.

I just commited a change proposed by Gonzalo that should make things
a bit faster for -1.

Cheers,
Bill