fixed

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

commit e639e62fd5787793606f129f506f1582d25fff69
parent dd46cb2efd48fcfc0ceeef1684dbba0cda0b8699
Author: Jared Tobin <jared@jtobin.io>
Date:   Sat,  1 Nov 2025 12:41:30 +0400

lib: address misc formatting nits

Diffstat:
Mlib/Data/Choice.hs | 3++-
Mlib/Data/Word/Limb.hs | 3++-
Mlib/Data/Word/Wider.hs | 10+++++++---
3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/lib/Data/Choice.hs b/lib/Data/Choice.hs @@ -10,10 +10,12 @@ module Data.Choice ( , true# , false# + -- * MaybeWord# , MaybeWord#(..) , some_word# , none_word# + -- * MaybeWide# , MaybeWide#(..) , some_wide# , just_wide# @@ -43,7 +45,6 @@ module Data.Choice ( -- * Constant-time Selection , ct_select_word# , ct_select_wide# - ) where import qualified Data.Bits as B diff --git a/lib/Data/Word/Limb.hs b/lib/Data/Word/Limb.hs @@ -49,7 +49,7 @@ sub_b# m n b = in (# d, c #) {-# INLINE sub_b# #-} --- multiplication --------------------------------------------------------=---- +-- multiplication ------------------------------------------------------------- -- (# lo, hi #) mul_c# :: Word# -> Word# -> (# Word#, Word# #) @@ -88,6 +88,7 @@ mul_add_c# lhs rhs addend carry = let !(# c0, c1, _ #) = add_wc# a b in (# c0, c1 #) {-# INLINE add_w# #-} +{-# INLINE mul_add_c# #-} -- division ------------------------------------------------------------------- diff --git a/lib/Data/Word/Wider.hs b/lib/Data/Word/Wider.hs @@ -22,6 +22,10 @@ fi :: (Integral a, Num b) => a -> b fi = fromIntegral {-# INLINE fi #-} +wrapping_neg# :: Word# -> Word# +wrapping_neg# w = plusWord# (not# w) 1## +{-# INLINE wrapping_neg# #-} + -- wide words ----------------------------------------------------------------- -- little-endian, i.e. (# w0, w1, w2, w3 #) @@ -93,7 +97,7 @@ add_w# a b = sub_b# :: (# Word#, Word#, Word#, Word# #) -> (# Word#, Word#, Word#, Word# #) - -> (# Word#, Word#, Word#, Word#, Word# #) + -> (# Word#, Word#, Word#, Word#, Word# #) -- (# difference, borrow bit #) sub_b# (# a0, a1, a2, a3 #) (# b0, b1, b2, b3 #) = let !(# s0, c0 #) = L.sub_b# a0 b0 0## !(# s1, c1 #) = L.sub_b# a1 b1 c0 @@ -105,13 +109,13 @@ sub_b# (# a0, a1, a2, a3 #) (# b0, b1, b2, b3 #) = -- reference sub_mod_with_carry sub_mod_c# :: (# Word#, Word#, Word#, Word# #) -- lhs - -> Word# -- carry + -> Word# -- carry bit -> (# Word#, Word#, Word#, Word# #) -- rhs -> (# Word#, Word#, Word#, Word# #) -- p -> (# Word#, Word#, Word#, Word# #) sub_mod_c# a c b (# p0, p1, p2, p3 #) = let !(# o0, o1, o2, o3, bb #) = sub_b# a b - !mask = and# (not# (C.wrapping_neg# c)) (C.wrapping_neg# bb) + !mask = and# (not# (wrapping_neg# c)) (wrapping_neg# bb) !band = (# and# p0 mask, and# p1 mask, and# p2 mask, and# p3 mask #) in add_w# (# o0, o1, o2, o3 #) band {-# INLINE sub_mod_c# #-}