Open the imported Cabal file ↗
- bug-reports
- https://github.com/haskellari/splitmix/issues
- build-type
- Simple
- cabal-version
- 2.4
- category
- System, Random
- extra-doc-files
- Changelog.md README.md
- extra-source-files
- make-hugs.sh test-hugs.sh
- license
- BSD-3-Clause
- license-file
- LICENSE
- maintainer
- Oleg Grenrus <oleg.grenrus@iki.fi>
- name
- splitmix
- synopsis
- Fast Splittable PRNG
- tested-with
- GHC ==8.6.5 || ==8.8.4 || ==8.10.4 || ==9.0.2 || ==9.2.8 || ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.2 || ==9.12.2 || ==9.14.1
- version
- 0.1.3.2
Show the complete metadata as JSON
{
"schemaVersion": 1,
"name": "splitmix",
"version": "0.1.3.2",
"cabalVersion": "2.4",
"buildType": "Simple",
"fields": {
"bug-reports": [
"https://github.com/haskellari/splitmix/issues"
],
"build-type": [
"Simple"
],
"cabal-version": [
"2.4"
],
"category": [
"System, Random"
],
"description": [
"Pure Haskell implementation of SplitMix described in\n.\nGuy L. Steele, Jr., Doug Lea, and Christine H. Flood. 2014.\nFast splittable pseudorandom number generators. In Proceedings\nof the 2014 ACM International Conference on Object Oriented\nProgramming Systems Languages & Applications (OOPSLA '14). ACM,\nNew York, NY, USA, 453-472. DOI:\n<https://doi.org/10.1145/2660193.2660195>\n.\nThe paper describes a new algorithm /SplitMix/ for /splittable/\npseudorandom number generator that is quite fast: 9 64 bit arithmetic/logical\noperations per 64 bits generated.\n.\n/SplitMix/ is tested with two standard statistical test suites (DieHarder and\nTestU01, this implementation only using the former) and it appears to be\nadequate for \"everyday\" use, such as Monte Carlo algorithms and randomized\ndata structures where speed is important.\n.\nIn particular, it __should not be used for cryptographic or security applications__,\nbecause generated sequences of pseudorandom values are too predictable\n(the mixing functions are easily inverted, and two successive outputs\nsuffice to reconstruct the internal state)."
],
"extra-doc-files": [
"Changelog.md\nREADME.md"
],
"extra-source-files": [
"make-hugs.sh\ntest-hugs.sh"
],
"license": [
"BSD-3-Clause"
],
"license-file": [
"LICENSE"
],
"maintainer": [
"Oleg Grenrus <oleg.grenrus@iki.fi>"
],
"name": [
"splitmix"
],
"synopsis": [
"Fast Splittable PRNG"
],
"tested-with": [
"GHC ==8.6.5\n|| ==8.8.4\n|| ==8.10.4\n|| ==9.0.2\n|| ==9.2.8\n|| ==9.4.8\n|| ==9.6.7\n|| ==9.8.4\n|| ==9.10.2\n|| ==9.12.2\n|| ==9.14.1"
],
"version": [
"0.1.3.2"
]
},
"components": [
{
"kind": "library",
"name": "main",
"tree": {
"data": {
"buildable": null,
"exposedModules": [
"System.Random.SplitMix",
"System.Random.SplitMix32"
],
"otherModules": [
"System.Random.SplitMix.Init"
],
"dependencies": [
{
"package": "base",
"range": ">=4.12.0.0 && <4.23",
"libraries": [
"main"
]
},
{
"package": "deepseq",
"range": ">=1.4.4.0 && <1.6",
"libraries": [
"main"
]
}
],
"fields": {}
},
"branches": [
{
"condition": {
"flag": "optimised-mixer"
},
"then": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": []
},
"else": null
},
{
"condition": {
"compiler": "ghcjs",
"range": "-any"
},
"then": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": []
},
"else": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": [
{
"condition": {
"compiler": "ghc",
"range": "-any"
},
"then": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": [
{
"condition": {
"os": "windows"
},
"then": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": []
},
"else": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": [
{
"condition": {
"or": [
{
"os": "osx"
},
{
"os": "ios"
}
]
},
"then": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": []
},
"else": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [],
"fields": {}
},
"branches": []
}
}
]
}
}
]
},
"else": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [
{
"package": "time",
"range": ">=1.2.0.3 && <1.16",
"libraries": [
"main"
]
}
],
"fields": {}
},
"branches": []
}
}
]
}
}
]
}
},
{
"kind": "test-suite",
"name": "splitmix-examples",
"tree": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [
{
"package": "base",
"range": "-any",
"libraries": [
"main"
]
},
{
"package": "HUnit",
"range": ">=1.6.0.0 && <1.7",
"libraries": [
"main"
]
},
{
"package": "splitmix",
"range": "-any",
"libraries": [
"main"
]
}
],
"fields": {
"type": [
"exitcode-stdio-1.0"
]
}
},
"branches": []
}
},
{
"kind": "test-suite",
"name": "splitmix-th-test",
"tree": {
"data": {
"buildable": null,
"exposedModules": [],
"otherModules": [],
"dependencies": [
{
"package": "base",
"range": "-any",
"libraries": [
"main"
]
},
{
"package": "template-haskell",
"range": "-any",
"libraries": [
"main"
]
},
{
"package": "splitmix",
"range": "-any",
"libraries": [
"main"
]
}
],
"fields": {
"type": [
"exitcode-stdio-1.0"
]
}
},
"branches": []
}
}
],
"setupDependencies": [],
"flags": [
{
"name": "optimised-mixer",
"default": false,
"manual": true,
"description": "Use JavaScript for mix32"
}
],
"sourceRepositories": [
{
"kind": "head",
"fields": {
"location": [
"https://github.com/haskellari/splitmix.git"
],
"type": [
"git"
]
}
}
],
"warnings": [],
"sourceUrl": "https://hackage.haskell.org/package/splitmix-0.1.3.2/splitmix.cabal",
"sha256": "a557cff65eed1f70f3a3b468423cd58e7a9a9564c5cc00c76a13de64dec9bcbd",
"importedAt": "2026-10-14T12:42:02.666Z",
"dependencies": [
{
"package": "base",
"range": ">=4.12.0.0 && <4.23",
"libraries": [
"main"
],
"component": "library:main",
"conditions": []
},
{
"package": "deepseq",
"range": ">=1.4.4.0 && <1.6",
"libraries": [
"main"
],
"component": "library:main",
"conditions": []
},
{
"package": "time",
"range": ">=1.2.0.3 && <1.16",
"libraries": [
"main"
],
"component": "library:main",
"conditions": [
{
"not": {
"compiler": "ghcjs",
"range": "-any"
}
},
{
"not": {
"compiler": "ghc",
"range": "-any"
}
}
]
},
{
"package": "base",
"range": "-any",
"libraries": [
"main"
],
"component": "test-suite:splitmix-examples",
"conditions": []
},
{
"package": "HUnit",
"range": ">=1.6.0.0 && <1.7",
"libraries": [
"main"
],
"component": "test-suite:splitmix-examples",
"conditions": []
},
{
"package": "splitmix",
"range": "-any",
"libraries": [
"main"
],
"component": "test-suite:splitmix-examples",
"conditions": []
},
{
"package": "base",
"range": "-any",
"libraries": [
"main"
],
"component": "test-suite:splitmix-th-test",
"conditions": []
},
{
"package": "template-haskell",
"range": "-any",
"libraries": [
"main"
],
"component": "test-suite:splitmix-th-test",
"conditions": []
},
{
"package": "splitmix",
"range": "-any",
"libraries": [
"main"
],
"component": "test-suite:splitmix-th-test",
"conditions": []
}
],
"exposedModules": [
"System.Random.SplitMix",
"System.Random.SplitMix32"
],
"documents": {
"readme": {
"status": "available",
"sha256": "93e521ae1f351b7d74127ed5c2d4b9e065a5ecffdbd181dba5ac674cbe5c7353",
"error": null,
"checkedAt": "2026-10-14T12:42:03.360Z"
},
"changelog": {
"status": "available",
"sha256": "9607e8dd6c8465b6abac2f037a9aba48d1d5c27977b064a548dfa848fa87e81b",
"error": null,
"checkedAt": "2026-10-14T12:42:03.553Z"
}
},
"documentation": null,
"versions": [
{
"version": "0.1.3.2",
"imported_at": "2026-10-14T12:42:02.666Z"
}
]
}