Function: mfparams
Section: modular_forms
C-Name: mfparams
Prototype: G
Help: mfparams(F): If F is a modular form space, returns [N,k,CHI,space]:
level, weight, character, and space code. If F is a modular form,
returns [N,k,CHI,P], where P is the (polynomial giving the) field of
definition of F: in that case the level N may be a multiple of the level of F
and the polynomial P may define a larger field than Q(F).
Doc: If $F$ is a modular form space, returns \kbd{[N,k,CHI,space]}, level,
weight, character, and space code. If $F$ is a generalized modular form,
returns \kbd{[N,k,CHI,P]}, where $P$ is the (polynomial giving the) field of
definition of $F$: in that case the level $N$ may be a multiple of the
level of $F$ and the polynomial $P$ may define a larger field than $\Q(F)$.
If you want the true level of $F$ from this result, use
\kbd{mfconductor(mfinit(F),F)}. The polynomial $P$ defines an extension of
$\Q(\chi) = \Q[t]/(\Phi(t))$ for the cyclotomic polynomial of order
$f(\chi)$; it has coefficients in that number field (polmods in $t$).
In contrast with \kbd{mfparams(f)[4]} which always gives the polynomial
$P$ defining the relative extension $\Q(f)/\Q(\chi)$, the member function
\kbd{$f$.mod} returns the polynomial used to define $\Q(f)$ over $\Q$
(either a cyclotomic polynomial or a polynomial with cyclotomic
coefficients).
\bprog
? E1 = mfeisenstein(4,-3,-4); E2 = mfeisenstein(3,5,-7); E3 = mfmul(E1,E2);
? apply(mfparams, [E1,E2,E3])
%2 = [[12, 4, 12, y], [35, 3, -35, y], [420, 7, -420, y]]
? mf = mfinit([36,2,Mod(13,36)],0); [f] = mfeigenbasis(mf); mfparams(mf)
%3 = [36, 2, Mod(13, 36), 0]
? mfparams(f)
%4 = [36, 2, Mod(13, 36), y]
? f.mod
%5 = t^2 + t + 1
? mf = mfinit([36,4,Mod(13,36)],0); [f] = mfeigenbasis(mf);
? mfparams(f)
%7 = [36, 4, Mod(13, 36), y^3 + Mod(2*t - 2, t^2 + t + 1)*y^2
+ Mod(-4*t + 6, t^2+t+1)*y + Mod(10*t - 1, t^2+t+1)]
@eprog