-- | Denis Lorrain. \"A Panoply of Stochastic 'Cannons'\". /Computer -- Music Journal/, 4(1):53-81, Spring 1980. module Sound.SC3.Lang.Random.Lorrain_1980 where -- | 4.3.1 (g=1) linear :: Floating a => a -> a -> a linear g u = g * (1 - sqrt u) -- | 4.3.2 (δ=[0.5,1,2]) exponential :: Floating a => a -> a -> a exponential delta u = (- (log u)) / delta -- | 4.3.5 (τ=1) cauchy :: Floating a => a -> a -> a cauchy tau u = tau * tan (pi * u) -- | 4.3.5 (iopt=False,τ=1) (Algorithm 10) cauchy' :: Floating a => Bool -> a -> a -> a cauchy' iopt tau u = let u' = if iopt then u / 2 else u u'' = pi * u' in tau * tan u'' -- tan u'' == sin u'' / cos u'' -- | 4.3.6 hyperbolic_cosine :: Floating a => a -> a hyperbolic_cosine u = log (tan (pi * u / 2)) -- | 4.3.7 (β=0,α=1) logistic :: Floating a => a -> a -> a -> a logistic beta alpha u = (- beta - log (recip u - 1)) / alpha -- | 4.3.8 arc_sine :: Floating a => a -> a arc_sine u = let x = sin (pi * u / 2) in x * x