%global pkg_name splitmix
%global pkgver %{pkg_name}-%{version}
%bcond_with tests
Name: ghc-%{pkg_name}
Version: 0.1.3.1
Release: 1
Summary: Fast Splittable PRNG
License: BSD-3-Clause
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-base-devel
BuildRequires: ghc-base-prof
BuildRequires: ghc-deepseq-devel
BuildRequires: ghc-deepseq-prof
BuildRequires: ghc-rpm-macros
ExcludeArch: %{ix86}
%if %{with tests}
BuildRequires: ghc-HUnit-devel
BuildRequires: ghc-HUnit-prof
BuildRequires: ghc-async-devel
BuildRequires: ghc-async-prof
BuildRequires: ghc-base-compat-batteries-devel
BuildRequires: ghc-base-compat-batteries-prof
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-bytestring-prof
BuildRequires: ghc-containers-devel
BuildRequires: ghc-containers-prof
BuildRequires: ghc-math-functions-devel
BuildRequires: ghc-math-functions-prof
BuildRequires: ghc-process-devel
BuildRequires: ghc-process-prof
BuildRequires: ghc-random-devel
BuildRequires: ghc-random-prof
BuildRequires: ghc-test-framework-devel
BuildRequires: ghc-test-framework-hunit-devel
BuildRequires: ghc-test-framework-hunit-prof
BuildRequires: ghc-test-framework-prof
BuildRequires: ghc-tf-random-devel
BuildRequires: ghc-tf-random-prof
BuildRequires: ghc-vector-devel
BuildRequires: ghc-vector-prof
%endif
%description
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).
%package devel
Summary: Haskell %{pkg_name} library development files
Requires: %{name} = %{version}-%{release}
Requires: ghc-compiler = %{ghc_version}
Requires(post): ghc-compiler = %{ghc_version}
Requires(postun): ghc-compiler = %{ghc_version}
%description devel
This package provides the Haskell %{pkg_name} library development files.
%package -n ghc-%{pkg_name}-help
Summary: Haskell %{pkg_name} library documentation
Requires: ghc-filesystem
BuildArch: noarch
%description -n ghc-%{pkg_name}-help
This package provides the Haskell %{pkg_name} library documentation.
%package -n ghc-%{pkg_name}-prof
Summary: Haskell %{pkg_name} profiling library
Requires: ghc-%{pkg_name}-devel = %{version}-%{release}
Supplements: (ghc-%{pkg_name}-devel and ghc-prof)
%description -n ghc-%{pkg_name}-prof
This package provides the Haskell %{pkg_name} profiling library.
%prep
%autosetup -n %{pkg_name}-%{version}
%build
%ghc_lib_build
%install
%ghc_lib_install
%check
%cabal_test
%post devel
%ghc_pkg_recache
%postun devel
%ghc_pkg_recache
%files -f %{name}.files
%license LICENSE
%files devel -f %{name}-devel.files
%doc Changelog.md README.md
%files -n ghc-%{pkg_name}-help -f ghc-%{pkg_name}-help.files
%license LICENSE
%files -n ghc-%{pkg_name}-prof -f ghc-%{pkg_name}-prof.files
%changelog
* Tue Jul 01 2025 jinshuaiyu <jinshuaiyu@kylinos.cn> 0.1.3.1-1
- Update to 0.1.3.1
- Fix linking issue symbol not found in flat namespace '_kSecRandomDefault' when using splitmix in TH on macOS.
* Thu May 22 2025 Lin Runze <lrzlin@163.com> 0.1.1-1
- Update to 0.1.1
* Thu Nov 23 2023 Lin Runze <lrzlin@163.com> 0.1.0.5-1
- Bump version to 0.1.0.5
* Tue Aug 22 2023 Lin Runze <lrzlin@163.com> 0.1.0.4-1
- Initial packaging (Version 0.1.0.4)