IntegerSmithNormalFormΒΆ

smith2.spad line 103 [edit on github]

This package computes Smith form of integer matrices. It is more efficinet than general case by first using elimination with unit pivots from UnitGaussianElimination.

completeSmith: (Matrix Integer, Matrix Integer -> Record(Smith: Matrix Integer, leftEqMat: Matrix Integer, rightEqMat: Matrix Integer)) -> Record(Smith: Matrix Integer, leftEqMat: Matrix Integer, rightEqMat: Matrix Integer)

completeSmith(m, full) computes record containing Smith normal form of m and the left and right equivalence matrices. It first reduces m to smaller matrix and then uses full to finish.

smith: (Matrix Integer, Matrix Integer -> Matrix Integer) -> Matrix Integer

smith(m, full) computes Smith normal form of m. It first reduces m to smaller matrix and then uses full to finish.

smith: Matrix Integer -> Matrix Integer

smith(m) computes Smith normal form of m