arithmoi-0.9.0.0: benchmark/Math/NumberTheory/SmoothNumbersBench.hs
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
module Math.NumberTheory.SmoothNumbersBench
( benchSuite
) where
import Data.List (genericTake)
import Data.Maybe
import Gauge.Main
import Math.NumberTheory.Euclidean (Euclidean)
import Math.NumberTheory.SmoothNumbers
doBench :: (Euclidean a, Integral a) => a -> a
doBench lim = sum $ genericTake lim $ smoothOver $ fromJust $ fromSmoothUpperBound lim
benchSuite :: Benchmark
benchSuite = bgroup "SmoothNumbers"
[ bench "100" $ nf doBench (100 :: Int)
, bench "1000" $ nf doBench (1000 :: Int)
, bench "10000" $ nf doBench (10000 :: Int)
]