arithmoi-0.7.0.0: benchmark/Math/NumberTheory/GCDBench.hs
module Math.NumberTheory.GCDBench
( benchSuite
) where
import Gauge.Main
import Math.NumberTheory.GCD as A
import Prelude as P
benchSuite = bgroup "GCD"
[ subSuite "large coprimes" 1073741823 100003
, subSuite "powers of 2" (2^12) (2^19)
, subSuite "power of 23" (23^3) (23^7)
]
where subSuite :: String -> Int -> Int -> Benchmark
subSuite name m n = bgroup name
[ bench "Prelude.gcd" $ nf (P.gcd m) n
, bench "binaryGCD" $ nf (A.binaryGCD m) n
, bench "Prelude.coprime" $ nf (\n -> 1 == P.gcd m n) n
, bench "coprime" $ nf (A.coprime m) n
]