-
-
Notifications
You must be signed in to change notification settings - Fork 581
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
Add BMSS algorithm for isogenies of elliptic curves #11095
Comments
This comment has been minimized.
This comment has been minimized.
comment:2
Besides implementing BMSS, I cleaned a bit BMSS runs significantly faster than Stark's, and works for slightly larger characteristics, I thus set it as the default choice. I haven't produced any serious benchmarks, but I will if the reviewers ask me to. |
comment:3
I like this a lot, and it is a good idea to start moving stuff out of the huge isogenies file. I am planning to do the same for the isogenies of small degree code --currently the genus 0 prime degrees 2,3,5,7,13 and the others which can occur over Q. Kimi Tsukazaki and I are working on extending that to all the ell for which I tested this against 4.7.rc1 and had some doctest failures. I expect these will be easy to fix.
|
Reviewer: John Cremona |
comment:4
Ooops! I had made some last minute change to the doctest and must have tested the wrong file afterwards. The new patch passes all tests, including -testall -long |
comment:6
I realized that my code for BMSS fails when the isogeny has strictly positive valuation at x, which happens for example when the origin is a point of order 2 and the isogeny has odd degree as in the code below
The fix is easy, I hope I'll have time to send a revised patch next week. |
comment:7
Attachment: trac_11095_isogenies_char_0.patch.gz Finally, here's the easy fix! I hope it will be ok now. |
comment:8
On sage 4.7.1.alpha3 with this patch:
|
Changed reviewer from John Cremona to John Cremona, Marco Streng |
comment:9
Thanks for testing, Marco. This is wierd: I can't seem to reproduce the error; besides, I don't see how the ecm.py module interacts with the elliptic_curve package. I tested on sage 4.7.1.alpha4 with and without the patch and I have no failure in any case. Does anyone understand what's going on? Can anyone confirm the bug? |
comment:10
Replying to @defeo:
I'll see if I can reproduce it, and will let you know tomorrow. |
Changed reviewer from John Cremona, Marco Streng to John Cremona |
Changed branch from u/defeo/ticket/11095 to public/ticket/11095 |
comment:35
I have made a few minor changes, including:
New commits:
|
comment:36
I've been experimenting a bit and it seems to work well. Would it be possible to make
By the way, in this example Stark's algorithm fails; I haven't checked exactly why.
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:39
The merge conflicts appear to result from #11327. |
Work Issues: merge conflicts |
comment:40
Replying to @pjbruin:
If so (and it seems likely) I apologise, as the author of #11327, and hope I have not annoyed people. I'll try to remedy that myself to make up for it, but there are several isogeny-related branches being worked on at the moment and so conflicts are unavoidable. |
comment:41
Replying to @JohnCremona:
I apologise in return: this particular conflict could have been avoided if I had finished my review instead of wondering about adding an extra bit of functionality (comment:36) and leaving it there. |
comment:42
No big deal. I'm back from conferences+vacation and I'm going to have a look at these conflicts and other isogeny related code in the next few days. |
comment:43
The conflict seems to me to be not so easy to solve. What do you think ? |
comment:45
For this part of the last commit --- a/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py
+++ b/src/sage/schemes/elliptic_curves/ell_curve_isogeny.py
@@ -3441,13 +3436,14 @@ class EllipticCurveIsogeny(Morphism):
aut = [a for a in auts if a.u == sc]
if len(aut) != 1:
raise ValueError("There is a bug in dual().")
+ # PROBLEM HERE BELOW IN THE CODE : E0 not defined !
phi_hat.set_post_isomorphism(WeierstrassIsomorphism(E0,aut[0],E0))
self.__dual = phi_hat
see #17293, where I also noticed this problem; the correct line is
|
comment:46
Ok. anyway, the merge I did here was not perfectly clean : the functions moved to isogeny_char_zero are pretty much in their state dating from before #11327 this is rather annoying.. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
An implementation of the BMSS algorithm was added in #36285. |
Add the algorithm by Bostan, Morain, Salvy and Schost for normalized isogenies in characteristic 0 or large enough.
References:
[BMSS08] Alin Bostan, François Morain, Bruno Salvy, and Éric Schost, Fast algorithms for computing isogenies between elliptic curves, Mathematics of Computation 77 (2008), 1755–1778.
Apply: attachment: trac_11095_isogenies_char_0_v3.patch
CC: @categorie @jpflori @pjbruin
Component: elliptic curves
Keywords: isogenies ecc2011
Work Issues: merge conflicts
Author: Luca De Feo
Branch/Commit: public/ticket/11095 @
59417df
Reviewer: John Cremona, Marco Streng
Issue created by migration from https://trac.sagemath.org/ticket/11095
The text was updated successfully, but these errors were encountered: