(* Content-type: application/mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 6.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] NotebookDataLength[ 25127, 894] NotebookOptionsPosition[ 22642, 803] NotebookOutlinePosition[ 22999, 819] CellTagsIndexPosition[ 22956, 816] WindowFrame->Normal ContainsDynamic->True *) (* Beginning of Notebook Content *) Notebook[{ Cell[CellGroupData[{ Cell["SmithDemo", "Title"], Cell[TextData[{ ButtonBox["Adriano Pascoletti", BaseStyle->"Hyperlink", ButtonData->{ URL["mailto:adriano.pascoletti@dimi.uniud.it"], None}], "\nDipartimento di Matematica e Informatica, Universit\[AGrave] di Udine\n\ Via delle Scienze, 206, I-33100 Udine (Italy)" }], "Text"], Cell[TextData[{ "This is a demonstration notebook for the ", StyleBox["Mathematica", FontSlant->"Italic"], " package SmithFormV6. \nThe package", StyleBox["deals with the computation of the Smith form and the invariant \ factors of integer and polynomial matrices. \nThe package is i", FontWeight->"Plain"], "nstallable under ", StyleBox["Mathematica", FontSlant->"Italic"], " 6.0, and is fully compatible with ", StyleBox["Mathematica", FontSlant->"Italic"], " 5.2." }], "Text", CellFrame->{{0, 0}, {0.5, 0.5}}], Cell["After installation, i.e. File>Install>Package SmithFormV6:", "Text"], Cell[BoxData[ RowBox[{"<<", "SmithFormV6`"}]], "Input"], Cell["The package defines the following symbols:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"?", "SmithFormV6`*"}]], "Input"], Cell[BoxData[ DynamicModuleBox[{Typeset`open$$ = True}, PaneSelectorBox[{False-> RowBox[{ OpenerBox[Dynamic[Typeset`open$$], ImageSize->Small], StyleBox["SmithFormV6`", "InfoHeading"]}], True->GridBox[{ { RowBox[{ OpenerBox[Dynamic[Typeset`open$$], ImageSize->Small], StyleBox["SmithFormV6`", "InfoHeading"]}]}, {GridBox[{ { ButtonBox["ExtendedForm", BaseStyle->"InformationLink", ButtonData:>{"Info3404212578-3751704", "SmithFormV6`ExtendedForm"}, ButtonNote->"SmithFormV6`"], ButtonBox["PolynomialInvariantFactors", BaseStyle->"InformationLink", ButtonData:>{ "Info3404212578-3751704", "SmithFormV6`PolynomialInvariantFactors"}, ButtonNote->"SmithFormV6`"]}, { ButtonBox["IntegerInvariantFactors", BaseStyle->"InformationLink", ButtonData:>{ "Info3404212578-3751704", "SmithFormV6`IntegerInvariantFactors"}, ButtonNote->"SmithFormV6`"], ButtonBox["PolynomialSmithForm", BaseStyle->"InformationLink", ButtonData:>{ "Info3404212578-3751704", "SmithFormV6`PolynomialSmithForm"}, ButtonNote->"SmithFormV6`"]}, { ButtonBox["IntegerSmithForm", BaseStyle->"InformationLink", ButtonData:>{ "Info3404212578-3751704", "SmithFormV6`IntegerSmithForm"}, ButtonNote->"SmithFormV6`"], ""} }, DefaultBaseStyle->"InfoGrid", GridBoxItemSize->{"Columns" -> {{ Scaled[0.475]}}}]} }, GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Baseline}}}]}, Dynamic[Typeset`open$$], ImageSize->Automatic]]], "Print", "InfoCell"] }, Open ]], Cell[CellGroupData[{ Cell["Polynomial matrices", "Section"], Cell[TextData[{ "If ", Cell[BoxData[ FormBox["A", TraditionalForm]]], " a is matrix of polynomials in ", Cell[BoxData[ FormBox["x", TraditionalForm]]], " its extended Smith form is computed by \n\n", StyleBox["PolynomialSmithForm[A, x]", "Input", FontFamily->"Times"], StyleBox[", and by \n", FontWeight->"Plain"], StyleBox["PolynomialSmithForm[A, x, ExtendedForm \[Rule] True]", "Input", FontFamily->"Times"], StyleBox[". \n\nIn both cases the output has the form ", FontWeight->"Plain"], Cell[BoxData[ FormBox[ RowBox[{"{", RowBox[{"S", ",", RowBox[{"{", RowBox[{"U", ",", "V"}], "}"}]}], "}"}], TraditionalForm]]], ", where ", Cell[BoxData[ FormBox["S", TraditionalForm]]], " is the Smith form, and ", Cell[BoxData[ FormBox["U", TraditionalForm]]], ", ", Cell[BoxData[ FormBox["V", TraditionalForm]]], " unimodular matrices satisfying ", Cell[BoxData[ FormBox[ RowBox[{"S", "=", RowBox[{"U", " ", "A", " ", "V"}]}], TraditionalForm]]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"A", "=", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"2", ",", RowBox[{ RowBox[{"-", "2"}], "+", "x", "-", SuperscriptBox["x", "3"]}], ",", RowBox[{ RowBox[{"-", "1"}], "+", RowBox[{"2", " ", "x"}], "-", SuperscriptBox["x", "2"]}], ",", RowBox[{ RowBox[{"-", "x"}], "+", SuperscriptBox["x", "3"]}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"-", "2"}], "+", "x", "-", SuperscriptBox["x", "3"]}], ",", RowBox[{ RowBox[{"-", "x"}], "+", FractionBox[ SuperscriptBox["x", "2"], "2"], "+", RowBox[{"2", " ", SuperscriptBox["x", "3"]}], "-", SuperscriptBox["x", "4"], "+", FractionBox[ SuperscriptBox["x", "6"], "2"]}], ",", RowBox[{ RowBox[{"-", "1"}], "-", FractionBox[ RowBox[{"3", " ", "x"}], "2"], "+", RowBox[{"2", " ", SuperscriptBox["x", "2"]}], "-", SuperscriptBox["x", "4"], "+", FractionBox[ SuperscriptBox["x", "5"], "2"]}], ",", RowBox[{"2", "-", FractionBox[ SuperscriptBox["x", "2"], "2"], "-", SuperscriptBox["x", "3"], "+", SuperscriptBox["x", "4"], "-", FractionBox[ SuperscriptBox["x", "6"], "2"]}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"-", "1"}], "+", RowBox[{"2", " ", "x"}], "-", SuperscriptBox["x", "2"]}], ",", RowBox[{ RowBox[{"-", "1"}], "-", FractionBox[ RowBox[{"3", " ", "x"}], "2"], "+", RowBox[{"2", " ", SuperscriptBox["x", "2"]}], "-", SuperscriptBox["x", "4"], "+", FractionBox[ SuperscriptBox["x", "5"], "2"]}], ",", RowBox[{ FractionBox["15", "2"], "-", FractionBox[ RowBox[{"23", " ", "x"}], "2"], "+", RowBox[{"7", " ", SuperscriptBox["x", "2"]}], "-", FractionBox[ RowBox[{"5", " ", SuperscriptBox["x", "3"]}], "2"], "+", FractionBox[ SuperscriptBox["x", "4"], "2"]}], ",", RowBox[{ RowBox[{"-", "1"}], "+", RowBox[{"2", " ", "x"}], "-", FractionBox[ RowBox[{"3", " ", SuperscriptBox["x", "2"]}], "2"], "+", SuperscriptBox["x", "4"], "-", FractionBox[ SuperscriptBox["x", "5"], "2"]}]}], "}"}]}], "}"}]}], ";", RowBox[{"A", "//", "MatrixForm"}]}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"2", RowBox[{ RowBox[{"-", "2"}], "+", "x", "-", SuperscriptBox["x", "3"]}], RowBox[{ RowBox[{"-", "1"}], "+", RowBox[{"2", " ", "x"}], "-", SuperscriptBox["x", "2"]}], RowBox[{ RowBox[{"-", "x"}], "+", SuperscriptBox["x", "3"]}]}, { RowBox[{ RowBox[{"-", "2"}], "+", "x", "-", SuperscriptBox["x", "3"]}], RowBox[{ RowBox[{"-", "x"}], "+", FractionBox[ SuperscriptBox["x", "2"], "2"], "+", RowBox[{"2", " ", SuperscriptBox["x", "3"]}], "-", SuperscriptBox["x", "4"], "+", FractionBox[ SuperscriptBox["x", "6"], "2"]}], RowBox[{ RowBox[{"-", "1"}], "-", FractionBox[ RowBox[{"3", " ", "x"}], "2"], "+", RowBox[{"2", " ", SuperscriptBox["x", "2"]}], "-", SuperscriptBox["x", "4"], "+", FractionBox[ SuperscriptBox["x", "5"], "2"]}], RowBox[{"2", "-", FractionBox[ SuperscriptBox["x", "2"], "2"], "-", SuperscriptBox["x", "3"], "+", SuperscriptBox["x", "4"], "-", FractionBox[ SuperscriptBox["x", "6"], "2"]}]}, { RowBox[{ RowBox[{"-", "1"}], "+", RowBox[{"2", " ", "x"}], "-", SuperscriptBox["x", "2"]}], RowBox[{ RowBox[{"-", "1"}], "-", FractionBox[ RowBox[{"3", " ", "x"}], "2"], "+", RowBox[{"2", " ", SuperscriptBox["x", "2"]}], "-", SuperscriptBox["x", "4"], "+", FractionBox[ SuperscriptBox["x", "5"], "2"]}], RowBox[{ FractionBox["15", "2"], "-", FractionBox[ RowBox[{"23", " ", "x"}], "2"], "+", RowBox[{"7", " ", SuperscriptBox["x", "2"]}], "-", FractionBox[ RowBox[{"5", " ", SuperscriptBox["x", "3"]}], "2"], "+", FractionBox[ SuperscriptBox["x", "4"], "2"]}], RowBox[{ RowBox[{"-", "1"}], "+", RowBox[{"2", " ", "x"}], "-", FractionBox[ RowBox[{"3", " ", SuperscriptBox["x", "2"]}], "2"], "+", SuperscriptBox["x", "4"], "-", FractionBox[ SuperscriptBox["x", "5"], "2"]}]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]], "Output"] }, Open ]], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"S", ",", RowBox[{"{", RowBox[{"U", ",", "V"}], "}"}]}], "}"}], "=", RowBox[{"PolynomialSmithForm", "[", RowBox[{"A", ",", "x"}], "]"}]}], ";"}]], "Input"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"U", "//", "MatrixForm"}], ",", RowBox[{"V", "//", "MatrixForm"}]}], "}"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ { FractionBox["1", "2"], "0", "0"}, { RowBox[{"1", "-", FractionBox["x", "2"], "+", FractionBox[ SuperscriptBox["x", "3"], "2"]}], "1", "0"}, { RowBox[{"1", "+", "x", "-", SuperscriptBox["x", "2"], "+", SuperscriptBox["x", "3"]}], "2", RowBox[{"-", "2"}]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]], ",", TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", RowBox[{"1", "-", FractionBox["x", "2"], "+", FractionBox[ SuperscriptBox["x", "3"], "2"]}], "1", RowBox[{ FractionBox["5", "2"], "-", FractionBox[ RowBox[{"3", " ", "x"}], "2"], "+", FractionBox[ SuperscriptBox["x", "2"], "2"], "-", FractionBox[ SuperscriptBox["x", "3"], "2"]}]}, {"0", "1", "1", RowBox[{"2", "-", "x"}]}, {"0", "0", "0", "1"}, {"0", "0", "1", RowBox[{"3", "-", "x"}]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"S", "//", "MatrixForm"}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", RowBox[{ RowBox[{"-", "2"}], "+", "x"}], "0", "0"}, {"0", "0", RowBox[{"6", "-", RowBox[{"5", " ", "x"}], "+", SuperscriptBox["x", "2"]}], "0"} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"U", ".", "A", ".", "V"}], "-", "S"}], "//", "Expand"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["\<\ The option ExtendedForm \[Rule] False\ \>", "Subsubsection"], Cell[TextData[{ "The computation of ", Cell[BoxData[ FormBox["S", TraditionalForm]]], ", skipping ", Cell[BoxData[ FormBox["U", TraditionalForm]]], " and ", Cell[BoxData[ FormBox["V", TraditionalForm]]], ", is performed by \n", StyleBox["PolynomialSmithForm[A, x, ExtendedForm \[Rule] False]", "Input", FontFamily->"Times"], StyleBox[":", FontWeight->"Plain"] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"MatrixForm", "[", RowBox[{"PolynomialSmithForm", "[", RowBox[{"A", ",", "x", ",", RowBox[{"ExtendedForm", "\[Rule]", "False"}]}], "]"}], "]"}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", RowBox[{ RowBox[{"-", "2"}], "+", "x"}], "0", "0"}, {"0", "0", RowBox[{"6", "-", RowBox[{"5", " ", "x"}], "+", SuperscriptBox["x", "2"]}], "0"} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Invariant Factors", "Subsubsection"], Cell[TextData[{ "The invariant polynomials of ", Cell[BoxData[ FormBox["A", TraditionalForm]]], " are given by ", StyleBox["PolynomialInvariantFactors[A,x]", "Input", FontFamily->"Times"], StyleBox[".", FontWeight->"Plain"] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"PolynomialInvariantFactors", "[", RowBox[{"A", ",", "x"}], "]"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{"1", ",", RowBox[{ RowBox[{"-", "2"}], "+", "x"}], ",", RowBox[{"6", "-", RowBox[{"5", " ", "x"}], "+", SuperscriptBox["x", "2"]}]}], "}"}]], "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Integer Matrices", "Section"], Cell[TextData[{ "If ", Cell[BoxData[ FormBox["A", TraditionalForm]]], " is an integer matrix its extended Smith form is computed by \n\n", StyleBox["IntegerSmithForm[A]", "Input", FontFamily->"Times"], StyleBox[" and \n", FontWeight->"Plain"], StyleBox["IntegerSmithForm[A,ExtendedForm \[Rule] True]", "Input", FontFamily->"Times"], StyleBox[". \n\nIn both cases the output has the form ", FontWeight->"Plain"], Cell[BoxData[ FormBox[ RowBox[{"{", RowBox[{"S", ",", RowBox[{"{", RowBox[{"U", ",", "V"}], "}"}]}], "}"}], TraditionalForm]]], " where ", Cell[BoxData[ FormBox["S", TraditionalForm]]], " is the Smith form, and ", Cell[BoxData[ FormBox["U", TraditionalForm]]], ", ", Cell[BoxData[ FormBox["V", TraditionalForm]]], " unimodular matrices satisfying ", Cell[BoxData[ FormBox[ RowBox[{"S", "=", RowBox[{"U", " ", "A", " ", "V"}]}], TraditionalForm]]], "." }], "Text"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"S", ",", RowBox[{"{", RowBox[{"U", ",", "V"}], "}"}]}], "}"}], "=", RowBox[{"IntegerSmithForm", "[", RowBox[{"A", "=", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "9"}], ",", "27", ",", RowBox[{"-", "16"}], ",", "12"}], "}"}], ",", RowBox[{"{", RowBox[{"8", ",", "0", ",", RowBox[{"-", "4"}], ",", RowBox[{"-", "2"}]}], "}"}], ",", RowBox[{"{", RowBox[{"22", ",", RowBox[{"-", "6"}], ",", "1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"213", ",", RowBox[{"-", "1"}], ",", RowBox[{"-", "5"}], ",", "1"}], "}"}]}], "}"}]}], "]"}]}], ";"}]], "Input"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"U", "//", "MatrixForm"}], ",", RowBox[{"V", "//", "MatrixForm"}]}], "}"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "24", "1", RowBox[{"-", "1"}]}, { RowBox[{"-", "1"}], RowBox[{"-", "171"}], RowBox[{"-", "6"}], "7"}, {"195", RowBox[{"-", "649"}], "887", RowBox[{"-", "59"}]}, {"7701282", RowBox[{"-", "25633567"}], "35030942", RowBox[{"-", "2330050"}]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]], ",", TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", RowBox[{"-", "1555"}], RowBox[{"-", "5048651"}], "10100417"}, {"0", RowBox[{"-", "329"}], RowBox[{"-", "1068078"}], "2136815"}, {"0", "1", "3241", RowBox[{"-", "6484"}]}, {"0", "0", "1", RowBox[{"-", "2"}]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"S", "//", "MatrixForm"}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", "1", "0", "0"}, {"0", "0", "1", "0"}, {"0", "0", "0", "79012"} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["The option ExtendedForm -> False", "Subsubsection"], Cell[TextData[{ "The computation of ", Cell[BoxData[ FormBox["S", TraditionalForm]]], ", skipping ", Cell[BoxData[ FormBox["U", TraditionalForm]]], " and ", Cell[BoxData[ FormBox["V", TraditionalForm]]], ", is performed by \n", StyleBox["IntegerSmithForm[A,ExtendedForm \[Rule] False]", "Input", FontFamily->"Times"], StyleBox[":", FontWeight->"Plain"] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"MatrixForm", "[", RowBox[{"IntegerSmithForm", "[", RowBox[{"A", ",", RowBox[{"ExtendedForm", "\[Rule]", "False"}]}], "]"}], "]"}]], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0"}, {"0", "1", "0", "0"}, {"0", "0", "1", "0"}, {"0", "0", "0", "79012"} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Invariant Factors", "Subsubsection"], Cell[TextData[{ "The invariant factors of ", Cell[BoxData[ FormBox["A", TraditionalForm]]], " are given by \n", StyleBox["IntegerInvariantFactors[A,x]", "Input", FontFamily->"Times"], StyleBox[".", FontWeight->"Plain"] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"IntegerInvariantFactors", "[", "A", "]"}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{"1", ",", "1", ",", "1", ",", "79012"}], "}"}]], "Output"] }, Open ]] }, Open ]] }, Open ]] }, Open ]] }, WindowSize->{640, 750}, WindowMargins->{{20, Automatic}, {Automatic, 44}}, ShowSelection->True, FrontEndVersion->"6.0 for Mac OS X x86 (32-bit) (June 19, 2007)", StyleDefinitions->"Default.nb" ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[590, 23, 26, 0, 76, "Title"], Cell[619, 25, 286, 7, 56, "Text"], Cell[908, 34, 531, 16, 88, "Text"], Cell[1442, 52, 74, 0, 26, "Text"], Cell[1519, 54, 56, 1, 27, "Input"], Cell[1578, 57, 58, 0, 26, "Text"], Cell[CellGroupData[{ Cell[1661, 61, 56, 1, 27, "Input"], Cell[1720, 64, 1834, 52, 96, "Print"] }, Open ]], Cell[CellGroupData[{ Cell[3591, 121, 38, 0, 67, "Section"], Cell[3632, 123, 1025, 37, 116, "Text"], Cell[CellGroupData[{ Cell[4682, 164, 2626, 82, 166, "Input"], Cell[7311, 248, 2802, 89, 100, "Output"] }, Open ]], Cell[10128, 340, 241, 8, 27, "Input"], Cell[CellGroupData[{ Cell[10394, 352, 140, 4, 27, "Input"], Cell[10537, 358, 2093, 62, 89, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[12667, 425, 59, 1, 27, "Input"], Cell[12729, 428, 774, 23, 76, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[13540, 456, 112, 3, 27, "Input"], Cell[13655, 461, 290, 8, 27, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[13982, 474, 70, 2, 25, "Subsubsection"], Cell[14055, 478, 391, 15, 41, "Text"], Cell[CellGroupData[{ Cell[14471, 497, 189, 4, 27, "Input"], Cell[14663, 503, 774, 23, 76, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[15486, 532, 42, 0, 25, "Subsubsection"], Cell[15531, 534, 246, 9, 26, "Text"], Cell[CellGroupData[{ Cell[15802, 547, 102, 2, 27, "Input"], Cell[15907, 551, 212, 7, 33, "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[16180, 565, 35, 0, 67, "Section"], Cell[16218, 567, 942, 34, 116, "Text"], Cell[17163, 603, 803, 26, 43, "Input"], Cell[CellGroupData[{ Cell[17991, 633, 140, 4, 27, "Input"], Cell[18134, 639, 1815, 54, 151, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[19986, 698, 59, 1, 27, "Input"], Cell[20048, 701, 661, 19, 89, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[20746, 725, 57, 0, 25, "Subsubsection"], Cell[20806, 727, 383, 15, 41, "Text"], Cell[CellGroupData[{ Cell[21214, 746, 176, 4, 27, "Input"], Cell[21393, 752, 661, 19, 89, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[22103, 777, 42, 0, 25, "Subsubsection"], Cell[22148, 779, 241, 9, 41, "Text"], Cell[CellGroupData[{ Cell[22414, 792, 76, 1, 27, "Input"], Cell[22493, 795, 97, 2, 27, "Output"] }, Open ]] }, Open ]] }, Open ]] }, Open ]] } ] *) (* End of internal cache information *)