succinct-0.0.0.1: components/succinct-core/src/Data/Succinct/Excess/Excess0.hs
module Data.Succinct.Excess.Excess0
( Excess0(..)
) where
import Data.Word
import HaskellWorks.Data.Positioning
import Data.Succinct.RankSelect.Base.Rank0
import Data.Succinct.RankSelect.Base.Rank1
import qualified Data.Vector.Storable as DVS
class Excess0 v where
excess0 :: v -> Count -> Int
instance Excess0 Word8 where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}
instance Excess0 Word16 where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}
instance Excess0 Word32 where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}
instance Excess0 Word64 where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}
instance Excess0 (DVS.Vector Word8) where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}
instance Excess0 (DVS.Vector Word16) where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}
instance Excess0 (DVS.Vector Word32) where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}
instance Excess0 (DVS.Vector Word64) where
excess0 v c = fromIntegral (rank0 v c) - fromIntegral (rank1 v c)
{-# INLINE excess0 #-}