Skip to content

Commit 6fee0a6

Browse files
author
Release Manager
committed
gh-38474: Implement period_lattice for elliptic curves over RealField, ComplexField, etc. Implement `E.period_lattice()` method for elliptic curves over other fields. (The code is mostly already there, just need minor adaptation.) ### 📝 Checklist - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. (not aware of one) - [x] I have created tests covering the changes. - [x] I have updated the documentation and checked the documentation preview. URL: #38474 Reported by: user202729 Reviewer(s): John Cremona
2 parents 10ee1bb + 31441ba commit 6fee0a6

File tree

2 files changed

+181
-53
lines changed

2 files changed

+181
-53
lines changed

src/sage/schemes/elliptic_curves/ell_field.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,6 +1529,55 @@ def isogeny_codomain(self, kernel):
15291529
E._fetch_cached_order(self)
15301530
return E
15311531

1532+
def period_lattice(self):
1533+
r"""
1534+
Return the period lattice of the elliptic curve for the given
1535+
embedding of its base field with respect to the differential
1536+
`dx/(2y + a_1x + a_3)`.
1537+
1538+
Only supported for some base rings.
1539+
1540+
EXAMPLES::
1541+
1542+
sage: EllipticCurve(RR, [1, 6]).period_lattice()
1543+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + 1.00000000000000*x + 6.00000000000000 over Real Field with 53 bits of precision
1544+
1545+
TESTS::
1546+
1547+
sage: EllipticCurve(QQ, [1, 6]).period_lattice()
1548+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + x + 6 over Rational Field
1549+
sage: EllipticCurve(RR, [1, 6]).period_lattice()
1550+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + 1.00000000000000*x + 6.00000000000000 over Real Field with 53 bits of precision
1551+
sage: EllipticCurve(RealField(100), [1, 6]).period_lattice()
1552+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + 1.0000000000000000000000000000*x + 6.0000000000000000000000000000 over Real Field with 100 bits of precision
1553+
sage: EllipticCurve(CC, [1, 6]).period_lattice()
1554+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + 1.00000000000000*x + 6.00000000000000 over Complex Field with 53 bits of precision
1555+
sage: EllipticCurve(ComplexField(100), [1, 6]).period_lattice()
1556+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + 1.0000000000000000000000000000*x + 6.0000000000000000000000000000 over Complex Field with 100 bits of precision
1557+
sage: EllipticCurve(AA, [1, 6]).period_lattice()
1558+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + x + 6 over Algebraic Real Field
1559+
sage: EllipticCurve(QQbar, [1, 6]).period_lattice()
1560+
Period lattice associated to Elliptic Curve defined by y^2 = x^3 + x + 6 over Algebraic Field
1561+
1562+
Unsupported cases (the exact error being raised may change in the future)::
1563+
1564+
sage: EllipticCurve(ZZ, [1, 6]).period_lattice()
1565+
Traceback (most recent call last):
1566+
...
1567+
AttributeError: 'EllipticCurve_generic_with_category' object has no attribute 'period_lattice'
1568+
sage: QQt.<t> = QQ[]
1569+
sage: EllipticCurve(QQt.fraction_field(), [1, 6]).period_lattice()
1570+
Traceback (most recent call last):
1571+
...
1572+
AttributeError: 'FractionField_1poly_field_with_category' object has no attribute ...
1573+
sage: EllipticCurve(GF(7), [1, 6]).period_lattice()
1574+
Traceback (most recent call last):
1575+
...
1576+
IndexError: list index out of range
1577+
"""
1578+
from sage.schemes.elliptic_curves.period_lattice import PeriodLattice_ell
1579+
return PeriodLattice_ell(self)
1580+
15321581
def kernel_polynomial_from_point(self, P, *, algorithm=None):
15331582
r"""
15341583
Given a point `P` on this curve which generates a rational subgroup,

0 commit comments

Comments
 (0)