Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make EllipticCurveIsogeny objects faster to create via lazy evaluation #8014

Open
craigcitro opened this issue Jan 20, 2010 · 2 comments
Open

Comments

@craigcitro
Copy link
Member

Currently, it's quite slow to create an EllipticCurveIsogeny object, because it precomputes a huge amount of information about itself. (This blocks the original request at #7262, for instance.) It seems like it would be easy enough (and generally useful!) to speed up creation of isogeny objects, and have them lazily evaluate the appropriate bits as needed. Then one could unify the multiplication_by_m and multiplication_by_m_isogeny methods, for instance (maybe by deprecating the former?).

That said, I haven't spent much time with the isogeny code -- if there's some obvious reason this is a bad idea, please comment on the ticket.

CC: @JohnCremona @categorie @shumow @yyyyx4

Component: elliptic curves

Issue created by migration from https://trac.sagemath.org/ticket/8014

@JohnCremona
Copy link
Member

comment:1

See also #7368 for an isogeny wishlist.

Chris W and I have lots of other ideas for redesigning the isogeny code. At present it consists of a lot of intricately related functions and the code is hard to get into. And the file ell_curve_isogeny.py is very long (4790 lines): I plan to move lines 3733 to the end when we add implementations for {2,3,5,7,13}-isogenies in characteristics {2,3} for {j=0, j!=0}, which are currently being worked out by my student Kimi (522=20 special cases!)

@yyyyx4
Copy link
Member

yyyyx4 commented Nov 5, 2021

comment:3

The performance issues of multiplication_by_m_isogeny would be addressed by #32826.

kryzar pushed a commit to kryzar/sage that referenced this issue Feb 6, 2023
…curves

This ticket adds `EllipticCurveHom_scalar`, a new class encapsulating
scalar multiplications on elliptic curves. This serves two main
purposes:

1. It solves one of the motivations behind sagemath#8014 (faster
`multiplication_by_m_isogeny`).
2. Wrapping scalar multiplications as an `EllipticCurveHom` is an
important step towards implementing endomorphism rings (see sagemath#7368).

We also deprecate `.multiplication_by_m_isogeny()`: It should be
replaceable by `.scalar_multiplication()` in all cases.

URL: https://trac.sagemath.org/32826
Reported by: lorenz
Ticket author(s): Lorenz Panny
Reviewer(s): John Cremona
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants