The hnfproj package provides C routines for efficiently computing the Hermite normal form of integer matrices.
This package requires both GMP (http://gmplib.org/) and ATLAS (http://math-atlas.sourceforge.net).
M1 Medium Amazon EC2 instance: 64-bit Intel Xeon E5-2650 at 2GHz; 3.75 GiB RAM. GCC 4.6.3, ATLAS 3.10.1, GMP 5.1.1.
All times in seconds.
Random square matrices of dimension n (rows, in the table below) with entry of bitlength l (columns, below).
hnfproj
|
Sage 5.5
|
For the following table only, experiments on larger matrices with 8-bit entries were performed on an 64-bit Intel Itanium2 at 1.3 GHz with 192 GB RAM. All times in seconds.
n | hnfproj | Sage 5.5 |
---|---|---|
1000 | 74.23 | 659 |
1600 | 286.8 | 2590 |
2000 | 587.3 | 5663 |
3200 | 2587 | |
4000 | 5408 | |
6400 | 31790 | |
8000 | 75810 | |
10000 | 182300 |
Following the method of Jaeger and Wagner ("Efficient paralleizations of Hermite and Smith normal form algorithms", Parallel Computation, 35(6):345-57, 2009.), we construct a special class of matrices to provide particularly difficult examples. The (i,j)th entry of each matrix is (i-1)^(j-1) mod n. For prime n, the resulting matrix is nonsingular with many (generally more than n/2) non-trivial columns in Hermite form (denoted k in the table below).
n | k | hnfproj | Sage 5.5 |
---|---|---|---|
101 | 56 | 0.53 | 1.13 |
127 | 77 | 0.82 | 2.24 |
211 | 118 | 3.21 | 19.4 |
251 | 132 | 5.92 | 44.6 |
401 | 266 | 18.69 | 531 |
503 | 252 | 31.73 | 1520 |
809 | 503 | 117.23 | |
1009 | 663 | 222.72 | |
1601 | 1060 | 836.51 | |
2003 | 1041 | 1411.54 |
Random rectangular matrices with 8-bit entries, n rows and n+1, n+100, or 2n columns.
hnfproj
|
Sage 5.5
|
C. Pauderis and A. Storjohann, Computing the invariant structure of integer matrices: fast algorithms into practice. Proceedings of the International Symposium on Symbolic and Algebraic Computation (ISSAC'13), ACM Press, 2013, 8pp. pdf
ECCAD'13 poster: Fast Heuristic Hermite Form