integer-gmp-1.0.3.0: Integer library based on GMP
Copyright(c) Herbert Valerio Riedel 2014
LicenseBSD3
Maintainerghc-devs@haskell.org
Stabilityprovisional
Portabilitynon-portable (GHC Extensions)
Safe HaskellNone
LanguageHaskell2010

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

Documentation

data Integer #

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 #

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 #

Should rather be called intToInteger

Conversion to other integral types

integerToInt :: Integer -> Int# #

Truncates Integer to least-significant Int#

Helpers for RealFloat type-class operations

Arithmetic operations

minusInteger :: Integer -> Integer -> Integer #

Subtract one Integer from another.

absInteger :: Integer -> Integer #

Compute absolute value of an Integer

signumInteger :: Integer -> Integer #

Return -1, 0, and 1 depending on whether argument is negative, zero, or positive, respectively

divModInteger :: Integer -> Integer -> (# Integer, Integer #) #

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 #) #

Simultaneous quotInteger and remInteger.

Divisor must be non-zero otherwise the GHC runtime will terminate with a division-by-zero fault.

Comparison predicates

neqInteger :: Integer -> Integer -> Bool #

Not-equal predicate.

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

andInteger :: Integer -> Integer -> Integer #

Bitwise AND operation

orInteger :: Integer -> Integer -> Integer #

Bitwise OR operation

xorInteger :: Integer -> Integer -> Integer #

Bitwise XOR operation

complementInteger :: Integer -> Integer #

Bitwise NOT operation

shiftLInteger :: Integer -> Int# -> Integer #

Shift-left operation

Even though the shift-amount is expressed as Int#, the result is undefined for negative shift-amounts.

shiftRInteger :: Integer -> Int# -> Integer #

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 #

Test if n-th bit is set.

popCountInteger :: Integer -> Int# #

Count number of set bits. For negative arguments returns negative population count of negated argument.

bitInteger :: Int# -> Integer #

Integer for which only n-th bit is set. Undefined behaviour for negative n values.

Hashing