Bill Allombert on Sun, 10 Dec 2023 20:37:29 +0100


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

Re: getting strange ellheight() error for number field point and curve


On Tue, Dec 05, 2023 at 11:33:41PM +0100, Bill Allombert wrote:
> On Mon, Dec 04, 2023 at 05:25:32PM -0800, American Citizen wrote:
> > Hi:
> > 
> > minimal m[1..5] = [1, 0, 0, -114223080, -283150929600]
> > pt=[29099, 4571616.001890359167852374954252793155119185143350555006071823347634514965562343989206397255762390603970823616017868766947483185076860275462218345407187946353537171824424767170799129381839037]
> > y=[-29099/2, 1/2, 84131656042917]
> > which is y = -29099/2 + 1/2 * sqrt(84131656042917)
> > p=[29099, Mod(1/2*a - 29099/2, a^2 - 84131656042917)]
> > point is on curve m [1, 0, 0, -114223080, -283150929600] --> 1
> > F[1] = [0, 0, 0, -5482707841/48, -244634179112639/864]
> > P[1] = [349189/12, Mod(1/2*a, a^2 - 84131656042917)]
> > is on curve: 1
> > 
> > this works out good for all 8 curves and the point on the curve.
> > 
> > NF = nfinit(a^2 - 84131656042917)
> > FN=ellinit(F[1],NF);
> > Then we try to find the height as ellheight(FN,pt)
> >   ***   at top-level: find_iso_hts(e)
> >   ***                 ^---------------
> >   ***   in function find_iso_hts: ... ellheight(FN,pt)");H[i]=
> >   ***   ellheight(FN,P[i]);pr
> >   ***   ^---------------------
> >   *** ellheight: impossible inverse in Fl_inv: Mod(0, 2).
> 
> Alas, this is a bug in PARI 
> (ellheight does not handle non-minimal models over a number field correctly).

There was three bugs actually...

I fixed them in the master branch.

NF = nfinit(a^2 - 84131656042917);
F1 = ellinit([0, 0, 0, -5482707841/48, -244634179112639/864],NF);
P1 = [349189/12, Mod(1/2*a, a^2 - 84131656042917)];
ellheight(F1,P1)
%4 = 20.912087636398176541299794149336289140

Also I added a check that points are really on the curve.

Thanks for reporting this bug, this function is difficult to test because it
is hard to find points over elliptic curves over number fields to test the
algorithm. 

Cheers,
Bill