Polynomials

The torsion or division polynomials are the polynomials defining the subschemes of n-torsion points on the elliptic curve.

DefiningPolynomial(E) : CrvEll -> RngMPolElt
Returns the homogeneous defining polynomial for the elliptic curve E.
DivisionPolynomial(E, n) : CrvEll, RngIntElt -> RngUPolElt, RngUPolElt, RngUPolElt
DivisionPolynomial(E, n, g) : CrvEll, RngIntElt, RngUPolElt -> RngUPolElt, RngUPolElt, RngUPolElt
Given an elliptic curve E and an integer n, returns the n-th division polynomial as a univariate polynomial over the base ring of E. If n is even this polynomial has multiplicity two at the nonzero 2-torsion points of the curve. The second return value is the n-th division polynomial, divided by the univariate 2-torsion polynomial if n is even. The third argument is the cofactor, equal to the univariate 2-torsion polynomial if n is even, and 1 otherwise.

If a polynomial is passed as a third argument then the division polynomial is computed efficiently modulo that polynomial.

TwoTorsionPolynomial(E) : CrvEll -> RngMPolElt
Returns the multivariate 2-torsion polynomial 2y + a1x + a3 of the elliptic curve E, as a bivariate polynomial.

Example CrvEll_DivisionPolynomial (H128E13)

Let E be an elliptic curve over a finite field K. The following code fragment illustrates the relationship between the roots in K of the n-th division polynomial for E, and the x-coordinates of the points of n-torsion on E.
> K := GF(101);
> E := EllipticCurve([ K | 1, 1]);
> Roots(DivisionPolynomial(E, 5));
[ <86, 1>, <46, 1> ]
> [ P : P in RationalPoints(E) | 5*P eq E!0 ];
[ (86 : 34 : 1), (0 : 1 : 0), (46 : 25 : 1), (86 : 67 : 1), (46 : 76 : 1) ]
It is worth noting that even if the roots of the division polynomial lie in the field, the corresponding points may not, lying instead in a quadratic extension.
> Roots(DivisionPolynomial(E, 9));
[ <4, 1>, <17, 1>, <28, 1>, <34, 1>, <77, 1> ]
> Points(E, 4);
[]
> K2<w> := ext<K | 2>;
> Points(E(K2), 4);
[ (4 : 82*w + 57 : 1), (4 : 19*w + 44 : 1) ]
> Order($1[1]);
9
V2.28, 13 July 2023