Function: mfsymbol
Section: modular_forms
C-Name: mfsymbol
Prototype: GDGb
Help: mfsymbol(mf,f): Initialize data for working with all period
polynomials of the modular form f: this is essential for efficiency
for functions such as mfsymboleval, mfmanin, and mfpetersson. By abuse
of language, initialize data for working with mfpetersson in weight 1
or half-integral weight (where no symbol exist).
Doc: Initialize data for working with all period polynomials of the modular
form $f$: this is essential for efficiency for functions such as
\kbd{mfsymboleval}, \kbd{mfmanin}, and \kbd{mfpetersson}. An \kbd{mfsymbol}
contains an \kbd{mf} structure and can always be used whenever an \kbd{mf}
would be needed.
\bprog
? mf=mfinit([23,2],0);F=mfeigenbasis(mf)[1];
? FS=mfsymbol(mf,F);
? mfsymboleval(FS,[0,oo])
%3 = [8.762565143790690142 E-39 + 0.0877907874...*I,
-5.617375463602574564 E-39 + 0.0716801031...*I]
? mfpetersson(FS)
%4 =
[0.0039488965740025031688548076498662860143 1.2789721111175127425 E-40]
[1.2630501762985554269 E-40 0.0056442542987647835101583821368582485396]
@eprog\noindent
By abuse of language, initialize data for working with \kbd{mfpetersson} in
weight $1$ and half-integral weight (where no symbol exist); the \kbd{mf}
argument may be an \kbd{mfsymbol} attached to a form on the space,
which avoids recomputing data independent of the form.
\bprog
? mf=mfinit([12,9/2],1); F=mfbasis(mf);
? fs=mfsymbol(mf,F[1]);
time = 476 ms
? mfpetersson(fs)
%2 = 1.9722437519492014682047692073275406145 E-5
? f2s = mfsymbol(mf,F[2]);
time = 484 ms.
? mfpetersson(f2s)
%4 = 1.2142222531326333658647877864573002476 E-5
? gs = mfsymbol(fs,F[2]); \\ re-use existing symbol, a little faster
time = 430 ms.
? mfpetersson(gs) == %4 \\ same value
%6 = 1
@eprog For simplicity, we also allow \kbd{mfsymbol(f)} instead of
\kbd{mfsymbol(mfinit(f), f)}: