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

Improved algorithm choice for isogeny computation #37242

Merged
merged 9 commits into from
Feb 25, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Doctest
  • Loading branch information
r98inver committed Feb 5, 2024
commit ece82fbeb9dde1bb8b23527e25e131210d29f3bf
6 changes: 3 additions & 3 deletions src/sage/schemes/elliptic_curves/ell_curve_isogeny.py
Original file line number Diff line number Diff line change
Expand Up @@ -867,9 +867,9 @@ class EllipticCurveIsogeny(EllipticCurveHom):

sage: E = EllipticCurve(j=GF(7)(0))
sage: phi = E.isogeny([E(0), E((0,1)), E((0,-1))]); phi
Isogeny of degree 3
from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
to Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
Composite morphism of degree 3 = 3:
From: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
To: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
sage: phi2 = phi * phi; phi2
Composite morphism of degree 9 = 3^2:
From: Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 7
Expand Down
12 changes: 7 additions & 5 deletions src/sage/schemes/elliptic_curves/ell_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -1310,9 +1310,9 @@
sage: (P.order(), Q.order())
(7, 3)
sage: phi = E.isogeny([P,Q]); phi
Isogeny of degree 21
from Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19
to Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19
Composite morphism of degree 21 = 7*3:
From: Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19
To: Elliptic Curve defined by y^2 = x^3 + x + 1 over Finite Field of size 19
sage: phi(E.random_point()) # all points defined over GF(19) are in the kernel
(0 : 1 : 0)

Expand Down Expand Up @@ -1352,8 +1352,8 @@
``kernel`` is a list of points::

sage: E = EllipticCurve(GF(31), [1,0,0,1,2])
sage: P = E.gens()[0]*2
sage: Q = E.gens()[1]*3
sage: P = E([21,2])
sage: Q = E([7, 12])
sage: print(P.order())
6
sage: print(Q.order())
Expand Down Expand Up @@ -1381,6 +1381,7 @@
Elliptic-curve isogeny (using square-root Vélu) of degree 23:
From: Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97
To: Elliptic Curve defined by y^2 = x^3 + 95*x + 68 over Finite Field of size 97
sage: _velu_sqrt_bound.set(1000) # Reset bound

If the order of the point is unknown, fall back to ``"traditional"``::

Expand All @@ -1390,6 +1391,7 @@
sage: _velu_sqrt_bound.set(1)
sage: E.isogeny(P)
Isogeny of degree 46 from Elliptic Curve defined by y^2 = x^3 + 6*x + 46 over Finite Field of size 97 to Elliptic Curve defined by y^2 = x^3 + 87*x + 47 over Finite Field of size 97
sage: _velu_sqrt_bound.set(1000) # Reset bound

.. SEEALSO::

Expand Down Expand Up @@ -1455,7 +1457,7 @@
return EllipticCurveHom_composite(self, kernel, codomain=codomain, model=model, velu_sqrt_bound=velu_sqrt_bound)
if algorithm == "traditional":
return EllipticCurveIsogeny(self, kernel, codomain, degree, model, check=check)

Check warning on line 1460 in src/sage/schemes/elliptic_curves/ell_field.py

View check run for this annotation

Codecov / codecov/patch

src/sage/schemes/elliptic_curves/ell_field.py#L1460

Added line #L1460 was not covered by tests
if kernel is not None:
# Check for multiple points or point of known order
kernel_is_list = isinstance(kernel, list) or isinstance(kernel, tuple)
Expand Down
Loading