You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Trac #33865: direct computation of .formal()[1] for elliptic-curve morphisms
Follow-up to #33216: We can compute `.formal()[1]` directly, i.e.,
without going through `.formal()`. This is beneficial as the latter uses
the rational maps, which can be very expensive.
* Composite isogenies have multiplicative `.formal()[1]`.
* Isogenies using Vélu's or Kohel's formulas are normalized, hence
`.formal()[1] == 1`. We only need to account for pre- and post-
isomorphism.
* Weierstrass isomorphisms `(u,r,s,t)` have `.formal()[1] == u`.
Same example as for #33216:
{{{#!sage
E = EllipticCurve(j=GF(431^2)(4))
phi = E.isogeny(2^99*E.gens()[0])
_ = phi.dual()
%timeit phi._EllipticCurveIsogeny__dual = None; phi.dual()
}}}
Sage 9.6:
{{{
537 ms ± 6.75 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
}}}
This branch:
{{{
294 ms ± 1.71 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
}}}
URL: https://trac.sagemath.org/33865
Reported by: lorenz
Ticket author(s): Lorenz Panny
Reviewer(s): John Cremona
0 commit comments