\      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ ` a b c d e f g h i j k l m n opqrs t uvwxyz{|}~                                   ! " # $ % & ' ( ) *+,-./0123456789: ; < = > ? @ A B C D EFG H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                     M Safe-InferedNoneNone      None&Uses the indices of the second shape, Fbut the list of indices is restricted by the size of the first shape.  Safe-InferedNoneNone~      !"#$%&'()*+,-./012345 6789:;!<=>?@AB"#$%CDEF&GHIJKLMNOP'QR()*+STUVWXYZ[\]^_`at      !"#$%&'()*+,-./012345 6789:;!<=>?@AB"#$%CDEF&GHIJKLMNOP'QR()*+STUVWS      !"#$%&'()*+,-./012345 6789:;!<=>?@AB"#$%CDEF&GHIJKLMNOP'QR()*+STUVWXYZ[\]^_`aNone,-./01,-./01,-./01,-./01 Safe-Inferedbcdefghijklm23456789:;<=>?n@opA23456789:;<=>?@A32456:789;<>@?=Abcdefghijklm23456789:;<=>?n@opA  Safe-Infered qrstuvwxy qrstuvwxyqrstuvwxy!NonekQStore the upper triangular half of a real symmetric or complex Hermitian matrix. BCDEFGHIJKLMNOPQRSTUz{|}~VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~BCDEFGHIJKLMNOPQRSTUz{|}~VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~BCDEFGJIHKLMNOPQRSTUz{|}~VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|~} None< denotes a range starting at zero and has a certain length. None X,-./0BCDEFGHIJKLMNOPQRSTUVWYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Xwvutxyz{|~}sopqrklmnefghij^]\[ZWV_`cdabPQRSTONMLKGJIHUYBCDEF,-./0 "None  #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. Use the foldBalanced trick. If ! would be based on a scalar loop 1we would not need to cut the vector into chunks. The invariance is:  When calling productLoop n xPtr, Bstarting from xPtr there is storage allocated for 2*n-1 elements. 9      !"#$%&'()*+,-./019      !"#$%&'()*+,-./011      !"#$%&'()*+,-./01None !"#$%&'()*+ #$"%&'!()*+$None23456789:;<=>?23456789:;<=>?23456789:;<=>?%None%@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab%@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab&None cdefghijklm cdefghijklm cdefghijklm'NonenopqnopqnopqNone  constant () = singleton !However, singleton does not need r constraint. 3Precedence and associativity (right) of (List.++). This also matches ' (Shape.:+:)'. < dot x y = Matrix.toScalar (singleRow x <#> singleColumn y) < 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! For restrictions see . For restrictions see . For restrictions see . For restrictions see . It should hold limits x = Array.limits x. .The function is based on fast BLAS functions. It should be faster than  Array.minimum and  Array.maximum 2although it is certainly not as fast as possible. KIt is less precise if minimum and maximum differ considerably in magnitude Fand there are several minimum or maximum candidates of similar value. %E.g. you cannot rely on the property that raise (- minimum x) x! has only non-negative elements. Zstuvwxyz{|}~C23C32Gstuvwxyz{|}~(None;Multiply two matrices with the same dimension constraints. E.g. you can multiply 5 and 5 matrices, or Square and Square 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 5 and 5 matrices, or Square and Square 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 +.. 00+/None1#+0None     2     1None % numberFromSign s == (-1)^fromEnum s + !"#$%&'(% !"$ !"#$%&'(2None)*+,-./0123456789)*+,-./0)*+,-01234567893None:;<=:<=:;<=None>?@ABCDEFGH  >?@ABCDEFGH4NoneIJKLMNIJKLMNIJKLMN5NoneGOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.XKXYZ[\]^_`abcdefghijklopqrsuwxz{|}AOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6None 7None%%8None9None  :None   ;None  let b = takeHalf a  ==> % isTriangular b && a == addAdjoint b G      !"#$%&'()*+!      !"#$(<      !"#$%&'()*+<None,-./0,-.,-./0=None12345612345123456>None789:;<=>?@ABCDEFGHIJKLMN2789:;<=>?@ABCDFGHIJKLM789:;<=>?@ABCDEFGHIJKLMN?None3OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~U34569:;<=>OPQRSTUVWXYZ[\]^_`abcdefghijklmnqrstuvwyz{|}~3OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@None ANone+ 3!BNone&"CNoneadaptOrder x y contains the data of y with the layout of x. 7           '        DNone OThis class allows to Basic.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, Ibecause the input and output are always dense vectors or dense matrices. M   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[    !"#$%&'()*+,-.?   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ENone\]^_`abcdefghijdf \]^_`abcdefghijFNoneklmnoklmnklmnoGNonep,There is no solver for indefinite matrices. AThus the instance will fail for indefinite but solvable systems. q:There is no solver for general banded Hermitian matrices. 6Thus the instance will fail for an indefinite matrix. rstuvwpqxyz{|}~ rstuvwrstuvwpqxyz{|}~None is a synonym for $ but lacks the admissibility check. !You may thus fool the type tags. /This applies to the other lift functions, too. /adaptOrder x y contains the data of y with the layout of x. ) !"#$%&'()*+,-./01230      !"#$%&'()*+,-./0123/ !"#$%&' ()*,+- ./0123   & !"#$%&'()*+,-./0123HNone 456789:;<=>? 456789:;<=>? 456789:;<=>?NoneA . solve a b == solveDecomposed (decompose a) b , solve (gramian u) b == solveDecomposed u b CCholesky decomposition @ABCD@ABCD@ABCD@ABCDINoneEFGHIJKEFGHIJKEFGHIJKNoneLMNOPQRSTUVWXYZ[\]^EFGHIJKLMNOPQRSTUVWXYZ[\]^KJIGHFELMNOPQRUV\Z[STWXY]^LMNOPQRSTUVWXYZ[\]^ Nonej4The list represents ragged rows of a sparse matrix. l#For symmetric eigenvalue problems,  eigensystem and schur coincide. _`abcdefghijkl_`abcdefghijkl_`abcdefgihjkl_`abcdefghijkl NonemnmnmnmnNonep . solve a b == solveDecomposed (decompose a) b , solve (gramian u) b == solveDecomposed u b qCholesky decomposition opqropqropqropqrJNoneKNoneLNonestststNone |  toSquare (stack a b c)   =   toSquare a ||| b  ===  adjoint b ||| toSquare c  It holds order (stack a b c) = order b. CThe function is most efficient when the order of all blocks match. gramian A = A^H * A +gramianAdjoint A = A * A^H = gramian (A^H) %congruenceDiagonal D A = A^H * D * A ,congruenceDiagonalAdjoint A D = A * D * A^H congruence B A = A^H * B * A $congruenceAdjoint B A = A * B * A^H )anticommutator A B = A^H * B + B^H * A %Not exactly a matrix anticommutator, 1thus I like to call it Hermitian anticommutator. anticommutatorAdjoint A B  = A * B^H + B * A^H , = anticommutator (adjoint A) (adjoint B) JscaledAnticommutator alpha A B = alpha * A^H * B + conj alpha * B^H * A addAdjoint A = A^H + A #For symmetric eigenvalue problems,  eigensystem and schur coincide. %uvwxyz{|}~(?uvwxyz{|}~(?uvwxyz{|}~%uvwxyz{|}~NoneadaptOrder x y contains the data of y with the layout of x. Include symmetric matrices. <However, symmetric matrices do not preserve unit diagonals.  (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, (but not necessarily an identity matrix. 0This is because all eigenvectors are normalized  such that M is 1. ?With the following scaling, the decomposition becomes perfect:  ' let scal = takeDiagonal $ vlAdj <> vr 5 a == vr <> diagonal (Vector.divide d 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. <JX456789:;<=>J4X;8=69>7:<5<Noneconjugate transpose congruence B A = A^H * B * A JThe meaning and order of matrix factors of these functions is consistent:   * N * O * P * Q $congruenceAdjoint A B = A * B * A^H If (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. JThe meaning and order of matrix factors of these functions is consistent:   *  * R *  R *  * S * T * U * V  (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, (but not necessarily an identity matrix. EThis is because all eigenvectors are normalized to Euclidean norm 1. ?With the following scaling, the decomposition becomes perfect:  ' let scal = takeDiagonal $ vlAdj <> vr - a == vr #*\ Vector.divide d 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. KThe meaning and order of result matrices of these functions is consistent:   * R * W * X * Y "2"2 None  ZNone [None                \None& # None  #HH.minimumNorm (HH.fromMatrix a) b ==  Ortho.minimumNorm (adjoint a) b  !"#$%&'() !"#$%&'() !&%"'#$()  !"#$%&'()]None None*If 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 1(rank,x) = leastSquaresMinimumNormRCond rcond a b then x is the vector with minimum Vector.norm2 x that minimizes Vector.norm2 (a #*| x sub b). Matrix a can have any rank Lbut you must specify the reciprocal condition of the rank-truncated matrix. 1Gramian determinant - Gworks also for non-square matrices, but is sensitive to transposition. B determinantAbsolute a = sqrt (Herm.determinant (Herm.gramian a)) 2For 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. *+,-./012 *+,-./012 *+,-012./ *+,-./012^None8 Caution: LU.determinant . LU.fromMatrix" will fail for singular matrices. .3456789   3456789'3456789   _None:; <=>?@ABCD  :; <=>?@ABCD :; <=>?@ABCD `None  NoneEF/EFFEEF None V&Square matrices will be classified as . Xconjugate 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.gramian a instead. YFThe number of rows must be maintained by the height mapping function. ZHThe number of columns must be maintained by the width mapping function. }=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. :The function is optimized for blocks of consecutive rows. )For scattered rows in column major order 4the function has quite ugly memory access patterns. ,Use the element order of the first operand. -Use the element order of the second operand. -Choose element order such that, if possible, %one part can be copied as one block. For  this means that RowMajor is chosen !whenever at least one operand is RowMajor and  ColumnMajor" is chosen when both operands are  ColumnMajor.  F tensorProduct order x y = singleColumn order x #*# singleRow order y  > outer order x y = tensorProduct order x (Vector.conjugate y) \GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3()*+,-./01234;<=>?st     :;<=>?@ABCDGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4=>;<?GWXVQRSHINOPJKLMYZTUcdgefhiljk[\]^_`abmnopqrsty{}z|~uvwx./=>?@:;<ABCD3(),*+-0123st     \GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~NoneLowerUpper.fromMatrix a (computes the LU decomposition of matrix a with row pivotisation. You can reconstruct a from lu depending on whether a is tall or wide. F LU.multiplyP NonInverted lu $ LU.extractL lu ##*# LU.tallExtractU lu F LU.multiplyP NonInverted lu $ LU.wideExtractL lu #*## LU.extractU lu wideMultiplyL transposed lu a multiplies the square part of lu ,containing the lower triangular matrix with a. < wideMultiplyL NonTransposed lu a == wideExtractL lu #*## a I wideMultiplyL Transposed lu a == Tri.transpose (wideExtractL lu) #*## a tallMultiplyU transposed lu a multiplies the square part of lu ,containing the upper triangular matrix with a. < tallMultiplyU NonTransposed lu a == tallExtractU lu #*## a I tallMultiplyU Transposed lu a == Tri.transpose (tallExtractU lu) #*## a 34567896543789None ) let (u,s,vt) = Singular.decomposeWide a , in a == u #*## Matrix.scaleRowsReal s vt  ) let (u,s,vt) = Singular.decomposeTall a , in a == u ##*# Matrix.scaleRowsReal s vt  !"# 3 3 !"#None    $abcabdaefaegaehaeiaejaekaelmnopqrstuvwxxyz{|}~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!   """""""""-.$$%%     M !"#$%&'()*+,-.(//0/1/21313141415161718191:1;1<1=1>11?1@222222A2B2+2CDEwCFCGCHCICJCKDLDMDNDOGPGQGR)STUVWXYZ[\]^_`ab& cdef!"ghHHiHjHkHlHmHnHHHoHpHqrsW=IIIoIpI)IItuvwxyz@{|}*q=  9  : y ~  z N {   R  qrW=LL9:yez{NSQVPUOTqs=R9xuvef!":yz@{qs=R9*x:y@PUqs=R9:=z{ZLZMZZZNZOZZZZZ[P[s[Q[q[[[R[=[[[[[\)\\\\\w\=\            =^^^)^^w^=^_F__y_K_______P 8 w ,   - .       :  x         a b                     h g                 p o                ! " # $ % & ' z @q()*+,-./01{234WYX56+789:;<=>?))@ABCDEFGHHIJKLMNOPPQRSTUVWXYZ[\\]^^_%`abccdeefggLhhi|jjkllmnoopqqrsstuuvwwxyyz{{|}}~)-.bsst R R       !!!!!!!!!!!i!!!O!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! ! !!!!!!!!!!    """"" "!"""##$#%#&##'#(#(#)#*#+#+#,#-#-#.#/#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?##@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V$)$$$$$W$X$w$,$-$.$$$Y%k%M%M%Z%%%[%\%\%]%l%%^%_%`%a%b%c%d%e%f%g%h%i%j%%%%%k%l%m%n%%o&&+&&&&&p&q&&!&'r's'L'tuvwxxyzz{||}~~pq(@((((((((((x((((a(b(((((((a(b((e((((h(g((((((p(o(((!(((#($(z(/////////////////////////s/t////////////////////000000000000000020000000W0000,00Q11181D111 111111111y11111111112222228222222222223q33s3=4e44q4s44=5L5L55555555i5j5k5m5n555o5p55x5555555555e555f5!5"5:555y5 555 55555 55 5555 5z5555555a5b5555@55{556666666626W666666 7!77o7p7)7777t7u7v7"7w7777x7#7$77%77&7y7z7@77'7{7(7)7|7}7*7*7+7,8q8-8=9q9.9/9s9091929=939495:)::6:7:+::*:,:::-::.;8;9;9;:;;;;;<;=;>;>;?;?;@;A;B;B;C;D;E;E;F;G;;;;a;b;:;;;y; ;e;o;;;;;;z;;;{;H;;;I;J;;K;;N;L;S;M;N;O;P;Q;V;P;U;Q;R;S;T;U;;V;W;X<q<s<=<Y<5=q=r=s=W===Y>>*>>>>>>>x>:>>>>Z>[>>y>>>>>P>U>\????:??????????????????????? ? ? ? ? ??]?^????f?!?"??_???????`??@a@a@b@c@@@@d@2@@W@e@f@g@hAiAiAjAkAkAlAmAmAnAoApApAqArAAAA2A3A4AsAAAtAWAeAYAXAuAvAwAxAAyAzA{A|AA}A~AAALBBBBBGBEBEBFBBBBB#BB%B:BByB B~BBBBzBNBoB{BB(B)BBBBBIBBBCfCCZCyC!C"CeCC&C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEdE2EEWEeEEEFqFrFWF=FYGGGsGqGGG=GGGGGGGGGGGGzz{T JJKKKKKKKKL L L  ZZZZZZZZ ZZZZZZZZZZZZZ[[[[[[ [!["[#\$\\%\&\'\\\6\\\\(\\\)\\\\*\+\\\\\,\-\.\/\0\1]2]2]3]4]]]5]]y]6]7]8]]]^9^9^:^;^;^<^=^^>^&^^q^?^(^)^ ^*^+^,^-^.^/^0^1^^@^A^{^B^C^D^E^F^G^H^I^J^K^L_Z_M_N_O_P_Q_R`P`P`S`T`U`V`W`X`Y`Z`[\\]^_`a lapack-0.3Numeric.LAPACK.VectorNumeric.LAPACK.OutputNumeric.LAPACK.ShapeNumeric.LAPACK.Matrix.ExtentNumeric.LAPACK.Matrix.Shape.BoxNumeric.LAPACK.ScalarNumeric.LAPACK.Matrix.Shape Numeric.LAPACK.Matrix.TriangularNumeric.LAPACK.ShapeStaticNumeric.LAPACK.Permutation%Numeric.LAPACK.Orthogonal.Householder%Numeric.LAPACK.Matrix.BandedHermitianNumeric.LAPACK.MatrixNumeric.LAPACK.FormatNumeric.LAPACK.Matrix.ArrayNumeric.LAPACK.Matrix.Hermitian/Numeric.LAPACK.Matrix.HermitianPositiveDefiniteNumeric.LAPACK.Matrix.Banded5Numeric.LAPACK.Matrix.BandedHermitianPositiveDefiniteNumeric.LAPACK.Matrix.Square!Numeric.LAPACK.Matrix.PermutationNumeric.LAPACK.Orthogonal Numeric.LAPACK.Linear.LowerUpperNumeric.LAPACK.Matrix.SpecialNumeric.LAPACK.Singular)Numeric.LAPACK.Example.EconomicAllocation!Numeric.LAPACK.Matrix.Extent.KindNumeric.LAPACK.Shape.PrivateNumeric.LAPACK.WrapperNumeric.LAPACK.Vector.Private$Numeric.LAPACK.Matrix.Extent.Private'Numeric.LAPACK.Matrix.Hermitian.Private#Numeric.LAPACK.Matrix.Shape.PrivateNumeric.LAPACK.Matrix.ModifierNumeric.LAPACK.PrivateNumeric.LAPACK.Matrix.Private(Numeric.LAPACK.Matrix.Triangular.PrivateNumeric.LAPACK.Matrix.RowMajorNumeric.LAPACK.Linear.PrivateNumeric.LAPACK.Matrix.BasicSquaretoFullMatrixfromFullgeneralizeTallgeneralizeWide"Numeric.LAPACK.Matrix.Plain.Format"Numeric.LAPACK.Matrix.Square.Eigen"Numeric.LAPACK.Permutation.PrivateNumeric.LAPACK.Matrix.Type#Numeric.LAPACK.Matrix.Square.Linear'Numeric.LAPACK.Matrix.Symmetric.Private&Numeric.LAPACK.Matrix.Triangular.Basic&Numeric.LAPACK.Matrix.Triangular.Eigen"Numeric.LAPACK.Matrix.Banded.Basic#Numeric.LAPACK.Matrix.Banded.Linear'Numeric.LAPACK.Matrix.Triangular.LinearNumeric.LAPACK.Split%Numeric.LAPACK.Matrix.Hermitian.Basic&Numeric.LAPACK.Matrix.Hermitian.Linear6Numeric.LAPACK.Matrix.HermitianPositiveDefinite.Linear"Numeric.LAPACK.Matrix.Square.BasicNumeric.LAPACK.Matrix.Plain%Numeric.LAPACK.Matrix.Hermitian.EigenNumeric.LAPACK.Singular.Plain+Numeric.LAPACK.Matrix.BandedHermitian.Basic!Numeric.LAPACK.Matrix.Plain.Class$Numeric.LAPACK.Matrix.Plain.Multiply+Numeric.LAPACK.Matrix.BandedHermitian.EigenhyperMin minShape0 minShape1Append AppendModeGeneralTallWideC switchTagMapSmallBigExtentsquare squareSizeheightwidth dimensions transposefuse appendSame appendLeft appendRight appendAnyBoxHeightOfWidthOfindices ComplexOfRealOfzerooneminusOne selectRealselectFloatingequalisZerofromReal toComplexrealPartabsolutenorm1absoluteSquared conjugateBandedHermitianbandedHermitianOffDiagonalsbandedHermitianOrderbandedHermitianSize BandedIndexHorizOutsideBoxVertOutsideBox InsideBoxBandedDiagonalBandedUpperTriangularBandedLowerTriangular BandedSquare BandedGeneralBandedbandedOffDiagonals bandedOrder bandedExtent UnaryProxyswitchDiagUpLoDiagUpLoUpLoContent SymmetricUpperTriangularLowerTriangularDiagonalIdentityTriDiag switchTriDiagNonUnitUnit TriangulartriangularDiagtriangularUplotriangularOrdertriangularSize HermitianhermitianOrder hermitianSizeTriangle ReflectorSplitWideTallGeneralFull fullOrder fullExtentOrder ColumnMajorRowMajor flipOrder fullHeight fullWidthgeneraltallwideautoDiagswitchDiagUpLoSymautoUploaddOffDiagonals bandedGeneral bandedSquare ZeroBased zeroBasedSizevector SplitGeneral splitGeneral splitFromFulldiagonallowerTriangularupperTriangular symmetric hermitianbandedFromFullbandedHermitian InversionInverted NonInverted Conjugation Conjugated NonConjugated Transposition Transposed NonTransposed toGeneral fromSquarefromSquareLiberalShapeIntshapeIntPowerContentDiag PowerDiagRandomDistribution UniformCircle UniformDiscNormal UniformBoxPM1 UniformBox01VectortoListfromList autoFromListconstantunit+++swap-*|dotinnersumabsSumnorm2 norm2SquarednormInf argAbsMaximumargAbs1Maximumproductminimummaximum argMinimum argMaximumlimits argLimits.*|scale scaleRealaddsub|+||-|macnegateraisemuldividerecip imaginaryPart zipComplex unzipComplexrandom OrderBias FormatArray formatArraydefltElementShapeSignNegativePositive Permutationsizeidentity fromPivotstoPivots determinantnumberFromSigninversionFromTranspositionmultiply FormatMatrix formatMatrixFormatformat## SquareShapeAdditive ShapeOrder shapeOrder HomogeneousComplexMultiplyPowerMultiplySquareMultiplyVectorInverseSolve Determinant ArrayMatrixArrayshapereshapemapShapetoVector fromVectorlift0lift1lift2lift3lift4unlift1unlift2 unliftRow unliftColumn scaleRealReal.*# forceOrder adaptOrder#+##-# FlexSymmetric FlexUpper FlexLower FlexDiagonal UnitUpper UnitLowerUpperLowersolvesolveDecomposedinversesquareFromList lowerFromList upperFromList mapExtentadjoint takeDiagonalmultiplyVector multiplyFulltoLowerTriangulartoUpperTriangular toHermitiantoBandedsumRank1 eigenvaluestoMatrixapplyIndexed#!stack*%%%#split takeTopLeft takeTopRighttakeBottomRightoutersumRank1NonEmptysumRank2sumRank2NonEmptytoSquare addAdjointsymmetricFromListdiagonalFromListautoLowerFromListautoUpperFromListautoSymmetricFromListautoDiagonalFromList asDiagonalasLowerasUpper asSymmetricrequireUnitDiagonalrequireNonUnitDiagonal takeLower takeUpperfromLowerRowMajorfromUpperRowMajortoLowerRowMajortoUpperRowMajorrelaxUnitDiagonalstrictNonUnitDiagonal stackDiagonal%%% stackLower#%%% stackUpper%%%#stackSymmetric#%%%# splitDiagonal splitLower splitUppersplitSymmetrictakeBottomLeftmapSize fromGeneral fromScalartoScalar identityFromidentityFromWidthidentityFromHeighttrace|=|powerschur schurComplexfromPermutation toPermutation#*|-*##*####*##*# solveRight solveLeft#\####/# solveVector#\|-/# HouseholderdeterminantAbsolute fromMatrix leastSquares minimumNormextractQ tallExtractQ tallMultiplyQtallMultiplyQAdjoint multiplyQextractR tallExtractR tallMultiplyR tallSolveRleastSquaresMinimumNormRCondpseudoInverseRCond householderhouseholderTall complement LowerUpper caseTallWideScaletallFromGeneralwideFromGeneral asGeneralasTallasWide mapHeightmapWidth singleRow singleColumn flattenRow flattenColumnliftRow liftColumnfromRowsNonEmpty fromRowArrayfromRowsNonEmptyContainerfromRowContainerfromRowsfromColumnsNonEmptyfromColumnArrayfromColumnsNonEmptyContainerfromColumnContainer fromColumnstoRows toColumns toRowArray toColumnArraytoRowContainertoColumnContainertakeRow takeColumntakeTop takeBottomtakeRowsdropRows takeColumns dropColumns takeEqually dropEquallyswapRows swapColumns reverseRowsreverseColumns takeRowArraytakeColumnArray fromRowMajor toRowMajor|||===leftBias rightBiascontiguousBiasrowSums columnSumsrowArgAbsMaximumscolumnArgAbsMaximumsmap|*- tensorProduct kronecker scaleRows\*# scaleColumns#*\ scaleRowsRealscaleColumnsReal\\##/\multiplySquareextractP multiplyPextractL wideExtractL wideMultiplyL wideSolveLextractU tallExtractU tallMultiplyU tallSolveUvalues valuesTall valuesWidedecomposePolar SquareMatrixZeroInt2 balances0 expenses0 normalizenormalizeSplitcompleteIdSquareiterated compensatedmain wideHeight wideWidth tallHeight tallWidth generalHeight generalWidth $fShowSquare $fEqSquare UncheckeddeconsUnchecked $fCUnchecked $fEqUnchecked SeparatorBarSpaceEmptyHtmlunHtmltdalignSeparatedviewLAllformatSeparatorattachSeparators $fOutputBox $fOutputHtml$fInvIndexedMin $fIndexedMin$fCMinFlipgetFlip ArgMaximum runArgMaximumabsMaxuncheckrecheckUnifygetUnifyMultiplyTagLawgetMultiplyTagLawTagFact AppendAny getAppendAny Kronecker getKroneckerFusegetFuse switchTagGTWAdaptgetAdaptWidengetWidenEqualgetEqual Transpose getTransposeAccessor getAccessor GenToWide getGenToWide GenToTall getGenToTallGenWide getGenWideGenTall getGenTall GenSquare getGenSquare CaseTallWidegetCaseTallWide Dimensions extentDir extentDim switchTagPair genSquare genToTall genToWidesquareFromGeneralshowsPrecSquare showsPrecAnywidenreduceWideHeightreduceConsistent mapSquareSizemapWrap appendLeftAuxmultiplyTagLaw heightFact widthFact unifyLeft unifyRight$fGeneralTallWideBigBig$fGeneralTallWideBigSmall$fGeneralTallWideSmallBig $fShowExtent $fEqExtent$fCBig$fCSmall $fNFDataSmall $fNFDataBig$fNFDataExtentToReal getToReal ToComplex getToComplexFromReal getFromReal norm1ComplexabsoluteSquaredRealabsoluteSquaredComplexgetDeterminant TakeDiagonalrunTakeDiagonal runDiagonalConst2 getConst2UpLoSymC switchUpLoSymUpLoSym DiagUpLoCUpLoC switchUpLo switchContentFilled splitOrder splitExtenttransposeFromOrderswapOnRowMajorsideSwapFromOrder mapChecked fullIndicesfullIndexFromOffset fullMapExtent splitHeight splitWidthsplitMapExtentcaseTallWideSplit splitPart uploFromOrder caseTriDiagcharFromTriDiagloweruppertriangularTranspose autoContent uploOrder getConstAs caseContentcaseLoUpcaseDiagUpLoSymgetContentConst2 caseUpLoSymtriangleRootDoubletriangleExtenttriangleIndicestriangleOffsettriangleUncheckedOffsettriangleSizeOffsettriangleUncheckedSizeOffsettriangleIndexFromOffset bandedHeight bandedWidthbandedMapExtent bandedBreadthnumOffDiagonals natFromProxybandedTranspose outsideOffset bandedOffsetbandedIndicesRowMajorbandedIndexFromOffsetbandedHermitianIndexFromOffset$fInvIndexedBandedHermitian$fIndexedBandedHermitian$fCBandedHermitian$fNFDataBandedHermitian$fBoxBandedHermitian$fInvIndexedBanded$fIndexedBanded $fCBanded$fNFDataBanded $fBoxBanded$fInvIndexedTriangular$fIndexedTriangular $fCTriangular$fNFDataTriangular$fUpLoSymCFilledFilled$fUpLoSymCFilledEmpty$fUpLoSymCEmptyFilled$fDiagUpLoCFilledEmpty$fDiagUpLoCEmptyFilled$fDiagUpLoCEmptyEmpty$fUpLoCFilledEmpty$fUpLoCEmptyFilled$fContentFilled$fContentEmpty$fTriDiagNonUnit $fTriDiagUnit$fBoxTriangular$fInvIndexedHermitian$fIndexedHermitian $fCHermitian$fNFDataHermitian$fBoxHermitian$fInvIndexedSplit$fIndexedSplit$fCSplit $fNFDataSplit$fNFDataTriangle$fNFDataReflector $fBoxSplit$fInvIndexedFull $fIndexedFull$fCFull $fNFDataFull $fBoxFull $fNFDataOrder$fStaticZeroBased$fInvIndexedZeroBased$fIndexedZeroBased $fCZeroBasedtransposeOrderconjugatedOnRowMajor$fMonoidInversion$fSemigroupInversion$fMonoidConjugation$fSemigroupConjugation$fMonoidTransposition$fSemigroupTranspositionconjugateToTemp copySubMatrixcopyToColumnMajor productLoop ComplexPart ImaginaryPartRealPartLACGVgetLACGVSumrunSum CopyToTemp runCopyToTemprealPtrfill copyBlock copyToTempcomplexConjugateToTemp condConjugate copyConjugatecopyCondConjugatecondConjugateToTempcopyCondConjugateToTempcopySubTrapezoidcopyTransposedcopyToSubColumnMajor pointerSeqcreateHigherArraysumReal sumComplex sumComplexAltmulRealmulPairslacgvgemvgbmv initializeMVmultiplyMatrixwithAutoWorkspaceInfowithAutoWorkspacewithInfoargMsg errorCodeMsgrankMsg definiteMsgeigenMsgpokeCIntpeekCInt ceilingSizecaseRealComplexFunc getConstFunc argGeneral argSquare revealOrdergetPowergetMap MultiplyRightgetMultiplyRightdiagonalPointersdiagonalPointerPairscolumnMajorPointersrowMajorPointers forPointerscopyTriangleToTemp unpackToTempunpackpackpackRect _unpackZero unpackZero fillTriangle copyTriangleA copyTriangleC copyRectangle fromBanded fromUpperPart decomplex recomplexsolverwithDeterminantInfo diagonalMsgnetlib-ffi-0.1.1Numeric.Netlib.ClassFloating Conjugate getConjugate ScaleReal getScaleRealNormgetNormDotrunDotdotReal dotComplexcsum1asumnrm2norm2SquaredReal vectorArgs peekElemOff1_scalecomplexConjugatecomplexFromRealmultiplyColumnMajor ScaleRowsRealgetScaleRowsRealContiguousBias RightBiasLeftBias swapMultiply forceRowMajortakeSub splitRows liftRowMajorscaleRowsComplexscaleColumnsComplexmultiplyVectorUncheckedToTuple getToTupleTuple TupleShapeFormatTriangulargetFormatTriangular formatVector formatFullformatHouseholderformatHermitianformatSymmetriccomplementTriangleformatDiagonalformatTriangularpadUpperTrianglepadLowerTriangleslice padBandedpadBandedHermitianshiftRow fillTupleprintfFloatingprintfFloatingMaybe printfComplexprintfComplexAux complexTuple $fCTupleShape$fFormatArrayBandedHermitian$fFormatArrayBanded$fFormatArrayTriangular$fFormatArrayHermitian$fFormatArraySplit$fFormatArrayFull$fFormatArray:+:$fFormatArrayDeferred$fFormatArrayEnumeration$fFormatArrayShifted$fFormatArrayRange$fFormatArrayOneBased$fFormatArrayZeroBased Decompose getDecomposeGEESgetGEESGEES_SchurgetSchurSchur_Values getValuesValues_ valuesAuxschurAuxgeesgeesReal geesComplex decomposeRealeigenvectorsToComplexdecomposeComplexcreateArrayPair deconsElement deconsShapefromTruncatedPivots fromPivotsGen condNegateodddropEventransposeToMutablemultiplyUnchecked initMutabledeconsElementPtr$fStorableElement$fInvIndexedShape$fIndexedShape$fCShape $fMonoidSign$fSemigroupSign MultiplySame multiplySameNFDatarnfscaleWithCheck$fBoxPermutation $fBoxScale$fMultiplySamePermutation$fMultiplySameScale$fSemigroupMatrix$fFormatMatrixPermutation$fFormatMatrixScale$fDisplayMatrix$fNFDataMatrix_solvetrim$fFormatMatrix $fFormatArray$fFormatPermutation $fFormat(,,) $fFormat(,) $fFormat[]$fFormatComplex$fFormatDouble $fFormatFloat $fFormatIntblockDiagonalPointers getMultiplyMapDiag getMapDiagSPMVgetSPMV forceOrderMapuncheckedRelaxNonUnitDiagonal diagonalAuxtakeDiagonalAux liftDiagonalstackAuxtakeTopLeftAuxtakeBottomRightAuxmultiplyVectorTriangularspmvsquareDiagonalsquareTriangularsquareSymmetricpowerTriangularpowerSymmetricmultiplyTriangularmultiplyFullTriangular autoUploOrderTREVCgetTREVCTREVC_decomposeTriangularunpackZeroRowMajorunpackRowMajortrevc trevcReal trevcComplexSection fromListGenidentityFatOrderidentityStripefromColumnMajor fromDiagonalmultiplyColumnRowMajormultiplyFullColumnMajormultiplyFullRowMajortoFullColumnMajorwithRightBoundcopyUpperTrapezoidsolveColumnMajorsolveTriangularsolveSymmetricinverseDiagonalinverseTriangularinverseSymmetricdeterminantTriangulardeterminantSymmetricpeekBlockDeterminant determinantRextractTriangletakeHalfRealArg runRealArgHER2KgetHER2KHER2K_CorruptHERKgetHERKHERK_HPRgetHPRHPR_SumRank1 getSumRank1 SumRank1_withConjBuffer sumRank1Auxhpr _toSquaregramianParametersgramianAdjointParameters gramianIOherkskipCheckCongruencescaledAnticommutatorscaledAnticommutatorAdjointscaledAnticommutatorIOher2k _addAdjoint_pack realZeroArg realOneArgdeterminantAux identityOrder_identityOrdermultiplyCommutativeUnchecked chopRowBlockschopColumnBlocks_rowSumstensorProductAuxHPEVgetHPEVHPEV_ Decompose_ decomposeAuxhpevspevReal hpevComplexPseudoInverseExtentgetPseudoInverseExtentPseudoInverseRCondgetPseudoInverseRCondGELSSgetGELSSGELSS_GESVDgetGESVDGESVD_ valuesGendeterminantAbsoluteAux decomposeThingesvd gesvdReal gesvdComplexleastSquaresMinimumNormIOgelss gelssReal gelssComplexpseudoInverseRCondAuxpseudoInverseRCondWidepseudoInverseRCondTall recipSigmaHBRgetHBRHBR_ StaticVectortoBandedColumnMajortoBandedRowMajormultiplyFullSpecialmultiplyFullGenerictakeStrictLowerhbrsyrher CheckDiag getCheckDiag AdmissiblecheckcheckUnitDiagonalisReal isComplexRealaddGensubGen$fSquareShapeBandedHermitian$fSquareShapeBanded$fSquareShapeTriangular$fSquareShapeHermitian$fSquareShapeFull$fAdditiveTriangular$fAdditiveHermitian$fAdditiveFull$fShapeOrderTriangular$fShapeOrderHermitian$fShapeOrderFull$fHomogeneousBandedHermitian$fHomogeneousBanded$fHomogeneousTriangular$fHomogeneousHermitian$fHomogeneousFull$fComplexBandedHermitian$fComplexBanded$fComplexTriangular$fComplexHermitian $fComplexFull$fAdmissibleBandedHermitian$fAdmissibleBanded$fAdmissibleTriangular$fAdmissibleHermitian$fAdmissibleFull matrixMatrixTriangularTriangularConformgetTriangularTriangularConformComposedTriangularMultipliedDiagMultipliedPartMultipliedTriangularMultiplyTriangulartriangularTriangular MultipliedsametransposableSquare squareFull fullSquare matrixVector vectorMatrixbandedGenSquare unifyFactorstriangularTriangularToSquaretriangularTriangularConform($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$fMultiplySameTriangular$fMultiplySameFull$fPowerTriangular$fPowerHermitian $fPowerFull$fMultiplySquareBandedHermitian$fMultiplySquareBanded$fMultiplySquareTriangular$fMultiplySquareHermitian$fMultiplySquareFull$fMultiplyVectorBandedHermitian$fMultiplyVectorBanded$fMultiplyVectorTriangular$fMultiplyVectorHermitian$fMultiplyVectorFull $fScaleBanded$fScaleTriangular $fScaleFullHBEVgetHBEVHBEV_hbevsbevReal hbevComplex$fSolveBandedHermitian$fDeterminantBandedHermitian $fSolveBanded$fDeterminantBanded$fInverseTriangular$fSolveTriangular$fDeterminantTriangular$fInverseHermitian$fSolveHermitian$fDeterminantHermitian $fInverseFull $fSolveFull$fDeterminantFull$fMultiplySameArray$fFormatMatrixArray $fBoxArray $fNFDataArray checkedZero$fIndexedPermutation$fIndexedScale$fIndexedArray_scaledAnticommutator $fMultiplyPermutationPermutation$fMultiplyArrayScale$fMultiplyScaleArray$fMultiplyScaleScale$fMultiplyArrayArray $fPowerArray$fPowerPermutation $fPowerScale$fMultiplySquareArray$fMultiplySquarePermutation$fMultiplySquareScale$fMultiplyVectorArray$fMultiplyVectorPermutation$fMultiplyVectorScale$fInverseArray $fSolveArray$fDeterminantArray$fInversePermutation$fSolvePermutation$fDeterminantPermutation$fInverseScale $fSolveScale$fDeterminantScaleHhtau_split_extent_addRows extractQAuxadjointFromTransposeinvChar $fSolveHh$fDeterminantHh$fMultiplySquareHh$fMultiplyVectorHh$fBoxHh$fFormatMatrixHhGELSYgetGELSYGELSY_adjointAgelsy gelsyReal gelsyComplexMultiplyFullRightgetMultiplyFullRightToMatrix getToMatrixLU_pivot solveTrans tallToMatrix wideToMatrixtallMultiplyFullRightwideMultiplyFullRighttallTransMultiplyFullRightwideTransMultiplyFullRight _toRowMajor $fSolveLU$fDeterminantLU$fMultiplySquareLU$fMultiplyVectorLU$fBoxLU$fFormatMatrixLU$fSquareShapePermutation$fSquareShapeScale$fSquareShapeArray$fComplexPermutation$fComplexScale$fComplexArray$fInverseInverse$fSolveInverse$fDeterminantInverse$fPowerInverse$fMultiplySquareInverse$fMultiplyVectorInverse$fComplexInverse $fBoxInverse$fMultiplySameInverseDecomposePolargetDecomposePolar liftDecomposedecomposePolarTalldecomposePolarWide