The smith command finds the Smith normal form of a matrix with elements in a field K.
M:=([[5,-2,3,6],[1,-3,1,3],[7,-6,-4,7],[-2,-4,-3,0]]) % 17:; A:=x*idn(4)-M |
|
U,D,V:=smith(A):; |
|
You can check this:
normal(U*A*V-D) |
|
B:=[[x^2+x-1,1,0,1],[-1,x,0,-1],[0,x^2+1,x,0],[1,0,1,x^2+x+1]] % 3:; L:=smith(B) |
|