math-functions-0.1.5.1: benchmark/Summation.hs
import Criterion.Main
import Numeric.Sum as Sum
import System.Random.MWC
import qualified Data.Vector.Unboxed as U
main = do
gen <- createSystemRandom
v <- uniformVector gen 10000000 :: IO (U.Vector Double)
defaultMain [
bench "naive" $ whnf U.sum v
, bench "pairwise" $ whnf pairwiseSum v
, bench "kahan" $ whnf (sumVector kahan) v
, bench "kbn" $ whnf (sumVector kbn) v
, bench "kb2" $ whnf (sumVector kb2) v
]