pcg-random 0.1.3.6 → 0.1.3.7
raw patch · 3 files changed
+17/−21 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- System.Random.PCG: instance (Control.Monad.Primitive.PrimMonad m, s Data.Type.Equality.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Gen s) m
- System.Random.PCG.Fast: instance (Control.Monad.Primitive.PrimMonad m, s Data.Type.Equality.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Fast.Gen s) m
- System.Random.PCG.Fast.Pure: instance (Control.Monad.Primitive.PrimMonad m, s Data.Type.Equality.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Fast.Pure.Gen s) m
- System.Random.PCG.Pure: instance (Control.Monad.Primitive.PrimMonad m, s Data.Type.Equality.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Pure.Gen s) m
- System.Random.PCG.Single: instance (Control.Monad.Primitive.PrimMonad m, s Data.Type.Equality.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Single.Gen s) m
+ System.Random.PCG: instance (Control.Monad.Primitive.PrimMonad m, s GHC.Types.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Gen s) m
+ System.Random.PCG.Fast: instance (Control.Monad.Primitive.PrimMonad m, s GHC.Types.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Fast.Gen s) m
+ System.Random.PCG.Fast.Pure: instance (Control.Monad.Primitive.PrimMonad m, s GHC.Types.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Fast.Pure.Gen s) m
+ System.Random.PCG.Pure: instance (Control.Monad.Primitive.PrimMonad m, s GHC.Types.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Pure.Gen s) m
+ System.Random.PCG.Single: instance (Control.Monad.Primitive.PrimMonad m, s GHC.Types.~ Control.Monad.Primitive.PrimState m) => System.Random.PCG.Class.Generator (System.Random.PCG.Single.Gen s) m
Files
- pcg-random.cabal +1/−1
- src/System/Random/PCG/Fast/Pure.hs +8/−10
- src/System/Random/PCG/Pure.hs +8/−10
pcg-random.cabal view
@@ -1,5 +1,5 @@ name: pcg-random-version: 0.1.3.6+version: 0.1.3.7 synopsis: Haskell bindings to the PCG random number generator. description: PCG is a family of simple fast space-efficient statistically good
src/System/Random/PCG/Fast/Pure.hs view
@@ -92,8 +92,7 @@ type GenST = Gen -- $setup--- >>> import System.Random.PCG.Fast.Pure--- >>> import System.Random.PCG.Class+-- >>> import System.Random.PCG.Fast.Pure as Fast.Pure -- >>> import Control.Monad -- internals -----------------------------------------------------------@@ -167,7 +166,7 @@ -- | Generate a new seed using single 'Word64'. ----- >>> initFrozen 0+-- >>> Fast.Pure.initFrozen 0 -- F 1 initFrozen :: Word64 -> FrozenGen initFrozen w = F (w .|. 1)@@ -182,7 +181,7 @@ -- | Initialize a generator a single word. ----- >>> initialize 0 >>= save+-- >>> Fast.Pure.initialize 0 >>= Fast.Pure.save -- F 1 initialize :: PrimMonad m => Word64 -> m (Gen (PrimState m)) initialize a = restore (initFrozen a)@@ -203,11 +202,11 @@ -- \"step\" is a single random 32-bit (or less) 'Variate'. Data types -- such as 'Double' or 'Word64' require two \"steps\".) ----- >>> create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g+-- >>> Fast.Pure.create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g -- 3725702568--- >>> create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g+-- >>> Fast.Pure.create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g -- 3725702568--- >>> create >>= \g -> advance 1000 g >> uniformW32 g+-- >>> Fast.Pure.create >>= \g -> Fast.Pure.advance 1000 g >> uniformW32 g -- 3725702568 advance :: PrimMonad m => Word64 -> Gen (PrimState m) -> m () advance u (G a) = do@@ -219,9 +218,9 @@ -- | Retract the given generator n steps in log(2^64-n) time. This -- is just @advance (-n)@. ----- >>> create >>= \g -> replicateM 3 (uniformW32 g)+-- >>> Fast.Pure.create >>= \g -> replicateM 3 (uniformW32 g) -- [2951688802,2698927131,361549788]--- >>> create >>= \g -> retract 1 g >> replicateM 3 (uniformW32 g)+-- >>> Fast.Pure.create >>= \g -> Fast.Pure.retract 1 g >> replicateM 3 (uniformW32 g) -- [954135925,2951688802,2698927131] retract :: PrimMonad m => Word64 -> Gen (PrimState m) -> m () retract u g = advance (-u) g@@ -268,4 +267,3 @@ P s3 w3 = pair s2 w4 = output s3 -- abandon old state {-# INLINE split #-}-
src/System/Random/PCG/Pure.hs view
@@ -81,8 +81,7 @@ import System.Random -- $setup--- >>> import System.Random.PCG.Pure--- >>> import System.Random.PCG.Class+-- >>> import System.Random.PCG.Pure as Pure -- >>> import Control.Monad type GenIO = Gen RealWorld@@ -219,7 +218,7 @@ -- | Create a new generator from two words. ----- >>> initFrozen 0 0+-- >>> Pure.initFrozen 0 0 -- SetSeq 6364136223846793006 1 initFrozen :: Word64 -> Word64 -> SetSeq initFrozen = start@@ -230,7 +229,7 @@ -- | Initialize a generator a single word. ----- >>> initialize 0 0 >>= save+-- >>> Pure.initialize 0 0 >>= Pure.save -- SetSeq 6364136223846793006 1 initialize :: PrimMonad m => Word64 -> Word64 -> m (Gen (PrimState m)) initialize a b = restore (initFrozen a b)@@ -252,11 +251,11 @@ -- \"step\" is a single random 32-bit (or less) 'Variate'. Data types -- such as 'Double' or 'Word64' require two \"steps\".) ----- >>> create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g+-- >>> Pure.create >>= \g -> replicateM_ 1000 (uniformW32 g) >> uniformW32 g -- 3640764222--- >>> create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g+-- >>> Pure.create >>= \g -> replicateM_ 500 (uniformD g) >> uniformW32 g -- 3640764222--- >>> create >>= \g -> advance 1000 g >> uniformW32 g+-- >>> Pure.create >>= \g -> Pure.advance 1000 g >> uniformW32 g -- 3640764222 advance :: PrimMonad m => Word64 -> Gen (PrimState m) -> m () advance u g@(G a) = do@@ -268,9 +267,9 @@ -- | Retract the given generator n steps in log(2^64-n) time. This -- is just @advance (-n)@. ----- >>> create >>= \g -> replicateM 3 (uniformW32 g)+-- >>> Pure.create >>= \g -> replicateM 3 (uniformW32 g) -- [355248013,41705475,3406281715]--- >>> create >>= \g -> retract 1 g >> replicateM 3 (uniformW32 g)+-- >>> Pure.create >>= \g -> Pure.retract 1 g >> replicateM 3 (uniformW32 g) -- [19683962,355248013,41705475] retract :: PrimMonad m => Word64 -> Gen (PrimState m) -> m () retract u g = advance (-u) g@@ -318,4 +317,3 @@ Pair s3 w3 = pair (SetSeq s2 inc) Pair s4 w4 = pair (SetSeq s3 inc) {-# INLINE split #-}-