Math.NumberTheory.Powers.Natural

integer-logarithms-1.0.1: Integer logarithms.

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

Math.NumberTheory.Powers.Natural

Description

Potentially faster power function for `Natural` base and `Int` or `Word` exponent.

Synopsis

- naturalPower :: Natural -> Int -> Natural
- naturalWordPower :: Natural -> Word -> Natural

# Documentation

naturalPower :: Natural -> Int -> Natural #

Power of an `Natural` by the left-to-right repeated squaring algorithm. This needs two multiplications in each step while the right-to-left algorithm needs only one multiplication for 0-bits, but here the two factors always have approximately the same size, which on average gains a bit when the result is large.

For small results, it is unlikely to be any faster than '(^)', quite possibly slower (though the difference shouldn't be large), and for exponents with few bits set, the same holds. But for exponents with many bits set, the speedup can be significant.

Warning: No check for the negativity of the exponent is performed, a negative exponent is interpreted as a large positive exponent.

naturalWordPower :: Natural -> Word -> Natural #

Same as `naturalPower`, but for exponents of type `Word`.