Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: mffromlfun Section: modular_forms C-Name: mffromlfun Prototype: Gp Help: mffromlfun(L): L being an L-function representing a self-dual modular form, return [NK,space,v] where mf=mfinit(NK,space) contains the form and mftobasis(mf, v) containing it and v is mftobasis(mf,f). Doc: Let $L$ being an $L$-function in any of the \kbd{lfun} formats representing a self-dual modular form (for instance an eigenform). Return \kbd{[NK,space,v]} when \kbd{mf = mfinit(NK,space)} is the modular form space containing the form and \kbd{mftobasis(mf, v)} will represent it on the space basis. If $L$ has rational coefficients, this will be enough to recognize the modular form in \var{mf}: \bprog ? L = lfuncreate(x^2+1); ? lfunan(L,10) %2 = [1, 1, 0, 1, 2, 0, 0, 1, 1, 2] ? [NK,space,v] = mffromlfun(L); NK %4 = [4, 1, -4] ? mf=mfinit(NK,space); w = mftobasis(mf,v) %5 = [1.0000000000000000000000000000000000000]~ ? [f] = mfbasis(mf); mfcoefs(f,10) \\ includes a_0 ! %6 = [1/4, 1, 1, 0, 1, 2, 0, 0, 1, 1, 2] @eprog If $L$ has inexact complex coefficients, one can for instance compute an eigenbasis for \var{mf} and check whether one of the attached $L$-function is reasonably close to $L$. In the example, we cheat by producing the $L$ function from an eigenform in a known space, but the function does not use this information: \bprog ? mf = mfinit([32,6,Mod(5,32)],0); ? [poldegree(K) | K<-mffields(mf)] %2 = [19] \\ one orbit, [Q(F) : Q(chi)] = 19 ? L = lfunmf(mf)[1][1]; \\ one of the 19 L-functions attached to F ? lfunan(L,3) %4 = [1, 5.654... - 0.1812...*I, -7.876... - 19.02...*I] ? [NK,space,v] = mffromlfun(L); NK %5 = [32, 6, Mod(5, 32)] ? vL = concat(lfunmf(mf)); \\ L functions for all cuspidal eigenforms ? an = lfunan(L,10); ? for (i = 1, #vL, if (normlp(lfunan(vL[i],10) - an, oo) < 1e-10, print(i))); 1 @eprog