-
-
Notifications
You must be signed in to change notification settings - Fork 487
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
compute isogeny kernel polynomials from irreducible divisors or (possibly irrational) points #37125
compute isogeny kernel polynomials from irreducible divisors or (possibly irrational) points #37125
Conversation
I will review this -- but not before Tuesday. |
… necessarily rational) points
… code to find isogeny kernels
7963374
to
f632ada
Compare
Documentation preview for this PR (built with commit b65ba8d; changes) is ready! 🎉 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. (To the release manager: I am the author of the original strategy, and I am slo familiar with the paper on which the new strategy is based.)
Thank you! |
… divisors or (possibly irrational) points In this patch we implement Algorithms 3 and 4 from [this paper](https://ia.cr/2023/106). Evidently, the necessity for such an algorithm arises when converting from endomorphism-ring ideals to isogenies. One immediate application is that `isogenies_prime_degree_general()` can be simplified, even with a small speedup: ```sage sage: K.<i> = QuadraticField(-1) sage: E = EllipticCurve(K,[0,0,0,1,0]) sage: %timeit E.isogenies_prime_degree(37) ```` Before: `2.39 s ± 3.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` After: `2.29 s ± 5.05 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` #sd123 URL: sagemath#37125 Reported by: Lorenz Panny Reviewer(s): John Cremona
… divisors or (possibly irrational) points In this patch we implement Algorithms 3 and 4 from [this paper](https://ia.cr/2023/106). Evidently, the necessity for such an algorithm arises when converting from endomorphism-ring ideals to isogenies. One immediate application is that `isogenies_prime_degree_general()` can be simplified, even with a small speedup: ```sage sage: K.<i> = QuadraticField(-1) sage: E = EllipticCurve(K,[0,0,0,1,0]) sage: %timeit E.isogenies_prime_degree(37) ```` Before: `2.39 s ± 3.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` After: `2.29 s ± 5.05 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` #sd123 URL: sagemath#37125 Reported by: Lorenz Panny Reviewer(s): John Cremona
… divisors or (possibly irrational) points In this patch we implement Algorithms 3 and 4 from [this paper](https://ia.cr/2023/106). Evidently, the necessity for such an algorithm arises when converting from endomorphism-ring ideals to isogenies. One immediate application is that `isogenies_prime_degree_general()` can be simplified, even with a small speedup: ```sage sage: K.<i> = QuadraticField(-1) sage: E = EllipticCurve(K,[0,0,0,1,0]) sage: %timeit E.isogenies_prime_degree(37) ```` Before: `2.39 s ± 3.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` After: `2.29 s ± 5.05 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` #sd123 URL: sagemath#37125 Reported by: Lorenz Panny Reviewer(s): John Cremona
… divisors or (possibly irrational) points In this patch we implement Algorithms 3 and 4 from [this paper](https://ia.cr/2023/106). Evidently, the necessity for such an algorithm arises when converting from endomorphism-ring ideals to isogenies. One immediate application is that `isogenies_prime_degree_general()` can be simplified, even with a small speedup: ```sage sage: K.<i> = QuadraticField(-1) sage: E = EllipticCurve(K,[0,0,0,1,0]) sage: %timeit E.isogenies_prime_degree(37) ```` Before: `2.39 s ± 3.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` After: `2.29 s ± 5.05 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)` #sd123 URL: sagemath#37125 Reported by: Lorenz Panny Reviewer(s): John Cremona
I have implemented the `automatic size labeler`, which now assigns labels to pull requests based on the number of lines changed **Minimal** Typically involves very small changes, bug fixes, or updates that require only a few lines of code, often less than 50. sagemath#37208 sagemath#37146 sagemath#37043 **Small** Involves more substantial changes than minimal, potentially adding new features or making modifications to existing ones. The range is usually between 50 to 100 lines of code. sagemath#37152 sagemath#37132 **Moderate** Represents a significant portion of the codebase being modified, such as adding new features, refactoring, or making extensive changes to existing functionalities. This might involve between 100 to 300 lines of code. sagemath#36919 sagemath#37112 **Large** Involves substantial and complex changes across various parts of the codebase. This could include major architectural changes, the introduction of new modules, or a significant overhaul of existing features, often exceeding 300 lines of code. sagemath#37125 sagemath#36977 sagemath#36972 ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. Fixes: sagemath#37254 URL: sagemath#37262 Reported by: Aman Moon Reviewer(s): Sebastian Oehms
I have implemented the `automatic size labeler`, which now assigns labels to pull requests based on the number of lines changed **Minimal** Typically involves very small changes, bug fixes, or updates that require only a few lines of code, often less than 50. sagemath#37208 sagemath#37146 sagemath#37043 **Small** Involves more substantial changes than minimal, potentially adding new features or making modifications to existing ones. The range is usually between 50 to 100 lines of code. sagemath#37152 sagemath#37132 **Moderate** Represents a significant portion of the codebase being modified, such as adding new features, refactoring, or making extensive changes to existing functionalities. This might involve between 100 to 300 lines of code. sagemath#36919 sagemath#37112 **Large** Involves substantial and complex changes across various parts of the codebase. This could include major architectural changes, the introduction of new modules, or a significant overhaul of existing features, often exceeding 300 lines of code. sagemath#37125 sagemath#36977 sagemath#36972 ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. Fixes: sagemath#37254 URL: sagemath#37262 Reported by: Aman Moon Reviewer(s): Sebastian Oehms
I have implemented the `automatic size labeler`, which now assigns labels to pull requests based on the number of lines changed **Minimal** Typically involves very small changes, bug fixes, or updates that require only a few lines of code, often less than 50. sagemath#37208 sagemath#37146 sagemath#37043 **Small** Involves more substantial changes than minimal, potentially adding new features or making modifications to existing ones. The range is usually between 50 to 100 lines of code. sagemath#37152 sagemath#37132 **Moderate** Represents a significant portion of the codebase being modified, such as adding new features, refactoring, or making extensive changes to existing functionalities. This might involve between 100 to 300 lines of code. sagemath#36919 sagemath#37112 **Large** Involves substantial and complex changes across various parts of the codebase. This could include major architectural changes, the introduction of new modules, or a significant overhaul of existing features, often exceeding 300 lines of code. sagemath#37125 sagemath#36977 sagemath#36972 ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. Fixes: sagemath#37254 URL: sagemath#37262 Reported by: Aman Moon Reviewer(s): Sebastian Oehms
In this patch we implement Algorithms 3 and 4 from this paper. Evidently, the necessity for such an algorithm arises when converting from endomorphism-ring ideals to isogenies.
One immediate application is that
isogenies_prime_degree_general()
can be simplified, even with a small speedup:Before:
2.39 s ± 3.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
After:
2.29 s ± 5.05 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
#sd123