packages feed

jackpolynomials-1.2.2.0: benchmarks/Main.hs

module Main (main) where
import Math.Algebra.Hspray                      ( evalSymbolicSpray
                                                , Rational'
                                                , QSpray
                                                , QSpray'
                                                , SymbolicQSpray
                                                )
import Math.Algebra.JackPol                     ( jackPol'
                                                )
import Math.Algebra.JackSymbolicPol             ( jackSymbolicPol' )
import Miniterion                               ( bench
                                                , bgroup
                                                , defaultMain
                                                , whnf )

nT :: Int
nT = 5

lambdaT :: [Int]
lambdaT = [4, 2, 2, 1]

alphaT :: Rational
alphaT = 2

alphaT' :: Rational'
alphaT' = 2

jP :: (Int, [Int], Rational) -> QSpray 
jP (n, lambda, alpha) = jackPol' n lambda alpha 'J'

jSP :: (Int, [Int]) -> SymbolicQSpray
jSP (n, lambda) = jackSymbolicPol' n lambda 'J'

jSPeval :: (Int, [Int], Rational') -> QSpray'
jSPeval (n, lambda, alpha') = evalSymbolicSpray (jackSymbolicPol' n lambda 'J') alpha' 

main :: IO ()
main = 
  defaultMain
    [ bgroup "Jack"
      [ bench "jackPol with the given alpha"       $ 
          whnf jP (nT, lambdaT, alphaT)
      , bench "jackSymbolicPol"                    $ 
          whnf jSP (nT, lambdaT)
      , bench "jackSymbolicPol evaluated at alpha" $ 
          whnf jSPeval (nT, lambdaT, alphaT')
      ]
    ]