name:                   random-fu
version:                0.2.7.6
stability:              provisional

cabal-version:          >= 1.10
build-type:             Simple

author:                 James Cook <mokus@deepbondi.net>
maintainer:             Dominic Steinitz <dominic@steinitz.org>
license:                PublicDomain
homepage:               https://github.com/mokus0/random-fu

category:               Math
synopsis:               Random number generation
description:            Random number generation based on modeling random
                        variables in two complementary ways: first, by the
                        parameters of standard mathematical distributions and,
                        second, by an abstract type ('RVar') which can be
                        composed and manipulated monadically and sampled in
                        either monadic or \"pure\" styles.
                        .
                        The primary purpose of this library is to support
                        defining and sampling a wide variety of high quality
                        random variables.  Quality is prioritized over speed,
                        but performance is an important goal too.
                        .
                        In my testing, I have found it capable of speed
                        comparable to other Haskell libraries, but still
                        a fair bit slower than straight C implementations of
                        the same algorithms.

tested-with:            GHC == 7.10.3

extra-source-files:     changelog.md

source-repository head
  type:                 git
  location:             https://github.com/mokus0/random-fu.git
  subdir:               random-fu

Flag base4_2
    Description:        base-4.2 has an incompatible change in Data.Fixed (HasResolution)

Flag mtl2
    Description:        mtl-2 has State, etc., as "type" rather than "newtype"

Library
  ghc-options:          -Wall -funbox-strict-fields
  hs-source-dirs:       src
  default-language:     Haskell2010
  exposed-modules:      Data.Random
                        Data.Random.Distribution
                        Data.Random.Distribution.Bernoulli
                        Data.Random.Distribution.Beta
                        Data.Random.Distribution.Binomial
                        Data.Random.Distribution.Categorical
                        Data.Random.Distribution.ChiSquare
                        Data.Random.Distribution.Dirichlet
                        Data.Random.Distribution.Exponential
                        Data.Random.Distribution.StretchedExponential
                        Data.Random.Distribution.Gamma
                        Data.Random.Distribution.Multinomial
                        Data.Random.Distribution.Normal
                        Data.Random.Distribution.Pareto
                        Data.Random.Distribution.Poisson
                        Data.Random.Distribution.Rayleigh
                        Data.Random.Distribution.Simplex
                        Data.Random.Distribution.T
                        Data.Random.Distribution.Triangular
                        Data.Random.Distribution.Uniform
                        Data.Random.Distribution.Weibull
                        Data.Random.Distribution.Ziggurat
                        Data.Random.Internal.Find
                        Data.Random.Internal.Fixed
                        Data.Random.Internal.TH
                        Data.Random.Lift
                        Data.Random.List
                        Data.Random.RVar
                        Data.Random.Sample
                        Data.Random.Vector
  if flag(base4_2)
    build-depends:      base >= 4.9 && <5
  else
    cpp-options:        -Dold_Fixed
    build-depends:      base >= 4 && <4.2

  if flag(mtl2)
    build-depends:      mtl == 2.*
    cpp-options:        -DMTL2
  else
    build-depends:      mtl == 1.*

  build-depends:        math-functions,
                        monad-loops >= 0.3.0.1,
                        random >= 1.2.0,
                        random-shuffle,
                        random-source == 0.3.*,
                        rvar == 0.2.*,
                        syb,
                        template-haskell,
                        transformers,
                        vector >= 0.7,
                        erf

  if impl(ghc == 7.2.1)
    -- Doesn't work under GHC 7.2.1 due to
    -- http://hackage.haskell.org/trac/ghc/ticket/5410
    -- (7.2.2 is fine though, as long as random-source is new enough)
    Buildable:          False