#11095: Add BMSS algorithm for isogenies of elliptic curves
-------------------------------------+-------------------------------------
Reporter: defeo | Owner: cremona
Type: enhancement | Status: needs_review
Priority: minor | Milestone: sage-6.3
Component: elliptic curves | Resolution:
Keywords: isogenies ecc2011 | Merged in:
Authors: Luca De Feo | Reviewers: John Cremona, Marco
Report Upstream: N/A | Streng
Branch: | Work issues:
public/ticket/11095 | Commit:
Dependencies: | 825710898d20ba257240bd3cbb45f9c194cb6c01
| Stopgaps:
-------------------------------------+-------------------------------------
Comment (by pbruin):
I've been experimenting a bit and it seems to work well. Would it be
possible to make `EllipticCurve.isogeny()` and `EllipticCurveIsogeny`
accept `algorithm='bmss'`? In the following example I wanted to compute a
20-isogeny between two elliptic curves over a quadratic field (knowing a
priori that such an isogeny exists). Trying `E.isogeny()` gives a
`NotImplementedError` and it seems that I have to import `isogeny_kernel`:
{{{
sage: K.<a> = NumberField(x^2 - 17*x - 120)
sage: E = EllipticCurve([0, 1, 0, -89423170640*a + 1999987182576,
87486176701141216*a - 1956665490639249900])
sage: E_isog = EllipticCurve([0, 0, 0, 1/3*(6255584200920576*a -
139908796923911440), 1/27*(-5210907833850999276681216*a +
116544166379886781944583040)])
sage: E.isogeny(kernel=None, codomain=E_isog, degree=20)
...
NotImplementedError: For basic Kohel's algorithm, if the kernel degree is
even then the kernel must be contained in the two torsion.
sage: from sage.schemes.elliptic_curves.isogeny_char_zero import
isogeny_kernel
sage: isogeny_kernel(E, E_isog, 20)
x^10 + (-2152280*a + 48136659)*x^9 + (-148051244547864/5*a +
3311228950404238/5)*x^8 + (-129467694651804753040*a +
2895599965960126731024)*x^7 + (-131438756167338709694710304*a +
2939683593714796730731625088)*x^6 + (196151384137228169247793952562368*a -
4387008996787386307912516668742368)*x^5 +
(211127593344837320952211060140401067136*a -
4721958274971357551356075375634080673472)*x^4 +
(-676089273725371340027412364537916253836377856/5*a +
15121023690506428142245429629695675550575584512/5)*x^3 +
(-58033791954670621184885097803503676816467494405632*a +
1297950399599077493253508317741911096974395766973184)*x^2 +
(26614381917191620756309912883562400685500952121788824576*a -
595241952679626281929246822605533328842111805768309632256)*x +
665314371570672918992258944764049661423822960574864980480000*a -
14880038428536031844363469294864157021058877011246176591280640
}}}
By the way, in this example Stark's algorithm fails; I haven't checked
exactly why.
{{{
sage: isogeny_kernel(E, E_isog, 20, algorithm='stark')
...
RuntimeError: Stark's algorithm returned an unexpected result. Please
report this bug.
}}}
--
Ticket URL: <http://trac.sagemath.org/ticket/11095#comment:36>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.