3t       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe === IntMap-of-IntMap (IM2) stufffolding filtering mapping    None 9:;<=DRt39union binary lift : apply function on _union_ of two Sets4Gintersection binary lift : apply function on _intersection_ of two Sets@ inner productBmultiplication by a scalarDRing zero elementERing +Fnegate the values in a functorGsubtract two Additive objectsHlinear interpolationISquared 2-normJL1 normKEuclidean normLLp norm (p > 0)M Infinity-normN"Normalize w.r.t. p-norm (p finite)OLp inner product (p > 0)P ReciprocalQScaleR unary dimension-checking bracketS!binary dimension-checking bracketTSpVector sparsityU*empty sparse vector (length n, no entries)V"singleton sparse vector (length 1)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`To dense list (default = 0)a9lookup an index in a SpVector (returns 0 if lookup fails)b Tail elementsc Head elementdconcatenate two sparse vectorsepromote a SV to SMhIComponentwise tuple operations TODO : use semilattice properties insteadiIComponentwise tuple operations TODO : use semilattice properties insteadjEmpty matrix of size dkZero SpMatrix of size (m, n)oDInsert an element in a preexisting Spmatrix at the specified indicesp?Add to existing SpMatrix using data from list (row, col, value)q:Create new SpMatrix using data from list (row, col, value)rECreate new SpMatrix assuming contiguous, 0-based indexing of elementssHPopulate list with SpMatrix contents and populate missing entries with 0u`Looks up an element in the matrix with a default (if the element is not found, zero is returned)wZero-default lookup, infix form`Looks up an element in the matrix with a default (if the element is not found, zero is returned)x.Are the supplied indices within matrix bounds?yIs the matrix square?zIs the matrix diagonal?{,is the matrix orthogonal? i.e. Q^t ## Q == I|/Data in internal representation (do not export)}#(Number of rows, Number of columns)~&Number of rows times number of columnsNumber of rowsNumber of columns4Extract a submatrix given the specified index bounds.Demote (n x 1) or (1 x n) SpMatrix to SpVector", and place into SpVector", and place into SpVectorVertical stackingVertical stackingHorizontal stackingHorizontal stackingLeft fold over SpMatrixIndexed left fold over SpMatrixCount sub-diagonal nonzeros3Extract the diagonal as a SpVector (with default 0)`Filter the index subset that lies below the diagonal (used in the QR decomposition, for example)3Round almost-0 and almost-1 to 0 and 1 respectively$transposeSM, (#^) : Matrix transpose$transposeSM, (#^) : Matrix transposeMatrix-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)Removes all elements x for which `| x | <= eps`)Removes all elements x for which `| x | <= eps`)A^T BA B^T+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) 2<> : linSolve using BiCGSTAB method and by default(transform state until a condition is met0Keep a moving window buffer (length 2) of state xw to assess convergence, stop when either a condition on that list is satisfied or when max # of iterations is reached 0Keep a moving window buffer (length 2) of state x to assess convergence, stop when either a condition on that list is satisfied or when max # of iterations is reached (runs in State monad)Oiterate until convergence is verified or we run out of a fixed iteration budgetconvergence check (FIXME)run niter! iterations and append the state x to a list xs, stop when either the xs satisfies a predicate q or when the counter reaches 0", NO convergence check  Rounding rule Rounding ruleKRound to respectively 0 or 1 within some predefined numerical precision epsDense SpMatrixDense SpVector Sparse SpMatrixSparse SpVectorinteger-indexed ziplist ", 2d arrays foldr over the results of a fmapstrict left foldindexed right fold !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0124356789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CDEFGABH?@=>IJKLMNOPQ:;<RS78956234./01TUVWXYZ[\]^_`abcdefg*+,-hijklmnopqrstuwv)('&xyz{|}~"#$% ! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  4sparse-linear-algebra-0.2.0.4-CBH7wIGcvy21PkRYyrugyk#Numeric.LinearAlgebra.Sparse.IntMapNumeric.LinearAlgebra.Sparse 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 lookupDenseSVtailSVheadSVconcatSVsvToSM outerProdSV><maxTupminTup emptySpMatrixzeroSM mkDiagonaleye mkSubDiagonalinsertSpMatrix fromListSM' fromListSMfromListDenseSM toDenseListSMlookupSM lookupWD_SM lookupWD_IM@@ validIxSM isSquareSM isDiagonalSMisOrthogonalSMimmSMdimSMnelSMnrowsncolsinfoSMnzSMspySMnzRowbwMinSMbwMaxSM bwBoundsSMextractSubmatrixSMtoSV extractColSM extractCol extractRowSM extractRow vertStackSM-=- horizStackSM-||-foldlSMifoldlSMcountSubdiagonalNZSMextractDiagonalDSMsubdiagIndicesSM sparsifyIM2 sparsifySMroundZeroOneSM transposeSM#^matScale normFrobeniusmatVec#>vecMat<#matMat##matMatSparsified#~##^###^conditionNumberSMhhMathhReflhypotsign givensCoefgivensfirstNonZeroColumn candidateRowsqrgmatseigsQR rayleighStep eigRayleighhhVepsresidual convergedcgsStepcgs bicgstabStepbicgstab linSolveMlinSolve<\> modifyUntil loopUntilAccmodifyInspectNmeanlnorm2ldiffSqLuntilConvergednormDiffConverged runAppendN runAppendN' almostZero almostOne withDefault roundZeroroundOne with2Defaults roundZeroOnerandMatrandVec randSpMat randSpVecsizeStr showNonZero toDenseRowtoDenseRowClipnewline printDenseSMtoDenseListClip printDenseSV 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$fShowLinSolveMethod