-
-
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
establish interface for instantiated classical modular polynomials #36190
Merged
vbraun
merged 6 commits into
sagemath:develop
from
yyyyx4:public/interface_for_instantiated_modular_polynomials
Dec 6, 2023
Merged
establish interface for instantiated classical modular polynomials #36190
vbraun
merged 6 commits into
sagemath:develop
from
yyyyx4:public/interface_for_instantiated_modular_polynomials
Dec 6, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
yyyyx4
force-pushed
the
public/interface_for_instantiated_modular_polynomials
branch
from
September 4, 2023 11:44
8fec3f7
to
3054650
Compare
yyyyx4
force-pushed
the
public/interface_for_instantiated_modular_polynomials
branch
2 times, most recently
from
September 5, 2023 15:34
2b52f71
to
a6ebb72
Compare
tscrim
requested changes
Sep 13, 2023
yyyyx4
force-pushed
the
public/interface_for_instantiated_modular_polynomials
branch
from
September 26, 2023 08:50
a6ebb72
to
2ddd0d2
Compare
tscrim
requested changes
Sep 27, 2023
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.
Some last little things.
…_polynomials SageMath version 10.2.beta9, Release Date: 2023-10-30
tscrim
reviewed
Nov 3, 2023
Documentation preview for this PR (built with commit 372ed15; changes) is ready! 🎉 |
tscrim
reviewed
Nov 7, 2023
tscrim
approved these changes
Nov 7, 2023
Co-authored-by: Travis Scrimshaw <clfrngrown@aol.com>
Done, thank you for reviewing! |
Thank you. |
Thanks for implementing this! |
vbraun
pushed a commit
to vbraun/sage
that referenced
this pull request
Dec 4, 2023
…lar polynomials Generic modular polynomials (i.e., as elements of $\mathbb Z[X,Y]$) grow very big very quickly. However, most algorithmic applications only require evaluations $\Phi_\ell(j,Y)$ of those polynomials. There are algorithms to compute such evaluations faster than computing-then- evaluating the full modular polynomial, for example due to [Sutherland](https://arxiv.org/abs/1202.3985). PARI implements both kinds of algorithms in `polmodular()`. This patch adds a common interface for (1) accessing Kohel's database of modular polynomials if available, (2) calling PARI's `polmodular()` to compute generic modular polynomials, and (3) calling PARI's `polmodular()` to compute instantiated modular polynomials. Results are opportunistically cached and reused whenever this seems to make sense. URL: sagemath#36190 Reported by: Lorenz Panny Reviewer(s): Lorenz Panny, Travis Scrimshaw
yyyyx4
deleted the
public/interface_for_instantiated_modular_polynomials
branch
December 6, 2023 14:52
vbraun
pushed a commit
to vbraun/sage
that referenced
this pull request
Jan 21, 2024
…olynomial` There is a bug in the new `classical_modular_polynomial` function created in sagemath#36190. A simple example to reproduce the bug is the following ``` p = 2^216 * 3^137 - 1 F.<i> = GF(p^2, modulus=[1,0,1]) E = EllipticCurve(F, [0, 6, 0, 1, 0]) classical_modular_polynomial(2, E.j_invariant()) ``` This will fail with a `TypeError`. The bug is due to the interface with the pari function `polmodular`. In particular, contrary to the [documentation](http://pari.math.u- bordeaux.fr/dochtml/ref/Polynomials_and_power_series.html#polmodular), the `polmodular` function will only evaluate $\Phi_\ell(j, Y)$ for $j$-invariants that are defined over $\mathbb F_p$, and not over any generic finite field. If however `j.parent()` is a generic finite field, but `j` itself is defined over the prime field, pari will evaluate that and the current implementation fails to convert back to a sage polynomial. The proposed fix is to cast the result of the pari call to `ZZ['Y']`, since the result of `polmodular` currently returns a polynomial in the correct $\mathbb Z/n\mathbb Z[Y]$. #sd123 URL: sagemath#37094 Reported by: Riccardo Zanotto Reviewer(s): Frédéric Chapoton, Peter Bruin, Riccardo Zanotto
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Generic modular polynomials (i.e., as elements of$\mathbb Z[X,Y]$ ) grow very big very quickly. However, most algorithmic applications only require evaluations $\Phi_\ell(j,Y)$ of those polynomials. There are algorithms to compute such evaluations faster than computing-then-evaluating the full modular polynomial, for example due to Sutherland. PARI implements both kinds of algorithms in
polmodular()
.This patch adds a common interface for (1) accessing Kohel's database of modular polynomials if available, (2) calling PARI's
polmodular()
to compute generic modular polynomials, and (3) calling PARI'spolmodular()
to compute instantiated modular polynomials. Results are opportunistically cached and reused whenever this seems to make sense.