Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: mfhecke
Section: modular_forms
C-Name: mfhecke
Prototype: GGL
Help: mfhecke(mf,F,n): F being a modular form in space mf, returns T(n)F,
where T(n) is the n-th Hecke operator. Warning: if F is of level M<N,
T(n)F is in general not the same in M_k(G_0(M),CHI) and in M_k(G_0(N),CHI).
We take T(n) at the same level as the one used in mf.
Doc: $F$ being a modular form in modular form space \var{mf}, returns
$T(n)F$, where $T(n)$ is the $n$-th Hecke operator.
\misctitle{Warning} If $F$ is of level $M<N$, then $T(n)F$
is in general not the same in $M_k(\Gamma_0(M),\chi)$ and in
$M_k(\Gamma_0(N),\chi)$. We take $T(n)$ at the same level as the one used in
\kbd{mf}.
\bprog
? mf = mfinit([26,2],0); F = mfbasis(mf)[1]; mftobasis(mf,F)
%1 = [1, 0]~
? G2 = mfhecke(mf,F,2); mftobasis(mf,G2)
%2 = [0, 1]~
? G5 = mfhecke(mf,F,5); mftobasis(mf,G5)
%3 = [-2, 1]~
@eprog\noindent Modular forms of half-integral weight are supported, in
which case $n$ must be a perfect square, else $T_n$ will act as $0$ (the
operator $T_p$ for $p \mid N$ is not supported yet):
\bprog
? F = mfpow(mfTheta(),3); mf = mfinit(F);
? mfisequal(mfhecke(mf,F,9), mflinear([F],[4]))
%2 = 1
@eprog ($F$ is an eigenvector of all $T_{p^2}$, with eigenvalue $p+1$ for
odd $p$.)
\misctitle{Warning} When $n$ is a large composite, resp.~the square of a large
composite in half-integral weight, it is in general more efficient to use
\kbd{mfheckemat} on the \kbd{mftobasis} coefficients:
\bprog
? mfcoefs(mfhecke(mf,F,3^10), 10)
time = 917 ms.
%3 = [324, 1944, 3888, 2592, 1944, 7776, 7776, 0, 3888, 9720, 7776]
? M = mfheckemat(mf,3^10) \\ instantaneous
%4 =
[324]
? G = mflinear(mf, M*mftobasis(mf,F));
? mfcoefs(G, 10) \\ instantaneous
%6 = [324, 1944, 3888, 2592, 1944, 7776, 7776, 0, 3888, 9720, 7776]
@eprog