packages feed

hid-examples-0.5: benchmarks/primcheck/Bench.hs

import Criterion.Main (defaultMain, bench, whnf)

isPrime :: Integer -> Bool
isPrime n = all notDividedBy [2 .. n-1]
  where
    notDividedBy m = n `mod` m /= 0

isPrime':: Integer -> Bool
isPrime' n = go 2
  where
    go x = case x > n-1 of
             True -> True
             False -> case n `mod` x /= 0 of
                        True -> go (x+1)
                        False -> False

isPrime'' :: Integer -> Bool
isPrime'' n = all notDividedBy [2 .. n `div` 2]
  where
    notDividedBy m = n `mod` m /= 0

primeNumber = 16183

main = defaultMain [
    bench "isPrime" $ whnf isPrime primeNumber
  , bench "isPrime'" $ whnf isPrime' primeNumber
  , bench "isPrime''" $ whnf isPrime'' primeNumber
  ]