Dear Mr. Chung,
WRI's ftp archive, (mathsource at wri.com, also accessible
via the Web), contains two independent implementations of the Smith normal
form algorithm that I know of. One is part of the LatticeTheory.m package,
which I think is found under "applications/mathematics/pure" as 0204-556.
The other is filed under "enhancements/linear algebra" as 0207-470.
Both of these packages use a conceptually straightforward algorithm that
is prone to spectacular numerical blowup,
especially when asked to provide det 1 integer matrices that will
transform the original matrix to the Smith form. (Note: the transformation
matrices are far from unique, contrary to the implication in
LatticeTheory.m.) If this blowup becomes a problem for you, I can send you
a package I have written that diagonalizes integer matrices (most of the
work of finding the Smith form) in a way that controls the blowup and
frequently produces much smaller transformation matrices.
Cheers,
Chris Stover
crstover at aol.com