Bill Allombert on Wed, 07 Oct 2026 10:49:50 +0200


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

Re: ellintpoints(E) workaround


On Wed, Oct 07, 2026 at 12:52:18AM +0200, hermann@stamm-wilbrandt.de wrote:
> An elliptic curve can have only a finite number of points with integer
> coordinates by Siegel's theorem.
> 
> PARI/GP seems not to have a function to determine the integral points of
> elliptic curve E.
> 
> My workaround ellintpoints(E) (named after existing ellratpoints(E)) calls
> out to sagemath E.integral_points():
> 
> sage(cmd) = eval(externstr(Str("sage -q -c \"", cmd, "\""))[1]);
> 
> ellintpoints(E) = {
>   sage(Str("print([[int(P[0]), int(P[1])] for P in EllipticCurve(",
>        E[1..5],").integral_points()])"));
> }

How does it work ? How far can it go ?
For conductor at most 500000, one can use John Cremona database:
https://github.com/JohnCremona/ecdata/tree/master/intpts

If one do not need a proven result one can do ellratpoints(E,[10^9,1])

? E=ellinit([-14776, -670031]);
? ellratpoints(E,[10^9,1])
%8 = [[-80,7],[-80,-7],[-73,140],[-73,-140],[-66,133],[-66,-133],[-60,23],[-60,-23],[140,73],[140,-73],[214,2443],[214,-2443],[227,2770],[227,-2770],[246,3253],[246,-3253],[514,11293],[514,-11293],[594,14147],[594,-14147],[802,22435],[802,-22435],[1660,67447],[1660,-67447],[31224,5517337],[31224,-5517337],[100016,31630343],[100016,-31630343],[160360,64216103],[160360,-64216103]]

Cheers,
Bill