diff --git a/bench/Main.hs b/bench/Main.hs index 4d73262..f01e829 100644 --- a/bench/Main.hs +++ b/bench/Main.hs @@ -103,7 +103,7 @@ benchMakeCsPoppyBlocks = do let files = ("data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries return (mkBenchmark <$> files) where mkBenchmark filename = env (mmapFromForeignRegion filename) $ \(v :: DVS.Vector Word64) -> bgroup filename - [ bench "makeCsPoppyBlocks2" (whnf makeCsPoppyBlocks2 v) + [ bench "makeCsPoppyBlocks" (whnf makeCsPoppyBlocks v) ] benchMakeCsPoppyLayerM :: IO [Benchmark] @@ -117,7 +117,7 @@ benchMakeCsPoppyLayerM = do ] mkEnv filename = do !v <- mmapFromForeignRegion filename - return (makeCsPoppyBlocks2 v) + return (makeCsPoppyBlocks v) benchGenCsSamples :: IO [Benchmark] benchGenCsSamples = do @@ -129,7 +129,7 @@ benchGenCsSamples = do ] mkEnv filename = do !v <- mmapFromForeignRegion filename - let !blocks = makeCsPoppyBlocks2 v + let !blocks = makeCsPoppyBlocks v let !layerM = makeCsPoppyLayerM blocks return (getCsiTotal (CsInterleaved (lastOrZero layerM)), v) diff --git a/src/HaskellWorks/Data/RankSelect/CsPoppy.hs b/src/HaskellWorks/Data/RankSelect/CsPoppy.hs index 4ea3891..7a7d878 100644 --- a/src/HaskellWorks/Data/RankSelect/CsPoppy.hs +++ b/src/HaskellWorks/Data/RankSelect/CsPoppy.hs @@ -88,7 +88,7 @@ makeCsPoppy v = CsPoppy , csPoppyLayerM = layerM , csPoppyLayerS = layerS } - where blocks = makeCsPoppyBlocks2 v + where blocks = makeCsPoppyBlocks v layerM = makeCsPoppyLayerM2 blocks layerMPopCount = getCsiTotal (CsInterleaved (lastOrZero layerM)) layerS = genCsSamples layerMPopCount v diff --git a/src/HaskellWorks/Data/RankSelect/CsPoppy/Internal.hs b/src/HaskellWorks/Data/RankSelect/CsPoppy/Internal.hs index ae38d9a..fad86be 100644 --- a/src/HaskellWorks/Data/RankSelect/CsPoppy/Internal.hs +++ b/src/HaskellWorks/Data/RankSelect/CsPoppy/Internal.hs @@ -17,7 +17,7 @@ module HaskellWorks.Data.RankSelect.CsPoppy.Internal , putCsiC , indexOrZero , lastOrZero - , makeCsPoppyBlocks2 + , makeCsPoppyBlocks , makeCsPoppyLayerM , makeCsPoppyLayerM2 , genCsSamples @@ -85,8 +85,8 @@ putCsiC v (CsInterleaved i) = CsInterleaved (((v .&. 0x3ff) .<. 52) .|. (i instance Show CsInterleaved where showsPrec _ i = shows (getCsiX i, getCsiA i, getCsiB i, getCsiC i) -makeCsPoppyBlocks2 :: DVS.Vector Word64 -> DVS.Vector Word64 -makeCsPoppyBlocks2 v = DVS.constructN (((DVS.length v + 8 - 1) `div` 8) + 1) genBlocks +makeCsPoppyBlocks :: DVS.Vector Word64 -> DVS.Vector Word64 +makeCsPoppyBlocks v = DVS.constructN (((DVS.length v + 8 - 1) `div` 8) + 1) genBlocks where e = DVS.length v genBlocks :: DVS.Vector Word64 -> Word64 genBlocks u = let i = DVS.length u in if diff --git a/test/HaskellWorks/Data/RankSelect/CsPoppy/InternalSpec.hs b/test/HaskellWorks/Data/RankSelect/CsPoppy/InternalSpec.hs index cc6f576..fb0e54b 100644 --- a/test/HaskellWorks/Data/RankSelect/CsPoppy/InternalSpec.hs +++ b/test/HaskellWorks/Data/RankSelect/CsPoppy/InternalSpec.hs @@ -48,10 +48,10 @@ spec = describe "HaskellWorks.Data.RankSelect.CsInterleavedSpec" $ do getCsiA (putCsiA va (CsInterleaved 0)) === (va .&. 0x3ff) getCsiB (putCsiB vb (CsInterleaved 0)) === (vb .&. 0x3ff) getCsiC (putCsiC vc (CsInterleaved 0)) === (vc .&. 0x3ff) - describe "makeCsPoppyBlocks2" $ do + describe "makeCsPoppyBlocks" $ do it "must behave like makeCsPoppyBlocks1" $ requireProperty $ do xs <- forAll $ G.list (R.linear 0 1000) (G.word64 R.constantBounded) v <- forAll $ pure $ DVS.fromList xs - a <- forAll $ pure $ makeCsPoppyBlocks2 v + a <- forAll $ pure $ makeCsPoppyBlocks v e <- forAll $ pure $ makeCsPoppyBlocksRef v a === e