packages feed

hw-rankselect-base 0.3.2.4 → 0.3.3.0

raw patch · 9 files changed

+83/−2 lines, 9 filesdep +bitvecdep ~QuickCheckdep ~hw-bitsPVP ok

version bump matches the API change (PVP)

Dependencies added: bitvec

Dependency ranges changed: QuickCheck, hw-bits

API changes (from Hackage documentation)

+ HaskellWorks.Data.RankSelect.Base.Rank0: instance HaskellWorks.Data.RankSelect.Base.Rank0.Rank0 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.RankSelect.Base.Rank0: instance HaskellWorks.Data.RankSelect.Base.Rank0.Rank0 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.RankSelect.Base.Rank1: instance HaskellWorks.Data.RankSelect.Base.Rank1.Rank1 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.RankSelect.Base.Rank1: instance HaskellWorks.Data.RankSelect.Base.Rank1.Rank1 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.RankSelect.Base.Select0: instance HaskellWorks.Data.RankSelect.Base.Select0.Select0 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.RankSelect.Base.Select0: instance HaskellWorks.Data.RankSelect.Base.Select0.Select0 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)
+ HaskellWorks.Data.RankSelect.Base.Select1: instance HaskellWorks.Data.RankSelect.Base.Select1.Select1 (Data.Vector.Unboxed.Base.Vector Data.Bit.Internal.Bit)
+ HaskellWorks.Data.RankSelect.Base.Select1: instance HaskellWorks.Data.RankSelect.Base.Select1.Select1 (Data.Vector.Unboxed.Base.Vector Data.Bit.InternalTS.Bit)

Files

hw-rankselect-base.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2  name:                   hw-rankselect-base-version:                0.3.2.4+version:                0.3.3.0 synopsis:               Rank-select base description:            Please see README.md category:               Data, Bit, Succinct Data Structures, Data Structures@@ -29,10 +29,11 @@  common QuickCheck                     { build-depends: QuickCheck                     >= 2.10       && < 2.14   } common bits-extra                     { build-depends: bits-extra                     >= 0.0.0.4    && < 0.1    }+common bitvec                         { build-depends: bitvec                         >= 1.0        && < 1.1    } common criterion                      { build-depends: criterion                      >= 1.2        && < 1.6    } common hedgehog                       { build-depends: hedgehog                       >= 0.6        && < 1.1    } common hspec                          { build-depends: hspec                          >= 2.2        && < 3      }-common hw-bits                        { build-depends: hw-bits                        >= 0.7.0.2    && < 0.8    }+common hw-bits                        { build-depends: hw-bits                        >= 0.7.1.0    && < 0.8    } common hw-hedgehog                    { build-depends: hw-hedgehog                    >= 0.1        && < 0.2    } common hw-hspec-hedgehog              { build-depends: hw-hspec-hedgehog              >= 0.1        && < 0.2    } common hw-int                         { build-depends: hw-int                         >= 0.0.0.1    && < 0.1    }@@ -50,6 +51,7 @@ library   import:               base, config                       , bits-extra+                      , bitvec                       , hw-bits                       , hw-int                       , hw-prim@@ -71,6 +73,7 @@   import:               base, config                       , QuickCheck                       , bits-extra+                      , bitvec                       , hedgehog                       , hspec                       , hw-bits
src/HaskellWorks/Data/RankSelect/Base/Rank0.hs view
@@ -15,8 +15,11 @@ import HaskellWorks.Data.RankSelect.Base.Rank1   as X import Prelude                                   as P +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  {-# ANN module ("HLint: Ignore Reduce duplication"  :: String) #-} @@ -131,4 +134,12 @@     where (q, r)    = if p < 1 then (0, 0) else ((p - 1) `quot` elemFixedBitSize v, ((p - 1) `rem` elemFixedBitSize v) + 1)           prefix    = DVS.take (fromIntegral q) v           maybeElem = v !!! fromIntegral q+  {-# INLINE rank0 #-}++instance Rank0 (DVU.Vector Bit.Bit) where+  rank0 v p = p - rank1 v p+  {-# INLINE rank0 #-}++instance Rank0 (DVU.Vector BitTS.Bit) where+  rank0 v p = p - rank1 v p   {-# INLINE rank0 #-}
src/HaskellWorks/Data/RankSelect/Base/Rank1.hs view
@@ -15,8 +15,11 @@ import HaskellWorks.Data.Bits.PopCount.PopCount1 import HaskellWorks.Data.Positioning +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  {-# ANN module ("HLint: Ignore Reduce duplication"  :: String) #-} @@ -116,3 +119,11 @@           prefix    = DVS.take (fromIntegral q) v           maybeElem = v !!! fromIntegral q   {-# INLINABLE rank1 #-}++instance Rank1 (DVU.Vector Bit.Bit) where+  rank1 v p = fromIntegral (Bit.countBits (DVU.take (fromIntegral p) v))+  {-# INLINE rank1 #-}++instance Rank1 (DVU.Vector BitTS.Bit) where+  rank1 v p = fromIntegral (BitTS.countBits (DVU.take (fromIntegral p) v))+  {-# INLINE rank1 #-}
src/HaskellWorks/Data/RankSelect/Base/Select0.hs view
@@ -15,8 +15,11 @@ import HaskellWorks.Data.Positioning import HaskellWorks.Data.RankSelect.Base.Select1 +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  {-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-} @@ -160,4 +163,14 @@             case popCount0 w of               pc | d <= pc  -> select0 w d + acc               pc -> go (n + 1) (d - pc) (acc + elemFixedBitSize v)+  {-# INLINABLE select0 #-}++instance Select0 (DVU.Vector Bit.Bit) where+  select0 _ 0 = 0+  select0 v p = fromIntegral $ maybe (DVU.length v) (+ 1) $ Bit.nthBitIndex (Bit.Bit False) (fromIntegral p) v+  {-# INLINABLE select0 #-}++instance Select0 (DVU.Vector BitTS.Bit) where+  select0 _ 0 = 0+  select0 v p = fromIntegral $ maybe (DVU.length v) (+ 1) $ BitTS.nthBitIndex (BitTS.Bit False) (fromIntegral p) v   {-# INLINABLE select0 #-}
src/HaskellWorks/Data/RankSelect/Base/Select1.hs view
@@ -19,8 +19,11 @@ import HaskellWorks.Data.RankSelect.Base.Internal import Prelude +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU  class Select1 v where   select1 :: v -> Count -> Count@@ -158,4 +161,14 @@                 then select1 w d + acc                 else go ws (d - pc) (acc + bitCount w)             [] -> acc+  {-# INLINE select1 #-}++instance Select1 (DVU.Vector Bit.Bit) where+  select1 _ 0 = 0+  select1 v p = fromIntegral $ maybe (DVU.length v) (+ 1) $ Bit.nthBitIndex (Bit.Bit True) (fromIntegral p) v+  {-# INLINE select1 #-}++instance Select1 (DVU.Vector BitTS.Bit) where+  select1 _ 0 = 0+  select1 v p = fromIntegral $ maybe (DVU.length v) (+ 1) $ BitTS.nthBitIndex (BitTS.Bit True) (fromIntegral p) v   {-# INLINE select1 #-}
test/HaskellWorks/Data/RankSelect/Base/Rank0Spec.hs view
@@ -20,8 +20,11 @@ import Hedgehog import Test.Hspec +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU import qualified Hedgehog.Gen         as G import qualified Hedgehog.Range       as R @@ -73,6 +76,10 @@   genRank0UpTo16Spec (undefined :: DVS.Vector Word32)   genRank0UpTo8Spec (undefined :: DVS.Vector Word64)   genRank0UpTo16Spec (undefined :: DVS.Vector Word64)+  genRank0UpTo8Spec (undefined :: DVU.Vector Bit.Bit)+  genRank0UpTo16Spec (undefined :: DVU.Vector Bit.Bit)+  genRank0UpTo8Spec (undefined :: DVU.Vector BitTS.Bit)+  genRank0UpTo16Spec (undefined :: DVU.Vector BitTS.Bit)   describe "Different word sizes give the same rank0" $ do     it "when comparing Word16 and Word64 over bits 0-7" $ requireProperty $ do       i <- forAll $ G.word64 (R.linear 0 8)
test/HaskellWorks/Data/RankSelect/Base/Rank1Spec.hs view
@@ -20,8 +20,11 @@ import Hedgehog import Test.Hspec +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU import qualified Hedgehog.Gen         as G import qualified Hedgehog.Range       as R @@ -65,6 +68,8 @@   genRank1UpTo16Spec (undefined :: DVS.Vector Word32)   genRank1UpTo8Spec (undefined :: DVS.Vector Word64)   genRank1UpTo16Spec (undefined :: DVS.Vector Word64)+  genRank1UpTo16Spec (undefined :: DVU.Vector Bit.Bit)+  genRank1UpTo16Spec (undefined :: DVU.Vector BitTS.Bit)   describe "For Word8-Word64" $ do     it "rank1 for Word16 and Word64 should give same answer for bits 0-7" $ requireProperty $ do       i <- forAll $ G.word64 (R.linear 0 8)
test/HaskellWorks/Data/RankSelect/Base/Select0Spec.hs view
@@ -21,8 +21,11 @@ import Hedgehog import Test.Hspec +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU import qualified Hedgehog.Gen         as G import qualified Hedgehog.Range       as R @@ -100,6 +103,12 @@   genSelect0UpTo8Spec  (undefined :: DVS.Vector Word64)   genSelect0UpTo16Spec (undefined :: DVS.Vector Word64)   genSelect0UpTo32Spec (undefined :: DVS.Vector Word64)+  genSelect0UpTo8Spec  (undefined :: DVU.Vector Bit.Bit)+  genSelect0UpTo16Spec (undefined :: DVU.Vector Bit.Bit)+  genSelect0UpTo32Spec (undefined :: DVU.Vector Bit.Bit)+  genSelect0UpTo8Spec  (undefined :: DVU.Vector BitTS.Bit)+  genSelect0UpTo16Spec (undefined :: DVU.Vector BitTS.Bit)+  genSelect0UpTo32Spec (undefined :: DVU.Vector BitTS.Bit)   describe "For Word8-Word64" $ do     it "rank0 for Word16 and Word64 should give same answer for bits 0-7" $ requireProperty $ do       i <- forAll $ G.word64 (R.linear 0 8)
test/HaskellWorks/Data/RankSelect/Base/Select1Spec.hs view
@@ -21,8 +21,11 @@ import Hedgehog import Test.Hspec +import qualified Data.Bit             as Bit+import qualified Data.Bit.ThreadSafe  as BitTS import qualified Data.Vector          as DV import qualified Data.Vector.Storable as DVS+import qualified Data.Vector.Unboxed  as DVU import qualified Hedgehog.Gen         as G import qualified Hedgehog.Range       as R @@ -91,6 +94,12 @@   genSelect1UpTo8Spec  (undefined :: DVS.Vector Word64)   genSelect1UpTo16Spec (undefined :: DVS.Vector Word64)   genSelect1UpTo32Spec (undefined :: DVS.Vector Word64)+  genSelect1UpTo8Spec  (undefined :: DVU.Vector Bit.Bit)+  genSelect1UpTo16Spec (undefined :: DVU.Vector Bit.Bit)+  genSelect1UpTo32Spec (undefined :: DVU.Vector Bit.Bit)+  genSelect1UpTo8Spec  (undefined :: DVU.Vector BitTS.Bit)+  genSelect1UpTo16Spec (undefined :: DVU.Vector BitTS.Bit)+  genSelect1UpTo32Spec (undefined :: DVU.Vector BitTS.Bit)   describe "For Word64" $ do     it "rank1 for Word16 and Word64 should give same answer for bits 0-7" $ requireProperty $ do       i <- forAll $ G.word64 (R.linear 0 8)