-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Simple Integer library
--   
--   This package contains an simple Integer library.
@package integer-simple
@version 0.1.1.1


-- | An simple definition of the <a>Integer</a> type.
module GHC.Integer.Simple.Internals
data Integer
Positive :: !Positive -> Integer
Negative :: !Positive -> Integer
Naught :: Integer
type Positive = Digits
type Positives = List Positive
data Digits
Some :: !Digit -> !Digits -> Digits
None :: Digits
type Digit = Word#
data List a
Nil :: List a
Cons :: a -> List a -> List a
mkInteger :: Bool -> [Int] -> Integer
errorInteger :: Integer
errorPositive :: Positive
smallInteger :: Int# -> Integer
wordToInteger :: Word# -> Integer
integerToWord :: Integer -> Word#
integerToInt :: Integer -> Int#
oneInteger :: Integer
negativeOneInteger :: Integer
twoToTheThirtytwoInteger :: Integer
encodeDoubleInteger :: Integer -> Int# -> Double#
encodeDouble# :: Word# -> Int# -> Double#
encodeFloatInteger :: Integer -> Int# -> Float#
encodeFloat# :: Word# -> Int# -> Float#
decodeFloatInteger :: Float# -> (# Integer, Int# #)
decodeDoubleInteger :: Double# -> (# Integer, Int# #)
doubleFromInteger :: Integer -> Double#
floatFromInteger :: Integer -> Float#
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
twosComplementPositive :: Positive -> DigitsOnes
flipBits :: Digits -> DigitsOnes
flipBitsDigits :: Digits -> Digits
negateInteger :: Integer -> Integer
plusInteger :: Integer -> Integer -> Integer
minusInteger :: Integer -> Integer -> Integer
timesInteger :: Integer -> 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
compareInteger :: Integer -> Integer -> Ordering
eqInteger# :: Integer -> Integer -> Int#
neqInteger# :: Integer -> Integer -> Int#
eqInteger :: Integer -> Integer -> Bool
neqInteger :: Integer -> Integer -> Bool
ltInteger# :: Integer -> Integer -> Int#
gtInteger# :: Integer -> Integer -> Int#
leInteger# :: Integer -> Integer -> Int#
geInteger# :: Integer -> Integer -> Int#
leInteger :: Integer -> Integer -> Bool
gtInteger :: Integer -> Integer -> Bool
ltInteger :: Integer -> Integer -> Bool
geInteger :: Integer -> Integer -> Bool
absInteger :: Integer -> Integer
signumInteger :: Integer -> Integer
hashInteger :: Integer -> Int#
onePositive :: Positive
halfBoundUp :: () -> Digit
fullBound :: () -> Digit
lowHalfMask :: () -> Digit
highHalfShift :: () -> Int#
twoToTheThirtytwoPositive :: Positive
digitsMaybeZeroToInteger :: Digits -> Integer
digitsToInteger :: Digits -> Integer
digitsToNegativeInteger :: Digits -> Integer
removeZeroTails :: Digits -> Digits
comparePositive :: Positive -> Positive -> Ordering
plusPositive :: Positive -> Positive -> Positive
succPositive :: Positive -> Positive
minusPositive :: Positive -> Positive -> Positive
timesPositive :: Positive -> Positive -> Positive
timesDigit :: Digit -> Digit -> Positive
splitHalves :: Digit -> (# Digit, Digit #)
shiftLPositive :: Positive -> Int# -> Positive
smallShiftLPositive :: Positive -> Int# -> Positive
shiftRPositive :: Positive -> Int# -> Integer
smallShiftRPositive :: Positive -> Int# -> Integer
quotRemPositive :: Positive -> Positive -> (# Integer, Integer #)
some :: Digit -> Digits -> Digits
andDigits :: Digits -> Digits -> Digits
newtype DigitsOnes
DigitsOnes :: Digits -> DigitsOnes
andDigitsOnes :: DigitsOnes -> Digits -> Digits
orDigits :: Digits -> Digits -> Digits
xorDigits :: Digits -> Digits -> Digits
doubleFromPositive :: Positive -> Double#
floatFromPositive :: Positive -> Float#


-- | An simple definition of the <a>Integer</a> type.
module GHC.Integer
data Integer
mkInteger :: Bool -> [Int] -> Integer
smallInteger :: Int# -> Integer
wordToInteger :: Word# -> Integer
integerToWord :: Integer -> Word#
integerToInt :: Integer -> Int#
plusInteger :: Integer -> Integer -> Integer
minusInteger :: Integer -> Integer -> Integer
timesInteger :: Integer -> Integer -> Integer
negateInteger :: Integer -> Integer
eqInteger :: Integer -> Integer -> Bool
neqInteger :: Integer -> Integer -> Bool
absInteger :: Integer -> Integer
signumInteger :: Integer -> Integer
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#
divInteger :: Integer -> Integer -> Integer
modInteger :: Integer -> Integer -> Integer
divModInteger :: Integer -> Integer -> (# Integer, Integer #)
quotRemInteger :: Integer -> Integer -> (# Integer, Integer #)
quotInteger :: Integer -> Integer -> Integer
remInteger :: Integer -> Integer -> Integer
encodeFloatInteger :: Integer -> Int# -> Float#
decodeFloatInteger :: Float# -> (# Integer, Int# #)
floatFromInteger :: Integer -> Float#
encodeDoubleInteger :: Integer -> Int# -> Double#
decodeDoubleInteger :: Double# -> (# Integer, Int# #)
doubleFromInteger :: Integer -> Double#
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
hashInteger :: Integer -> Int#

module GHC.Integer.Logarithms

-- | Calculate the integer logarithm for an arbitrary base. The base must
--   be greater than 1, the second argument, the number whose logarithm is
--   sought, should be positive, otherwise the result is meaningless.
--   
--   <pre>
--   base ^ integerLogBase# base m &lt;= m &lt; base ^ (integerLogBase# base m + 1)
--   </pre>
--   
--   for <tt>base &gt; 1</tt> and <tt>m &gt; 0</tt>.
integerLogBase# :: Integer -> Integer -> Int#

-- | Calculate the integer base 2 logarithm of an <a>Integer</a>. The
--   calculation is more efficient than for the general case, on platforms
--   with 32- or 64-bit words much more efficient.
--   
--   The argument must be strictly positive, that condition is <i>not</i>
--   checked.
integerLog2# :: Integer -> Int#

-- | This function calculates the integer base 2 logarithm of a
--   <a>Word#</a>.
wordLog2# :: Word# -> Int#
