packages feed

htestu 0.1.0.0 → 0.1.1.0

raw patch · 3 files changed

+94/−1 lines, 3 filesdep +htestudep +mersenne-random-pure64dep +mwc-randomdep ~basenew-component:exe:runTestu

Dependencies added: htestu, mersenne-random-pure64, mwc-random, primitive, tf-random

Dependency ranges changed: base

Files

+ app/Dummy.hs view
@@ -0,0 +1,2 @@+main :: IO ()+main = putStrLn "Test suite not yet implemented"
+ app/TestGen.hs view
@@ -0,0 +1,67 @@+{-# OPTIONS_GHC -Wall #-}++module Main ( main ) where++import System.Random ( newStdGen, next )+import System.Random.TF ( newTFGen )+-- import qualified System.Random.PCG.Fast.Pure as PCG+import qualified System.Random.MWC as MWC+import System.Random.Mersenne.Pure64 ( newPureMT )+-- import Control.Monad ( join )+import System.Random ( RandomGen )+import Test.HTestU (TestResult, runBatteryToResults, c_smallCrush)+import Test.HTestU.Streaming (nextStreamFromGen)+import Test.HTestU.Wrapping (Battery)++import Control.Monad.Primitive+import System.IO.Unsafe+++-- Actions for running batteries on a newly generated instance of a PRNG++runCrush :: (RandomGen g) =>+             Battery -> IO g -> IO [TestResult]+runCrush crush gen = (\g -> runBatteryToResults nextStreamFromGen g crush ) `fmap`+                      gen++runSmallCrushStd :: IO [TestResult]+runSmallCrushStd = runCrush c_smallCrush newStdGen++runSmallCrushTF :: IO [TestResult]+runSmallCrushTF = runCrush c_smallCrush newTFGen++-- runSmallCrushPCG :: IO [TestResult]+-- runSmallCrushPCG = runCrush c_smallCrush (join $ fmap PCG.save PCG.create)++data MWCRNG = MWCRNG (MWC.Gen (PrimState IO))++instance RandomGen MWCRNG where+  next g@(MWCRNG gen) = unsafeDupablePerformIO $+   do v <- MWC.uniform gen+      return (v, g)++runSmallCrushMWC :: IO [TestResult]+runSmallCrushMWC = do+  s <- MWC.create+  runCrush c_smallCrush (return $ MWCRNG s)++runSmallCrushMT :: IO [TestResult]+runSmallCrushMT = runCrush c_smallCrush newPureMT++main :: IO ()+main = do+  rStd <- runSmallCrushStd+  putStrLn "Standard"+  putStrLn $ show rStd+  rTF <- runSmallCrushTF+  putStrLn "TF"+  putStrLn $ show rTF+  -- rPCG <- runSmallCrushPCG+  -- putStrLn "PCG"+  -- putStrLn $ show rPCG+  rMWC <- runSmallCrushMWC+  putStrLn "MWC"+  putStrLn $ show rMWC+  rMT <- runSmallCrushMT+  putStrLn "MT"+  putStrLn $ show rMT
htestu.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                htestu-version:             0.1.0.0+version:             0.1.1.0 synopsis:            A library for testing correctness of pseudo random number generators in Haskell. description:   HTestU is a library for testing correctness of presudo random number generators (PRNGs) written in Haskell.@@ -27,6 +27,10 @@     type:     git     location: https://github.com/idontgetoutmuch/htestu +flag testKnownRNGs+  description: build an exe to test selected Haskell RNGs+  default: False+ library   exposed-modules:     Test.HTestU,                        Test.HTestU.Streaming,@@ -42,3 +46,23 @@   include-dirs: cbits/testu/include   c-sources: cbits/testu/src/util.c cbits/testu/src/chrono.c cbits/testu/src/bitset.c cbits/testu/src/num.c cbits/testu/src/num2.c cbits/testu/src/mystr.c cbits/testu/src/tables.c cbits/testu/src/statcoll.c cbits/testu/src/gofs.c cbits/testu/src/gofw.c cbits/testu/src/gdef.c cbits/testu/src/vectorsF2.c cbits/testu/src/swrite.c cbits/testu/src/wdist.c cbits/testu/src/smultin.c cbits/testu/src/svaria.c cbits/testu/src/swalk.c cbits/testu/src/sstring.c cbits/testu/src/sspectral.c cbits/testu/src/sres.c cbits/testu/src/snpair.c cbits/testu/src/smarsa.c cbits/testu/src/sknuth.c cbits/testu/src/scomp.c cbits/testu/src/ftab.c cbits/testu/src/fres.c cbits/testu/src/fmass.c cbits/testu/src/fdist.c cbits/testu/src/fcho.c cbits/testu/src/fbar.c cbits/testu/src/fmarsa.c  cbits/testu/src/ufile.c cbits/testu/src/unif01.c cbits/testu/src/bbattery.c   ghc-options:        -O2++executable runTestu+    if flag(testKnownRNGs)+        hs-source-dirs:      app+        main-is:             TestGen.hs+        ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N -O2+        build-depends:       base+                           , htestu+                           , random+                           -- , pcg-random+                           , tf-random+                           , mwc-random+                           , mersenne-random-pure64+                           , primitive+        default-language:    Haskell2010+    else+        hs-source-dirs:      app+        main-is:             Dummy.hs+        ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N+        build-depends:       base