allocatemem(20*10^6)
N = 11;
W2 = msinit(N,2,-1);
W1 = msinit(N,2,1);
W = msinit(N,2);
mshecke(W2, 2)
mshecke(W1, 2)
mshecke(W, 2)
mshecke(W1, 11)

E=ellinit([1,2]);
[W,xpm]= msfromell(E,1);
mseval(W,xpm,[1/2,1/3])
E=ellinit([0,-1,1,-10,-20]);
[W,xpm]= msfromell(E,1);
mseval(W,xpm,[1/2,1/3])
E=ellinit([1,-1,1,-1,-14]);
[W,xpm]= msfromell(E,1);
mseval(W,xpm)
mseval(W,xpm,[0,1/3])

N = 227;
W = msinit(N,2,1);
mssplit(W, msnew(W))

N = 1000;
W = msinit(N,2,1);
matsize( msnew(W)[1] )
W = msinit(2, 4);
charpoly(mshecke(W, 2))

W = msinit(3, 6);
charpoly(mshecke(W, 2))

W = msinit(4, 4);
charpoly(mshecke(W, 3))

W = msinit(11, 4);
charpoly(mshecke(W, 2))

W = msinit(2, 8);
charpoly(mshecke(W, 2))
[g,R]=mspathgens(W)
mspathlog(W,g[1])
mspathlog(W,g[2])
mspathlog(W,[1/3,1/2])
mseval(W,[0,0])
s=msnew(W)[1][,1];
mseval(W,s)
mseval(W,s,[0,0])
mseval(W,s,g[1])
mseval(W,s,g[2])

W = msinit(11, 2);
T = mshecke(W, 3);
[S,E] = mscuspidal(W, 1)
E == mseisenstein(W)
S == mscuspidal(W)

W = msinit(23,2, 1);
V = mssplit(W, msnew(W));
msqexpansion(W, V[1], 30)
msqexpansion(W, V[1])

M=msinit(603,2,1);L=msnew(M);V=mssplit(M,L);
Set([v|v<-vector(#V,i,msqexpansion(M,V[i])),type(v[1])=="t_INT"])

W = msinit(6,4);
m=msatkinlehner(W,1)
matdet(m)
m=msatkinlehner(W,2)
matdet(m)
m=msatkinlehner(W,3)
matdet(m)
m=msatkinlehner(W,6)
matdet(m)
msatkinlehner(W,4)
msstar(W)

N = msnew(W)[1];
s = N[,1];
msissymbol(W,s)
S = mseval(W,s);
msissymbol(W,S)
T=S; T[3]++;
msissymbol(W,T)

M = msinit(7,8, 1);
N = msnew(M)[1];
s = N[,1];
S = mseval(M,s);
msissymbol(M, S)

W=msinit(17,2);
G=mspathgens(W)[1];
vector(#G,i,mspathlog(W,G[i]))
