_$W7      !"#$%&'()*+,-./0123456(C) 2013 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portableNone!"12346=BK Key i j6 logically orders the keys as if the bits of the keys i and jM were interleaved. This is equivalent to storing the keys in "Morton Order".Key 100 200 ^. _1100Key 100 200 ^. _2200Swaps the key components aroundswap (Key 100 200) Key 200 100=compare the position of the most significant bit of two words compares 4 7EQ compares 7 9LT compares 9 7GT a b returns 72 when the position of the most significant bit of a9 is less than the position of the most signficant bit of b.lts 4 10Truelts 4 7Falselts 7 8True a b returns 72 when the position of the most significant bit of aE is less than or equal to the position of the most signficant bit of b.les 4 10Trueles 4 7Trueles 7 4Trueles 10 4False a b returns 72 when the position of the most significant bit of a8 is equal to the position of the most signficant bit of b.eqs 4 7Trueeqs 4 8Falseeqs 7 4Trueeqs 8 4False   a b returns 72 when the position of the most significant bit of a< is not equal to the position of the most signficant bit of b.nes 4 7Falsenes 4 8Truenes 7 4Falsenes 8 4True   a b returns 72 when the position of the most significant bit of a? is greater than to the position of the most signficant bit of b.gts 4 10Falsegts 4 7Falsegts 7 4Falsegts 10 4True   a b returns 72 when the position of the most significant bit of aH is greater than or equal to the position of the most signficant bit of b.ges 4 10Falseges 4 7Trueges 7 4Trueges 10 4True89 :;<=>?@A89   :;<8=9>?@ANone !"36=KM* BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`   %  BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`(C) 2013 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portableNone 246=FK .Bootstrapped catenable non-empty pairing heaps[Append two heaps where we know every key in the first occurs before every key in the second8head $ singleton (Key 1 1) 1 `fby` singleton (Key 2 2) 2 (Key 1 1,1)"Interleave two heaps making a new 8head $ singleton (Key 1 1) 1 `mix` singleton (Key 2 2) 2 (Key 1 1,1)head $ singleton (Key 1 1) 1 (Key 1 1,1)tail $ singleton (Key 1 1) 1Nothingsingleton (Key 1 1) 1Heap (Key 1 1) 1 [] [] []Build a $ from a jumbled up list of elements.Build a J from an list of elements that must be in strictly ascending Morton order.  Convert a  into a aS folding together values with identical keys using the supplied addition operator.! Convert a  into a a folding together values with identical keys using the supplied addition operator that is allowed to return a sparse 0, by returning b.cdefghijk !lmnopq  !  !cgfedhijk !lmnopq(C) 2013 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portableNonerThe state for a fusion that is used by #.(This form permits cancellative addition."QThis is the internal stream fusion combinator used to merge streams for addition.(This form permits cancellative addition.#QThis is the internal stream fusion combinator used to merge streams for addition.rstuvw"#"##"rwvuts"#(C) 2013 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portableNone!"*12346=FHKM''Return whether or not the element is 0.It may be okay to never return 7M, but you won't be able to thin spurious zeroes introduced into your matrix.(>Remove results that are equal to zero from a simpler function.When used with addWith or  multiplyWithF's additive argument this can help retain the sparsity of the matrix.)*Add two matrices. By default this assumes ' can possibly return 7Z after an addition. For some ring-like structures, this doesn't hold. There you can use: ) = 5 (x) By default this will use ) = y z ( (x) *Convert from a  to a {.^If addition of non-zero valus in your ring-like structure cannot yield zero, then you can use * =   (x) "instead of the default definition: * = ! z ( (x) +=bundle up the matrix in a form suitable for vector-algorithms,5Access the keys of the non-zero entries of our matrix-7Access the values of the non-zero entries of our matrix.Build a sparse matrix./Transpose a matrix0 singleton: makes a matrix with a singleton value at a given location1ident n makes an n x n identity matrixident 4:fromList [(Key 0 0,1),(Key 1 1,1),(Key 2 2,1),(Key 3 3,1)]2The empty matrixempty :: Mat Int fromList []32Count the number of non-zero entries in the matrixsize (ident 4)44null (empty :: Mat Int)True| assuming l <= h . Returns h if the predicate is never True over [l..h)5Merge two matrices where the indices coincide into a new matrix. This provides for generalized addition, but where the summation of two non-zero entries is necessarily non-zero.yqMerge two matrices where the indices coincide into a new matrix. This provides for generalized addition. Return b for zero.6PMultiply two matrices using the specified multiplication and addition operation.($%&'()*+,-}./01234|~5y6$%&'()*+,-./0123456$%.0/1234&'()*56+,-#$%&'()*+,-}./01234|~5y6       !"#$%&&'()*+,-. /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{d|}~dc sparse-0.9.2Sparse.Matrix.Internal.KeySparse.Matrix.Internal.ArraySparse.Matrix.Internal.HeapSparse.Matrix.Internal.Fusion Sparse.Matrixvector-0.10.12.3Data.Vector.Unboxed.BaseVectorMVectorKeyswapcomparesltsleseqsnesgtsges V_Complex MV_ComplexV_PairMV_PairArrayedArrArrayHeapfbymixheadtail singletonfromList fromAscListstreamHeapWithstreamHeapWith0mergeStreamsWith0mergeStreamsWithMatEq0isZerononZeroaddMatsaddHeap_Matkeysvalues transposeidentemptysizenulladdWith multiplyWithghc-prim GHC.TypesTrueV_KeyMV_Key$fVectorVectorKey$fMVectorMVectorKeyTFCo:R:VectorKeyTFCo:R:MVectorsKey $fUnboxKey$fField2KeyKeyab$fField1KeyKeyab$fOrdKey$fArrayedComplex$fMonoidV_Complex $fEqV_Complex$fReadV_Complex$fShowV_Complex$fVectorV_ComplexComplex$fMVectorMV_ComplexComplexTFCo:R:MutableV_Complex $fArrayed(,)$fMonoidV_Pair $fEqV_Pair $fReadV_Pair $fShowV_Pair$fVectorV_Pair(,)$fMVectorMV_Pair(,)TFCo:R:MutableV_Pair$fArrayedInteger$fArrayedWord64$fArrayedWord32$fArrayedWord16$fArrayedWord8 $fArrayedWord $fArrayedKey$fArrayedInt64$fArrayedInt32$fArrayedInt16 $fArrayedInt8 $fArrayedInt$fArrayedFloat$fArrayedDouble $fArrayed()!Data.Vector.Fusion.Stream.MonadicStreambase Data.MaybeNothing HeapStateFinishedFinalReadyStartfbyspopsmergepop$fTraversableWithIndexKeyHeap$fTraversableHeap$fFoldableWithIndexKeyHeap$fFoldableHeap$fFunctorWithIndexKeyHeap $fFunctorHeap MergeState MergeStartMergeRightEndedMergeLeftEndedMergeRMergeLGHC.Num+addWith0GHC.Base$Data.Vector.Fusion.StreamsearcheachVsplit1split2$fNumMat$fEq0Mat $fArrayedMat $fIxedMat$fEachMatMatabTFCo:R:IndexMatTFCo:R:IxValueMat $fNFDataMat $fReadMat $fShowMat $fEq0Complex $fEq0Double $fEq0Float $fEq0Integer $fEq0Word$fEq0Int