packages feed

mwc-random-0.15.2.0: mwc-random.cabal

cabal-version:  3.0
build-type:     Simple
name:           mwc-random
version:        0.15.2.0
license:        BSD-2-Clause
license-file:   LICENSE
copyright:      2009, 2010, 2011 Bryan O'Sullivan

author:         Bryan O'Sullivan <bos@serpentine.com>
maintainer:     Alexey Khudyakov <alexey.skladnoy@gmail.com>
homepage:       https://github.com/haskell/mwc-random
bug-reports:    https://github.com/haskell/mwc-random/issues

category:       Math, Statistics
synopsis:       Fast, high quality pseudo random number generation
description:
  This package contains code for generating high quality random
  numbers that follow either a uniform or normal distribution.  The
  generated numbers are suitable for use in statistical applications.
  .
  The uniform PRNG uses Marsaglia's MWC256 (also known as MWC8222)
  multiply-with-carry generator, which has a period of 2^8222 and
  fares well in tests of randomness.  It is also extremely fast,
  between 2 and 3 times faster than the Mersenne Twister.
  .
  Compared to the mersenne-random package, this package has a more
  convenient API, is faster, and supports more statistical
  distributions.


extra-source-files:
  README.md

extra-doc-files:
  docs/*.svg
  changelog.md

tested-with:
  GHC ==8.0.2
   || ==8.2.2
   || ==8.4.4
   || ==8.6.5
   || ==8.8.4
   || ==8.10.7
   || ==9.0.2
   || ==9.2.8
   || ==9.4.8
   || ==9.6.6
   || ==9.8.4
   || ==9.10.1
   || ==9.12.1


source-repository head
  type:     git
  location: git://github.com/haskell/mwc-random

flag BenchPAPI
  Description: Enable building of benchmarks which use instruction counters.
               It requires libpapi and only works on Linux so it's protected by flag
  Default: False
  Manual:  True

library
  default-language: Haskell2010
  exposed-modules: System.Random.MWC
                   System.Random.MWC.Distributions
                   System.Random.MWC.CondensedTable
                   System.Random.MWC.SeedSource
  build-depends: base           >= 4.9 && < 5
               , primitive      >= 0.6.2
               , random         >= 1.2
               , time
               , vector         >= 0.7
               , math-functions >= 0.2.1.0

  ghc-options: -O2 -Wall -funbox-strict-fields -fwarn-tabs


-- We want to be able to build benchmarks using both tasty-bench and tasty-papi.
-- They have similar API so we just create two shim modules which reexport
-- definitions from corresponding library and pick one in cabal file.
common bench-stanza
  ghc-options:      -Wall
  default-language: Haskell2010
  build-depends: base < 5
               , vector          >= 0.11
               , mersenne-random
               , mwc-random
               , random
               , tasty           >=1.3.1

benchmark mwc-bench
  import:         bench-stanza
  type:           exitcode-stdio-1.0
  hs-source-dirs: bench bench-time
  main-is:        Benchmark.hs
  Other-modules:  Bench
  build-depends:  tasty-bench >= 0.3

benchmark mwc-bench-papi
  import:         bench-stanza
  type:           exitcode-stdio-1.0
  if impl(ghcjs) || !flag(BenchPAPI) || impl(ghc < 8.2)
     buildable: False
  hs-source-dirs: bench bench-papi
  main-is:        Benchmark.hs
  Other-modules:  Bench
  build-depends:  tasty-papi >= 0.1.2

test-suite mwc-prop-tests
  type:           exitcode-stdio-1.0
  hs-source-dirs: tests
  main-is:        props.hs
  default-language: Haskell2010
  ghc-options:
    -Wall -threaded -rtsopts

  build-depends: base
               , mwc-random
               , QuickCheck                 >=2.2
               , vector                     >=0.12.1
               , tasty                      >=1.3.1
               , tasty-quickcheck           >=0.10.2
               , tasty-hunit
               , random                     >=1.2
               , mtl
               , math-functions             >=0.3.4

test-suite mwc-doctests
  type:             exitcode-stdio-1.0
  main-is:          doctests.hs
  hs-source-dirs:   tests
  default-language: Haskell2010
  if impl(ghcjs) || impl(ghc < 8.0)
    Buildable: False
  -- Linker on macos prints warnings to console which confuses doctests.
  -- We simply disable doctests on ma for older GHC
  -- > warning: -single_module is obsolete
  if os(darwin) && impl(ghc < 9.6)
    buildable: False
  build-depends:
            base       -any
          , mwc-random -any
          , doctest    >=0.15 && <0.24
            --
          , bytestring
          , primitive
          , vector     >=0.11
          , random     >=1.2