Initial commit
This commit is contained in:
commit
c101616e62
309 changed files with 53937 additions and 0 deletions
39
bundled/Math/NumberTheory/Powers/Integer.hs
Normal file
39
bundled/Math/NumberTheory/Powers/Integer.hs
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
-- |
|
||||
-- Module: Math.NumberTheory.Powers.Integer
|
||||
-- Copyright: (c) 2011-2014 Daniel Fischer
|
||||
-- Licence: MIT
|
||||
-- Maintainer: Daniel Fischer <daniel.is.fischer@googlemail.com>
|
||||
-- Stability: Provisional
|
||||
-- Portability: Non-portable (GHC extensions)
|
||||
--
|
||||
-- Potentially faster power function for 'Integer' base and 'Int'
|
||||
-- or 'Word' exponent.
|
||||
--
|
||||
{-# LANGUAGE Safe #-}
|
||||
module Math.NumberTheory.Powers.Integer
|
||||
{-# DEPRECATED "It is no faster than (^)" #-}
|
||||
( integerPower
|
||||
, integerWordPower
|
||||
) where
|
||||
|
||||
-- | Power of an 'Integer' 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.
|
||||
integerPower :: Integer -> Int -> Integer
|
||||
integerPower = (^)
|
||||
{-# DEPRECATED integerPower "Use (^) instead" #-}
|
||||
|
||||
-- | Same as 'integerPower', but for exponents of type 'Word'.
|
||||
integerWordPower :: Integer -> Word -> Integer
|
||||
integerWordPower = (^)
|
||||
{-# DEPRECATED integerWordPower "Use (^) instead" #-}
|
||||
Loading…
Add table
Add a link
Reference in a new issue