HERMITE (matrix);
The HERMITE function uses elementary row operations to compute the Hermite normal form of a matrix. For square matrices this normal form is upper triangular and idempotent.
If the argument is square and nonsingular, the result is the identity matrix. In general the result satisfies the following four conditions (Graybill 1969):
It is upper triangular.
It has only values of 0 and 1 on the diagonal.
If a row has a 0 on the diagonal, then every element in that row is 0.
If a row has a 1 on the diagonal, then every off-diagonal element is 0 in the column in which the 1 appears.
The following statements compute an example from Graybill (1969):
a = {3 6 9, 1 2 5, 2 4 10}; h = hermite(a); print h;
If the argument is a square matrix, then the Hermite normal form can be transformed into the row-echelon form by rearranging rows in which all values are 0.