| Copyright | (c) Herbert Valerio Riedel 2014 |
|---|---|
| License | BSD3 |
| Maintainer | ghc-devs@haskell.org |
| Stability | provisional |
| Portability | non-portable (GHC Extensions) |
| Safe Haskell | None |
| Language | Haskell2010 |
GHC.Integer
Description
The Integer type.
This module exposes the portable Integer API. See
GHC.Integer.GMP.Internals for the integer-gmp-specific internal
representation of Integer as well as optimized GMP-specific
operations.
Synopsis
- data Integer
- mkInteger :: Bool -> [Int] -> Integer
- smallInteger :: Int# -> Integer
- wordToInteger :: Word# -> Integer
- integerToWord :: Integer -> Word#
- integerToInt :: Integer -> Int#
- encodeFloatInteger :: Integer -> Int# -> Float#
- floatFromInteger :: Integer -> Float#
- encodeDoubleInteger :: Integer -> Int# -> Double#
- decodeDoubleInteger :: Double# -> (# Integer, Int# #)
- doubleFromInteger :: Integer -> Double#
- plusInteger :: Integer -> Integer -> Integer
- minusInteger :: Integer -> Integer -> Integer
- timesInteger :: Integer -> Integer -> Integer
- negateInteger :: Integer -> Integer
- absInteger :: Integer -> Integer
- signumInteger :: Integer -> Integer
- divModInteger :: Integer -> Integer -> (# Integer, Integer #)
- divInteger :: Integer -> Integer -> Integer
- modInteger :: Integer -> Integer -> Integer
- quotRemInteger :: Integer -> Integer -> (# Integer, Integer #)
- quotInteger :: Integer -> Integer -> Integer
- remInteger :: Integer -> Integer -> Integer
- eqInteger :: Integer -> Integer -> Bool
- neqInteger :: Integer -> Integer -> Bool
- leInteger :: Integer -> Integer -> Bool
- gtInteger :: Integer -> Integer -> Bool
- ltInteger :: Integer -> Integer -> Bool
- geInteger :: Integer -> Integer -> Bool
- compareInteger :: Integer -> Integer -> Ordering
- eqInteger# :: Integer -> Integer -> Int#
- neqInteger# :: Integer -> Integer -> Int#
- leInteger# :: Integer -> Integer -> Int#
- gtInteger# :: Integer -> Integer -> Int#
- ltInteger# :: Integer -> Integer -> Int#
- geInteger# :: Integer -> Integer -> Int#
- andInteger :: Integer -> Integer -> Integer
- orInteger :: Integer -> Integer -> Integer
- xorInteger :: Integer -> Integer -> Integer
- complementInteger :: Integer -> Integer
- shiftLInteger :: Integer -> Int# -> Integer
- shiftRInteger :: Integer -> Int# -> Integer
- testBitInteger :: Integer -> Int# -> Bool
- popCountInteger :: Integer -> Int#
- bitInteger :: Int# -> Integer
- hashInteger :: Integer -> Int#
Documentation
Arbitrary precision integers. In contrast with fixed-size integral types
such as Int, the Integer type represents the entire infinite range of
integers.
For more information about this type's representation, see the comments in its implementation.
Instances
| Eq Integer Source # | |
| Ord Integer Source # | |
Defined in GHC.Integer.Type | |
Construct Integers
smallInteger :: Int# -> Integer Source #
Should rather be called intToInteger
wordToInteger :: Word# -> Integer Source #
Conversion to other integral types
integerToWord :: Integer -> Word# Source #
Helpers for RealFloat type-class operations
floatFromInteger :: Integer -> Float# Source #
doubleFromInteger :: Integer -> Double# Source #
Arithmetic operations
signumInteger :: Integer -> Integer Source #
Return -1, 0, and 1 depending on whether argument is
negative, zero, or positive, respectively
divModInteger :: Integer -> Integer -> (# Integer, Integer #) Source #
Simultaneous divInteger and modInteger.
Divisor must be non-zero otherwise the GHC runtime will terminate with a division-by-zero fault.
quotRemInteger :: Integer -> Integer -> (# Integer, Integer #) Source #
Simultaneous quotInteger and remInteger.
Divisor must be non-zero otherwise the GHC runtime will terminate with a division-by-zero fault.
Comparison predicates
Int#-boolean valued versions of comparison predicates
These operations return 0# and 1# instead of False and
True respectively. See
PrimBool wiki-page
for more details
Bit-operations
complementInteger :: Integer -> Integer Source #
Bitwise NOT operation
shiftLInteger :: Integer -> Int# -> Integer Source #
Shift-left operation
Even though the shift-amount is expressed as Int#, the result is
undefined for negative shift-amounts.
shiftRInteger :: Integer -> Int# -> Integer Source #
Arithmetic shift-right operation
Even though the shift-amount is expressed as Int#, the result is
undefined for negative shift-amounts.
popCountInteger :: Integer -> Int# Source #
Count number of set bits. For negative arguments returns negative population count of negated argument.
bitInteger :: Int# -> Integer Source #
Integer for which only n-th bit is set. Undefined behaviour
for negative n values.
Hashing
hashInteger :: Integer -> Int# Source #