| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
GHC.Internal.Bignum.Natural
Synopsis
- data Natural
- = NS Word#
- | NB ByteArray#
- naturalCheck# :: Natural -> Bool#
- naturalCheck :: Natural -> Bool
- naturalZero :: Natural
- naturalOne :: Natural
- naturalIsZero :: Natural -> Bool
- naturalIsOne :: Natural -> Bool
- naturalIsPowerOf2# :: Natural -> (# (# #) | Word# #)
- naturalFromBigNat# :: BigNat# -> Natural
- naturalToBigNat# :: Natural -> BigNat#
- naturalFromWord# :: Word# -> Natural
- naturalFromWord2# :: Word# -> Word# -> Natural
- naturalFromWord :: Word -> Natural
- naturalToWord# :: Natural -> Word#
- naturalToWord :: Natural -> Word
- naturalToWordClamp# :: Natural -> Word#
- naturalToWordClamp :: Natural -> Word
- naturalToWordMaybe# :: Natural -> (# (# #) | Word# #)
- naturalFromWordList :: [Word] -> Natural
- naturalToMutableByteArray# :: Natural -> MutableByteArray# s -> Word# -> Bool# -> State# s -> (# State# s, Word# #)
- naturalFromByteArray# :: Word# -> ByteArray# -> Word# -> Bool# -> State# s -> (# State# s, Natural #)
- naturalEncodeDouble# :: Natural -> Int# -> Double#
- naturalEncodeFloat# :: Natural -> Int# -> Float#
- naturalToAddr# :: Natural -> Addr# -> Bool# -> State# s -> (# State# s, Word# #)
- naturalToAddr :: Natural -> Addr# -> Bool# -> IO Word
- naturalFromAddr# :: Word# -> Addr# -> Bool# -> State# s -> (# State# s, Natural #)
- naturalFromAddr :: Word# -> Addr# -> Bool# -> IO Natural
- naturalEq# :: Natural -> Natural -> Bool#
- naturalEq :: Natural -> Natural -> Bool
- naturalNe# :: Natural -> Natural -> Bool#
- naturalNe :: Natural -> Natural -> Bool
- naturalGe# :: Natural -> Natural -> Bool#
- naturalGe :: Natural -> Natural -> Bool
- naturalLe# :: Natural -> Natural -> Bool#
- naturalLe :: Natural -> Natural -> Bool
- naturalGt# :: Natural -> Natural -> Bool#
- naturalGt :: Natural -> Natural -> Bool
- naturalLt# :: Natural -> Natural -> Bool#
- naturalLt :: Natural -> Natural -> Bool
- naturalCompare :: Natural -> Natural -> Ordering
- naturalPopCount# :: Natural -> Word#
- naturalPopCount :: Natural -> Word
- naturalShiftR# :: Natural -> Word# -> Natural
- naturalShiftR :: Natural -> Word -> Natural
- naturalShiftL# :: Natural -> Word# -> Natural
- naturalShiftL :: Natural -> Word -> Natural
- naturalAnd :: Natural -> Natural -> Natural
- naturalAndNot :: Natural -> Natural -> Natural
- naturalOr :: Natural -> Natural -> Natural
- naturalXor :: Natural -> Natural -> Natural
- naturalTestBit# :: Natural -> Word# -> Bool#
- naturalTestBit :: Natural -> Word -> Bool
- naturalBit# :: Word# -> Natural
- naturalBit :: Word -> Natural
- naturalSetBit# :: Natural -> Word# -> Natural
- naturalSetBit :: Natural -> Word -> Natural
- naturalClearBit# :: Natural -> Word# -> Natural
- naturalClearBit :: Natural -> Word -> Natural
- naturalComplementBit# :: Natural -> Word# -> Natural
- naturalComplementBit :: Natural -> Word -> Natural
- naturalAdd :: Natural -> Natural -> Natural
- naturalSub :: Natural -> Natural -> (# (# #) | Natural #)
- naturalSubThrow :: Natural -> Natural -> Natural
- naturalSubUnsafe :: Natural -> Natural -> Natural
- naturalMul :: Natural -> Natural -> Natural
- naturalSqr :: Natural -> Natural
- naturalSignum :: Natural -> Natural
- naturalNegate :: Natural -> Natural
- naturalQuotRem# :: Natural -> Natural -> (# Natural, Natural #)
- naturalQuotRem :: Natural -> Natural -> (Natural, Natural)
- naturalQuot :: Natural -> Natural -> Natural
- naturalRem :: Natural -> Natural -> Natural
- naturalGcd :: Natural -> Natural -> Natural
- naturalLcm :: Natural -> Natural -> Natural
- naturalLog2# :: Natural -> Word#
- naturalLog2 :: Natural -> Word
- naturalLogBaseWord# :: Word# -> Natural -> Word#
- naturalLogBaseWord :: Word -> Natural -> Word
- naturalLogBase# :: Natural -> Natural -> Word#
- naturalLogBase :: Natural -> Natural -> Word
- naturalPowMod :: Natural -> Natural -> Natural -> Natural
- naturalSizeInBase# :: Word# -> Natural -> Word#
Documentation
Natural number
Invariant: numbers <= 0xffffffffffffffff use the NS constructor
Constructors
| NS Word# | |
| NB ByteArray# |
Instances
| Bits Natural # | Since: base-4.8.0 |
Defined in GHC.Internal.Bits Methods (.&.) :: Natural -> Natural -> Natural # (.|.) :: Natural -> Natural -> Natural # xor :: Natural -> Natural -> Natural # complement :: Natural -> Natural # shift :: Natural -> Int -> Natural # rotate :: Natural -> Int -> Natural # setBit :: Natural -> Int -> Natural # clearBit :: Natural -> Int -> Natural # complementBit :: Natural -> Int -> Natural # testBit :: Natural -> Int -> Bool # bitSizeMaybe :: Natural -> Maybe Int # shiftL :: Natural -> Int -> Natural # unsafeShiftL :: Natural -> Int -> Natural # shiftR :: Natural -> Int -> Natural # unsafeShiftR :: Natural -> Int -> Natural # rotateL :: Natural -> Int -> Natural # | |
| Eq Natural # | |
| Ord Natural # | |
Defined in GHC.Internal.Bignum.Natural | |
| Data Natural # | Since: base-4.8.0.0 |
Defined in GHC.Internal.Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Natural -> c Natural # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Natural # toConstr :: Natural -> Constr # dataTypeOf :: Natural -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Natural) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Natural) # gmapT :: (forall b. Data b => b -> b) -> Natural -> Natural # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r # gmapQ :: (forall d. Data d => d -> u) -> Natural -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Natural -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Natural -> m Natural # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural # | |
| Enum Natural # | Since: base-4.8.0.0 |
| Ix Natural # | Since: base-4.8.0.0 |
Defined in GHC.Internal.Ix | |
| Num Natural # | Note that Since: base-4.8.0.0 |
| Read Natural # | Since: base-4.8.0.0 |
| Integral Natural # | Since: base-4.8.0.0 |
Defined in GHC.Internal.Real | |
| Real Natural # | Since: base-4.8.0.0 |
Defined in GHC.Internal.Real Methods toRational :: Natural -> Rational # | |
| Show Natural # | Since: base-4.8.0.0 |
| TestCoercion SNat # | Since: base-4.18.0.0 |
Defined in GHC.Internal.TypeNats | |
| TestEquality SNat # | Since: base-4.18.0.0 |
Defined in GHC.Internal.TypeNats | |
| Lift Natural # | |
| type Compare (a :: Natural) (b :: Natural) # | |
Defined in GHC.Internal.Data.Type.Ord | |
naturalCheck# :: Natural -> Bool# #
Check Natural invariants
naturalCheck :: Natural -> Bool #
Check Natural invariants
Useful constants
naturalZero :: Natural #
Zero Natural
naturalOne :: Natural #
One Natural
Predicates
naturalIsZero :: Natural -> Bool #
Test Zero Natural
naturalIsOne :: Natural -> Bool #
Test One Natural
naturalIsPowerOf2# :: Natural -> (# (# #) | Word# #) #
Indicate if the value is a power of two and which one
Conversion with...
BigNat
naturalFromBigNat# :: BigNat# -> Natural #
Create a Natural from a BigNat# (respect the invariants)
naturalToBigNat# :: Natural -> BigNat# #
Convert a Natural into a BigNat#
Word
naturalFromWord# :: Word# -> Natural #
Create a Natural from a Word#
naturalFromWord2# :: Word# -> Word# -> Natural #
Convert two Word# (most-significant first) into a Natural
naturalFromWord :: Word -> Natural #
Create a Natural from a Word
naturalToWord# :: Natural -> Word# #
Convert the lower bits of a Natural into a Word#
naturalToWord :: Natural -> Word #
Convert the lower bits of a Natural into a Word
naturalToWordClamp# :: Natural -> Word# #
Convert a Natural into a Word# clamping to (maxBound :: Word#).
naturalToWordClamp :: Natural -> Word #
Convert a Natural into a Word# clamping to (maxBound :: Word).
naturalToWordMaybe# :: Natural -> (# (# #) | Word# #) #
Limbs
naturalFromWordList :: [Word] -> Natural #
Create a Natural from a list of Word
naturalToMutableByteArray# :: Natural -> MutableByteArray# s -> Word# -> Bool# -> State# s -> (# State# s, Word# #) #
Write a Natural in base-256 representation and return the number of bytes written.
The endianness is selected with the Bool# parameter: most significant
byte first (big-endian) if 1# or least significant byte first
(little-endian) if 0#.
naturalFromByteArray# :: Word# -> ByteArray# -> Word# -> Bool# -> State# s -> (# State# s, Natural #) #
Read a Natural in base-256 representation from a ByteArray#.
The size is given in bytes.
The endianness is selected with the Bool# parameter: most significant
byte first (big-endian) if 1# or least significant byte first
(little-endian) if 0#.
Null higher limbs are automatically trimed.
Floating point
naturalEncodeDouble# :: Natural -> Int# -> Double# #
Encode (# Natural mantissa, Int# exponent #) into a Double#
naturalEncodeFloat# :: Natural -> Int# -> Float# #
Encode (# Natural mantissa, Int# exponent #) into a Float#
TODO: Not sure if it's worth to write Float optimized versions here
Addr#
naturalToAddr# :: Natural -> Addr# -> Bool# -> State# s -> (# State# s, Word# #) #
Write a Natural to addr in base-256 representation and return the
number of bytes written.
The endianness is selected with the Bool# parameter: write most significant
byte first (big-endian) if 1# or least significant byte first
(little-endian) if 0#.
naturalToAddr :: Natural -> Addr# -> Bool# -> IO Word #
Write a Natural to addr in base-256 representation and return the
number of bytes written.
The endianness is selected with the Bool# parameter: write most significant
byte first (big-endian) if 1# or least significant byte first
(little-endian) if 0#.
naturalFromAddr# :: Word# -> Addr# -> Bool# -> State# s -> (# State# s, Natural #) #
Read a Natural in base-256 representation from an Addr#.
The size is given in bytes.
The endianness is selected with the Bool# parameter: most significant
byte first (big-endian) if 1# or least significant byte first
(little-endian) if 0#.
Null higher limbs are automatically trimed.
naturalFromAddr :: Word# -> Addr# -> Bool# -> IO Natural #
Read a Natural in base-256 representation from an Addr#.
The size is given in bytes.
The endianness is selected with the Bool# parameter: most significant
byte first (big-endian) if 1# or least significant byte first
(little-endian) if 0#.
Null higher limbs are automatically trimed.
Comparison
naturalEq# :: Natural -> Natural -> Bool# #
Equality test for Natural
naturalNe# :: Natural -> Natural -> Bool# #
Inequality test for Natural
naturalGe# :: Natural -> Natural -> Bool# #
Greater or equal test for Natural
naturalLe# :: Natural -> Natural -> Bool# #
Lower or equal test for Natural
naturalGt# :: Natural -> Natural -> Bool# #
Greater test for Natural
naturalLt# :: Natural -> Natural -> Bool# #
Lower test for Natural
naturalCompare :: Natural -> Natural -> Ordering #
Compare two Natural
Bit operations
naturalPopCount# :: Natural -> Word# #
PopCount for Natural
naturalPopCount :: Natural -> Word #
PopCount for Natural
naturalShiftR# :: Natural -> Word# -> Natural #
Right shift for Natural
naturalShiftR :: Natural -> Word -> Natural #
Right shift for Natural
naturalShiftL# :: Natural -> Word# -> Natural #
Left shift
naturalShiftL :: Natural -> Word -> Natural #
Left shift
naturalAnd :: Natural -> Natural -> Natural #
naturalAndNot :: Natural -> Natural -> Natural #
naturalXor :: Natural -> Natural -> Natural #
naturalTestBit# :: Natural -> Word# -> Bool# #
naturalTestBit :: Natural -> Word -> Bool #
naturalBit# :: Word# -> Natural #
naturalBit :: Word -> Natural #
naturalSetBit# :: Natural -> Word# -> Natural #
Since: ghc-internal-1.3
naturalSetBit :: Natural -> Word -> Natural #
Since: ghc-internal-1.3
naturalClearBit# :: Natural -> Word# -> Natural #
Since: ghc-internal-1.3
naturalClearBit :: Natural -> Word -> Natural #
Since: ghc-internal-1.3
naturalComplementBit# :: Natural -> Word# -> Natural #
Since: ghc-internal-1.3
naturalComplementBit :: Natural -> Word -> Natural #
Since: ghc-internal-1.3
Arithmetic
naturalAdd :: Natural -> Natural -> Natural #
Add two naturals
naturalSub :: Natural -> Natural -> (# (# #) | Natural #) #
Sub two naturals
naturalSubThrow :: Natural -> Natural -> Natural #
Sub two naturals
Throw an Underflow exception if x < y
naturalSubUnsafe :: Natural -> Natural -> Natural #
Sub two naturals
Unsafe: don't check that x >= y Undefined results if it happens
naturalMul :: Natural -> Natural -> Natural #
Multiplication
naturalSqr :: Natural -> Natural #
Square a Natural
naturalSignum :: Natural -> Natural #
Signum for Natural
naturalNegate :: Natural -> Natural #
Negate for Natural
naturalQuotRem# :: Natural -> Natural -> (# Natural, Natural #) #
Return division quotient and remainder
Division by zero is handled by BigNat
naturalQuot :: Natural -> Natural -> Natural #
Return division quotient
naturalRem :: Natural -> Natural -> Natural #
Return division remainder
naturalGcd :: Natural -> Natural -> Natural #
Compute greatest common divisor.
naturalLcm :: Natural -> Natural -> Natural #
Compute least common multiple.
naturalLog2# :: Natural -> Word# #
Base 2 logarithm
naturalLog2 :: Natural -> Word #
Base 2 logarithm
naturalLogBaseWord# :: Word# -> Natural -> Word# #
Logarithm for an arbitrary base
naturalLogBaseWord :: Word -> Natural -> Word #
Logarithm for an arbitrary base
naturalLogBase# :: Natural -> Natural -> Word# #
Logarithm for an arbitrary base
naturalLogBase :: Natural -> Natural -> Word #
Logarithm for an arbitrary base
naturalPowMod :: Natural -> Natural -> Natural -> Natural #
"" computes base naturalPowMod b e mb raised to
exponent e modulo m.
Miscellaneous
naturalSizeInBase# :: Word# -> Natural -> Word# #
Compute the number of digits of the Natural in the given base.
base must be > 1