Safe Haskell | None |
---|---|

Language | Haskell2010 |

## Synopsis

- log2Floor :: (HasCallStack, Real a) => a -> Int
- log2Ceiling :: (HasCallStack, Real a) => a -> Int
- log2Approx :: (HasCallStack, Real a) => a -> (Int, Ordering)
- log2With :: (HasCallStack, Real a) => (Int -> Ordering -> Int) -> a -> Int
- ilog2Floor :: (HasCallStack, Integral a) => a -> Int
- ilog2Ceiling :: (HasCallStack, Integral a) => a -> Int
- ilog2Approx :: (HasCallStack, Integral a) => a -> (Int, Ordering)
- ilog2With :: (HasCallStack, Integral a) => (Int -> Ordering -> Int) -> a -> Int

# Real Logarithms

log2Floor :: (HasCallStack, Real a) => a -> Int Source #

Returns the floor of the base-2 logarithm of a `Real`

argument.

log2Ceiling :: (HasCallStack, Real a) => a -> Int Source #

Returns the ceiling of the base-2 logarithm of a `Real`

argument.

## Advanced

log2Approx :: (HasCallStack, Real a) => a -> (Int, Ordering) Source #

Returns an approximate base-2 logarithm of the argument.

The returned `Int`

is one of the two nearest integers to the exact result,
and the returned `Ordering`

tells whether the exact result is greater than,
equal to, or less than the `Int`

. `LT`

means the exact result is less than
the rounded result.

This effectively gives results like "between 7 and 8" and leaves it up to
the caller to decide how (or whether) to round the result. See also
`log2With`

for a version that will always round, but leaves the particular
rounding strategy up to the caller.

log2With :: (HasCallStack, Real a) => (Int -> Ordering -> Int) -> a -> Int Source #

Returns the base-2 logarithm with custom rounding.

The first parameter is a rounding adjustment function: given the approximate
result and an `Ordering`

indicating its relation to the exact result, return
the rounded result.

This could be useful if you want something other than floor or ceil, e.g. round-towards-0, round-towards-even, etc.

# Integer Logarithms

ilog2Floor :: (HasCallStack, Integral a) => a -> Int Source #

Returns the floor of the base-2 logarithm of an `Integral`

argument.

ilog2Ceiling :: (HasCallStack, Integral a) => a -> Int Source #

Returns the ceiling of the base-2 logarithm of an `Integral`

argument.

## Advanced

ilog2Approx :: (HasCallStack, Integral a) => a -> (Int, Ordering) Source #

Returns the approximate base-2 logarithm of an `Integral`

argument.