GHC.Integer

Copyright (c) Herbert Valerio Riedel 2014
License BSD3
Maintainer [email protected]
Stability provisional
Portability non-portable (GHC Extensions)
Safe Haskell None
Language Haskell2010

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.

data Integer Source

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
Instances details
Eq Integer
Instance details

Defined in GHC.Integer.Type

Ord Integer
Instance details

Defined in GHC.Integer.Type

Construct Integers

mkInteger Source

Arguments

:: Bool

sign of integer (True if non-negative)

-> [Int]

absolute value expressed in 31 bit chunks, least significant first (ideally these would be machine-word Words rather than 31-bit truncated Ints)

-> Integer

Construct Integer value from list of Ints.

This function is used by GHC for constructing Integer literals.

smallInteger :: Int# -> Integer Source

Should rather be called intToInteger

wordToInteger :: Word# -> Integer Source

Conversion to other integral types

integerToWord :: Integer -> Word# Source

integerToInt :: Integer -> Int# Source

Truncates Integer to least-significant Int#

Helpers for RealFloat type-class operations

encodeFloatInteger :: Integer -> Int# -> Float# Source

floatFromInteger :: Integer -> Float# Source

encodeDoubleInteger :: Integer -> Int# -> Double# Source

decodeDoubleInteger :: Double# -> (# Integer, Int# #) Source

doubleFromInteger :: Integer -> Double# Source

Arithmetic operations

plusInteger :: Integer -> Integer -> Integer Source

Add two Integers

minusInteger :: Integer -> Integer -> Integer Source

Subtract one Integer from another.

timesInteger :: Integer -> Integer -> Integer Source

Multiply two Integers

negateInteger :: Integer -> Integer Source

Negate Integer

absInteger :: Integer -> Integer Source

Compute absolute value of an Integer

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.

divInteger :: Integer -> Integer -> Integer Source

modInteger :: Integer -> Integer -> Integer Source

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.

quotInteger :: Integer -> Integer -> Integer Source

remInteger :: Integer -> Integer -> Integer Source

Comparison predicates

eqInteger :: Integer -> Integer -> Bool Source

neqInteger :: Integer -> Integer -> Bool Source

Not-equal predicate.

leInteger :: Integer -> Integer -> Bool Source

gtInteger :: Integer -> Integer -> Bool Source

ltInteger :: Integer -> Integer -> Bool Source

geInteger :: Integer -> Integer -> Bool Source

compareInteger :: Integer -> Integer -> Ordering Source

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

eqInteger# :: Integer -> Integer -> Int# Source

neqInteger# :: Integer -> Integer -> Int# Source

leInteger# :: Integer -> Integer -> Int# Source

gtInteger# :: Integer -> Integer -> Int# Source

ltInteger# :: Integer -> Integer -> Int# Source

geInteger# :: Integer -> Integer -> Int# Source

Bit-operations

andInteger :: Integer -> Integer -> Integer Source

Bitwise AND operation

orInteger :: Integer -> Integer -> Integer Source

Bitwise OR operation

xorInteger :: Integer -> Integer -> Integer Source

Bitwise XOR operation

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.

testBitInteger :: Integer -> Int# -> Bool Source

Test if n-th bit is set.

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

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/integer-gmp-1.0.3.0/GHC-Integer.html