arithmoi-0.4.1.2: Efficient basic number-theoretic functions. Primes, powers, integer logarithms.

Copyright(c) 2011 Daniel Fischer
LicenseMIT
MaintainerDaniel Fischer <daniel.is.fischer@googlemail.com>
StabilityProvisional
PortabilityNon-portable (GHC extensions)
Safe HaskellNone
LanguageHaskell98

Math.NumberTheory.Logarithms

Contents

Description

Integer Logarithms. For efficiency, the internal representation of Integers from integer-gmp is used.

Synopsis

Integer logarithms with input checks

integerLogBase :: Integer -> Integer -> Int Source

Calculate the integer logarithm for an arbitrary base. The base must be greater than 1, the second argument, the number whose logarithm is sought, must be positive, otherwise an error is thrown. If base == 2, the specialised version is called, which is more efficient than the general algorithm.

Satisfies:

base ^ integerLogBase base m <= m < base ^ (integerLogBase base m + 1)

for base > 1 and m > 0.

integerLog2 :: Integer -> Int Source

Calculate the integer logarithm of an Integer to base 2. The argument must be positive, otherwise an error is thrown.

integerLog10 :: Integer -> Int Source

Calculate the integer logarithm of an Integer to base 10. The argument must be positive, otherwise an error is thrown.

intLog2 :: Int -> Int Source

Calculate the integer logarithm of an Int to base 2. The argument must be positive, otherwise an error is thrown.

wordLog2 :: Word -> Int Source

Calculate the integer logarithm of a Word to base 2. The argument must be positive, otherwise an error is thrown.

Integer logarithms without input checks

integerLogBase' :: Integer -> Integer -> Int Source

Same as integerLogBase, but without checks, saves a little time when called often for known good input.

integerLog2' :: Integer -> Int Source

Same as integerLog2, but without checks, saves a little time when called often for known good input.

integerLog10' :: Integer -> Int Source

Same as integerLog10, but without a check for a positive argument. Saves a little time when called often for known good input.

intLog2' :: Int -> Int Source

Same as intLog2, but without checks, saves a little time when called often for known good input.

wordLog2' :: Word -> Int Source

Same as wordLog2, but without checks, saves a little time when called often for known good input.