Recognizing badly presented Z-modules
  Finitely generated Z-modules have canonical decompositions. When such modules are given in a finitely presented form there is a classical algorithm for computing a canonical decomposition. This is the algorithm for computing the Smith normal form of an integer matrix. We discuss algorithms for Smith normal form computation, and present practical algorithms which give excellent performance for modules arising from badly presented abelian groups. We investigate such issues as congruential techniques, sparsity considerations, pivoting strategies for Gauss-Jordan elimination, lattice basis reduction and computational complexity. Our results, which are primarily empirical, show dramatically improved performance on previous methods. 
George Havas, Derek F. Holt and Sarah Rees