commons-rng.git
3 months agoRNG-168: LXM family of random number generators
Alex Herbert [Wed, 9 Mar 2022 00:23:36 +0000 (00:23 +0000)] 
RNG-168: LXM family of random number generators

Add support for generators included in JDK 17:

L32X64Mix
L64X128StarStar
L64X128Mix
L64X256Mix
L64X1024Mix
L128X128Mix
L128X256Mix
L128X1024Mix

Added benchmark for support routines for computing the unsigned long
multiplications in the 128-bit LCG (linear congruential generator).

Added a benchmark for the jump function to allow comparison with the
equivalent base XBG (xor-based generator).

Added a faster carry computation than the method provided in the
reference LXM paper.

3 months agoUse the copy constructor
aherbert [Tue, 12 Apr 2022 11:58:15 +0000 (12:58 +0100)] 
Use the copy constructor

3 months agoSpotbugs excludes for updated spotbugs version
aherbert [Tue, 12 Apr 2022 11:41:01 +0000 (12:41 +0100)] 
Spotbugs excludes for updated spotbugs version

3 months agoDrop <h3> package titles
aherbert [Tue, 12 Apr 2022 11:22:34 +0000 (12:22 +0100)] 
Drop <h3> package titles

This allows building on JDK 17

3 months agoUpdate to commons parent 53
aherbert [Tue, 12 Apr 2022 11:09:28 +0000 (12:09 +0100)] 
Update to commons parent 53

Update changes support for spotbugs with updated propertie names. It now
supports JDK 17.

3 months agoDo not put lists within paragraph blocks
aherbert [Tue, 12 Apr 2022 10:51:23 +0000 (11:51 +0100)] 
Do not put lists within paragraph blocks

3 months agoUpdate developer guide
aherbert [Tue, 12 Apr 2022 10:48:09 +0000 (11:48 +0100)] 
Update developer guide

Drop reference to building with ant.

Add notes about contributing using GitHub PRs.

3 months agoAdd table of contents to user guide
aherbert [Tue, 12 Apr 2022 10:32:37 +0000 (11:32 +0100)] 
Add table of contents to user guide

The user guide page can be directly linked from the site menu.

Added selected section links to the site menu.

3 months agoAdd GH actions for CI build and coverage
aherbert [Tue, 12 Apr 2022 09:31:37 +0000 (10:31 +0100)] 
Add GH actions for CI build and coverage

4 months agoAdd @since tags
Alex Herbert [Thu, 7 Apr 2022 20:25:18 +0000 (21:25 +0100)] 
Add @since tags

4 months agoUse reference instead of lambda.
Arturo Bernal [Thu, 7 Apr 2022 18:43:35 +0000 (20:43 +0200)] 
Use reference instead of lambda.

4 months agoDo not use fully qualified classname in javadoc
Alex Herbert [Thu, 7 Apr 2022 19:54:34 +0000 (20:54 +0100)] 
Do not use fully qualified classname in javadoc

4 months agofix broken javadoc link. 107/head
Arturo Bernal [Thu, 7 Apr 2022 18:41:41 +0000 (20:41 +0200)] 
fix broken javadoc link.

4 months agoRNG-174: Improve support for non-zero seeds
aherbert [Fri, 1 Apr 2022 16:46:12 +0000 (17:46 +0100)] 
RNG-174: Improve support for non-zero seeds

Allow specification of a range for array seeds that must be non-zero.

The values for the range are based on the result of
o.a.c.rng.simple.ProvidersCommonParametricTest.testZeroIntArraySeed.

See also the core module for tests using:
- RandomAssert.assertNextIntZeroOutput
- RandomAssert.assertIntArrayConstructorWithSingleBitInPoolIsFunctional

Any generator that fails these tests requires a non-zero seed. In most
cases this was set as the full seed length, or one less for generators
that do not use all the bits of the seed array (WELL_19937_x,
WELL_44497_x).

Notable exceptions:

The KISS generator is reduced to a simple LCG when positions [0, 3) are
all zero. Added a test to demonstrate this. With a zero seed the KISS
LCG passes testZeroIntArraySeed. To avoid a poor generator the seed will
be checked to be non-zero in [0, 3).

The MSWS generator is sensitive to the initial state. Added a test to
show that a zero seed creates zero output. Updating RandomAssert to add
an assertLongArrayConstructorWithSingleBitInPoolIsFunctional test shows
the MSWS fails with single bit seeds. The sub-range has been set to [2,
3) to ensure a non-zero Weyl increment which is the best way to escape a
bad seed. This is a functionally breaking change.

4 months agoFix typo
aherbert [Tue, 5 Apr 2022 12:26:23 +0000 (13:26 +0100)] 
Fix typo

4 months agoRNG-175: Fix MSWS createSeed(UniformRandomProvider) to handle a bad RNG
aherbert [Tue, 5 Apr 2022 12:26:04 +0000 (13:26 +0100)] 
RNG-175: Fix MSWS createSeed(UniformRandomProvider) to handle a bad RNG

The createSeed(UniformRandomProvider) method should generate a seed even
if the input RNG is non-functional. This fixes an infinite loop when the
RNG output is not suitably random to create a seed.

4 months agoRemove unused import
aherbert [Wed, 30 Mar 2022 12:09:45 +0000 (13:09 +0100)] 
Remove unused import

4 months agoSupport methods can be static
aherbert [Wed, 30 Mar 2022 11:40:01 +0000 (12:40 +0100)] 
Support methods can be static

4 months agoUpdate checkNextInRange to use a LongSupplier
aherbert [Wed, 30 Mar 2022 11:39:18 +0000 (12:39 +0100)] 
Update checkNextInRange to use a LongSupplier

The generic type <T extends Number> was used as a long value. The type
can be dropped to avoid auto-boxing for all generator tests.

Modified methods to static.

4 months agoCorrect isUniformNextByte test
aherbert [Wed, 30 Mar 2022 11:26:24 +0000 (12:26 +0100)] 
Correct isUniformNextByte test

Chi-square critical value should be for 255 degrees of freedom.

This lowers the critical value from 311.56 to 310.46. The test is now
harder to pass.

4 months agoConsistent error messages for nextInRange test
aherbert [Wed, 30 Mar 2022 11:06:45 +0000 (12:06 +0100)] 
Consistent error messages for nextInRange test

Port modifications from sampling ContinuousSamplerParametricTest to the
ProvidersCommonParametricTest in core and simple modules.

Updated the precision of the chi-square critical value.

Add failed chi-square values to the message.

Format failed chi-square values to 3 decimal places.

4 months agoConsolidate Int/LongProvider to use next() as the source of random bits
aherbert [Wed, 30 Mar 2022 10:10:37 +0000 (11:10 +0100)] 
Consolidate Int/LongProvider to use next() as the source of random bits

This removes the mixed use of next and nextLong or nextInt. The next
method is default source of the random bits and should always be used.

4 months agoRNG-173: BaseProvider static method to extend an input array seed
Alex Herbert [Mon, 28 Mar 2022 20:09:01 +0000 (21:09 +0100)] 
RNG-173: BaseProvider static method to extend an input array seed

4 months agoCorrect longAsInt output in the stress test application 105/head
aherbert [Tue, 29 Mar 2022 12:40:26 +0000 (13:40 +0100)] 
Correct longAsInt output in the stress test application

RNG-171 changed the cached int source to output a long as two ints using
the low 32-bits, then high 32-bits.

Updated the RngDataOutput to support HiLo or LoHi. Added tests for each
implementation.

Dropped high-bits and low-bits command options. Added source64 option
with enum for high, low, high-Low, low-high, long, int. The default for
stress testing matches the caching implementation.

Update the test documentation to reflect the changes.

4 months agoRNG-169: Avoid long to int[] that can generate a zero output seed.
aherbert [Mon, 28 Mar 2022 14:01:15 +0000 (15:01 +0100)] 
RNG-169: Avoid long to int[] that can generate a zero output seed.

This is relevant to small state RNGs with an int[] native seed such as
XoRoShiRo64StarStar.

4 months agoAdd missing <p> tags
aherbert [Wed, 23 Mar 2022 15:40:07 +0000 (15:40 +0000)] 
Add missing <p> tags

4 months agoFix trailing whitespace
Alex Herbert [Sun, 20 Mar 2022 21:45:31 +0000 (21:45 +0000)] 
Fix trailing whitespace

4 months agoDocument the lack of functional compatibility for derived output types.
Alex Herbert [Sun, 20 Mar 2022 21:36:01 +0000 (21:36 +0000)] 
Document the lack of functional compatibility for derived output types.

Only the reference output type (int/long) from the generator is required
to maintain functional compatibility.

4 months agoRNG-171: Reduce the memory footprint in cached boolean and int source
Alex Herbert [Sun, 20 Mar 2022 20:51:36 +0000 (20:51 +0000)] 
RNG-171: Reduce the memory footprint in cached boolean and int source

This change has a performance improvement on some JDKs.

Add a benchmark to compare the performance with and without the cache.

4 months agoRNG-172: Support power of 2 by lowering limit by 1
Alex Herbert [Fri, 18 Mar 2022 16:25:45 +0000 (16:25 +0000)] 
RNG-172: Support power of 2 by lowering limit by 1

This change has been made for completeness. In practice a different
sampler is used for powers of 2.

4 months agoRNG-172: Pre-compute rejection threshold
aherbert [Fri, 18 Mar 2022 14:46:48 +0000 (14:46 +0000)] 
RNG-172: Pre-compute rejection threshold

4 months agoUse Java 1.8 method to compute map value if absent
Alex Herbert [Thu, 17 Mar 2022 22:36:29 +0000 (22:36 +0000)] 
Use Java 1.8 method to compute map value if absent

4 months agoRNG-169: Track changes
Alex Herbert [Thu, 17 Mar 2022 22:19:05 +0000 (22:19 +0000)] 
RNG-169: Track changes

4 months agoRNG-169: Remove redundant Seed2ArrayConverter implementation
Alex Herbert [Thu, 17 Mar 2022 22:08:55 +0000 (22:08 +0000)] 
RNG-169: Remove redundant Seed2ArrayConverter implementation

The functionality has been moved to the Conversions class. This removes
unreleased public API methods from legacy convertor classes.

Add tests to ensure coverage for converter classes.

4 months agoFix PMD errors
Alex Herbert [Thu, 17 Mar 2022 21:57:19 +0000 (21:57 +0000)] 
Fix PMD errors

4 months agoRNG-169: Move array size conversions to Conversions class
Alex Herbert [Thu, 17 Mar 2022 21:54:45 +0000 (21:54 +0000)] 
RNG-169: Move array size conversions to Conversions class

4 months agoRNG-169: Move all conversions to the Conversions class
Alex Herbert [Thu, 17 Mar 2022 21:48:56 +0000 (21:48 +0000)] 
RNG-169: Move all conversions to the Conversions class

Remove use of instances of SeedConverter as the conversion is stateless.

4 months agoRNG-169: Expand primitive input seeds using a SplitMix64
Alex Herbert [Thu, 17 Mar 2022 09:26:14 +0000 (09:26 +0000)] 
RNG-169: Expand primitive input seeds using a SplitMix64

This changes behaviour so that

if int == long:
  int -> array1
  long -> array2
  array1 == array2

int -> array[0] == int -> long

4 months agoRNG-169: Avoid intermediate arrays during conversions
Alex Herbert [Thu, 17 Mar 2022 09:21:54 +0000 (09:21 +0000)] 
RNG-169: Avoid intermediate arrays during conversions

The following conversions now avoid intermediate arrays:

byte[] -> int
byte[] -> long
int[] -> long

Behaviour change:

int[] is now converted as if to long[] then to long. This avoids loss of
bits and changes the possible output seeds from 2^32 to 2^64.

4 months agoRNG-169: Update array seed conversion to use optimum seed length
aherbert [Wed, 16 Mar 2022 14:39:06 +0000 (14:39 +0000)] 
RNG-169: Update array seed conversion to use optimum seed length

Avoid duplication of the input byte[] to zero fill it to a length
modulus 4 or 8 for conversion by the NumberFactory.

During array to array conversions only convert the minimum of the
required number of bytes for the native seed type, or the number of
input bytes.

Change all array conversions to use little-endian byte order.

4 months agoRNG-170: Ensure nextBytes is consistent with JDK range checks
Alex Herbert [Wed, 16 Mar 2022 00:06:47 +0000 (00:06 +0000)] 
RNG-170: Ensure nextBytes is consistent with JDK range checks

Updated to match behaviour of System.arraycopy and JDK 9
Objects.checkFromIndexSize. This now allows:

nextBytes(new byte[0], 0, 0)
nextBytes(new byte[10], 10, 0)

Previously these would throw an exception.

4 months agoReturn the class type of the unrecognised seed.
aherbert [Tue, 15 Mar 2022 16:06:10 +0000 (16:06 +0000)] 
Return the class type of the unrecognised seed.

This avoids creating a message containing the string representation of
an Object. This may be a very large String, for example a BitSet.
fix

4 months agoUpdate NumberFactory to use parameterized/repeated tests
aherbert [Tue, 15 Mar 2022 15:12:23 +0000 (15:12 +0000)] 
Update NumberFactory to use parameterized/repeated tests

Add little-endian test for byte[] conversions.

Check all the test long/int values in nextBoolean.

5 months agoDocumentation typos
aherbert [Thu, 10 Mar 2022 13:12:24 +0000 (13:12 +0000)] 
Documentation typos

5 months agoAdd option to list a range of the RandomSource enum
aherbert [Thu, 10 Mar 2022 11:10:30 +0000 (11:10 +0000)] 
Add option to list a range of the RandomSource enum

5 months agoAdd missing generator name to example command
aherbert [Thu, 10 Mar 2022 10:20:57 +0000 (10:20 +0000)] 
Add missing generator name to example command

5 months agoAdd TSampler to continuous sampler performance JMH example
aherbert [Wed, 2 Mar 2022 13:41:27 +0000 (13:41 +0000)] 
Add TSampler to continuous sampler performance JMH example

5 months agoAdd example histogram of the TSampler output to the userguide.
aherbert [Wed, 2 Mar 2022 13:26:34 +0000 (13:26 +0000)] 
Add example histogram of the TSampler output to the userguide.

5 months agoAdd TSampler to example sampling application
aherbert [Wed, 2 Mar 2022 13:22:13 +0000 (13:22 +0000)] 
Add TSampler to example sampling application

5 months agoRNG-167: Sampling from a t-distribution
Alex Herbert [Wed, 2 Mar 2022 01:03:14 +0000 (01:03 +0000)] 
RNG-167: Sampling from a t-distribution

5 months agoUpdate chi-square test
Alex Herbert [Wed, 2 Mar 2022 00:01:11 +0000 (00:01 +0000)] 
Update chi-square test

Increase accuracy of the chi2 critical value.

Use String.format for the assertion message, including the chi2 critical
value.

5 months agoCompute p-value for the chi square test once.
Alex Herbert [Tue, 1 Mar 2022 23:58:32 +0000 (23:58 +0000)] 
Compute p-value for the chi square test once.

Use String.format for the assertion message.

9 months agoCache another constant in the large mean Poisson sampler
Alex Herbert [Sat, 23 Oct 2021 20:33:39 +0000 (21:33 +0100)] 
Cache another constant in the large mean Poisson sampler

This avoids evaluating a constant sqrt expression in the sampling loop.

9 months agoFormatting
Alex Herbert [Sat, 23 Oct 2021 11:56:20 +0000 (12:56 +0100)] 
Formatting

10 months agoCorrect javadoc for the bounds on the Poisson sampler mean
aherbert [Wed, 6 Oct 2021 17:10:17 +0000 (18:10 +0100)] 
Correct javadoc for the bounds on the Poisson sampler mean

10 months agoCorrect probability typo.
Alex Herbert [Sat, 2 Oct 2021 22:42:14 +0000 (23:42 +0100)] 
Correct probability typo.

10 months agoRNG-166: LogNormalSamplers to allow a negative mean.
Alex Herbert [Fri, 1 Oct 2021 18:29:35 +0000 (19:29 +0100)] 
RNG-166: LogNormalSamplers to allow a negative mean.

Changes:

- LogNormalSampler
- BoxNormalLogNormalSamplers

Also updated the constructor parameters from shape and scale to mu and
sigma. This matches the wikipedia reference and implementations in
Wolfram.

10 months agoRNG-165: Track changes
Alex Herbert [Fri, 1 Oct 2021 18:02:45 +0000 (19:02 +0100)] 
RNG-165: Track changes

10 months agoRNG-165: Allow a zero exponent in the Zipf sampler 103/head
aherbert [Wed, 29 Sep 2021 16:43:58 +0000 (17:43 +0100)] 
RNG-165: Allow a zero exponent in the Zipf sampler

10 months agoRNG-160: Use ternary operator to sort two long values
aherbert [Wed, 29 Sep 2021 15:52:06 +0000 (16:52 +0100)] 
RNG-160: Use ternary operator to sort two long values

This removes a 50:50 branch statement from concave overhang sampling.

10 months agoDirectly test the SamplerBase class
Alex Herbert [Sat, 18 Sep 2021 07:05:19 +0000 (08:05 +0100)] 
Directly test the SamplerBase class

There is no requirement to extend the class to access the pass-through
methods.

10 months agoAllow ziggurat sampling from only the overhangs in the performance test
aherbert [Thu, 16 Sep 2021 12:45:02 +0000 (13:45 +0100)] 
Allow ziggurat sampling from only the overhangs in the performance test

Add additional ternary variant for testing.

10 months agoFix javadoc mix up between convex and concave regions
aherbert [Thu, 16 Sep 2021 11:40:41 +0000 (12:40 +0100)] 
Fix javadoc mix up between convex and concave regions

10 months agoAdded ternary variations to the ziggurat benchmark
Alex Herbert [Wed, 15 Sep 2021 23:43:53 +0000 (00:43 +0100)] 
Added ternary variations to the ziggurat benchmark

10 months agoEnsure stream is closed using try-with-resources
Alex Herbert [Wed, 15 Sep 2021 22:37:57 +0000 (23:37 +0100)] 
Ensure stream is closed using try-with-resources

10 months agoRemove badges from examples README.md
aherbert [Tue, 14 Sep 2021 12:47:13 +0000 (13:47 +0100)] 
Remove badges from examples README.md

The badges do not relate to the examples code.

The build badge is for the main RNG modules. No check is made if the
examples code even builds.

The coverage badge is for the main RNG code. Coverage of the examples is
low to minimal and is not reported on.

10 months agoFix links for browsing the examples javadoc
aherbert [Tue, 14 Sep 2021 12:43:25 +0000 (13:43 +0100)] 
Fix links for browsing the examples javadoc

10 months agoRemove badges and maven dependency from the examples modules.
aherbert [Tue, 14 Sep 2021 12:34:49 +0000 (13:34 +0100)] 
Remove badges and maven dependency from the examples modules.

The examples are no longer released to maven central so badges for the
code or the javadoc are not applicable.

10 months agoUpdate Travis CI badge from .org to .com domain.
aherbert [Tue, 14 Sep 2021 12:26:43 +0000 (13:26 +0100)] 
Update Travis CI badge from .org to .com domain.

10 months agoUpdate note about sending e-mail from an apache.org account.
aherbert [Tue, 14 Sep 2021 12:17:29 +0000 (13:17 +0100)] 
Update note about sending e-mail from an apache.org account.

10 months agoCorrect javadoc
aherbert [Tue, 14 Sep 2021 10:53:45 +0000 (11:53 +0100)] 
Correct javadoc

10 months agoUpdate announce subject line in release guide
aherbert [Mon, 13 Sep 2021 15:24:10 +0000 (16:24 +0100)] 
Update announce subject line in release guide

10 months agoChange release notes to use new commons tag format
aherbert [Mon, 13 Sep 2021 12:20:28 +0000 (13:20 +0100)] 
Change release notes to use new commons tag format

Add note about how to modify the release notes during a release process.

10 months agoUpdate release notes following release 1.4
aherbert [Mon, 13 Sep 2021 11:52:01 +0000 (12:52 +0100)] 
Update release notes following release 1.4

10 months agoAdd release 1.4 javadoc links to the site.xml
aherbert [Mon, 13 Sep 2021 11:36:58 +0000 (12:36 +0100)] 
Add release 1.4 javadoc links to the site.xml

10 months agoUpdate examples app version to 1.5-SNAPSHOT
aherbert [Mon, 13 Sep 2021 10:33:19 +0000 (11:33 +0100)] 
Update examples app version to 1.5-SNAPSHOT

10 months agoUpdate release and BC version in parent pom
aherbert [Mon, 13 Sep 2021 10:32:04 +0000 (11:32 +0100)] 
Update release and BC version in parent pom

10 months agoUpdate README to refer to 1.4 release
aherbert [Mon, 13 Sep 2021 10:31:03 +0000 (11:31 +0100)] 
Update README to refer to 1.4 release

10 months agoUpdate pom to next development version (1.4 to 1.5)
aherbert [Mon, 13 Sep 2021 10:27:51 +0000 (11:27 +0100)] 
Update pom to next development version (1.4 to 1.5)

10 months agoRetrieve 1.4 release details from the release branch
aherbert [Mon, 13 Sep 2021 10:20:43 +0000 (11:20 +0100)] 
Retrieve 1.4 release details from the release branch

11 months agoUpdate javadoc.
aherbert [Tue, 7 Sep 2021 11:39:11 +0000 (12:39 +0100)] 
Update javadoc.

Correct description of new RandomSource.create(...) method where the
enum defines the concrete implementation, not the first argument to
create.

Move description of parallel applications to a sub-section. Add
description of parallel support from the jumpable generators with a code
example.

11 months agoPlace @since tags after @see tags following Oracle's order convension
aherbert [Mon, 6 Sep 2021 11:19:46 +0000 (12:19 +0100)] 
Place @since tags after @see tags following Oracle's order convension

11 months agoAdd @since tags to new RandomSource.create methods
aherbert [Mon, 6 Sep 2021 11:01:54 +0000 (12:01 +0100)] 
Add @since tags to new RandomSource.create methods

11 months agoDo not perform minimal site checkout in pre-site phase
Alex Herbert [Sun, 5 Sep 2021 13:50:08 +0000 (14:50 +0100)] 
Do not perform minimal site checkout in pre-site phase

This profile must now be explicitly activated.

11 months agoExclude site-content.README from rat check
Alex Herbert [Sun, 5 Sep 2021 13:34:55 +0000 (14:34 +0100)] 
Exclude site-content.README from rat check

Use the same excludes in the build and reporting section

11 months agoFix changes typo
Alex Herbert [Sun, 5 Sep 2021 13:32:40 +0000 (14:32 +0100)] 
Fix changes typo

11 months agoUpdate user guide dependencies to require Java 1.8
Alex Herbert [Sun, 5 Sep 2021 13:31:21 +0000 (14:31 +0100)] 
Update user guide dependencies to require Java 1.8

11 months agoFormat ziggurat tables
aherbert [Wed, 1 Sep 2021 15:33:27 +0000 (16:33 +0100)] 
Format ziggurat tables

The byte[] MAP is now initialized using (byte) casting.

11 months agoAdd ziggurat versions with multiple max epsilon values
aherbert [Tue, 31 Aug 2021 16:44:23 +0000 (17:44 +0100)] 
Add ziggurat versions with multiple max epsilon values

Correct exponential epsilon values to use the ceiling of the float value
before rounding to a long integer.

11 months agoUpdate grammar for conscious language checker
Alex Herbert [Sun, 29 Aug 2021 18:13:00 +0000 (19:13 +0100)] 
Update grammar for conscious language checker

11 months agoUpdate grammar for conscious language checker
Alex Herbert [Sun, 29 Aug 2021 18:05:25 +0000 (19:05 +0100)] 
Update grammar for conscious language checker

11 months agoUpdate grammar for conscious language checker
Alex Herbert [Sun, 29 Aug 2021 18:01:58 +0000 (19:01 +0100)] 
Update grammar for conscious language checker

11 months agoAdd more platform results for exp(z)
Alex Herbert [Sat, 28 Aug 2021 09:46:04 +0000 (10:46 +0100)] 
Add more platform results for exp(z)

11 months agoFix trailing spaces
Alex Herbert [Sat, 28 Aug 2021 09:16:17 +0000 (10:16 +0100)] 
Fix trailing spaces

11 months agoAdd performance test for exp(x) with x in [-8, 0]
Alex Herbert [Sat, 28 Aug 2021 09:13:04 +0000 (10:13 +0100)] 
Add performance test for exp(x) with x in [-8, 0]

11 months agoDisable tests in JMH module.
Alex Herbert [Fri, 27 Aug 2021 14:46:59 +0000 (15:46 +0100)] 
Disable tests in JMH module.

Add a better fixed seed with a note on how to test samplers using a
random seed.

11 months agoAdd performance test for extracting the sign bit
Alex Herbert [Fri, 27 Aug 2021 13:49:58 +0000 (14:49 +0100)] 
Add performance test for extracting the sign bit

Update tests requiring a fast generator to use a LCG. Only applicable
when the upper bits are required.

11 months agoRemove branch frequencies from performance variations
Alex Herbert [Fri, 27 Aug 2021 13:27:04 +0000 (14:27 +0100)] 
Remove branch frequencies from performance variations

The branch frequencies are the same as the main sampler. This eliminates
duplication and eases maintenance.

11 months agoParameterise the ziggurat sampler test
Alex Herbert [Fri, 27 Aug 2021 13:17:48 +0000 (14:17 +0100)] 
Parameterise the ziggurat sampler test

Duplicate the test in the JMH module. This ensures all variations
correctly sample the distribution, i.e. changes do not introduce errors
in the algorithm.

This identified an error in ModifiedZigguratExponentialSamplerRecursion.

11 months agoUpdate ziggurat performance benchmark to match main code
Alex Herbert [Fri, 27 Aug 2021 11:49:20 +0000 (12:49 +0100)] 
Update ziggurat performance benchmark to match main code

Naming conventions and comments have been updated to match those in the
main sampling package. This is for ease of maintenance.