-
-
Notifications
You must be signed in to change notification settings - Fork 654
Closed
Milestone
Description
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:
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)
CC: @defeo @JohnCremona @categorie
Component: elliptic curves
Author: Lorenz Panny
Branch/Commit: fb571d3
Reviewer: John Cremona
Issue created by migration from https://trac.sagemath.org/ticket/33865