[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Class Polynomials

Class polynomials are invariants of elliptic curves with complex multiplication by an imaginary quadratic order of discriminant D. As such the Hilbert class polynomials can be interpreted as defining a subscheme or divisor on the modular curve X(1) isomorphic to P^1, while the Weber variants define a subscheme of a modular curve of higher level.

HilbertClassPolynomial(D) : RngIntElt -> RngUPolElt
Given a negative discriminant D, returns the Hilbert class polynomial, defined as the minimal polynomial of j(tau), where Z[tau] is an imaginary quadratic order of discriminant D.
WeberClassPolynomial(D) : RngIntElt -> RngUPolElt
Given a negative discriminant D congruent to 1 modulo 8, returns the Weber class polynomial, defined as the minimal polynomial of f(tau), where Z[tau] is an imaginary quadratic order of discriminant D and f is a particular normalized Weber function generating the same class field as j(tau). A root f(tau) of the Weber class polynomial is an integral unit generating the ring class field related to the corresponding root j(tau) of the Hilbert class polynomial by the expression

j(tau) = ((f(tau)^(24) - 16)^3 /f(tau)^(24)),

where ( GCD)(D, 3) = 1, and

j(tau) = ((f(tau)^8 - 16)^3 /f(tau)^8),

if 3 divides D. For further details, consult Yui and Zagier [YZ97].


Example CrvMod_Standard class polynomials (H93E5)

Class polynomials are typically used for constructing elliptic curves with a known endomorphism ring or known number of points over some finite field. The Weber (and other) variants of the class polynomials were introduced as a means of obtaining class invariants -- defining the j-invariant of curves with given CM discriminant -- with much smaller coefficients. In this example we give the classical example of D = - 71, where the

> HilbertClassPolynomial(-71);
x^7 + 313645809715*x^6 - 3091990138604570*x^5 + 98394038810047812049302*x^4 
- 823534263439730779968091389*x^3 + 5138800366453976780323726329446*x^2 - 
425319473946139603274605151187659*x + 737707086760731113357714241006081263
> WeberClassPolynomial(-71);  
x^7 - x^6 - x^5 + x^4 - x^3 - x^2 + 2*x + 1
As in this example, a witnessed by the constant term 1, the roots of the WeberClassPolynomial are units in a particular ring class order.

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]