The following intrinsics give the q-expansion of a modular form (about the cusp ∞).
Note that q-expansions are printed by default only to precision O(q12). This may be adjusted using SetPrecision (see below), which should be used to control printing only; to control the amount of precision computed internally, instead use qExpansion or qExpansionBasis and specify the desired precision.
GaloisOrbitRep: BoolElt Default: false
The q-expansion (at the cusp ∞) of the modular form (or half-integral weight form) f to absolute precision prec. This is an element of the power series ring over the base ring of the parent of f.If GaloisOrbitRep is set to true, then returns its Galois orbit representative, with a different variable name to mark the conjugate form.
The nth coefficient of the q-expansion of the modular form f.
When an element of the space M is printed, the q-expansion is displayed to this precision. The default value is 12.Important note: This controls only printing. It does not control the precision used during calculations. For instance, the precision to which q-expansions are computed is controlled by the second argument in qExpansion and qExpansionBasis.
> M := ModularForms(Gamma1(11),3); M;
Space of modular forms on Gamma_1(11) of weight 3 and dimension 15
over Integer Ring.
> f := M.1;
> f;
1 + O(q^8)
> qExpansion(f);
1 + O(q^8)
> Coefficient(f,16); // f is a modular form, so has infinite precision
-5457936
> qExpansion(f,17);
1 + 763774*q^15 - 5457936*q^16 + O(q^17)
> PowerSeries(f,20); // same as qExpansion(f,20)
1 + 763774*q^15 - 5457936*q^16 + 14709156*q^17 - 12391258*q^18 -
21614340*q^19 + O(q^20)
The "big-oh" notation is supported via addition of a modular
form and a power series.
> M<q> := Parent(f); > Parent(q); Power series ring in q over Integer Ring > f + O(q^17); 1 + 763774*q^15 - 5457936*q^16 + O(q^17) > 5*q - O(q^17) + f; 1 + 5*q + 763774*q^15 - 5457936*q^16 + O(q^17) > 5*q + f; 1 + 5*q + O(q^8)Default printing precision can be set using the command SetPrecision.
> SetPrecision(M,16); > f; 1 + 763774*q^15 + O(q^16)
> function InftyIsWP(N) > S := CuspidalSubspace(ModularForms(Gamma0(N),2)); > assert Dimension(S) ge 2; > return (PrecisionBound(S : Exact := true)-1) ne Dimension(S); > end function; > [<N,InftyIsWP(N)> : N in [97..100]]; [ <97, false>, <98, true>, <99, false>, <100, true> ]It is an open problem to give a simple characterization of the integers N such that ∞ is a Weierstrass point on X0(N), though Atkin and others have made significant progress on this problem (see, e.g., 1967 Annals paper [Atk67]). I verified that if N<3223 is square free, then ∞ is not a Weierstrass point on X0(N), which suggests a nice conjecture.