#18611: Further isogeny improvement
-----------------------------------+------------------------
Reporter: jdemeyer | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: sage-6.8
Component: elliptic curves | Resolution:
Keywords: | Merged in:
Authors: Jeroen Demeyer | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: #18589 | Stopgaps:
-----------------------------------+------------------------
Description changed by jdemeyer:
Old description:
> To compute all `l`-isogenies, Sage uses a function `mult(f)` which
> computes
> {{{
> gcd( numerator(f(m)), psi )
> }}}
> where `m` is a rational function giving the multiplication-by-`m` map.
>
> Instead of the above computation, the inverse direction is actually
> easier to compute: given `g`, we want to find `f` such that
> {{{
> gcd( numerator(f(m)), psi ) = g
> }}}
> Using some theory, this is equivalent to
> {{{
> f(m) = 0 mod g
> }}}
> Since `f` must be irreducible, this is just the characteristic (=
> minimal) polynomial of `m mod g`.
New description:
To compute all `l`-isogenies, Sage uses a function `mult(f)` which
computes
{{{
gcd( numerator(f(m)), psi )
}}}
where `m` is a rational function giving the multiplication-by-`m` map.
Instead of the above computation, the inverse direction is actually easier
to compute: given `g`, we want to find `f` such that
{{{
gcd( numerator(f(m)), psi ) = g
}}}
Using some theory, this is equivalent to
{{{
f(m) = 0 mod g
}}}
Since `f` must be irreducible, this is just the characteristic (= minimal)
polynomial of `m mod g`.
----------
Example timing:
'''before'''
{{{
sage: %time from sage.schemes.elliptic_curves.isogeny_small_degree import
isogenies_prime_degree_general; E = EllipticCurve(GF(3^3,'a'),
[0,0,0,-1,0]); L = isogenies_prime_degree_general(E, 73)
CPU times: user 1min 52s, sys: 16 ms, total: 1min 52s
Wall time: 1min 52s
}}}
'''after'''
{{{
sage: %time from sage.schemes.elliptic_curves.isogeny_small_degree import
isogenies_prime_degree_general; E = EllipticCurve(GF(3^3,'a'),
[0,0,0,-1,0]); L = isogenies_prime_degree_general(E, 73)
CPU times: user 33.1 s, sys: 107 ms, total: 33.2 s
Wall time: 33.2 s
}}}
--
--
Ticket URL: <http://trac.sagemath.org/ticket/18611#comment:3>
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.