Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Testing latest pari + WASM + node.js... and it works?! Wow.

28494 views
License: GPL3
ubuntu2004
Function: mflinear
Section: modular_forms
C-Name: mflinear
Prototype: GG
Help: mflinear(vF,v): vF being a vector of modular forms and v
 a vector of coefficients of same length, compute the linear
 combination of the entries of vF with coefficients v.
Doc: \kbd{vF} being a vector of generalized modular forms and \kbd{v}
 a vector of coefficients of same length, compute the linear
 combination of the entries of \kbd{vF} with coefficients \kbd{v}.
 \misctitle{Note} Use this in particular to subtract two forms $F$ and $G$
 (with $vF=[F,G]$ and $v=[1,-1]$), or to multiply an form by
 a scalar $\lambda$ (with $vF=[F]$ and $v=[\lambda]$).
 \bprog
 ? D = mfDelta(); G = mflinear([D],[-3]);
 ? mfcoefs(G,4)
 %2 = [0, -3, 72, -756, 4416]
 @eprog For user convenience, we allow

 \item a modular form space \kbd{mf} as a \kbd{vF} argument, which is
 understood as \kbd{mfbasis(mf)};

 \item in this case, we also allow a modular form $f$ as $v$, which
 is understood as \kbd{mftobasis}$(\var{mf}, f)$.

 \bprog
 ? T = mfpow(mfTheta(),7); F = mfShimura(T,-3); \\ Shimura lift for D=-3
 ? mfcoefs(F,8)
 %2 = [-5/9, 280, 9240, 68320, 295960, 875280, 2254560, 4706240, 9471000]
 ? mf = mfinit(F); G = mflinear(mf,F);
 ? mfcoefs(G,8)
 %4 = [-5/9, 280, 9240, 68320, 295960, 875280, 2254560, 4706240, 9471000]
 @eprog\noindent This last construction allows to replace a general modular
 form by a simpler linear combination of basis functions, which is often
 more efficient:
 \bprog
 ? T10=mfpow(mfTheta(),10); mfcoef(T10, 10^4) \\ direct evaluation
 time = 399 ms.
 %5 = 128205250571893636
 ? mf=mfinit(T10); F=mflinear(mf,T10); \\ instantaneous
 ? mfcoef(F, 10^4) \\ after linearization
 time = 67 ms.
 %7 = 128205250571893636
 @eprog