integer-logarithms-1.0.3.1: Integer logarithms.

Copyright | (c) 2011 Daniel Fischer
License | MIT
Maintainer | Daniel Fischer <daniel.is.fischer@googlemail.com>
Stability | Provisional
Portability | Non-portable (GHC extensions)
Safe Haskell | Trustworthy
Language | Haskell2010

GHC.Integer.Logarithms.Compat

Contents

- Functions

Description

Low level stuff for integer logarithms.

Synopsis

- integerLogBase# :: Integer -> Integer -> Int#
- integerLog2# :: Integer -> Int#
- wordLog2# :: Word# -> Int#

# Functions

integerLogBase# :: Integer -> Integer -> Int# #

Calculate the integer logarithm for an arbitrary base.

The base must be greater than `1`, the second argument, the number whose logarithm is sought, shall be positive, otherwise the result is meaningless.

The following property holds

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

for `base > 1` and `m > 0`.

Note: Internally uses `integerLog2#` for base 2

integerLog2# :: Integer -> Int# #

Calculate the integer base 2 logarithm of an `Integer`. 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 not checked.

wordLog2# :: Word# -> Int# #

Compute base-2 log of `Word#`

This is internally implemented as count-leading-zeros machine instruction.