diff --git a/ghc-random.spec b/ghc-random.spec index 024bfdb..f3ce66b 100644 --- a/ghc-random.spec +++ b/ghc-random.spec @@ -1,4 +1,4 @@ -# generated by cabal-rpm-2.1.0 --subpackage +# generated by cabal-rpm-2.1.2 --subpackage # https://docs.fedoraproject.org/en-US/packaging-guidelines/Haskell/ %global pkg_name random @@ -21,7 +21,9 @@ Url: https://hackage.haskell.org/package/%{pkg_name} Source0: https://hackage.haskell.org/package/%{pkgver}/%{pkgver}.tar.gz Source1: https://hackage.haskell.org/package/%{splitmix}/%{splitmix}.tar.gz # End cabal-rpm sources +Source2: https://hackage.haskell.org/package/%{newtypegenerics}/splitmix.cabal#/%{splitmix}.cabal +BuildRequires: dos2unix # Begin cabal-rpm deps: BuildRequires: ghc-Cabal-devel BuildRequires: ghc-rpm-macros-extra @@ -135,6 +137,7 @@ This package provides the Haskell %{pkg_name} profiling library. # Begin cabal-rpm setup: %setup -q -n %{pkgver} -a1 # End cabal-rpm setup +dos2unix -k -n %{SOURCE2} %{splitmix}/splitmix.cabal %build diff --git a/splitmix-0.1.0.4.cabal b/splitmix-0.1.0.4.cabal new file mode 100644 index 0000000..69409e8 --- /dev/null +++ b/splitmix-0.1.0.4.cabal @@ -0,0 +1,246 @@ +cabal-version: >=1.10 +name: splitmix +version: 0.1.0.4 +x-revision: 2 +synopsis: Fast Splittable PRNG +description: + Pure Haskell implementation of SplitMix described in + . + Guy L. Steele, Jr., Doug Lea, and Christine H. Flood. 2014. + Fast splittable pseudorandom number generators. In Proceedings + of the 2014 ACM International Conference on Object Oriented + Programming Systems Languages & Applications (OOPSLA '14). ACM, + New York, NY, USA, 453-472. DOI: + + . + The paper describes a new algorithm /SplitMix/ for /splittable/ + pseudorandom number generator that is quite fast: 9 64 bit arithmetic/logical + operations per 64 bits generated. + . + /SplitMix/ is tested with two standard statistical test suites (DieHarder and + TestU01, this implementation only using the former) and it appears to be + adequate for "everyday" use, such as Monte Carlo algorithms and randomized + data structures where speed is important. + . + In particular, it __should not be used for cryptographic or security applications__, + because generated sequences of pseudorandom values are too predictable + (the mixing functions are easily inverted, and two successive outputs + suffice to reconstruct the internal state). + +license: BSD3 +license-file: LICENSE +maintainer: Oleg Grenrus +bug-reports: https://github.com/haskellari/splitmix/issues +category: System, Random +build-type: Simple +tested-with: + GHC ==7.0.4 + || ==7.2.2 + || ==7.4.2 + || ==7.6.3 + || ==7.8.4 + || ==7.10.3 + || ==8.0.2 + || ==8.2.2 + || ==8.4.4 + || ==8.6.5 + || ==8.8.4 + || ==8.10.4 + || ==9.0.2 + || ==9.2.5 + || ==9.4.4 + || ==9.6.1 + , GHCJS ==8.4 + +extra-source-files: + Changelog.md + make-hugs.sh + README.md + test-hugs.sh + +flag optimised-mixer + description: Use JavaScript for mix32 + manual: True + default: False + +library + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: src src-compat + exposed-modules: + System.Random.SplitMix + System.Random.SplitMix32 + + other-modules: + Data.Bits.Compat + System.Random.SplitMix.Init + + -- dump-core + -- build-depends: dump-core + -- ghc-options: -fplugin=DumpCore -fplugin-opt DumpCore:core-html + + build-depends: + base >=4.3 && <4.19 + , deepseq >=1.3.0.0 && <1.5 + + if flag(optimised-mixer) + cpp-options: -DOPTIMISED_MIX32=1 + + -- We don't want to depend on time, nor unix or Win32 packages + -- because it's valuable that splitmix and QuickCheck doesn't + -- depend on about anything + + if impl(ghcjs) + cpp-options: -DSPLITMIX_INIT_GHCJS=1 + + else + if impl(ghc) + cpp-options: -DSPLITMIX_INIT_C=1 + + if os(windows) + c-sources: cbits-win/init.c + + else + c-sources: cbits-unix/init.c + + else + cpp-options: -DSPLITMIX_INIT_COMPAT=1 + build-depends: time >=1.2.0.3 && <1.13 + +source-repository head + type: git + location: https://github.com/haskellari/splitmix.git + +benchmark comparison + type: exitcode-stdio-1.0 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: bench + main-is: Bench.hs + build-depends: + base + , containers >=0.4.2.1 && <0.7 + , criterion >=1.1.0.0 && <1.6 + , random + , splitmix + , tf-random >=0.5 && <0.6 + +benchmark simple-sum + type: exitcode-stdio-1.0 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: bench + main-is: SimpleSum.hs + build-depends: + base + , random + , splitmix + +benchmark range + type: exitcode-stdio-1.0 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: bench src-compat + main-is: Range.hs + other-modules: Data.Bits.Compat + build-depends: + base + , clock >=0.8 && <0.9 + , random + , splitmix + +test-suite examples + type: exitcode-stdio-1.0 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: tests + main-is: Examples.hs + build-depends: + base + , HUnit ==1.3.1.2 || >=1.6.0.0 && <1.7 + , splitmix + +test-suite splitmix-tests + type: exitcode-stdio-1.0 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: tests + main-is: Tests.hs + other-modules: + MiniQC + Uniformity + + build-depends: + base + , base-compat >=0.11.1 && <0.13 + , containers >=0.4.0.0 && <0.7 + , HUnit ==1.3.1.2 || >=1.6.0.0 && <1.7 + , math-functions ==0.1.7.0 || >=0.3.3.0 && <0.4 + , splitmix + , test-framework >=0.8.2.0 && <0.9 + , test-framework-hunit >=0.3.0.2 && <0.4 + +test-suite montecarlo-pi + type: exitcode-stdio-1.0 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: tests + main-is: SplitMixPi.hs + build-depends: + base + , splitmix + +test-suite montecarlo-pi-32 + type: exitcode-stdio-1.0 + default-language: Haskell2010 + ghc-options: -Wall + hs-source-dirs: tests + main-is: SplitMixPi32.hs + build-depends: + base + , splitmix + +test-suite splitmix-dieharder + default-language: Haskell2010 + type: exitcode-stdio-1.0 + ghc-options: -Wall -threaded -rtsopts + hs-source-dirs: tests + main-is: Dieharder.hs + build-depends: + async >=2.2.1 && <2.3 + , base + , base-compat-batteries >=0.10.5 && <0.13 + , bytestring >=0.9.1.8 && <0.12 + , deepseq + , process >=1.0.1.5 && <1.7 + , random + , splitmix + , tf-random >=0.5 && <0.6 + , vector >=0.11.0.0 && <0.13 + +test-suite splitmix-testu01 + if !os(linux) + buildable: False + + default-language: Haskell2010 + type: exitcode-stdio-1.0 + ghc-options: -Wall -threaded -rtsopts + hs-source-dirs: tests + main-is: TestU01.hs + c-sources: tests/cbits/testu01.c + extra-libraries: testu01 + build-depends: + base + , base-compat-batteries >=0.10.5 && <0.13 + , splitmix + +test-suite initialization + default-language: Haskell2010 + type: exitcode-stdio-1.0 + ghc-options: -Wall -threaded -rtsopts + hs-source-dirs: tests + main-is: Initialization.hs + build-depends: + base + , HUnit ==1.3.1.2 || >=1.6.0.0 && <1.7 + , splitmix