In this section we describe how to compute both cuspidal and Eisenstein newforms.
The intrinsics below require that the base ring of M has characteristic 0. To compute mod p eigenforms, use the Reduction intrinsic (see Section Reductions and Embeddings).
Proof: BoolElt Default: true
The number of Galois conjugacy-classes of newforms associate to the modular forms space M, which must have base ring Z or Q. By "associated to" we mean that the newform lies in M tensor C.
Proof: BoolElt Default: true
The jth Galois-conjugate newform in the ith Galois-orbit of newforms in the space of modular forms M, which must have base ring Z or Q.
Proof: BoolElt Default: true
The first Galois-conjugate newform in the ith orbit in the space of modular forms M, which must have base ring Z or Q.
Proof: BoolElt Default: true
Sort list of the newforms associated to the space of modular forms M divided up into Galois orbits.
Use this intrinsic to find the newforms associated to the space of modular forms M with prespecified eigenvalues. Here I is a sequence [< p1, f1(x) >, ..., < pn, fn(x) >] of pairs. Each pair consists of a prime number that does not divide the level of M and a polynomial. This intrinsic returns the set of newforms ∑an qn in M such that fn(apn)=0. (This intrinsic only works when M is cuspidal and defined over Q or Z.)
> M := ModularForms(Gamma1(8),5); M; Space of modular forms on Gamma_1(8) of weight 5 and dimension 11 over Integer Ring. > NumberOfNewformClasses(M); 4 > Newforms(M); [* [* q + 4*q^2 - 14*q^3 + 16*q^4 - 56*q^6 + O(q^8) *], [* q + 1/24*(a - 30)*q^2 + 6*q^3 + 1/12*(-a - 162)*q^4 + 1/3*(-a + 6)*q^5 + 1/4*(a - 30)*q^6 + 1/3*(2*a - 12)*q^7 + O(q^8), q + 1/24*(b - 30)*q^2 + 6*q^3 + 1/12*(-b - 162)*q^4 + 1/3*(-b + 6)*q^5 + 1/4*(b - 30)*q^6 + 1/3*(2*b - 12)*q^7 + O(q^8) *], [* 57/2 + q + q^2 + 82*q^3 + q^4 - 624*q^5 + 82*q^6 - 2400*q^7 + O(q^8) *], [* q + 16*q^2 + 82*q^3 + 256*q^4 + 624*q^5 + 1312*q^6 + 2400*q^7 + O(q^8) *] *] > Newform(M,1); q + 4*q^2 - 14*q^3 + 16*q^4 - 56*q^6 + O(q^8) > Newform(M,2); q + 1/24*(a - 30)*q^2 + 6*q^3 + 1/12*(-a - 162)*q^4 + 1/3*(-a + 6)*q^5 + 1/4*(a - 30)*q^6 + 1/3*(2*a - 12)*q^7 + O(q^8) > Parent(Newform(M,2)); Space of modular forms on Gamma_1(8) of weight 5 and dimension 2 over Number Field with defining polynomial x^2 - 12*x + 8676 over the Rational Field. > Newform(M,2,2); q + 1/24*(b - 30)*q^2 + 6*q^3 + 1/12*(-b - 162)*q^4 + 1/3*(-b + 6)*q^5 + 1/4*(b - 30)*q^6 + 1/3*(2*b - 12)*q^7 + O(q^8) > IsEisensteinSeries(Newform(M,1)); false > IsEisensteinSeries(Newform(M,2)); false > IsEisensteinSeries(Newform(M,3)); true > IsEisensteinSeries(Newform(M,4)); trueThe following example demonstrates picking out a newform in S2(Γ0(65)) with prespecified eigenvalues.
> S := CuspForms(65,2); > R<x> := PolynomialRing(IntegerRing()); > I := [<3,x+2>]; > Newforms(I,S); [* [* q - q^2 - 2*q^3 - q^4 - q^5 + 2*q^6 - 4*q^7 + O(q^8) *] *] > Factorization(HeckePolynomial(S, 2)); [ <x + 1, 1>, <x^2 - 3, 1>, <x^2 + 2*x - 1, 1> ] > I := [<2,x^2-3>]; > Newforms(I,S); [* [* q + a*q^2 + (-a + 1)*q^3 + q^4 - q^5 + (a - 3)*q^6 + 2*q^7 + O(q^8), q + b*q^2 + (-b + 1)*q^3 + q^4 - q^5 + (b - 3)*q^6 + 2*q^7 + O(q^8) *] *]
It is possible to obtain the galois-conjugacy class of a newform by giving a descriptive label as an argument to Newforms. The format of the label is as follows:
[G0N or G1N][Level]k[Weight][Isogeny Class].
Some example labels are "G0N11k2A", "G0N1k12A", "G1N17k2B", and "G1N9k3B". If the string "G0N" or "G1N" is omitted, then the default is "G0N". Thus the following are also valid: "11k2A", "1k12A", "37k4A". If k[Weight] is omitted, then the default is weight 2, so the following are valid and all refer to weight 2 modular forms on some Γ0(N): "11A", "37A", "65B". In order, possibilities for the isogeny class are as follows:
A, B, C, ..., Y, Z, AA, BB, CC, ..., ZZ, AAA, BBB, CCC, ....
This is essentially the notation used in [Cre97] for isogeny classes, though sometimes for levels ≤450 the ordering differs from that in [Cre97].
Suppose s is a valid label, and let M be the space of modular forms that contains ModularForm(s). Then ModularForm(s) is by definition Newforms(M)[i] where the isogeny class in the label s is the ith isogeny class. For example C corresponds to the 3rd isogeny class and BB corresponds to the 28th.
The Galois-conjugacy class(es) of newforms described by the string label. See the introduction for a description of the notation used for the label.
> Newforms("11A"); [* q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8) *] > Newforms("G0N11k2A"); [* q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8) *] > Newforms("G0N1k12A"); [* q - 24*q^2 + 252*q^3 - 1472*q^4 + 4830*q^5 - 6048*q^6 - 16744*q^7 + O(q^8) *] > Newforms("G1N17k2B"); [* q + (-a^3 + a^2 - 1)*q^2 + (a^3 - a^2 - a - 1)*q^3 + (2*a^3 - a^2 + 2*a)*q^4 + (-a^3 - a^2)*q^5 + (-a^3 + a^2 - a + 1)*q^6 + (-a^3 + a^2 + a - 1)*q^7 + O(q^8), q + (-b^3 + b^2 - 1)*q^2 + (b^3 - b^2 - b - 1)*q^3 + (2*b^3 - b^2 + 2*b)*q^4 + (-b^3 - b^2)*q^5 + (-b^3 + b^2 - b + 1)*q^6 + (-b^3 + b^2 + b - 1)*q^7 + O(q^8), q + (-c^3 + c^2 - 1)*q^2 + (c^3 - c^2 - c - 1)*q^3 + (2*c^3 - c^2 + 2*c)*q^4 + (-c^3 - c^2)*q^5 + (-c^3 + c^2 - c + 1)*q^6 + (-c^3 + c^2 + c - 1)*q^7 + O(q^8), q + (-d^3 + d^2 - 1)*q^2 + (d^3 - d^2 - d - 1)*q^3 + (2*d^3 - d^2 + 2*d)*q^4 + (-d^3 - d^2)*q^5 + (-d^3 + d^2 - d + 1)*q^6 + (-d^3 + d^2 + d - 1)*q^7 + O(q^8) *] > Newforms("G1N9k3B"); [* 1/3*(-5*zeta_6 - 2) + q + (4*zeta_6 + 1)*q^2 + q^3 + (20*zeta_6 - 15)*q^4 + (-25*zeta_6 + 26)*q^5 + (4*zeta_6 + 1)*q^6 + (-49*zeta_6 + 1)*q^7 + O(q^8), 1/3*(5*zeta_6 - 7) + q + (-4*zeta_6 + 5)*q^2 + q^3 + (-20*zeta_6 + 5)*q^4 + (25*zeta_6 + 1)*q^5 + (-4*zeta_6 + 5)*q^6 + (49*zeta_6 - 48)*q^7 + O(q^8) *] > Newforms("11k2A"); [* q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8) *] > Newforms("11A"); [* q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8) *] > Newforms("1k12A"); [* q - 24*q^2 + 252*q^3 - 1472*q^4 + 4830*q^5 - 6048*q^6 - 16744*q^7 + O(q^8) *] > Newforms("37k4A"); [* q + a*q^2 + 1/8*(-a^3 - 9*a^2 - 26*a - 22)*q^3 + (a^2 - 8)*q^4 + 1/8*(13*a^3 + 85*a^2 + 50*a - 186)*q^5 + 1/8*(-3*a^3 - 27*a^2 - 38*a + 6)*q^6 + 1/4*(-19*a^3 - 119*a^2 - 30*a + 170)*q^7 + O(q^8), q + b*q^2 + 1/8*(-b^3 - 9*b^2 - 26*b - 22)*q^3 + (b^2 - 8)*q^4 + 1/8*(13*b^3 + 85*b^2 + 50*b - 186)*q^5 + 1/8*(-3*b^3 - 27*b^2 - 38*b + 6)*q^6 + 1/4*(-19*b^3 - 119*b^2 - 30*b + 170)*q^7 + O(q^8), q + c*q^2 + 1/8*(-c^3 - 9*c^2 - 26*c - 22)*q^3 + (c^2 - 8)*q^4 + 1/8*(13*c^3 + 85*c^2 + 50*c - 186)*q^5 + 1/8*(-3*c^3 - 27*c^2 - 38*c + 6)*q^6 + 1/4*(-19*c^3 - 119*c^2 - 30*c + 170)*q^7 + O(q^8), q + d*q^2 + 1/8*(-d^3 - 9*d^2 - 26*d - 22)*q^3 + (d^2 - 8)*q^4 + 1/8*(13*d^3 + 85*d^2 + 50*d - 186)*q^5 + 1/8*(-3*d^3 - 27*d^2 - 38*d + 6)*q^6 + 1/4*(-19*d^3 - 119*d^2 - 30*d + 170)*q^7 + O(q^8) *] > Newforms("37k2"); [* [* q - 2*q^2 - 3*q^3 + 2*q^4 - 2*q^5 + 6*q^6 - q^7 + O(q^8) *], [* q + q^3 - 2*q^4 - q^7 + O(q^8) *], [* 3/2 + q + 3*q^2 + 4*q^3 + 7*q^4 + 6*q^5 + 12*q^6 + 8*q^7 + O(q^8) *] *]