Function: mathnf
Section: linear_algebra
C-Name: mathnf0
Prototype: GD0,L,
Help: mathnf(A,{flag=0}): (upper triangular) Hermite normal form of A, basis
 for the lattice formed by the columns of A. flag is optional whose value
 range from 0 to 4 (0 if omitted), meaning : 0: naive algorithm. 1: Use
 Batut's algorithm. Output 2-component vector [H,U] such that H is the HNF of
 A, and U is a unimodular matrix such that AU=H. 3: Use Batut's algorithm.
 Output [H,U,P] where P is a permutation matrix such that P A U = H. 4:
 as 1, using a heuristic variant of LLL reduction along the way

