-
-
Notifications
You must be signed in to change notification settings - Fork 510
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
Improve CM testing for elliptic curves over number fields #35166
Conversation
…nomials, making elliptic curve CM testing much faster
I see doctest failures and am fixing them. I suppose the point of having a "draft" PR is that all the automatic tests will run, then one makes it a real PR after fixing issues. |
There are no failures when I run the tests locally so am letting the automatic build and test run again. |
OK, there really were, so I have fixed them. |
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## develop #35166 +/- ##
===========================================
- Coverage 88.62% 88.58% -0.04%
===========================================
Files 2148 2140 -8
Lines 398855 397570 -1285
===========================================
- Hits 353480 352192 -1288
- Misses 45375 45378 +3
... and 152 files with indirect coverage changes Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report in Codecov by Sentry. |
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.
Generally looks good!
I have now finished my edits in response to the referee |
I just fixed a trivial merge conflict which arose because this had been sitting idle for 2 weeks since I addressed all the revier's concerns. Please @roed314 or someone else update the review so that this can be merged! |
Documentation preview for this PR is ready! 🎉 |
|
Thanks for the reminder! This looks good to me. |
Thanks, @roed314 ! |
📚 Description
This implements the Cremona-Sutherland algorithm (see :arxiv:
2301.11169
) for detecting Hilbert Class Polynomials and computing the corresponding CM discriminants. Using this, a new default algorithm for detecting CM j-invariants, and hence whether or not elliptic curves over number fields, is implemented. This is very much faster than the older methods for CM testing which were only fast enough to be reasonable over fields of degree less than 10; the new method works fine up to degree 100 and beyond (as some of the examples show).Secondly, the caching of the computation of CM orders and discriminants and j-invariants for class numbers up to 100 has been made a lot more efficient through better caching. Before, if you asked for all discriminants with class number (say) 10, it computed all those with class number up to 10 and threw the rest away, so that even if you then asked for class number 9 it had to start from scratch; now that second call will be instantaneous. And If you then ask for class number 11, it will be faster than it was since much of the data needed will have been cached.
This closes #35147
📝 Checklist
⌛ Dependencies
None. Based on 10.0.beta0