diff options
Diffstat (limited to 'libraries/ghc-bignum/src/GHC/Num/Natural.hs')
-rw-r--r-- | libraries/ghc-bignum/src/GHC/Num/Natural.hs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libraries/ghc-bignum/src/GHC/Num/Natural.hs b/libraries/ghc-bignum/src/GHC/Num/Natural.hs index 72b646501d..8fe737bf07 100644 --- a/libraries/ghc-bignum/src/GHC/Num/Natural.hs +++ b/libraries/ghc-bignum/src/GHC/Num/Natural.hs @@ -421,6 +421,17 @@ naturalBit# i naturalBit :: Word -> Natural naturalBit (W# i) = naturalBit# i +-- | @since 1.3 +naturalSetBit# :: Natural -> Word# -> Natural +naturalSetBit# (NS n) i + | isTrue# (i `ltWord#` WORD_SIZE_IN_BITS##) = NS (n `or#` (1## `uncheckedShiftL#` word2Int# i)) + | True = NB (bigNatSetBit# (bigNatFromWord# n) i) +naturalSetBit# (NB n) i = NB (bigNatSetBit# n i) + +-- | @since 1.3 +naturalSetBit :: Natural -> Word -> Natural +naturalSetBit !n (W# i) = naturalSetBit# n i + -- | Compute greatest common divisor. naturalGcd :: Natural -> Natural -> Natural {-# NOINLINE naturalGcd #-} |