charpoly([x,x+1;1,2],y,0)
charpoly([x,x+1;1,2],y,1)
charpoly([x,x+1;1,2],y,2)
charpoly([x,x+1;1,2],y,3)
charpoly([0,0,2,2;0,0,2,2;2,2,0,0;2,2,0,0])
charpoly([0,0,2,2;0,0,2,2;2,2,0,0;2,2,0,0],,4)
minpoly(matrix(4,4,i,j,i/j))

default(realprecision,38);
A=[5/3,7/45;0,21/10];
mateigen(A)
mateigen(A*1.)
mateigen(A,1)
M=[x,x+y;x+1,1];charpoly(M,w)
v=[1,1.,Mod(1,3),1/2,1+O(3),I,quadgen(5),matid(2)*Mod(1,3),matid(2)*Mod(1,2^64+13)];
for(i=1,#v,print(charpoly(v[i])))
charpoly(matid(4),,0)
charpoly(matid(4),,3)
charpoly(matid(4)*(2^64+13))
m=[1,2,3,4;5,6,7,8;9,10,11,12;1,5,7,11];
charpoly(m*Mod(1,3))
charpoly(m*Mod(1,2^64+13))
matadjoint(matid(2),1)
matadjoint([;])
matadjoint(Mat(1))
matadjoint([x,0,0;0,0,0;0,0,0])
matadjoint([Mod(1,2)*x,0,0;0,0,0;0,0,0])
charpoly(x*matid(3))
minpoly(Mod(x+1,x^4+1))
minpoly(Mod(x,x^2))
minpoly(Mod(1,x^2+x+1))
minpoly(Mod(1,x^24+1))

a=[1,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;0,1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0;-1,-1,-1,4,0,0,0,0,-1,0,0,0,0,0,0,0,0;0,0,0,0,1,0,0,-1,0,0,0,0,0,0,0,0,0;0,0,0,0,0,1,0,-1,0,0,0,0,0,0,0,0,0;0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0;0,0,0,0,-1,-1,-1,4,-1,0,0,0,0,0,0,0,0;0,0,0,-1,0,0,0,-1,4,-1,-1,0,0,0,0,0,0;0,0,0,0,0,0,0,0,-1,1,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,-1,0,4,-1,-1,-1,0,0,0;0,0,0,0,0,0,0,0,0,0,-1,1,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,-1,0,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,-1,0,0,3,-1,0,-1;0,0,0,0,0,0,0,0,0,0,0,0,0,-1,3,-2,0;0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,2,0;0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,1];
mateigen(a);
mateigen([;])
mateigen([;],1)
mateigen(Mat(1))
mateigen(Mat(1),1)
