hw-bits 0.7.0.1 → 0.7.0.2
raw patch · 5 files changed
+166/−27 lines, 5 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word8))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word8))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word8))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount0: instance HaskellWorks.Data.Bits.PopCount.PopCount0.PopCount0 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word8))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word8))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Storable.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word8))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Broadword.Broadword GHC.Word.Word8))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word16))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word32))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word64))
+ HaskellWorks.Data.Bits.PopCount.PopCount1: instance HaskellWorks.Data.Bits.PopCount.PopCount1.PopCount1 (Data.Vector.Vector (HaskellWorks.Data.Bits.Types.Builtin.Builtin GHC.Word.Word8))
Files
- hw-bits.cabal +1/−1
- src/HaskellWorks/Data/Bits/Log2.hs +4/−3
- src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs +78/−9
- src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs +80/−11
- src/HaskellWorks/Data/Bits/Word.hs +3/−3
hw-bits.cabal view
@@ -1,5 +1,5 @@ name: hw-bits-version: 0.7.0.1+version: 0.7.0.2 synopsis: Bit manipulation description: Please see README.md homepage: http://github.com/haskell-works/hw-bits#readme
src/HaskellWorks/Data/Bits/Log2.hs view
@@ -2,10 +2,11 @@ ( Log2(..) ) where +import Data.Word+import HaskellWorks.Data.AtIndex+import HaskellWorks.Data.Bits.BitWise+ import qualified Data.Vector.Storable as DVS-import Data.Word-import HaskellWorks.Data.AtIndex-import HaskellWorks.Data.Bits.BitWise class Log2 a where -- | Log base of the given value rounded down to the nearest integer
src/HaskellWorks/Data/Bits/PopCount/PopCount0.hs view
@@ -6,16 +6,17 @@ ( PopCount0(..) ) where -import qualified Data.Vector as DV-import qualified Data.Vector.Storable as DVS-import Data.Word-import HaskellWorks.Data.Bits.BitWise-import HaskellWorks.Data.Bits.PopCount.PopCount1-import HaskellWorks.Data.Bits.Types.Broadword-import HaskellWorks.Data.Bits.Types.Builtin-import HaskellWorks.Data.Positioning-import Prelude as P+import Data.Word+import HaskellWorks.Data.Bits.BitWise+import HaskellWorks.Data.Bits.PopCount.PopCount1+import HaskellWorks.Data.Bits.Types.Broadword+import HaskellWorks.Data.Bits.Types.Builtin+import HaskellWorks.Data.Positioning+import Prelude as P +import qualified Data.Vector as DV+import qualified Data.Vector.Storable as DVS+ class PopCount0 v where -- | The number of 0-bits in the value. popCount0 :: v -> Count@@ -106,5 +107,73 @@ {-# INLINE popCount0 #-} instance PopCount0 (DVS.Vector Word64) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++-- Vector of Builtin instances++instance PopCount0 (DV.Vector (Builtin Word8)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DV.Vector (Builtin Word16)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DV.Vector (Builtin Word32)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DV.Vector (Builtin Word64)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Builtin Word8)) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Builtin Word16)) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Builtin Word32)) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Builtin Word64)) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++-- Vector of Broadword instances++instance PopCount0 (DV.Vector (Broadword Word8)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DV.Vector (Broadword Word16)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DV.Vector (Broadword Word32)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DV.Vector (Broadword Word64)) where+ popCount0 = DV.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Broadword Word8)) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Broadword Word16)) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Broadword Word32)) where+ popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0+ {-# INLINE popCount0 #-}++instance PopCount0 (DVS.Vector (Broadword Word64)) where popCount0 = DVS.foldl' (\c -> (c +) . popCount0) 0 {-# INLINE popCount0 #-}
src/HaskellWorks/Data/Bits/PopCount/PopCount1.hs view
@@ -1,20 +1,21 @@-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FlexibleInstances #-} module HaskellWorks.Data.Bits.PopCount.PopCount1 ( PopCount1(..) ) where -import qualified Data.Bits as DB-import qualified Data.Vector as DV-import qualified Data.Vector.Storable as DVS-import Data.Word-import HaskellWorks.Data.Bits.BitWise-import HaskellWorks.Data.Bits.Types.Broadword-import HaskellWorks.Data.Bits.Types.Builtin-import HaskellWorks.Data.Int.Widen.Widen64-import HaskellWorks.Data.Positioning-import Prelude as P+import Data.Word+import HaskellWorks.Data.Bits.BitWise+import HaskellWorks.Data.Bits.Types.Broadword+import HaskellWorks.Data.Bits.Types.Builtin+import HaskellWorks.Data.Int.Widen.Widen64+import HaskellWorks.Data.Positioning+import Prelude as P +import qualified Data.Bits as DB+import qualified Data.Vector as DV+import qualified Data.Vector.Storable as DVS+ type FastWord a = Builtin a fastWord :: a -> FastWord a@@ -127,5 +128,73 @@ {-# INLINE popCount1 #-} instance PopCount1 (DVS.Vector Word64) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++-- Vector of Builtin instances++instance PopCount1 (DV.Vector (Builtin Word8)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DV.Vector (Builtin Word16)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DV.Vector (Builtin Word32)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DV.Vector (Builtin Word64)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Builtin Word8)) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Builtin Word16)) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Builtin Word32)) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Builtin Word64)) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++-- Vector of Broadword instances++instance PopCount1 (DV.Vector (Broadword Word8)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DV.Vector (Broadword Word16)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DV.Vector (Broadword Word32)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DV.Vector (Broadword Word64)) where+ popCount1 = DV.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Broadword Word8)) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Broadword Word16)) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Broadword Word32)) where+ popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0+ {-# INLINE popCount1 #-}++instance PopCount1 (DVS.Vector (Broadword Word64)) where popCount1 = DVS.foldl' (\c -> (c +) . popCount1) 0 {-# INLINE popCount1 #-}
src/HaskellWorks/Data/Bits/Word.hs view
@@ -3,9 +3,9 @@ module HaskellWorks.Data.Bits.Word where -import Data.Word-import HaskellWorks.Data.Bits.BitLength-import HaskellWorks.Data.Bits.BitWise+import Data.Word+import HaskellWorks.Data.Bits.BitLength+import HaskellWorks.Data.Bits.BitWise class WordConcat a where type DoubleWords a