!       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE F G H IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2 Safe-Infered Safe-Infered Safe-Infered         Safe-Inferede      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE^      !"#$%&'()*+,-./0123456789:;<=>@      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE Safe-InferedNoneHQStore the upper triangular half of a real symmetric or complex Hermitian matrix. !"#$%&'()*+,-./0123FGHIJKLM4NO56P7Q89:;RSTU<=>?@ABCDEFGHIJKLMNOPVWXYQRSTUVWXZ[YZ[\\]^_`]^abc_`abdefghijcklmnopqrsdtuvwxyz{|}~efg !"#$%&'()*+,-./0123FGHIJKLM4NO56P7Q89:;RSTU<=>?@ABCDEFGHIJKLMNOPVWXYQRSTUVWXZ[YZ[\\]^_`]^abc_`abdefghijcklmnopqrsdtuvwxyz{|}~efg !"#$%('&)*+,-./0123FGHIJKLM4NO56P7Q89:;RSTU<=>?@ABCDEFGHIJKLMNOPVWXYQRSTUVWXZ[Y[Z\\]^_`]^abc_`abdefghijcklmnopqrsdtuvwxyz{|}~efgNonehijklmnopqrstuvwxyz{|}hijklmnopqrstuvwxyz{|}hjikmlnpoqrstuvwxyz{|}None1Make a temporary copy only for complex matrices. In ColumnMajor: -Copy a m-by-n-matrix with lda>=m and ldb>=m. +Copy a m-by-n-matrix to ColumnMajor order. --' None < dot x y = Matrix.toScalar (singleRow x <#> singleColumn y) ! inner x y = dot (conjugate x) y MSum of the absolute values of real numbers or components of complex numbers. %For real numbers it is equivalent to . :Euclidean norm of a vector or Frobenius norm of a matrix. 3Computes (almost) the infinity norm of the vector. .For complex numbers every element is replaced 3by the sum of the absolute component values first. LReturns the index and value of the element with the maximal absolute value. OCaution: It actually returns the value of the element, not its absolute value! LReturns the index and value of the element with the maximal absolute value. NThe function does not strictly compare the absolute value of a complex number 0but the sum of the absolute complex components. OCaution: It actually returns the value of the element, not its absolute value! R~   .~.~=~   NoneNone        NoneIf (q,r) = schur a, then a = q <\> r \<> adjoint q, where q is unitary (orthogonal) and r0 is a right-upper triangular matrix for complex a 8and a 1x1-or-2x2-block upper triangular matrix for real a. With takeDiagonal r you get all eigenvalues of a if a is complex )and the real parts of the eigenvalues if a is real. 0Complex conjugated eigenvalues of a real matrix a .are encoded as 2x2 blocks along the diagonal.  !"#$%&'()*+,-./0$* !"#$%&'()*+,-./0None123412341234 None656789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd/58769:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd None< denotes a range starting at zero and has a certain length. efgefgNonehijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~None NoneA^H * A A^H + A A^H + A +nop#!None"NoneInclude symmetric matrices. <However, symmetric matrices do not preserve unit diagonals. ;(55#None . solve a b == solveDecomposed (decompose a) b / solve (covariance u) b == solveDecomposed u b Cholesky decomposition  None$None %None               &None#nop'NoneIThis class allows to multiply two matrices of arbitrary special features 3and returns the most special matrix type possible. $At the first glance, this is handy. .At the second glance, this has some problems. 0First of all, we may refine the types in future Oand then multiplication may return a different, more special type than before. 9Second, if you write code with polymorphic matrix types, then % may leave you with constraints like $ExtentPriv.Multiply vert vert ~ vert. HThat constraint is always fulfilled but the compiler cannot infer that. Because of these problems +you may instead consider using specialised # functions -from the various modules for production use. Btw.  and   are much less problematic, 7because the input and output are always dense vectors. #;Multiply two matrices with the same dimension constraints. E.g. you can multiply General and General matrices, or r and r matrices. 1It may seem to be overly strict in this respect, 2but that design supports type inference the best. 7You can lift the restrictions by generalizing operands with (), *+, *, or *-. ;Multiply two matrices with the same dimension constraints. E.g. you can multiply General and General matrices, or r and r matrices. 1It may seem to be overly strict in this respect, 2but that design supports type inference the best. 7You can lift the restrictions by generalizing operands with (), *+, *, or *-. > !"#      ! !"#7 !"#      !.None-conjugate transpose $%&'()*+,-./01"#234567$r$%&'()*+,-./01234567$%&'()*+,-./01"#234567$/None%&'()*+,-./0123-/ %&'()*+,-./0123None9#For symmetric eigenvalue problems,  eigensystem and schur coincide. 89nop89npo89890None456789:;<=>?@AB<> 456789:;<=>?@ABNone;#For symmetric eigenvalue problems,  eigensystem and schur coincide. :;nop:;npo:;:;1None= . solve a b == solveDecomposed (decompose a) b / solve (covariance u) b == solveDecomposed u b >Cholesky decomposition <=>?C<=>?<=>?CNone<=>?<=>?2NoneDEFGHIJKLMNOPQDEFGHIJKLMNOPQDEFGHIJKLMNOPQ3None@RAB@AB@RABNoneD (vr,d,vl) = eigensystem aCounterintuitively, vr! contains the right eigenvectors and vl, contains the left eigenvectors as columns. *The idea is to provide a decomposition of a. If a is diagonalizable, then vr and vl# are almost inverse to each other. More precisely,  adjoint vl <#> vr is a diagonal matrix. EThis is because all eigenvectors are normalized to Euclidean norm 1. ?With the following scaling, the decomposition becomes perfect:  ? let scal = Array.map recip $ takeDiagonal $ adjoint vl <#> vr 9 a == vr <#> diagonal d <#> diagonal scal <#> adjoint vl If a, is non-diagonalizable then some columns of vr and vl are left zero &and the above property does not hold. CDr$%&'()*+,-./01234567@ABCDr$&%'()*+,-./01234567@ABCDCD4NoneESFESFESF NoneGH     EFGH     GHEFGH5NoneS  #HH.minimumNorm (HH.fromMatrix a) b ==  Ortho.minimumNorm (adjoint a) b "IJKLMTUVWNXOYPQRSZ[TU\VWX]^_`YZ[\a!IJKLMTUVWNXOYPQRSZ[TU\VWX]^_`YZ[\IJKLMTUVWNXOYPQRSZ[TU\VWX]^_`YZ[\aNonehijklmnopIJKLMNOPQRSTUVWXYZ[\MLKJINOPQRSnpokmlhjiTYXUZVW[\6None^+The pivot array must be at most as long as  Shape.size sh. bcd]e^fg_`abhcdijekbcd]e^fg_`abhcdijebdc]e^fg_`abhcdijekNone hij]^_`abcde ]hji^_d`abceNoneiLowerUpper.fromMatrix a (computes the LU decomposition of matrix a with row pivotisation. You can reconstruct a from lu depending on wether a is tall or wide. ? LU.multiplyP False lu $ LU.extractL lu <#> LU.tallExtractU lu ? LU.multiplyP False lu $ LU.wideExtractL lu <#> LU.extractU lu k Caution: LU.determinant . LU.fromMatrix" will fail for singular matrices. pwideMultiplyL transposed lu a multiplies the square part of lu ,containing the lower triangular matrix with a. 3 wideMultiplyL False lu a == wideExtractL lu <#> a D wideMultiplyL True lu a == wideExtractL (Tri.transposeUp lu) <#> a ttallMultiplyU transposed lu a multiplies the square part of lu ,containing the upper triangular matrix with a. 3 tallMultiplyU False lu a == tallExtractU lu <#> a F tallMultiplyU True lu a == tallExtractU (Tri.transposeDown lu) <#> a %lmnopqrsfgtuvhijklmwnopqrstuvxywz{x|}hijklmnopfghijklmnopqrstuvwxgfnpokmlhjihivjwklmnopqrstuxlmnopqrsfgtuvhijklmwnopqrstuvxywz{x|}7None y~z{|yz{| y~z{|8None,There is no solver for indefinite matrices. AThus the instance will fail for indefinite but solvable systems. }~}~ }~None (vr,d,vlAdj) = eigensystem aCounterintuitively, vr, contains the right eigenvectors as columns and vlAdj4 contains the left conjugated eigenvectors as rows. *The idea is to provide a decomposition of a. If a is diagonalizable, then vr and vlAdj "are almost inverse to each other. More precisely, vlAdj <#> vr is a diagonal matrix. 5This is because the eigenvectors are not normalized. ?With the following scaling, the decomposition becomes perfect:  : let scal = Array.map recip $ takeDiagonal $ vlAdj <#> vr 4 a == vr <#> diagonal d <#> diagonal scal <#> vlAdj If a is non-diagonalizable then some columns of vr and corresponding rows of vlAdj are left zero &and the above property does not hold. /5yz{|/5yz{|None Q !"#$%&'()*+,-./012346789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgQTSRQUVWX]^Y[Z\_ba`PLMNOHIJKBCDEFG;:987cd4@A>?./012-,+*)%('&fg3e<=6 !"#$ Noneconjugate transpose  Problem:  adjoint a  # a is always square, @but how to convince the type checker to choose the Square type?  Anser: Use +Hermitian.toSquare $ Hermitian.covariance a instead. &Square matrices will be classified as t. =Take a left-top aligned square or as much as possible of it. OThe advantange of this function is that it maintains the matrix size relation, /e.g. Square remains Square, Tall remains Tall. =Drop the same number of top-most rows and left-most columns. OThe advantange of this function is that it maintains the matrix size relation, /e.g. Square remains Square, Tall remains Tall. adaptOrder x y contains the data of y with the layout of x.  F tensorProduct order x y = singleColumn order x <#> singleRow order y  > outer order x y = tensorProduct order x (Vector.conjugate y) :Rqstuvwxyz{|} !"#}~Rvutsqw|}xyz{#" !}~8NoneIf x = leastSquares a b then x minimizes Vector.norm2 (multiply a x sub b). Precondition: a must have full rank and height a >= width a.  The vector x with x = minimumNorm a b is the vector with minimal Vector.norm2 x that satisfies multiply a x == b. Precondition: a must have full rank and  height a < = width a. If *x = leastSquaresMinimumNormRCond rcond a b then x is the vector with minimum Vector.norm2 x that minimizes Vector.norm2 (multiply a x sub b). Matrix a can have any rank Lbut you must specify the reciprocal condition of the rank-truncated matrix. Gramian determinant - Gworks also for non-square matrices, but is sensitive to transposition. E determinantAbsolute a = sqrt (Herm.determinant (Herm.covariance a)) For an m-by-n-matrix a with m>=n ,this function computes an m-by-(m-n)-matrix b  such that Matrix.multiply (adjoint b) a is a zero matrix. =The function does not try to compensate a rank deficiency of a.  That is, a|||b has full rank if and only if a has full rank. 0For full-rank matrices you might also call this kernel or  nullspace. None+  !9:;<=>?@ABCDEFGHIJKLMNOPQRSTUV,-WWXYZ[\]^_`abcddefghijklmnopqrssttuuvwxyzz{|}}~~(M(+,-OP        D F A B R     u z M !!!"""o"l"""R"""""""""""""""""""""""""""M"""#####%o%%%(%%d%%%%%%R%%%%%%%%%)&W&&&&&&&&&&' ' ' ' ' '''..T.)......R..........M.111133344 O P5(555555555555 5!5"5#5$5%5&5'6(6)6*66+6R66,6-(./012345678,9:777;78<88=88>?@ABCDEFG:HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvno((Nwxyz{|}~ I-(JKL:,-TUVRQ:      !"#$%&'()*++,--.//0123456789:;<=>?@ABCDEFGHIJKLMNO    P P Q    R R S T T U V V W X X Y Z Z [ \ ] ^ _ ` a b c d e f g h ijjkllmoonoopqqrsttuvwwxyrz{|}~LG                                                   II  M      I I                   !!" " """"""""""""""""""""#$$$$$o$o$p$r$$$$$$$%%%%%%%%&&&&&&&&&&o&&&& & &&& && && &&'''''''''''''''''g''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@.A.B.C/D/D/E/F/o/o/p/G/r/z//H/I/J/K0L0L0M0N0o0o0p0G0r0z00H0O0P0Q122R2S2T2U222%2)232&2242'2V3W4X55Y5Z5[5:5R5X5\5]5^5_5`5a5b6c6d6e6(6f6g6h6i6j6kllmnno.pZqrstuvw7V7x7y7z7{7|7}78~8888888oopzHG lapack-0.2Numeric.LAPACK.ScalarNumeric.LAPACK.Matrix.ExtentNumeric.LAPACK.Matrix.Shape Numeric.LAPACK.Matrix.Triangular%Numeric.LAPACK.Orthogonal.HouseholderNumeric.LAPACK.Matrix.HermitianNumeric.LAPACK.MatrixNumeric.LAPACK.Matrix.SquareNumeric.LAPACK.VectorNumeric.LAPACK.FormatNumeric.LAPACK.ShapeStatic/Numeric.LAPACK.Matrix.HermitianPositiveDefiniteNumeric.LAPACK.Matrix.Banded%Numeric.LAPACK.Matrix.BandedHermitian5Numeric.LAPACK.Matrix.BandedHermitianPositiveDefiniteNumeric.LAPACK.Permutation Numeric.LAPACK.Linear.LowerUpperNumeric.LAPACK.OrthogonalNumeric.LAPACK.Singular!Numeric.LAPACK.Matrix.Extent.KindNumeric.LAPACK.Wrapper$Numeric.LAPACK.Matrix.Extent.Private#Numeric.LAPACK.Matrix.Shape.PrivateNumeric.LAPACK.Matrix.PrivateNumeric.LAPACK.PrivateNumeric.LAPACK.Matrix.Basic'Numeric.LAPACK.Matrix.Hermitian.Private"Numeric.LAPACK.Matrix.Square.EigenNumeric.LAPACK.Linear.Private(Numeric.LAPACK.Matrix.Triangular.Private'Numeric.LAPACK.Matrix.Symmetric.Private%Numeric.LAPACK.Matrix.Hermitian.Basic&Numeric.LAPACK.Matrix.Hermitian.Linear&Numeric.LAPACK.Matrix.Triangular.Basic6Numeric.LAPACK.Matrix.HermitianPositiveDefinite.Linear&Numeric.LAPACK.Matrix.Triangular.Eigen"Numeric.LAPACK.Matrix.Banded.Basic+Numeric.LAPACK.Matrix.BandedHermitian.BasicNumeric.LAPACK.Matrix.MultiplySquaretoFullMatrixfromFullgeneralizeTallgeneralizeWide"Numeric.LAPACK.Matrix.Square.Basic%Numeric.LAPACK.Matrix.Hermitian.Eigen+Numeric.LAPACK.Matrix.BandedHermitian.Eigen MultiplyLeft<# MultiplyRight#>size fromGeneral fromScalartoScalar identityFromidentityFromWidthidentityFromHeighttracepower eigenvalues eigensystem Householder fromMatrixdeterminantAbsolute leastSquares minimumNormextractQ tallExtractQ tallMultiplyQtallMultiplyQAdjoint multiplyQextractR tallExtractR tallMultiplyR tallSolveR Permutation fromPivotstoPivotsnumberFromSigntoMatrixapply LowerUpperextractP multiplyPextractL wideExtractL wideMultiplyL wideSolveLextractU tallExtractU tallMultiplyU tallSolveUmultiplyFullRight caseTallWideinverseGenericInverseSolve solveVector SplitGeneral splitGeneral splitFromFulllowerTriangularupperTriangular symmetric hermitianbandedFromFullbandedHermitianfromRowsNonEmpty fromRowArrayfromRowsfromColumnsNonEmptyfromColumnArray fromColumnstoRows toColumns toRowArray toColumnArraytakeRow takeColumn takeTopRowstakeBottomRowstakeLeftColumnstakeRightColumnstakeRowsdropRows takeColumns dropColumns takeEqually dropEqually reverseRowsreverseColumns fromRowMajor toRowMajor forceOrder adaptOrderflatten|||===rowSums columnSumsscaleRowsComplexscaleColumnsComplex scaleRowsRealscaleColumnsReal tensorProductleastSquaresMinimumNormRCondpseudoInverseRCond householder complementvalues valuesTall valuesWide decomposeWide decomposeTall wideHeight wideWidth tallHeight tallWidth generalHeight generalWidth $fShowSquare $fEqSquareFlipgetFlipToReal getToRealFromReal getFromReal norm1ComplexabsoluteSquaredRealabsoluteSquaredComplexUnifygetUnifyMultiplyTagLawgetMultiplyTagLawTagFactFusegetFuseAdaptgetAdaptWidengetWidenEqualgetEqual Transpose getTransposeAccessor getAccessor GenToWide getGenToWide GenToTall getGenToTallGenWide getGenWideGenTall getGenTall GenSquare getGenSquare CaseTallWidegetCaseTallWide Dimensions extentDir extentDim switchTagPair genSquare genToTall genToWidesquareFromGeneralshowsPrecSquare showsPrecAnywidenreduceWideHeightreduceConsistentmultiplyTagLaw heightFact widthFact unifyLeft unifyRight $fShowExtent $fEqExtent$fCBig$fCSmall $fNFDataSmall $fNFDataBig$fNFDataExtentConst2 getConst2UpLoSymC switchUpLoSymUpLoSym DiagUpLoCswitchDiagUpLoUpLoC switchUpLo switchContent FlexSymmetricFilledEmpty splitLower splitOrder splitExtentWidthOfHeightOftransposeFromOrderswapOnRowMajorsideSwapFromOrder fullIndicesfullIndexFromOffset fullMapExtent splitHeight splitWidthsplitMapExtentcaseTallWideSplit splitPart uploFromOrder caseTriDiagcharFromTriDiagloweruppertriangularTransposeswitchDiagUpLoSym autoContent uploOrder getConstAs caseContentcaseLoUpcaseDiagUpLoSymgetContentConst2 caseUpLoSym triangleSizetriangleOffset triangleRoottriangleRootDoubletriangleExtenttriangleIndicestriangleIndexFromOffset bandedHeight bandedWidthbandedMapExtent bandedBreadthnumOffDiagonals natFromProxybandedTranspose outsideOffset bandedOffsetbandedIndicesRowMajorbandedIndexFromOffsetbandedHermitianIndexFromOffset$fInvIndexedBandedHermitian$fIndexedBandedHermitian$fCBandedHermitian$fNFDataBandedHermitian$fInvIndexedBanded$fIndexedBanded $fCBanded$fNFDataBanded$fInvIndexedTriangular$fIndexedTriangular $fCTriangular$fNFDataTriangular$fUpLoSymCFilledFilled$fUpLoSymCFilledEmpty$fUpLoSymCEmptyFilled$fDiagUpLoCFilledEmpty$fDiagUpLoCEmptyFilled$fDiagUpLoCEmptyEmpty$fUpLoCFilledEmpty$fUpLoCEmptyFilled$fContentFilled$fContentEmpty$fTriDiagNonUnit $fTriDiagUnit$fInvIndexedHermitian$fIndexedHermitian $fCHermitian$fNFDataHermitian$fInvIndexedSplit$fIndexedSplit$fCSplit $fNFDataSplit$fNFDataTriangle$fNFDataReflector$fInvIndexedFull $fIndexedFull$fCFull $fNFDataFull $fNFDataOrder argGeneral argSquaretransposeOrder flipInversionconjugateToTemp copySubMatrixcopyToColumnMajorLACGVgetLACGVSumrunSum CopyToTemp runCopyToTempfill copyBlock copyToTempcomplexConjugateToTemp copyConjugatecopyCondConjugatecondConjugateToTempcopyCondConjugateToTempcopySubTrapezoidcopyTransposedcopyToSubColumnMajor pointerSeqcreateHigherArraysumReal sumComplexlacgvgemvgbmv initializeMVmultiplyMatrixwithAutoWorkspaceInfowithAutoWorkspacewithInfoargMsg errorCodeMsgrankMsg definiteMsgeigenMsgpokeCIntpeekCInt ceilingSize ToComplex getToComplex Conjugate getConjugate ScaleReal getScaleReal ArgMaximum runArgMaximumNormgetNormDotrunDotsplitdotReal dotComplexcsum1asumnrm2absMax vectorArgs peekElemOff1_scalescaleRealComplexcomplexConjugate complexToPartisComplexInFunctor DeterminantgetDeterminant TakeDiagonalrunTakeDiagonal runDiagonal Decompose getDecomposeGEESgetGEESGEES_SchurgetSchurSchur_Values getValuesValues_ valuesAuxschurAuxgeesgeesReal geesComplex decomposeRealeigenvectorsToComplexdecomposeComplexcreateArrayPairsolverwithDeterminantInfo diagonalMsg SeparatorBarSpaceFormatTriangulargetFormatTriangulartrim formatVector formatFullformatHouseholderformatHermitianformatSymmetriccomplementTriangleformatTriangularpadUpperTrianglepadLowerTrianglesliceformatSeparateTriangle formatBandedformatBandedHermitianshiftRow splitRows formatAlignedalignSeparatedviewLAllformatSeparatorattachSeparatorsprintfFloatingprintfFloatingMaybe printfComplexprintfComplexAux$fFormatArrayBandedHermitian$fFormatArrayBanded$fFormatArrayTriangular$fFormatArrayHermitian$fFormatArraySplit$fFormatArrayFull$fFormatArrayOneBased$fFormatArrayZeroBased $fFormatArray $fFormat(,,) $fFormat(,) $fFormat[]$fFormatComplex$fFormatDouble $fFormatFloat $fFormatInt$fInvIndexedZeroBased$fIndexedZeroBased $fCZeroBased FlexLowerPowergetPowergetMapgetMultiplyRight FlexDiagonaldiagonalPointersdiagonalPointerPairscolumnMajorPointersrowMajorPointers forPointerscopyTriangleToTemp unpackToTempunpackpackpackRect _unpackZero unpackZero fillTrianglecaseTriDiagArraymultiplyDiagonal fromBandedblockDiagonalPointers _addAdjointHERKgetHERKHERK_HPRgetHPRHPR_SumRank1 getSumRank1 SumRank1_ diagonalAuxtakeDiagonalAuxwithConjBufferouterAux sumRank1Auxhpr _toSquare covarianceAuxherk_packdeterminantAuxpeekBlockDeterminant getMultiplyMapDiag getMapDiagSPMVgetSPMV FlexUppermultiplyVectorTriangularspmvsquareDiagonalsquareTriangularsquareSymmetricmultiplyTriangularmultiplyFullTriangular autoUploOrderTREVCgetTREVCTREVC_decomposeTriangularunpackZeroRowMajorunpackRowMajortrevc trevcReal trevcComplex fromListGenmultiplyColumnMajormultiplyColumnRowMajormultiplyFullColumnMajormultiplyFullRowMajortoFullColumnMajorwithRightBoundcopyUpperTrapezoidHBRgetHBRHBR_ StaticVectortoBandedColumnMajortoBandedRowMajor fromUpperPartmultiplyFullSpecialmultiplyFullGenerictakeStrictLowerhbrsyrherMultiplyTriangularConformgetMultiplyTriangularConformComposedTriangularMultipliedDiagMultipliedPartMultipliedTriangularMultiplyTriangular MultipliedmultiplyVectorUnchecked unifyFactorsmultiplyTriangularToSquaremultiplyTriangularConform($fMultiplyBandedHermitianBandedHermitian$fMultiplyBandedHermitianBanded$fMultiplyBandedBandedHermitian$fMultiplyBandedHermitianFull$fMultiplyFullBandedHermitian$fMultiplyBandedBanded$fMultiplyBandedFull$fMultiplyFullBanded,$fMultiplyTriangularFilledFilledFilledFilled+$fMultiplyTriangularFilledFilledFilledEmpty+$fMultiplyTriangularFilledFilledEmptyFilled*$fMultiplyTriangularFilledFilledEmptyEmpty*$fMultiplyTriangularEmptyFilledFilledEmpty*$fMultiplyTriangularFilledEmptyEmptyFilled*$fMultiplyTriangularFilledEmptyFilledEmpty*$fMultiplyTriangularEmptyFilledEmptyFilled+$fMultiplyTriangularFilledEmptyFilledFilled+$fMultiplyTriangularEmptyFilledFilledFilled*$fMultiplyTriangularEmptyEmptyFilledFilled($fMultiplyTriangularEmptyEmptyEmptyEmpty$fMultiplyTriangularTriangular$fMultiplyTriangularFull$fMultiplyFullTriangular$fMultiplyHermitianHermitian$fMultiplyHermitianFull$fMultiplyFullHermitian$fMultiplyFullFull$fMultiplyLeftBandedHermitian$fMultiplyRightBandedHermitian$fMultiplyLeftBanded$fMultiplyRightBanded$fMultiplyLeftTriangular$fMultiplyRightTriangular$fMultiplyLeftHermitian$fMultiplyRightHermitian$fMultiplyLeftFull$fMultiplyRightFull identityOrder_identityOrdermultiplyCommutativeUncheckedHPEVgetHPEVHPEV_ Decompose_ decomposeAuxhpevspevReal hpevComplexHBEVgetHBEVHBEV_hbevsbevReal hbevComplex determinantRoddPermutationdropEvenextractTrianglesolveTriangular_solvesolveColumnMajortau_split_extent_addRows extractQAuxtransposeFromInversioninvChar asFuncTypeOf inverseChar$fFormatHouseholderSignPositiveNegativeswapElemswap transposeIOpeek1poke1$fFormatPermutationMultiplyFullRightgetMultiplyFullRightToMatrix getToMatrix_pivot swapColumns tallToMatrix wideToMatrixtallMultiplyFullRightwideMultiplyFullRight _toRowMajor$fFormatLowerUppersolveSymmetricinverseDiagonalinverseTriangularinverseSymmetricdeterminantTriangulardeterminantSymmetric$fSolveBandedHermitian $fSolveBanded$fInverseTriangular$fSolveTriangular$fInverseHermitian$fSolveHermitian $fInverseFull $fSolveFull ScaleRowsRealgetScaleRowsRealgatherpickConsecutive pickScattered forceRowMajor tensorProdGELSYgetGELSYGELSY_ transposeAleastSquaresMinimumNormIOgelsy gelsyReal gelsyComplex zeroIntWidthPseudoInverseExtentgetPseudoInverseExtentPseudoInverseRCondgetPseudoInverseRCondGELSSgetGELSSGELSS_GESVDgetGESVDGESVD_ valuesGendeterminantAbsoluteAux decomposeThingesvd gesvdReal gesvdComplexgelss gelssReal gelssComplexpseudoInverseRCondAuxpseudoInverseRCondWidepseudoInverseRCondTall recipSigma