Skip to content

Commit

Permalink
Trac #16022: simon_two_descent sometimes gives wrong answers
Browse files Browse the repository at this point in the history
The current version of Denis Simon's 2-descent program (in Sage since
#11005) has a bug:
{{{
sage: K.<y> = NumberField(x^4 + x^2 - 7);
sage: E = EllipticCurve(K, [1, 0, 5*y^2 + 16, 0, 0])
sage: E.simon_two_descent(lim1=2, limtriv=3)
[0, 0, []]
}}}
The rank is in fact 1, and a correct return value would be `(1, 1,
[(-369/25*y^3 + 539/25*y^2 - 1178/25*y + 1718/25 : -27193/125*y^3 +
39683/125*y^2 - 86816/125*y + 126696/125 : 1)])`.

This ticket is just to fix this as quickly as possible; it should
eventually be fixed in a new version of Simon's program.

(See #15608 for a list of tickets related to `simon_two_descent`.)

URL: http://trac.sagemath.org/16022
Reported by: pbruin
Ticket author(s): Peter Bruin
Reviewer(s): Marc Masdeu
  • Loading branch information
Release Manager authored and vbraun committed Mar 31, 2014
2 parents 72e748f + 275e4be commit 1b6930b
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/ext/pari/simon/ell.gp
Expand Up @@ -1776,8 +1776,11 @@ if( DEBUGLEVEL_ell >= 2, print(" reduced: Y^2 = ",lift(redq[1])));
\\ Search for a point on the quartic
point = nfratpoint(nf,pol,LIM1,1);
found = point != [];
\\ If no point is found, check if it is ELS
if( !found && !loc,
if( found,
loc = 1
);
\\ If the quartic is not known to be ELS, check if it is
if( !loc,
if( bigflag,
loc = nflocallysoluble(nf,pol,r,a,b)
, loc = nflocallysoluble(nf,pol,0,1,1)
Expand Down
7 changes: 7 additions & 0 deletions src/sage/schemes/elliptic_curves/gp_simon.py
Expand Up @@ -60,6 +60,13 @@ def simon_two_descent(E, verbose=0, lim1=5, lim3=50, limtriv=10, maxprob=20, lim
sage: E.simon_two_descent()
(1, 1, [(-1 : 0 : 1)])
Check that :trac:`16022` is fixed::
sage: K.<y> = NumberField(x^4 + x^2 - 7);
sage: E = EllipticCurve(K, [1, 0, 5*y^2 + 16, 0, 0])
sage: E.simon_two_descent(lim1=2, limtriv=3) # long time (about 3 s)
(1, 1, [(-369/25*y^3 + 539/25*y^2 - 1178/25*y + 1718/25 : -27193/125*y^3 + 39683/125*y^2 - 86816/125*y + 126696/125 : 1)])
"""
init()

Expand Down

0 comments on commit 1b6930b

Please sign in to comment.