Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: mseval
Section: modular_symbols
C-Name: mseval
Prototype: GGDG
Help: mseval(M,s,{p}): M being a full modular symbol space, as given by
msinit, s being a modular symbol from M and p being a path between two
elements in P^1(Q), return s(p).
Doc: Let $\Delta_0:=\text{Div}^0(\P^1 (\Q))$.
Let $M$ be a full modular symbol space, as given by \kbd{msinit},
let $s$ be a modular symbol from $M$, i.e. an element
of $\Hom_G(\Delta_0, V)$, and let $p=[a,b] \in \Delta_0$ be a path between
two elements in $\P^1(\Q)$, return $s(p)\in V$. The path extremities $a$ and
$b$ may be given as \typ{INT}, \typ{FRAC} or $\kbd{oo} = (1:0)$; it
is also possible to describe the path by a $2 \times 2$ integral matrix
whose columns give the two cusps. The symbol $s$ is either
\item a \typ{COL} coding a modular symbol in terms of
the fixed basis of $\Hom_G(\Delta_0,V)$ chosen in $M$; if $M$ was
initialized with a nonzero \emph{sign} ($+$ or $-$), then either the
basis for the full symbol space or the $\pm$-part can be used (the dimension
being used to distinguish the two).
\item a \typ{MAT} whose columns encode modular symbols as above. This is
much faster than evaluating individual symbols on the same path $p$
independently.
\item a \typ{VEC} $(v_i)$ of elements of $V$, where the $v_i = s(g_i)$ give
the image of the generators $g_i$ of $\Delta_0$, see \tet{mspathgens}.
We assume that $s$ is a proper symbol, i.e.~that the $v_i$ satisfy
the \kbd{mspathgens} relations.
If $p$ is omitted, convert a single symbol $s$ to the second form: a vector
of the $s(g_i)$. A \typ{MAT} is converted to a vector of such.
\bprog
? M = msinit(2,8,1); \\ M_8(Gamma_0(2))^+
? g = mspathgens(M)[1]
%2 = [[+oo, 0], [0, 1]]
? N = msnew(M)[1]; #N \\ Q-basis of new subspace, dimension 1
%3 = 1
? s = N[,1] \\ t_COL representation
%4 = [-3, 6, -8]~
? S = mseval(M, s) \\ t_VEC representation
%5 = [64*x^6-272*x^4+136*x^2-8, 384*x^5+960*x^4+192*x^3-672*x^2-432*x-72]
? mseval(M,s, g[1])
%6 = 64*x^6 - 272*x^4 + 136*x^2 - 8
? mseval(M,S, g[1])
%7 = 64*x^6 - 272*x^4 + 136*x^2 - 8
@eprog\noindent Note that the symbol should have values in
$V = \Q[x,y]_{k-2}$, we return the de-homogenized values corresponding to $y
= 1$ instead.