i[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     Safe === IntMap-of-IntMap (IM2) stufffolding filtering mapping    None 9:;<=DRO3union binary lift4intersection binary lift@ inner productBmultiplication by a scalarDRing zero elementERing +Fnegate the values in a functorGsubtract two Additive objectsHlinear interpolationR unary dimension-checking bracketS!binary dimension-checking bracketTSpVector sparsityU(empty sparse vector (size n, no entries)WQcreate a sparse vector from an association list while discarding all zero entriesX3", from logically dense array (consecutive indices)Z>Create new sparse vector, assumin 0-based, contiguous indexing[DENSE vector of `1`s\DENSE vector of `0`s]insert element x at index i in a preexisting SpVector_toList`To dense list (default = 0)alookupcSV manipulation Tail elementsd Head elementeconcatenate SpVectorfpromote a SV to SMi)TODO : use semilattice properties insteadj)TODO : use semilattice properties insteadkempty matrix of size dn.Are the supplied indices within matrix bounds?oIs the matrix square?pIs the matrix diagonal?tnrows, ncols : size accessorsunrows, ncols : size accessors?Add to existing SpMatrix using data from list (row, col, value):Create new SpMatrix using data from list (row, col, value)ECreate new SpMatrix assuming contiguous, 0-based indexing of elementsto ListPopulate missing entries with 0.Demote (n x 1) or (1 x n) SpMatrix to SpVector", and place into SpVector", and place into SpVectorVertical stackingVertical stackingHorizontal stackingHorizontal stacking`Looks up an element in the matrix with a default (if the element is not found, zero is returned)Zero-default lookup, infix form`Looks up an element in the matrix with a default (if the element is not found, zero is returned)mapping folding filteringextract with default 0A^T BA B^Tmatrix on vectormatrix on vector>vector on matrix (FIXME : transposes matrix: more costly than  , I think)>vector on matrix (FIXME : transposes matrix: more costly than  , I think),is the matrix orthogonal? i.e. Q^t ## Q == I+uses the R matrix from the QR factorization a vector xS uniquely defines an orthogonal plane; the Householder operator reflects any point v3 with respect to this plane: v' = (I - 2 x >< x) vGivens coefficients (using stable algorithm shown in Anderson, Edward (4 December 2000). "Discontinuous Plane Rotations and the Symmetric Eigenvalue Problem". LAPACK Working Note)zGivens method, row version: choose other row index i' s.t. i' is : * below the diagonal * corresponding element is nonzeroQR.C1 ) To zero out entry A(i, j) we must find row k such that A(k, j) is non-zero but A has zeros in row k for all columns less than j.Is the k'th the first nonzero column in the row?,Returns a set of rows {k} that satisfy QR.C1EApplies Givens rotation iteratively to zero out sub-diagonal elements,Givens matrices in order [G1, G2, .. , G_N ]YCubic-order convergence, but it requires a mildly educated guess on the initial eigenpair1numerical tolerance for e.g. solution convergence!residual of candidate solution x0one step of CGSHiterate solver until convergence or until max # of iterations is reachedone step of BiCGSTABHiterate solver until convergence or until max # of iterations is reached*linear solve with _random_ starting vectorKlinear solve with _deterministic_ starting vector (every component at 0.1) =rounding to 0 or 1 within some predefined numerical precision=rounding to 0 or 1 within some predefined numerical precision(transform state until a condition is met keep state x in a moving window of length 2 to assess convergence, stop when either a condition on that list is satisfied or when max # of iterations is reachedrandom matrices and vectors misc utilsinteger-indexed ziplist !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0124356789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CDEFGABH?@=>IJKLMNOPQ:;<RS78956234./01TUVWXYZ[\]^_`abcdefgh*+,-ijklm)('&nopqrstu"#$%vwxyz{|}~ ! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SafeAdd two  values.leftrightsum      !"#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     4sparse-linear-algebra-0.1.0.2-Cz5IVagkHot5H7D1pxj1BXMath.Linear.Sparse.IntMapMath.Linear.SparseLib insertIM2 lookupIM2 fromListIM2 ifoldlIM2' ifoldlIM2foldlIM2 transposeIM2 ifilterIM2 filterSubdiagcountSubdiagonalNZsubdiagIndicesrpairsmapIM2imapIM2 mapKeysIM2 mapColumnIM2UBLB PrintDenseprdLinSolveMethodCGS_ BICGSTAB_BICGSTAB _xBicgstab _rBicgstab _pBicgstabCGS_x_r_p_uSMInfosmNzsmSpyIxColIxRowColsRowsSpMatrixSMsmDimsmDataSpVectorSVsvDimsvDataSetliftU2liftI2SparsespyHasDataHDDatadat FiniteDimFDSizedimNormednormHilbertdot VectorSpace.*Additivezero^+^negated^-^lerpnormSqnorm1norm2normP normInfty normalizedotLp reciprocalscalewithDimwithDim2spySVzeroSV singletonSV mkSpVector mkSpVectorD mkSpVector1fromListDenseSVonesSVzerosSVinsertSpVector fromListSVtoListSV toDenseListSV lookupDenseSVfindWithDefault0IMtailSVheadSVconcatSVsvToSM outerProdSV><maxTupminTup emptySpMatrixmatScale normFrobenius validIxSM isSquareSM isDiagonalSMimmSMdimSMnelSMnrowsncolsinfoSMnzSMspySMnzRowUnzRowbwMinSMbwMaxSM bwBoundsSMzeroSMinsertSpMatrix fromListSM' fromListSMfromListDenseSM toDenseListSM mkDiagonaleyeones mkSubDiagonalencodedecodeextractSubmatrixSMtoSV extractColSM extractCol extractRowSM extractRow vertStackSM-=- horizStackSM-||-lookupSM lookupWD_SM lookupWD_IM@@foldlSMifoldlSMcountSubdiagonalNZSMextractDiagonalDSMsubdiagIndicesSM sparsifyIM2 sparsifySMroundZeroOneSM transposeSM#^#^###^matVec#>vecMat<#matMatUmatMat##matMatSparsified#~#isOrthogonalSMconditionNumberSMhhMathhReflhypotsign givensCoefgivensfirstNonZeroColumn candidateRowsqrgmatseigsQR rayleighStep eigRayleighhhVepsresidual convergedcgsStepcgs bicgstabStepbicgstab linSolveMlinSolve<\>sizeStr showNonZero toDenseRowtoDenseRowClipnewline printDenseSMtoDenseListClip printDenseSV almostZero almostOne withDefault roundZeroroundOne with2Defaults roundZeroOne modifyUntil loopUntilAccmodifyInspectNmeanlnorm2ldiffSqLuntilConvergednormDiffConverged runAppendN runAppendN'randMatrandVec randSpMat randSpVec denseIxArray denseIxArray2foldrMap foldlStrictifoldrinBounds inBounds2 inBounds0 inBounds02$fPrintDenseSpMatrix$fPrintDenseSpVector$fShowBICGSTAB $fShowCGS$fSparseSpMatrixa$fHasDataSpMatrixa$fFiniteDimSpMatrix$fAdditiveSpMatrix $fSetSpMatrix$fFunctorSpMatrix$fShowSpMatrix$fShowSpVector$fNormedSpVector$fHilbertSpVector$fSparseSpVectora$fHasDataSpVectora$fFiniteDimSpVector$fVectorSpaceSpVector$fAdditiveSpVector$fFoldableSpVector $fSetSpVector$fFunctorSpVector$fNormedIntMap$fHilbertIntMap$fVectorSpaceIntMap$fAdditiveIntMap $fSetIntMap $fEqSpVector $fEqSpMatrix $fEqSMInfo $fShowSMInfo$fEqCGS $fEqBICGSTAB$fEqLinSolveMethod$fShowLinSolveMethodourAddghc-prim GHC.TypesInt