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 +2/−0
- app/TestGen.hs +67/−0
- htestu.cabal +25/−1
+ 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