./devel/hs-splitmix, Fast Splittable PRNG

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.1.0.3nb2, Package name: hs-splitmix-0.1.0.3nb2, Maintainer: pho

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: https://doi.org/10.1145/2660193.2660195

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).


Required to run:
[devel/hs-random] [lang/ghc88]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 20.268 KB

Version history: (Expand)


CVS history: (Expand)


   2022-01-18 03:48:33 by Masatake Daimon | Files touched by this commit (541)
Log message:
Bump packages that depends on GHC
   2021-10-26 12:20:11 by Nia Alarie | Files touched by this commit (3016)
Log message:
archivers: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes

Could not be committed due to merge conflict:
devel/py-traitlets/distinfo

The following distfiles were unfetchable (note: some may be only fetched
conditionally):

./devel/pvs/distinfo pvs-3.2-solaris.tgz
./devel/eclipse/distinfo eclipse-sourceBuild-srcIncluded-3.0.1.zip
   2021-10-07 15:44:44 by Nia Alarie | Files touched by this commit (3017)
Log message:
devel: Remove SHA1 hashes for distfiles
   2021-05-03 21:01:21 by Masatake Daimon | Files touched by this commit (475)
Log message:
*: Bump PKGREVISION for ghc-9.0.1
   2021-04-23 08:50:03 by Masatake Daimon | Files touched by this commit (4)
Log message:
Update to splitmix-0.1.0.3

0.1.0.3
* Fix oops bugs in 0.1.0.2
  - It's lowercase windows.h. I blame Microsoft docs for using capital
    case Windows.h in the
    docs. \ 
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocessid
  - accidental shiftL vs shiftR mixup for 32-bit generator
    initialization. Doesn't affect Linux.

0.1.0.2
* Drop time dependency in favour of handcoded initialization
  - On Unix platforms we use /dev/urandom if it exists, otherwise use
    gettimeofday, clock and getpid.
  - On Windows we use GetCurrentProcessID, GetCurrentThreadId(),
    GetTickCount, GetSystemTime and QueryPerformanceCounter.
  - On GHCJS use Math.random()
  - Using time is a fallback option (e.g. for Hugs).

0.1.0.1
* Add INLINEABLE pragmas to bitmaskWithRejection* functions
* Support GHC-9.0

0.1
* Drop random dependency
  unconditionally. https://github.com/phadej/splitmix/issues/34

0.0.5
* Add nextInteger
* Use smaller range in bitmaskWithRejection32 and 64, when upper bound
  is 2^n - 1. This changes generated values when they were on the
  boundary.

0.0.4
* Add bitmaskWithRejection32' and bitmaskWithRejection64' which
  generate numbers in closed range [0, n]. Unticked variants generate
  in closed-open range [0, n).
   2021-02-18 16:07:28 by Makoto Fujiwara | Files touched by this commit (19)
Log message:
(*/hs-*) BUILDLINK_API_DEPENDS.ghc <8.10, again
   2021-02-13 09:01:01 by Makoto Fujiwara | Files touched by this commit (29)
Log message:
(*/hs-*) fix build, not adapted to ghc90 version
   2020-05-11 19:52:21 by Roland Illig | Files touched by this commit (190)
Log message:
hs-*: add PLIST files

These PLIST files have been autogenerated by mk/haskell.mk using
HS_UPDATE_PLIST=yes during a bulk build.  They will help to track changes
to the packages.  The Haskell packages didn't have PLIST files because
their paths contained package hashes.  These hashes are now determined by
mk/haskell.mk, which makes it easy to generate easy to read PLIST files.