packages feed

maxent-0.6.0.0: bench/Bench.hs

{-# LANGUAGE TupleSections, Rank2Types #-}
module Main where
import Numeric.MaxEnt.Internal
import Criterion.Main
import Criterion
import Criterion.Config
import Data.Monoid
   
testData :: RealFloat a => ([a], [Constraint a])
testData = ([1,2,3], [average 1.5])

maxent' :: (forall a. RealFloat a => ([a], [Constraint a])) -- ^ A pair of values that the distributions is over and the constraints
        -> [Double]
maxent' xs = (\(Right x) -> x) $ maxent 0.00001 xs


test1 :: (forall a. RealFloat a => ([a], [Constraint a])) -> Pure
test1 x = nf maxent' x
    
myConfig = defaultConfig { cfgReport = Last $ Just "profile.html" ,
                           cfgSamples = Last $ Just 100}

main = defaultMainWith myConfig (return ()) [
           bgroup "moment" [
               bench "moment1" $ test1 testData
           ]
       ]