-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHNF.txt
29 lines (17 loc) · 906 Bytes
/
HNF.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**************************************************************************\
MODULE: HNF
SUMMARY:
A routine for computing Hermite Normal Forms
\**************************************************************************/
#include <NTL/mat_ZZ.h>
void HNF(mat_ZZ& W, const mat_ZZ& A, const ZZ& D);
// The input matrix A is an n x m matrix of rank m (so n >= m), and D
// is a multiple of the determinant of the lattice L spanned by the
// rows of A. W is computed as the Hermite Normal Form of A; that is,
// W is the unique m x m matrix whose rows span L, such that
// - W is lower triangular,
// - the diagonal entries are positive,
// - any entry below the diagonal is a non-negative number
// strictly less than the diagonal entry in its column.
// Currently, this is implemented using the algorithm of [P. Domich,
// R. Kannan and L. Trotter, Math. Oper. Research 12:50-59, 1987].