Smith normal form : ismith

### 5.50.13 Smith normal form : ismith

ismith takes as argument a matrix with coefficients in ℤ.
ismith returns three matrices U,B and V such that B=U*A*V, U and V are invertible in ℤ, B is diagonal, and B[i,i] divides B[i+1,i+1]. The coefficients B[i,i] are called invariant factors, they are used to describe the structure of finite abelian groups.
Input :

A:=[[9,-36,30],[-36,192,-180],[30,-180,180]]; U,B,V:=ismith(A)

Output :

[[-3,0,1],[6,4,3],[20,15,12]], [[3,0,0],[0,12,0],[0,0,60]], [[1,24,-30],[0,1,0],[0,0,1]]

The invariant factors are 3, 12 and 60.