linalg.lib
list l: module l[1]; inverse(l[1])*M*l[1] in Jordan normal form intvec l[2]; int l[2][i]; weight filtration index of l[1][i]
LIB "linalg.lib"; ring R=0,x,dp; matrix M[3][3]=3,2,1,0,2,1,0,0,3; print(M); ==> 3,2,1, ==> 0,2,1, ==> 0,0,3 list l=jordanbasis(M); print(l[1]); ==> -2,0,3, ==> 1, 1,0, ==> 0, 1,0 print(l[2]); ==> 0, ==> 1, ==> -1 print(inverse(l[1])*M*l[1]); ==> 2,0,0, ==> 0,3,0, ==> 0,1,3