Bill Allombert on Fri, 29 Apr 2016 23:50:00 +0200


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

Re: Does idealval still work for strictly non-maximal orders?


On Fri, Apr 29, 2016 at 11:28:19AM +0100, Misja Steinmetz wrote:
> I am using pari to do some calculations in number fields with really large
> discriminants. Factoring the discriminant to compute the full ring of
> integers will take a long time, so I want to avoid doing this. Since I am
> only interested in the local behaviour at some prime p, it is enough to
> consider a p-maximal order. Following on from Kevin Buzzard's e-mail from a
> week or so ago, idealfactor and nfeltreducemodpr should still work in such
> a non-maximal order.
> 
> Now I am wondering the following: if we have a prime P in this non-maximal
> order, will idealval still work? In other words: is the following code
> likely to give the right results?
> 
> 
> pol=x^26 - 286*x^25 + 19562760*x^24 - 3668442632*x^23 +
> 241198757426192*x^22 - 36732491670362880*x^21 + 1822972204898373000704*x^20
> - 199140855761012444911616*x^19 + 10027915325893349472817213440*x^18 -
> 848894964301022470484583645184*x^17 +
> 37809710923281272417452197421121536*x^16 -
> 1723088749094452868137774500646748160*x^15 +
> 105019803939567123916267146674242505932800*x^14 +
> 989241463444182981403365066679298291662848*x^13 +
> 194263960768386482228002420822035690570028941312*x^12 +
> 22400307307868363463037041330336932265361850499072*x^11 +
> 257854885551521928660357192534017687587527194767785984*x^10 +
> 41047693277909696868034300875084342054930124742527549440*x^9 +
> 213905548423351032335397622846029654869291846737653758164992*x^8 +
> 52094281570771031427456529161067965473732709069559894823141376*x^7 +
> 126287628023285196646075411391347640426049629948084525610320265216*x^6 +
> 29664531810238892090450568528300938381137578166911281545611967463424*x^5 +
> 43774041890841831528123864870950822413530619595837207099847467398594560*x^4
> +
> 11204382287862877653546909128845317701429264823352218653278600918707732480*x^3
> +
> 9880850856368516583182318554712322248092512687904098702270573142977439334400*x^2
> +
> 1562488675698787978227863108916161176019042195854338940761327270319526781124608*x
> +
> 259748395620385919840920916962672154875984216348353473312067851326630554180255744;
> \\pol is some poly with big disc
> 
> nf=nfinit([pol,[3]]);
> 
> ? nfcertify(nf) \\we are using a strictly non-maximal order
> %1 =
> [337380913590845600020514269227313648210194087803015497728961389568789942414585883971529126116434361247804701100155364451891445133863970441321008195359592815369846067231075955295940473510167649962320415849536001133546844616043245921745260717590454142665172325593856347582478783]
> 
> P=idealfactor(nf,3)[3,1];
> 
> ? idealval(nf,x,P) \\calculating the valuation of the ideal (x) in order
> wrt to prime P
> %2 = 2
> 
> I think this code should probably give the right results, but I don't know
> anything about the inner workings of pari so it's best to check.

Your code works, but in general you should do
nf=nfinit([pol,10^6]); 
which will make your order maximal at all primes less than 10^6,
because this lets nfinit finds a smallest basis and speed up computation.

Cheers,
Bill.