n      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmNone 2468MRnopqrstuvwxyz{|}~?nopqrstuvwxyz{|}~Onopqrstuvwxyz{|}~NoneM<Alias for double prevision mutable matrix of complex numbers<Alias for single previsiom mutable matrix of complex numbers)Alias for double precision mutable matrix)Alias for single precision mutable matrix'Mutable matrix. You can modify elements *Verify matrix dimensions and memory layout QCreate a mutable matrix of the given size and fill it with 0 as an initial value. OCreate a mutable matrix of the given size and fill it with as an initial value.1Set all elements of the matrix to the given valueNCopy a matrix. The two matrices must have the same length and may not overlap.(Yield the element at the given position.*Replace the element at the given position.HYield the element at the given position. No bounds checks are performed.JReplace the element at the given position. No bounds checks are performed.Pass a pointer to the matrix's data to the IO action. Modifying data through the pointer is unsafe if the matrix could have been frozen before the modification.     None1Sets the max number of threads reserved for Eigen1Gets the max number of threads reserved for EigenNone !"68HMI4Alias for double prevision matrix of complex numbers4Alias for single previsiom matrix of complex numbers!Alias for double precision matrix!Alias for single precision matrixiMatrix to be used in pure computations, uses column major memory layout, features copy-free FFI with C++  http://eigen.tuxfamily.orgEigen library.Empty 0x0 matrixIs matrix empty?Is matrix square? 3Matrix where all coeffs are filled with given value!Matrix where all coeff are 0"Matrix where all coeff are 1#-The identity matrix (not necessarily square).$!The random matrix of a given size%Number of rows for the matrix& Number of columns for the matrix'Mtrix size as (rows, cols) pair(*Matrix coefficient at specific row and col)*Matrix coefficient at specific row and col*PUnsafe version of coeff function. No bounds check performed so SEGFAULT possible+&List of coefficients for the given col,&List of coefficients for the given row-VExtract rectangular block from matrix defined by startRow startCol blockRows blockCols.1Verify matrix dimensions and values memory layout/%The maximum coefficient of the matrix0%The minimum coefficient of the matrix1Top N rows of matrix2Bottom N rows of matrix3Left N columns of matrix4Right N columns of matrix5vConstruct matrix from a list of rows, column count is detected as maximum row length. Missing values are filled with 06 Convert matrix to a list of rows7 %generate rows cols ( row col -> val)'Create matrix using generator function  f row col val8)The sum of all coefficients of the matrix9-The product of all coefficients of the matrix:*The mean of all coefficients of the matrix;jThe trace of a matrix is the sum of the diagonal coefficients and can also be computed as sum (diagonal m)<iApplied to a predicate and a matrix, all determines if all elements of the matrix satisfies the predicate=hApplied to a predicate and a matrix, any determines if any element of the matrix satisfies the predicate>JReturns the number of coefficients in a given matrix that evaluate to true?For vectors, the l2 norm, and for matrices the Frobenius norm. In both cases, it consists in the square root of the sum of the square of all the matrix entries. For vectors, this is also equals to the square root of the dot product of this with itself.@For vectors, the squared l2 norm, and for matrices the Frobenius norm. In both cases, it consists in the sum of the square of all the matrix entries. For vectors, this is also equals to the dot product of this with itself.AThe l2 norm of the matrix using the Blue's algorithm. A Portable Fortran Program to Find the Euclidean Norm of a Vector, ACM TOMS, Vol 4, Issue 1, 1978.BThe l2 norm of the matrix avoiding undeflow and overflow. This version use a concatenation of hypot calls, and it is very slow.CThe determinant of the matrixDNAdding two matrices by adding the corresponding entries together. You can use (+) function as well.EXSubtracting two matrices by subtracting the corresponding entries together. You can use (-) function as well.F#Matrix multiplication. You can use (*) function as well.G5Apply a given function to each element of the matrix.AHere is an example how to implement scalar matrix multiplication:let a = fromList [[1,2],[3,4]]a Matrix 2x21.0 2.03.0 4.0 map (*10) a Matrix 2x2 10.0 20.0 30.0 40.0H5Apply a given function to each element of the matrix.JHere is an example how getting upper triangular matrix can be implemented:*let a = fromList [[1,2,3],[4,5,6],[7,8,9]]a Matrix 3x3 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.06imap (\row col val -> if row <= col then val else 0) a Matrix 3x3 1.0 2.0 3.0 0.0 5.0 6.0 0.0 0.0 9.0IUpper trinagle of the matrixJLower trinagle of the matrixKFFilter elements in the matrix. Filtered elements will be replaced by 0LFFilter elements in the matrix. Filtered elements will be replaced by 0MCReduce matrix using user provided function applied to each element.N^Reduce matrix using user provided function applied to each element. This is strict version of MOQReduce matrix using user provided function applied to each element and it's indexPmReduce matrix using user provided function applied to each element and it's index. This is strict version of OQCReduce matrix using user provided function applied to each element.R^Reduce matrix using user provided function applied to each element. This is strict version of MSDiagonal of the matrixTInverse of the matrix}For small fixed sizes up to 4x4, this method uses cofactors. In the general case, this method uses PartialPivLU decompositionUAdjoint of the matrixVTranspose of the matrixWConjugate of the matrixX*Nomalize the matrix by deviding it on its ?YApply a destructive operation to a matrix. The operation will be performed in place if it is safe to do so and will modify a copy of the matrix otherwise.Z-Yield an immutable copy of the mutable matrix[,Yield a mutable copy of the immutable matrix\}Unsafe convert a mutable matrix to an immutable one without copying. The mutable matrix may not be used after this operation.]Unsafely convert an immutable matrix to a mutable one without copying. The immutable matrix may not be used after this operation.^gPass a pointer to the matrix's data to the IO action. The data may not be modified through the pointer.Shortcuts for basic matrix mathPretty prints the matrixN !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^H !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^H.567!"# $&%'()*+,-123489:0/;?@ABCMNOPQR<=>DEFGHKLSVTUWXYIJ[Z]\^M !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^None _ SDecomposition Requirements on the matrix Speed Accuracy Rank Kernel Image PartialPivLU Invertible ++ + - - - FullPivLU None - +++ + + + HouseholderQR None ++ + - - - ColPivHouseholderQR None + ++ + - - FullPivHouseholderQR None - +++ + - - LLT Positive definite +++ + - - - LDLT Positive or negative semidefinite +++ ++ - - - JacobiSVD None - +++ + - - ZThe best way to do least squares solving for square matrices is with a SVD decomposition (`)`;Two-sided Jacobi SVD decomposition of a rectangular matrix.a8Robust Cholesky decomposition of a matrix with pivoting.b3Standard Cholesky decomposition (LL^T) of a matrix.cKHouseholder rank-revealing QR decomposition of a matrix with full pivoting.dMHouseholder rank-revealing QR decomposition of a matrix with column-pivoting.e)Householder QR decomposition of a matrix.f4LU decomposition of a matrix with complete pivoting.g3LU decomposition of a matrix with partial pivoting.h x = solve d a bfinds a solution x of ax = b equation using decomposition di e = relativeError x a b computes norm (ax - b) / norm b where norm is L2 normjThe rank of the matrixk>Return matrix whose columns form a basis of the null-space of AlBReturn a matrix whose columns form a basis of the column-space of Am )(coeffs, error) = linearRegression points$computes multiple linear regression #y = a1 x1 + a2 x2 + ... + an xn + b using d decompositionpoint format is  [y, x1..xn]coeffs format is  [b, a1..an]error is calculated using i import Data.Eigen.LA main = print $ linearRegression [ [-4.32, 3.02, 6.89], [-3.79, 2.01, 5.39], [-4.01, 2.41, 6.01], [-3.86, 2.09, 5.55], [-4.10, 2.58, 6.32]] produces the following output V([-2.3466569233817127,-0.2534897541434826,-0.1749653335680988],1.8905965120153139e-3) _`abcdefghijklm_`abcdefghijklm_gfedcba`hijklm_gfedcba`hijklm        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrrstuvwxyz{|}~('GHIVYWXZ[;<=B>CDEFlnmjk eigen-2.0.1Data.Eigen.Matrix.MutableData.Eigen.ParallelData.Eigen.Matrix Data.Eigen.LAData.Eigen.InternalSTMatrixIOMatrix MMatrixXcd MMatrixXcf MMatrixXd MMatrixXfMMatrixmm_rowsmm_colsmm_valsvalidnew replicatesetcopyreadwrite unsafeRead unsafeWrite unsafeWith setNbThreads getNbThreads MatrixXcd MatrixXcfMatrixXdMatrixXfMatrixemptynullsquareconstantzeroonesidentityrandomrowscolsdims!coeff unsafeCoeffcolrowblockmaxCoeffminCoefftopRows bottomRowsleftCols rightColsfromListtoListgeneratesumprodmeantraceallanycountnorm squaredNormblueNorm hypotNorm determinantaddsubmulmapimap upperTriangle lowerTrianglefilterifilterfoldfold'ifoldifold'fold1fold1'diagonalinverseadjoint transpose conjugate normalizemodifyfreezethaw unsafeFreeze unsafeThaw Decomposition JacobiSVDLDLTLLTFullPivHouseholderQRColPivHouseholderQR HouseholderQR FullPivLU PartialPivLUsolve relativeErrorrankkernelimagelinearRegressionCodecodeCComplexCastcastElemc_relativeErrorc_solvec_kernelc_imagec_rank c_determinant c_hypotNorm c_blueNorm c_squaredNormc_tracec_normc_meanc_prodc_sum c_normalize c_conjugate c_adjoint c_inverse c_transpose c_diagonalc_mulc_subc_add c_identityc_randomc_getNbThreadsc_setNbThreadsfree c_freeString performIOcall$fCodeCComplex$fCodeCComplex0 $fCodeCDouble $fCodeCFloat$fCastComplexCComplex$fCastCComplexComplex$fCastComplexCComplex0$fCastCComplexComplex0$fCastDoubleCDouble$fCastCDoubleDouble$fCastFloatCFloat$fCastCFloatFloat $fCastIntCInt $fCastCIntInt$fStorableCComplex$fElemComplexCComplex$fElemComplexCComplex0$fElemDoubleCDouble$fElemFloatCFloat $fNumMatrix $fShowMatrixvals_prop_binop_unop