Integer Smith Normal Form Package - Readme

Victor Alvarez Solano, Jose Andres Armario Sampalo, Maria Dolores Frau Garcia and Pedro Real Jurado
Departamento de Matematica Aplicada I, University of Seville (Spain).
20 August 2006

valvarez@us.es

In spite of the fact that some packages (even in Mathematica) for computing the integer Smith Normal Form of a matrix over the integers are already available, some of them eventually fail to give the diagonal matrix properly sorted. This notebook provides an alternate method for computing the Smith Normal Form for matrix over the integers. Notice that the point of this notebook is correctness better than efficiency, so that previous algorithms will eventually run faster than ours.

Loading the package IntegerSmithNormalForm

The package `IntegerSmithNormalForm` may be placed in folder:  "/Applications/Mathematica 5.2.app/AddOns/Applications"/.
I use the Get request and select initialization as a cell property such as:

<< IntegerSmithNormalForm.m;

For questions or comments please email me at valvarez@us.es

Examples to use the package and possible tests

Let consider the matrix (({{11, 0, 0}, {0, 0, 0}, {-9, 0, 0}, {4, 2, 0}, {-4, 0, 0}, {0, 0, 2}})).

A=(({{11, 0, 0}, {0, 0, 0}, {-9, 0, 0}, {4, 2, 0}, {-4, 0, 0}, {0, 0, 2}}));{F, {P, Q}} = IntegerSmithNormalForm[A];Print[F // MatrixForm];Print[P // MatrixForm];Print[Q // MatrixForm];

The diagonal matrix F is obtained as the product P·A·Q

P . A . Q == F