principia_materia.mathematics.smith_normal_form module

Smith Normal Form and Hermite Normal Form

An implementation of Smith Normal Form following the algorithm described in Smith Normal Form - Wikipedia.

Hermite Normal Form is implemented following the definition in Hermite Normal Form - Wikipedia.

principia_materia.mathematics.smith_normal_form.DiagonalForm(M)

Finds the diagonalized form of the integer matrix M.

principia_materia.mathematics.smith_normal_form.HermiteNormalForm_AU(M)

Hermite Normal Form of M, Column style

H = ML

principia_materia.mathematics.smith_normal_form.HermiteNormalForm_UA(M)

Hermite Normal Form of M, Row style

H = LM

principia_materia.mathematics.smith_normal_form.SmithNormalForm(M)

Finds the Smith Normal Form of the integer matrix M.

The 0 diagonal elements will appear at the end.