Given a square nonsingular integer matrix
, there exists an
unimodular matrix
and an
matrix
(known as the Hermite normal form of
) such that
Specifying a certain set of conditions on the elements of makes it (and therefore
) unique. One possible set of conditions (corresponding to
the "columns" version and making
lower triangular)
is given by
1.
for
,
2.
for all
,
and
3.
and
for
(Domich et al. 1987).
For a complexity analysis of Hermite normal form computation, see Storjohann and Labahn (1996).
The Hermite normal form for integer matrices is implemented in the Wolfram Language
as HermiteDecomposition[A],
which however uses the "rows" convention (thus making upper triangular)
and replaces condition (3) with balanced remainders (mod
).