Bill Allombert on Sat, 18 Jan 2025 22:41:18 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Some questions on how to improve Berlekamp‑Rabin algorithm’s implementation |
On Sat, Jan 18, 2025 at 09:59:27PM +0100, Laël Cellier wrote: > Merci, > > Where can I find the source code of polrootsmod please ? I’m meaning in > which file and which line ? src/basemath/FpX_factor.c line 252 for example. https://pari.math.u-bordeaux.fr/cgi-bin/sgitweb.cgi?p=pari.git;a=blob;f=src/basemath/FpX_factor.c;h=6492b724e655d4a3daf2b5da3b8f69b549df302c;hb=HEAD#l252 > Is there a Pari/ɢᴘ version or only C is available ? Anyway, I’d take the > later if this is the only option… This is in C. But this is enough to do in GP: (this version returns only one root). rootmod(F,p)= { F = F*Mod(1,p); F = gcd(F,liftpol(Mod(x,F)^p-x)); if (poldegree(F)<=0,return([])); while(poldegree(F)>1, my(G=gcd(F,liftpol(Mod(x-random(p),F)^((p-1)/2))-1)); my(d=poldegree(G)); if (d<=0, next); if (d<poldegree(F)-d,F=G,F\=G)); -polcoef(F,0)/polcoef(F,1); } ? rootmod(x^2-13,nextprime(2^1000)) %9 = Mod(6379310556240012429311478707645917563709750378608021873668848098249376586762722469082459556753012826585180459784577026521419292860806283780859063202392283995938255376634928395704317795768580058270006054861789044483907645080613123632155559069974735771589968378627096079956063004254846772065157023862340,10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069673) ? %^2 %10 = Mod(13,10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069673) Cheers, Bill.