śĪ[TĪ.      !"#$%&'()*+,- non-portable experimentalEdward Kmett <ekmett@gmail.com>None Key i j6 logically orders the keys as if the bits of the keys i and j = were interleaved. This is equivalent to storing the keys in " Morton Order". Key 100 200 ^. _1100Key 100 200 ^. _2200 Swaps the key components around swap (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 .2 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 .2 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 .2 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 .2 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 .2 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 .2 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 4True /01234#56789:;<=>?@ABCDEFGHIJK   /01234 non-portable experimentalEdward Kmett <ekmett@gmail.com>None 1Bootstrapped _catenable_ non-empty pairing heaps \Append two heaps where we know every key in the first occurs before every key in the second 8head $ 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  K from an list of elements that must be in strictly ascending Morton order.  Convert a   into a L@ folding together values with identical keys using the supplied  addition operator.  Convert a   into a L@ folding together values with identical keys using the supplied F addition operator that is allowed to return a sparse 0, by returning M. This is an internal  @ fusion combinator used to multiply on the right by a singleton / value pair. This is an internal  @ fusion combinator used to multiply on the right by a singleton / value pair. NOPQR STUVWXYZ[  NRQPO  STUVWXYZ[ non-portable experimentalEdward Kmett <ekmett@gmail.com>None\The state for L fusion that is used by . )This form permits cancellative addition. RThis is the internal stream fusion combinator used to merge streams for addition. )This form permits cancellative addition. RThis is the internal stream fusion combinator used to merge streams for addition. \]^_`a\a`_^] non-portable experimentalEdward Kmett <ekmett@gmail.com>None(Return whether or not the element is 0. It may be okay to never return . , 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  multiplyWith's additive argument 2 this can help retain the sparsity of the matrix. *Add two matrices. By default this assumes  can  possibly return . after an addition. For some ! ring-like structures, this doesn't hold. There you can  use:      = , (b) By default this will use     = c d  (b) !Convert from a   to a e. :If addition of non-zero valus in your ring-like structure % cannot yield zero, then you can use    ! =  (b) #instead of the default definition:   ! =  d  (b) ">bundle up the matrix in a form suitable for vector-algorithms #Access the keys of a matrix $Access the keys of a matrix %Build a sparse matrix. &Transpose a matrix ' singleton; makes a matrix with a singleton value at a given location (ident n makes an n x n identity matrix ident 4 :: Mat U.Vector Int:fromList [(Key 0 0,1),(Key 1 1,1),(Key 2 2,1),(Key 3 3,1)])The empty matrix empty :: Mat U.Vector Int fromList []*3Count the number of non-zero entries in the matrix "size (ident 4 :: Mat U.Vector Int)4+ null (empty :: Mat U.Vector Int)Truef assuming l <= h . Returns h if the predicate is never True over [l..h) ,_Merge two matrices where the indices coincide into a new matrix. This provides for generalized T addition, but where the summation of two non-zero entries is necessarily non-zero. c_Merge two matrices where the indices coincide into a new matrix. This provides for generalized  addition. Return M for zero. -QMultiply two matrices using the specified multiplication and addition operation. ) !"#$g%&'()*+fhi,c-jklmnopqrstuvwxyz !"#$%&'()*+,-%'&()*+ !,-"#$$ !"#$g%&'()*+fhi,c-jklmnopqrstuvwxyz{        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghRijkRlmnQopqrstuvwxyz{|}~€‚ƒ„ sparse-0.6Sparse.Matrix.Internal.KeySparse.Matrix.Internal.HeapSparse.Matrix.Internal.Fusion Sparse.Matrixvector-0.10.0.1Data.Vector.Unboxed.BaseVectorMVectorKeyswapcomparesltsleseqsnesgtsgesHeapfbymixheadtail singletonfromList fromAscListstreamHeapWithstreamHeapWith0timesSingletonsingletonTimesmergeStreamsWith0mergeStreamsWithMatEq0isZerononZeroaddMatsaddHeap_Matkeysvalues transposeidentemptysizenulladdWith multiplyWithghc-prim GHC.TypesTrue$fVectorVectorKey$fMVectorMVectorKey $fUnboxKey$fField2KeyKeyab$fField1KeyKeyab$fOrdKeyMV_UnitMV_IntMV_Int8MV_Int16MV_Int32MV_Int64MV_WordMV_Word8 MV_Word16 MV_Word32 MV_Word64MV_Float MV_DoubleMV_CharMV_Bool MV_ComplexMV_2MV_3MV_4MV_5MV_6V_KeyMV_Key!Data.Vector.Fusion.Stream.MonadicStreambase Data.MaybeNothing HeapStateFinishedFinalReadyStartfbyspopspop$fTraversableWithIndexKeyHeap$fTraversableHeap$fFoldableWithIndexKeyHeap$fFoldableHeap$fFunctorWithIndexKeyHeap $fFunctorHeap MergeState MergeStartMergeRightEndedMergeLeftEndedMergeRMergeLGHC.Num+addWith0GHC.Base$Data.Vector.Fusion.StreamsearcheachVsplit1split2$fNumMat$fEq0Mat $fIxedfMat$fContainsfMat$fEachfMatMatab$fTraversableMat $fFoldableMat $fFunctorMat $fNFDataMat $fReadMat $fShowMat $fEq0Complex $fEq0Double $fEq0Float $fEq0Integer $fEq0Word$fEq0Int