Hermite normal form of a matrix
This functionality does not run in MATLAB.
linalg::hermiteForm(A) computes the Hermite
normal form of a non-singular integer square matrix A.
This is an upper-triangular matrix H such
that Hjj ≥
for j > i.
In the case, A is
not a square matrix or a singular matrix, the matrix H is
simply an upper-triangular matrix.
If this conversion fails, then an error message is returned.
computes a transformation matrix U and
a matrix H such
that H = U A.
We compute the Hermite normal form of the matrix:
A := Dom::Matrix(Dom::Rational)( [[9, -36, 30], [-36, 192, -180], [30, -180, 180]] )
We may also compute the transformation matrix by giving the
Let us check the result:
U := linalg::hermiteForm(A, All):
U * A
An integer matrix of category
Returns the list
Either a matrix of the same domain type as
[H, U] when the option
Let A be an n×n matrix with coefficients in ℤ. Then there exists an n×n matrix H = (hij) in Hermite normal form such that H = AU with .
Note that H is
unique, if A has
full row rank. The matrix U is
not unique. U may
be computed by using the option
If A is a square matrix, then the product of the diagonal elements of its Hermite normal form is, up to the sign, the determinant of A.