powModInteger slower than computing pow and mod separately
module Foo where
import GHC.Integer.GMP.Internals ( powModInteger )
test1, test2 :: Integer -> Integer -> Int -> Integer
test1 a b c = (a ^ b) `mod` (2^c)
test2 a b c = powModInteger a b (2^c)
I was expecting test2 to perform better than test1, but I'm getting quite the opposite: the use of powModInteger seems to be several orders of magnitude slower.
I have tested this with GHC 7.10.2 and integer-gmp 1.0.0.0 too, with similar results.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.8.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Core Libraries |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | ekmett |
| Operating system | |
| Architecture |