fixed

Pure Haskell large fixed-width integers.
git clone git://git.ppad.tech/fixed.git
Log | Files | Refs | README | LICENSE

commit b27da87f84640a4ba6049951a54ca2b1746b264a
parent ac6cb8602318ffb079681289c9f43c3408a29b90
Author: Jared Tobin <jared@jtobin.io>
Date:   Wed, 29 Jan 2025 22:52:44 +0400

lib: prune old big word types

Diffstat:
M.gitignore | 1+
Mlib/Data/Word/Extended.hs | 87+------------------------------------------------------------------------------
2 files changed, 2 insertions(+), 86 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,3 +1,4 @@ dist-newstyle/ *.prof *.hp +core diff --git a/lib/Data/Word/Extended.hs b/lib/Data/Word/Extended.hs @@ -38,9 +38,6 @@ module Data.Word.Extended ( , sub , mul , div - , rem - - -- * Modular Arithmetic , mod -- for testing/benchmarking @@ -53,8 +50,6 @@ module Data.Word.Extended ( , quotrem_2by1 , quotrem_knuth , recip_2by1 - , to_word512 - , word512_to_integer , mul_c , mul_c# , umul_hop# @@ -77,7 +72,7 @@ fi :: (Integral a, Num b) => a -> b fi = fromIntegral {-# INLINE fi #-} --- word256, word512 ----------------------------------------------------------- +-- word256 -------------------------------------------------------------------- -- | Little-endian Word256. data Word256 = Word256 @@ -92,20 +87,6 @@ instance NFData Word256 instance Show Word256 where show = show . to_integer --- | Little-endian Word512. -data Word512 = Word512 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - deriving (Eq, Show, Generic) - -instance NFData Word512 - -- utility words ------------------------------------------------------------ data Word128 = P @@ -115,48 +96,6 @@ data Word128 = P instance NFData Word128 -data Word320 = Word320 - !Word256 - {-# UNPACK #-} !Word64 - deriving (Eq, Show, Generic) - -instance NFData Word320 - -data Word576 = Word576 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - deriving (Eq, Show, Generic) - -instance NFData Word576 - -data Word640 = Word640 - {-# UNPACK #-} !Word576 - {-# UNPACK #-} !Word64 - deriving (Eq, Show, Generic) - -instance NFData Word640 - -data Word832 = Word832 - {-# UNPACK #-} !Word576 - {-# UNPACK #-} !Word256 - deriving (Eq, Show, Generic) - -instance NFData Word832 - -data Word1152 = Word1152 - {-# UNPACK #-} !Word576 - {-# UNPACK #-} !Word576 - deriving (Eq, Show, Generic) - -instance NFData Word1152 - -- conversion ----------------------------------------------------------------- -- | Convert a fixed-width 'Word256' into a variable-length 'Integer'. @@ -184,30 +123,6 @@ to_word256 n = !w3 = fi ((n .>>. 192) .&. mask64) in Word256 w0 w1 w2 w3 -word512_to_integer :: Word512 -> Integer -word512_to_integer (Word512 w0 w1 w2 w3 w4 w5 w6 w7) = - fi w7 .<<. 448 - .|. fi w6 .<<. 384 - .|. fi w5 .<<. 320 - .|. fi w4 .<<. 256 - .|. fi w3 .<<. 192 - .|. fi w2 .<<. 128 - .|. fi w1 .<<. 64 - .|. fi w0 - -to_word512 :: Integer -> Word512 -to_word512 n = - let !mask64 = 2 ^ (64 :: Int) - 1 - !w0 = fi (n .&. mask64) - !w1 = fi ((n .>>. 64) .&. mask64) - !w2 = fi ((n .>>. 128) .&. mask64) - !w3 = fi ((n .>>. 192) .&. mask64) - !w4 = fi ((n .>>. 256) .&. mask64) - !w5 = fi ((n .>>. 320) .&. mask64) - !w6 = fi ((n .>>. 384) .&. mask64) - !w7 = fi ((n .>>. 448) .&. mask64) - in Word512 w0 w1 w2 w3 w4 w5 w6 w7 - -- comparison ----------------------------------------------------------------- -- | Strict less-than comparison on 'Word256' values.