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

q-Expansions

The following intrinsics give the q-expansion of a modular form (about the cusp Infinity).

qExpansion(f) : ModFrmElt -> RngSerPowElt
The q-expansion of the modular form f. This is an element of the power series ring over the base ring of the parent of f.
qExpansion(f, prec) : ModFrmElt, RngIntElt -> RngSerPowElt
The q-expansion of the modular form f to absolute precision prec. This is an element of the power series ring over the base ring of the parent of f.
PowerSeries(f) : ModFrmElt -> RngSerPowElt
PowerSeries(f, prec) : ModFrmElt, RngIntElt -> RngSerPowElt
In the context of modular forms, PowerSeries is a synonym for qExpansion.
Precision(M) : ModFrm -> RngIntElt
The default printing precision for elements of the space M of modular forms. This is the precision that is used when printing elements of M if the user does not specifically make a choice. The hard-coded default value is 8.
SetPrecision(M, prec) : ModFrm, RngIntElt ->
Set the default printing precision for elements of the space M of modular forms.
PrecisionBound(M : parameters) : ModFrm -> RngIntElt
    Exact: BoolElt                      Default: true
The smallest integer b such that f + O(q^b) determines any modular form f in M. If the optional parameter Exact is set to false, then this intrinsic returns some integer b such that f + O(q^b) determines any modular form f in M, but b is probably not minimal.

Example ModForm_qExpansion (H90E7)

In this example, we compute the q-expansion of a modular form f in M_3(Gamma_1(11)) in several ways.

> 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)
> 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)

Example ModForm_WeierstrassPoints (H90E8)

The PrecisionBound intrinsic is related to Weierstrass points on modular curves. Let N be a positive integer such that S = S_2(Gamma_0(N)) has dimension at least 2. Then the point Infinity is a Weierstrass point on X_0(N) if and only if PrecisionBound(S)-1 ne Dimension(S).

> function InftyIsWP(N)
>    S := CuspidalSubspace(ModularForms(Gamma0(N),2));
>    assert Dimension(S) ge 2;
>    return (PrecisionBound(S)-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 Infinity is a Weierstrass point on X_0(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 Infinity is not a Weierstrass point on X_0(N), which suggests a nice conjecture.
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]