M7R0
I0SmithNormalFormy6'%6SmithNormalFormSeriesG%0NullSpaceSeriesG%<RationalKernelD
ecompositionG%*getseriesG%+CharacPolyG6'%6unitpartLaurentSeriesG%.MatrixPolEval
G%*GetDegreeG%'getvalG%=InverseunitpartLaurentSeriesG't+6&%#M1G%"xG%"dG%*precis
ionG6H%"nG%"mG%'MtildeG%"PG%%PinvG%"QG%%QinvG%*min_indexG%(min_valG%"jG%"iG%#i1
G%#j1G%"pG%"aG%%ainvG%'PdilatG%*PdilatinvG%&Vect1G%#irG%#jrG%"BG%#P2G%&P2invG%(
Mtilde2G%#Q2G%&Q2invG%'P2augmG%*P2augminvG%)P2auginvG%'Q2augmG%*Q2augminvG%"VG%
&MtempG%'coeff1G%'coeff2G%"MG%%tempG6"6"Cin>8H-T%6%9$9%9&>8$-_%.LinearAlgebraG%
-RowDimensionG6#F[o>8%-_Ffo%0ColumnDimensionGFho>8&F[o>8D-%'VectorG6$;"""FcoFfp
>8'-_Ffo%/IdentityMatrixG6$Fco/%.outputoptionsG7#/%&shapeG%,rectangularG>8(Fip>
8)-Fjp6$FjoF]q>8*Fgq@$/*&FcoFfpFjoFfp""!O6'-_Ffo%/DiagonalMatrixG6%FapFcoFcoFar
F_p-Fbr6%FapFjoFjoFer>8+7$FfpFfp>8I-F]o6%F_pF`oFao>8E-%$mapG6$f*6#%"XGFhn6$%)op
eratorG%&arrowGFhn-%(convertG6$F_o%(polynomGFhnFhnFhnF[s>8,-%(ldegreeG6#-%)simp
lifyG6#&F_s6$FfpFfp?(8-FfpFfpFjo%%trueG?(8.FfpFfpFcoFit@$-%#isG6#2-F`t6$&F_s6$F
[uFhtF`oF^tC$>Fhr7$F[uFht>F^t-F`t6#-Fct6#Fcu>F[u&Fhr6#Ffp>Fht&Fhr6#""#>F_p-_%'l
inalgG%(swaprowG6%F_pFfpF[u>Fhp-Ffv6%FhpFfpF[u>Fdq-Ffv6%FdqF[uFfp>Ffq-_Fgv%(swa
pcolG6%FfqFfpFht>Fjq-Fbw6%FjqFhtFfp>F_p-Fbw6%F_pFfpFht>81&F_pFft>F[s-Fas6$f*Fds
Fhn6$FgsFhsFhn-Fct6#F_oFhnFhnFhnF\x-%)userinfoG6&Ffp.T'%&pivotG-Fjs6$F[sF\t@$5/
F\xF^r/F^t%)infinityGO6'FarFarF[oFerFer>82-%'expandG6#*&F\xFfp)F`oF^t!"">F[sFey
-Ffx6&FfpFhx%?normalize~the~pivot:~unit~partGF[y>83*$FeyF[z>F[s-%'seriesG6%FazF
`o9'-Ffx6&FfpFhx%Nnormalize~the~pivot:~inverse~of~the~unit~partG-Fjs6$%"%GF\t>8
4Far>&F_[lFftFaz>85Far>&Fc[lFftFey>F_p-Fct6#-%&evalaG6#-%".G6$F_[lF_p-Ffx6&FfpF
hx%;normalize~pivot:~invariantG-Fjs6$-Fez6%F]xF`oFgzF\t>Fhp-Fct6#-F]\l6$F_[lFhp
>Fdq-F]\l6$FdqFc[l-Ffx6%FfpFhx%)pivotingG?(87FcvFfpFcoFitC*>8F,$*&&F_p6$Fb]lFfp
FfpFjyF[zF[z>F[s-Fez6%Fe]lF`oFgz-Ffx6'FfpFhx%/pivoting:~row~GFb]lF[[l>&F_p6#Fb]
l-Fct6#,&*&Fe]lFfp&F_pF_vFfpFfpFa^lFfp>Fhp-Fjs6$Fhp%'MatrixG>&FhpFb^l-Fct6#,&*&
Fe]lFfp&FhpF_vFfpFfpF]_lFfp>Fdq-Fjs6$FdqF[_l>&FdqFdp-Fct6#,&*&Fe]lFfp&Fdq6$FepF
b]lFfpFfpFg_lFfp?(88FcvFfpFjoFitC*>8G,$*&&F_p6$FfpF_`lFfpFjyF[zF[z>F[s-Fez6%Fb`
lF`oFgz-Ffx6'FfpFhx%1pivoting:~columnGF_`lF[[l>&F_p6$FepF_`l-Fct6#,&*&Fb`lFfp&F
_pFdpFfpFfpF^alFfp>Ffq-Fjs6$FfqF[_l>&FfqF_al-Fct6#,&*&Fb`lFfp&FfqFdpFfpFfpFialF
fp>Fjq-Fjs6$FjqF[_l>&FjqF_v-Fct6#,&*&Fb`lFfp&Fjq6#F_`lFfpFfpFcblFfp-Ffx6%FfpFhx
%*recursionG>6'8:8;8<8=8>-Fix6&&F_p6$;FcvFco;FcvFjoF`oFaoFgz>FfclFacl>8?Fip>8@F
ip>&F\dl6$FhclFhclF_cl>&F^dlFadlF`cl>8BFgq>8CFgq>&Fedl6$FiclFiclFbcl>&FgdlFjdlF
ccl>F_p-Fct6#F\s>Fhp-Fct6#-F]o6%-F]\l6$F\dlFhpF`oFgz>Fdq-Fct6#-F]o6%-F]\l6$FdqF
^dlF`oFgz>Ffq-Fct6#-F]o6%-F]\l6$FfqFedlF`oFgz>Fjq-Fct6#-F]o6%-F]\l6$FgdlFjqF`oF
gzO6'-Fj[l6#Fhp-Fj[l6#Fdq-Fj[l6#F_p-Fj[l6#Ffq-Fj[l6#FjqFhnFhn6(%6_thismoduledef
initionGFhnF(%*getseriesGF%%6SmithNormalFormSeriesG6#""%%*protectedGt+6(%"TGF3%
'lambdaGFDF4F56%%%TempG%#P1GF76"FhnC'>F_p-FeoFdx>Fco-%%evalG6#-F]o6%Fgz-Fas6%Fj
sF_oF\tFao-%$seqG6$&&-Fix6&FcoF`o9(9)6#F]hl6$;FfpF_pFA/FA;,(F_pFfp-%'degreeG6#F
gzF[zFfpFfpF_p>Fjo-F[_l6#7#F][lO7$Fjo-F\p6#FjoFhnFhn6(FiglFhnF,%.MatrixPolEvalG
F%F[hl6#""'F^hlt+F`hl6/FdhlFehlF7%%solsGFAF:%"FGF@FM%"LG%+ListOfSizeG%/SizeOFSu
bBlockG%$P12G6"FhnC)>F_pFihl>Fjq-%(factorsGFcjl?(FhrFfpFfp-%%nopsG6#&FjqFbvFitC
&>Fco-F\il6#-F]o6%)&&Fb\m6#FhrF_v&F[]mFbvF`ilFao-Fcil6$&Ffil6$F]jlFdq/Fdq;,(F_p
Ffp*&F]]mFfp-Fbjl6#Fj\mFfpF[zFfpFfpF_p>&FjoF\]mFejl>&8/F\]mFe]m-Fcil6$Fi]m/Fhr;
FfpF_\m>FfqFejl>F[u-Fcil6$F[^mF_^mO6$Fdgl7#F[uFhnFhn6(FiglFhnF,F][mF%F[hl6#F_[m
F^hlt+6%FenF3F@6#%"NG6"FhnC$@%-&Fgv6#.%'iszeroGFdxOF_oC$>Fco-Fas6&t+6%FEF3%#jjG
6#%"vG6"FhnC$>Fco-T#6$F_oF`o@%1,&FaoFfpFcoF[zF[zF^r-Fgy6#*&)F`oFcoFfp-Fjs6$-Fez
6%-%'normalG6#*&F_oFfp)F`o,$FcoF[zFfpF`o,(FaoFfpFcoF[zFfpFfp.F\tFfpFhnFhn6$F.F]
o6#""$F_oF`oFaoFcoOFcoFhnFhn6&FiglFhnF.%'getvalG6#F[bmF^hlt+6$FenF3Fhn6"FhnC$-_
Ffo%9CharacteristicPolynomialG6$F_oFbhlO-%'factorG6#-%(collectG6%F][lFbhlf*FdsF
hn6$FgsFhsFhn-Fjs6$-Fez6%F_oT$FfpF\tFhnFhn6$F3F`oFhnFhn6$FiglFhn6#FcvF^hl't+6%%
"fGF3F56&F7%#n1GFfn%#f1G6"FhnC%/F_pFao>FhpFis@%/-%(ldefreeGFdxF^rOF_oO-Fjs6$-Fe
z6%*&)F`o,$-F`tF_glF[zFfpFhpFfpF`oFaoF\tFhnFhn6$FiglFhn6#F[bmFhnt+6%%$polGFenFb
hl6&F7%#p0G%#p1G%$resG6"FhnC(>Fco&-_Ffo%+DimensionsG6#F`oF_v>Fjo-%&coeffG6%-Fgy
FdxFaoF^r>F_p-Fbam6#*&,&F_oFfpFjoF[zFfpFaoF[z>Fhp*&FjoFfp-Fjp6#FcoFfp@$0F_pF^r>
Fhp-Fas6$Fbam,&FhpFfp-F]\l6$F`oF\sFfpOFhpFhnFhn6&FiglFhnF,F][m6#F[bmFhnt+6$Fahl
F36%FenFd[m%#TTG6"FhnC&>F_pF`il>Fco-Fas6%FbjlF_pF`o>Fjo7#-Fcil6$-Fcil6$&Fco6$FA
F@/FA;FfpFihl/F@F^imO-%$maxGF[[mFhnFhn6$FiglFhn6#FcvFhnt+6$F[dmF36$F_`m%#ffG6"F
hnC$>Fjo-Fct6#Fis@%/-%'indetsGF[[m<"F^rO,&-F`t6$-%&numerGF[[mF`oFfp-F`t6$-%&den
omGF[[mF`oF[zFhnFhn6$FiglFhn6#FcvFhnt+6%F^dmF3F56%F7Ffn%#f2G6"FhnC$>F_pFisO-Fez
6%*$F_pF[zF`oFaoFhnFhn6$FiglFhn6#F[bmFhnb6#%+thismoduleGF*6#%(packageGF$FhnFhnF
hnFhnFhnFhn
