Skip to content
forked from KilianB/pcg-java

PCG — Java Implementation. High quality fast random number generator

License

Notifications You must be signed in to change notification settings

sapayio/pcg-java

 
 

Repository files navigation

PCG Random Number Generation, Java Edition

Codacy Badge Codecov

PCG is a family of simple fast space-efficient statistically good algorithms for random number generation. Unlike many general-purpose RNGs, they are also hard to predict.

This implementation is based on Melissa E. O'Neill C code and paper PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation.

You are highly advised to check out her website for further information: www.pcg-random.org Java implementation featuring a 64 bit state RNG with 32 bit output.

Table taken from http://www.pcg-random.org/.

Features

  • High quality number generator
  • Thread safe
  • Quick advance and rewind allowing to reset the generator to a previous state or to skip the next k numbers
  • Calculate the distance between different generator instances
  • Extends the random interface to conveniently uses methods like Collection.sort
  • Allows to split instances like SplittableRandom

Note: The PCG family is not cryptographically secure!

Usage

  1. Either download the pre build jar files and add them to your build path manually
  2. Use Maven, gradle or ivy via jcenter and bintray
<repositories>
  <repository>
    <id>jcenter</id>
    <url>https://jcenter.bintray.com/</url>
  </repository>
</repositories>

<!-- Java 10 Version -->
<dependency>
  <groupId>com.github.kilianB</groupId>
  <artifactId>pcg-java-10</artifactId>
  <version>1.0.1</version>
</dependency>

<!-- Java 8 Version -->
<dependency>
  <groupId>com.github.kilianB</groupId>
  <artifactId>pcg-java-8</artifactId>
  <version>1.0.1</version>
</dependency>

Several different random number generators are bundled in this package. Pick one which suits your needs

// Uniquely seed
PcgRR rng = new PcgRR();

int randomInt = rng.nextInt();
int randomIntInRange = rng.nextInt(0,10);
double nextGaus = rng.nextGaus();
Exand additional features and examples.
/* Next to randomly setting the internal state (seeding) the pcg family also allows to select one of 
many streams which all follow a different random number sequence ensuring that internal stages 
never  converge between instance. */
long seed = 0;
long streamNumber = 0;
PcgRR rng = new PcgRR(seed,streamNumber);

/* This istance will produce the same output when generating a number but they don't share a
reference*/
PcgRR rngClone = rng.split();

rng.nextInt() == rngClone.nextInt() // TRUE

/* This instance does not share a state and has a different seed and stream number!*/
RngRR distinctRng = rng.splitDistinct();

//Distance
rngClone = rng.split();

for(int i = 0; i < 100; i++;){
    rng.nextInt();
}
rngClone.distance(rng)  // 100

//Rewind or fast skip x numbers
int randomInt = rng.nextInt()
rng.advance(-1) // rewind 1 step 
randomInt == rng.Next() // TRUE

Choose the correct generator

Generator Description Thread safety Notes
PcgRR Balance speed with statistical performance and reasonable security. See chapter 6.3.1 in the paper. Yes synchronization* Recommended for multi threaded use
PcgRS Instead of rotating the bits perform an implied shift. See chapter 6.3.2 in the paper. Slightly worse statistical performance** Yes synchronization* This generator is supposed to be faster due to performing a shift instead of rotating bits. But in benchmarks it performed slightly worse than the RR version. No real reason to pick this one over the RR at the moment.
PcgRSFast
  • Identical output to the PcgRS but drops synchronization
  • Manually inlined all method calls and use bit masking instead of casting where ever applicable
No! The go to instance when thread safety is not desired
PcgRSUFast
  • highest performance overall and identical code to the PcgRSFast but additionally uses static methods instead of local once
  • Does not extend java.util.Random
No! This is a more lets see how quick we can get approach instead of a reasonable class. Usually the PcgRSFast is preferable.
  • 3 separate implementations with different synchronization approaches were implemented and benchmarked with synchronization outperforming locks and cas instructions by far. ** when speaking about less statistical performance we are still way beyond everything generated by java random or mt!

Benchmark

Statistical and performance benchmarks were performed using pract rand and Oracle's jmh harness respectively

Statistical Quality (performed on nextInt only)

PractRand Test Suite

rng=PcgRSUFast stdin32, seed=Random
length= 64 gigabytes (2^36 bytes), time= 2351 seconds
  Test Name                         Raw       Processed     Evaluation
  BCFN(2+0,13-0,T)                  R=  +1.0  p = 0.335     normal           
  BCFN(2+1,13-0,T)                  R=  -2.7  p = 0.865     normal           
  BCFN(2+2,13-0,T)                  R=  +0.7  p = 0.386     normal           

Click here to expand the full report
rng=PcgRSUFast stdin32, seed=Random
length= 64 gigabytes (2^36 bytes), time= 2351 seconds
  Test Name                         Raw       Processed     Evaluation
  BCFN(2+0,13-0,T)                  R=  +1.0  p = 0.335     normal           
  BCFN(2+1,13-0,T)                  R=  -2.7  p = 0.865     normal           
  BCFN(2+2,13-0,T)                  R=  +0.7  p = 0.386     normal           
  BCFN(2+3,13-0,T)                  R=  +4.2  p = 0.044     normal           
  BCFN(2+4,13-0,T)                  R=  +1.2  p = 0.315     normal           
  BCFN(2+5,13-0,T)                  R=  -0.8  p = 0.627     normal           
  BCFN(2+6,13-0,T)                  R=  +1.8  p = 0.233     normal           
  BCFN(2+7,13-0,T)                  R=  -2.3  p = 0.824     normal           
  BCFN(2+8,13-1,T)                  R=  -1.9  p = 0.781     normal           
  BCFN(2+9,13-1,T)                  R=  -4.7  p = 0.976     normal           
  BCFN(2+10,13-2,T)                 R=  +3.5  p = 0.078     normal           
  BCFN(2+11,13-3,T)                 R=  +2.7  p = 0.136     normal           
  BCFN(2+12,13-3,T)                 R=  -3.7  p = 0.944     normal           
  BCFN(2+13,13-4,T)                 R=  -0.3  p = 0.532     normal           
  BCFN(2+14,13-5,T)                 R=  -0.4  p = 0.543     normal           
  BCFN(2+15,13-5,T)                 R=  +1.6  p = 0.236     normal           
  BCFN(2+16,13-6,T)                 R=  -0.2  p = 0.494     normal           
  BCFN(2+17,13-6,T)                 R=  +1.5  p = 0.243     normal           
  BCFN(2+18,13-7,T)                 R=  -2.0  p = 0.793     normal           
  BCFN(2+19,13-8,T)                 R=  -3.2  p = 0.960     normal           
  BCFN(2+20,13-8,T)                 R=  -3.1  p = 0.956     normal           
  BCFN(2+21,13-9,T)                 R=  -2.3  p = 0.891     normal           
  BCFN(2+22,13-9,T)                 R=  -2.1  p = 0.860     normal           
  DC6-9x1Bytes-1                    R=  +1.9  p = 0.191     normal           
  Gap-16:A                          R=  +0.5  p = 0.435     normal           
  Gap-16:B                          R=  +0.9  p = 0.270     normal           
  FPF-14+6/16:(0,14-0)              R=  +3.2  p = 0.014     normal           
  FPF-14+6/16:(1,14-0)              R=  -1.2  p = 0.806     normal           
  FPF-14+6/16:(2,14-0)              R=  -1.5  p = 0.861     normal           
  FPF-14+6/16:(3,14-0)              R=  -1.0  p = 0.751     normal           
  FPF-14+6/16:(4,14-0)              R=  +0.5  p = 0.356     normal           
  FPF-14+6/16:(5,14-0)              R=  +1.4  p = 0.158     normal           
  FPF-14+6/16:(6,14-0)              R=  -1.3  p = 0.825     normal           
  FPF-14+6/16:(7,14-0)              R=  -0.5  p = 0.638     normal           
  FPF-14+6/16:(8,14-0)              R=  -0.1  p = 0.538     normal           
  FPF-14+6/16:(9,14-0)              R=  -0.4  p = 0.609     normal           
  FPF-14+6/16:(10,14-0)             R=  +0.6  p = 0.331     normal           
  FPF-14+6/16:(11,14-0)             R=  +0.2  p = 0.433     normal           
  FPF-14+6/16:(12,14-1)             R=  +0.1  p = 0.467     normal           
  FPF-14+6/16:(13,14-2)             R=  +0.3  p = 0.421     normal           
  FPF-14+6/16:(14,14-2)             R=  +0.3  p = 0.427     normal           
  FPF-14+6/16:(15,14-3)             R=  +1.2  p = 0.198     normal           
  FPF-14+6/16:(16,14-4)             R=  +0.6  p = 0.336     normal           
  FPF-14+6/16:(17,14-5)             R=  -1.8  p = 0.904     normal           
  FPF-14+6/16:(18,14-5)             R=  -2.6  p = 0.973     normal           
  FPF-14+6/16:(19,14-6)             R=  +0.4  p = 0.380     normal           
  FPF-14+6/16:(20,14-7)             R=  -0.8  p = 0.713     normal           
  FPF-14+6/16:(21,14-8)             R=  +3.1  p = 0.023     normal           
  FPF-14+6/16:(22,14-8)             R=  +0.8  p = 0.281     normal           
  FPF-14+6/16:(23,14-9)             R=  +0.0  p = 0.464     normal           
  FPF-14+6/16:(24,14-10)            R=  -1.6  p = 0.888     normal           
  FPF-14+6/16:(25,14-11)            R=  -0.9  p = 0.694     normal           
  FPF-14+6/16:(26,14-11)            R=  -0.4  p = 0.539     normal           
  FPF-14+6/16:all                   R=  +0.1  p = 0.478     normal           
  FPF-14+6/16:cross                 R=  +1.4  p = 0.091     normal           
  BRank(12):128(16)                 R=  -0.1  p~= 0.520     normal           
  BRank(12):256(8)                  R=  -0.2  p~= 0.490     normal           
  BRank(12):384(2)                  R=  +1.6  p~= 0.168     normal           
  BRank(12):512(8)                  R=  +2.5  p~= 0.020     normal           
  BRank(12):768(2)                  R=  -0.2  p~= 0.554     normal           
  BRank(12):1K(4)                   R=  +0.4  p~= 0.340     normal           
  BRank(12):1536(1)                 R=  -0.7  p~= 0.689     normal           
  BRank(12):2K(4)                   R=  +1.7  p~= 0.060     normal           
  BRank(12):3K(1)                   R=  +1.8  p~= 0.146     normal           
  BRank(12):4K(2)                   R=  -0.2  p~= 0.554     normal           
  BRank(12):6K(1)                   R=  -0.7  p~= 0.689     normal           
  BRank(12):8K(2)                   R=  +0.8  p~= 0.293     normal           
  BRank(12):12K(1)                  R=  -0.7  p~= 0.689     normal           
  mod3n(5):(0,9-0)                  R=  -2.8  p = 0.921     normal           
  mod3n(5):(1,9-0)                  R=  +0.7  p = 0.369     normal           
  mod3n(5):(2,9-0)                  R=  -0.9  p = 0.675     normal           
  mod3n(5):(3,9-0)                  R=  +0.6  p = 0.388     normal           
  mod3n(5):(4,9-0)                  R=  +0.5  p = 0.408     normal           
  mod3n(5):(5,9-0)                  R=  +2.0  p = 0.166     normal           
  mod3n(5):(6,9-0)                  R=  -1.2  p = 0.721     normal           
  mod3n(5):(7,9-0)                  R=  -1.2  p = 0.727     normal           
  mod3n(5):(8,9-1)                  R=  -1.0  p = 0.696     normal           
  mod3n(5):(9,9-1)                  R=  +1.1  p = 0.292     normal           
  mod3n(5):(10,9-2)                 R=  -1.9  p = 0.829     normal           
  mod3n(5):(11,9-2)                 R=  +1.8  p = 0.187     normal           
  mod3n(5):(12,9-3)                 R=  -0.3  p = 0.556     normal           
  mod3n(5):(13,9-3)                 R=  +1.3  p = 0.255     normal           
  mod3n(5):(14,9-4)                 R=  +0.1  p = 0.468     normal           
  mod3n(5):(15,9-4)                 R=  +1.5  p = 0.216     normal           
  TMFn(2+0):wl                      R=  -0.2  p~= 0.5       normal           
  TMFn(2+1):wl                      R=  +0.2  p~= 0.5       normal           
  TMFn(2+2):wl                      R=  -1.3  p~= 0.7       normal           
  TMFn(2+3):wl                      R=  +0.7  p~= 0.4       normal           
  TMFn(2+4):wl                      R=  +1.8  p~= 0.3       normal           
  TMFn(2+5):wl                      R=  +0.8  p~= 0.4       normal           
  TMFn(2+6):wl                      R=  +1.9  p~= 0.3       normal           
  TMFn(2+7):wl                      R=  +2.2  p~= 0.2       normal           
  TMFn(2+8):wl                      R=  -0.9  p~= 0.6       normal           
  TMFn(2+9):wl                      R=  +1.2  p~= 0.3       normal           
  TMFn(2+10):wl                     R=  +1.5  p~= 0.3       normal           
  TMFn(2+11):wl                     R=  +5.2  p~= 0.08      normal           
  [Low1/8]BCFN(2+0,13-0,T)          R=  +1.8  p = 0.232     normal           
  [Low1/8]BCFN(2+1,13-0,T)          R=  +2.0  p = 0.205     normal           
  [Low1/8]BCFN(2+2,13-0,T)          R=  -0.0  p = 0.500     normal           
  [Low1/8]BCFN(2+3,13-0,T)          R=  -1.0  p = 0.657     normal           
  [Low1/8]BCFN(2+4,13-0,T)          R=  +0.7  p = 0.390     normal           
  [Low1/8]BCFN(2+5,13-1,T)          R=  +1.3  p = 0.299     normal           
  [Low1/8]BCFN(2+6,13-1,T)          R=  +1.6  p = 0.248     normal           
  [Low1/8]BCFN(2+7,13-2,T)          R=  +2.7  p = 0.134     normal           
  [Low1/8]BCFN(2+8,13-3,T)          R=  +0.7  p = 0.377     normal           
  [Low1/8]BCFN(2+9,13-3,T)          R=  -3.1  p = 0.903     normal           
  [Low1/8]BCFN(2+10,13-4,T)         R=  -2.5  p = 0.854     normal           
  [Low1/8]BCFN(2+11,13-5,T)         R=  -3.1  p = 0.910     normal           
  [Low1/8]BCFN(2+12,13-5,T)         R=  +3.3  p = 0.095     normal           
  [Low1/8]BCFN(2+13,13-6,T)         R=  -2.8  p = 0.892     normal           
  [Low1/8]BCFN(2+14,13-6,T)         R=  +1.2  p = 0.281     normal           
  [Low1/8]BCFN(2+15,13-7,T)         R=  +1.2  p = 0.277     normal           
  [Low1/8]BCFN(2+16,13-8,T)         R=  +0.8  p = 0.305     normal           
  [Low1/8]BCFN(2+17,13-8,T)         R=  +0.8  p = 0.311     normal           
  [Low1/8]BCFN(2+18,13-9,T)         R=  -2.4  p = 0.908     normal           
  [Low1/8]BCFN(2+19,13-9,T)         R=  +0.4  p = 0.339     normal           
  [Low1/8]DC6-9x1Bytes-1            R=  +0.8  p = 0.401     normal           
  [Low1/8]Gap-16:A                  R=  -0.7  p = 0.746     normal           
  [Low1/8]Gap-16:B                  R=  -0.2  p = 0.556     normal           
  [Low1/8]FPF-14+6/16:(0,14-0)      R=  +1.1  p = 0.224     normal           
  [Low1/8]FPF-14+6/16:(1,14-0)      R=  -1.9  p = 0.911     normal           
  [Low1/8]FPF-14+6/16:(2,14-0)      R=  -1.7  p = 0.889     normal           
  [Low1/8]FPF-14+6/16:(3,14-0)      R=  +0.4  p = 0.398     normal           
  [Low1/8]FPF-14+6/16:(4,14-0)      R=  +2.1  p = 0.069     normal           
  [Low1/8]FPF-14+6/16:(5,14-0)      R=  -0.4  p = 0.601     normal           
  [Low1/8]FPF-14+6/16:(6,14-0)      R=  +2.2  p = 0.062     normal           
  [Low1/8]FPF-14+6/16:(7,14-0)      R=  +0.5  p = 0.359     normal           
  [Low1/8]FPF-14+6/16:(8,14-0)      R=  -0.5  p = 0.631     normal           
  [Low1/8]FPF-14+6/16:(9,14-1)      R=  -2.3  p = 0.949     normal           
  [Low1/8]FPF-14+6/16:(10,14-2)     R=  -0.6  p = 0.675     normal           
  [Low1/8]FPF-14+6/16:(11,14-2)     R=  -1.4  p = 0.843     normal           
  [Low1/8]FPF-14+6/16:(12,14-3)     R=  -0.5  p = 0.630     normal           
  [Low1/8]FPF-14+6/16:(13,14-4)     R=  -0.6  p = 0.655     normal           
  [Low1/8]FPF-14+6/16:(14,14-5)     R=  +0.2  p = 0.443     normal           
  [Low1/8]FPF-14+6/16:(15,14-5)     R=  -0.7  p = 0.698     normal           
  [Low1/8]FPF-14+6/16:(16,14-6)     R=  -0.1  p = 0.530     normal           
  [Low1/8]FPF-14+6/16:(17,14-7)     R=  -1.5  p = 0.854     normal           
  [Low1/8]FPF-14+6/16:(18,14-8)     R=  +1.0  p = 0.223     normal           
  [Low1/8]FPF-14+6/16:(19,14-8)     R=  -1.1  p = 0.778     normal           
  [Low1/8]FPF-14+6/16:(20,14-9)     R=  +0.9  p = 0.252     normal           
  [Low1/8]FPF-14+6/16:(21,14-10)    R=  -0.2  p = 0.522     normal           
  [Low1/8]FPF-14+6/16:(22,14-11)    R=  +0.4  p = 0.340     normal           
  [Low1/8]FPF-14+6/16:(23,14-11)    R=  +1.7  p = 0.116     normal           
  [Low1/8]FPF-14+6/16:all           R=  -0.4  p = 0.615     normal           
  [Low1/8]FPF-14+6/16:cross         R=  -0.3  p = 0.565     normal           
  [Low1/8]BRank(12):128(8)          R=  +1.5  p~= 0.080     normal           
  [Low1/8]BRank(12):256(8)          R=  -0.7  p~= 0.670     normal           
  [Low1/8]BRank(12):384(2)          R=  +0.8  p~= 0.293     normal           
  [Low1/8]BRank(12):512(4)          R=  -0.8  p~= 0.670     normal           
  [Low1/8]BRank(12):768(1)          R=  +0.4  p~= 0.366     normal           
  [Low1/8]BRank(12):1K(4)           R=  -1.4  p~= 0.890     normal           
  [Low1/8]BRank(12):1536(1)         R=  -0.7  p~= 0.689     normal           
  [Low1/8]BRank(12):2K(2)           R=  -0.2  p~= 0.554     normal           
  [Low1/8]BRank(12):3K(1)           R=  +0.4  p~= 0.366     normal           
  [Low1/8]BRank(12):4K(2)           R=  -1.0  p~= 0.744     normal           
  [Low1/8]BRank(12):6K(1)           R=  -0.7  p~= 0.689     normal           
  [Low1/8]mod3n(5):(0,9-0)          R=  +1.0  p = 0.303     normal           
  [Low1/8]mod3n(5):(1,9-0)          R=  -2.1  p = 0.849     normal           
  [Low1/8]mod3n(5):(2,9-0)          R=  +3.5  p = 0.044     normal           
  [Low1/8]mod3n(5):(3,9-0)          R=  -0.4  p = 0.577     normal           
  [Low1/8]mod3n(5):(4,9-0)          R=  +0.4  p = 0.421     normal           
  [Low1/8]mod3n(5):(5,9-1)          R=  +1.0  p = 0.306     normal           
  [Low1/8]mod3n(5):(6,9-1)          R=  -1.1  p = 0.712     normal           
  [Low1/8]mod3n(5):(7,9-2)          R=  -1.6  p = 0.790     normal           
  [Low1/8]mod3n(5):(8,9-2)          R=  -1.4  p = 0.756     normal           
  [Low1/8]mod3n(5):(9,9-3)          R=  -2.8  p = 0.926     normal           
  [Low1/8]mod3n(5):(10,9-3)         R=  -0.0  p = 0.494     normal           
  [Low1/8]mod3n(5):(11,9-4)         R=  -0.2  p = 0.530     normal           
  [Low1/8]mod3n(5):(12,9-4)         R=  +3.5  p = 0.047     normal           
  [Low1/8]mod3n(5):(13,9-5)         R=  +2.5  p = 0.108     normal           
  [Low1/8]mod3n(5):(14,9-5)         R=  -1.8  p = 0.830     normal           
  [Low1/8]mod3n(5):(15,9-6)         R=  +3.7  p = 0.042     normal           
  [Low1/8]TMFn(2+0):wl              R=  -2.0  p~= 0.7       normal           
  [Low1/8]TMFn(2+1):wl              R=  -1.5  p~= 0.7       normal           
  [Low1/8]TMFn(2+2):wl              R=  -3.7  p~= 0.9       normal           
  [Low1/8]TMFn(2+3):wl              R=  -3.4  p~= 0.8       normal           
  [Low1/8]TMFn(2+4):wl              R=  -0.2  p~= 0.5       normal           
  [Low1/8]TMFn(2+5):wl              R=  +0.6  p~= 0.4       normal           
  [Low1/8]TMFn(2+6):wl              R=  +0.3  p~= 0.4       normal           
  [Low1/8]TMFn(2+7):wl              R=  -0.1  p~= 0.5       normal           
  [Low1/8]TMFn(2+8):wl              R=  +2.3  p~= 0.2       normal           
  [Low1/16]BCFN(2+0,13-0,T)         R=  +0.9  p = 0.356     normal           
  [Low1/16]BCFN(2+1,13-0,T)         R=  +0.9  p = 0.360     normal           
  [Low1/16]BCFN(2+2,13-0,T)         R=  +0.4  p = 0.435     normal           
  [Low1/16]BCFN(2+3,13-0,T)         R=  +4.1  p = 0.050     normal           
  [Low1/16]BCFN(2+4,13-1,T)         R=  -0.6  p = 0.587     normal           
  [Low1/16]BCFN(2+5,13-1,T)         R=  +0.3  p = 0.450     normal           
  [Low1/16]BCFN(2+6,13-2,T)         R=  +1.5  p = 0.261     normal           
  [Low1/16]BCFN(2+7,13-3,T)         R=  +6.2  p =  9.3e-3   normal           
  [Low1/16]BCFN(2+8,13-3,T)         R=  -0.6  p = 0.581     normal           
  [Low1/16]BCFN(2+9,13-4,T)         R=  +1.4  p = 0.269     normal           
  [Low1/16]BCFN(2+10,13-5,T)        R=  -2.0  p = 0.795     normal           
  [Low1/16]BCFN(2+11,13-5,T)        R=  +1.6  p = 0.239     normal           
  [Low1/16]BCFN(2+12,13-6,T)        R=  -0.7  p = 0.577     normal           
  [Low1/16]BCFN(2+13,13-6,T)        R=  -0.3  p = 0.517     normal           
  [Low1/16]BCFN(2+14,13-7,T)        R=  +0.4  p = 0.381     normal           
  [Low1/16]BCFN(2+15,13-8,T)        R=  +0.5  p = 0.359     normal           
  [Low1/16]BCFN(2+16,13-8,T)        R=  +2.8  p = 0.116     normal           
  [Low1/16]BCFN(2+17,13-9,T)        R=  +0.6  p = 0.314     normal           
  [Low1/16]BCFN(2+18,13-9,T)        R=  +1.0  p = 0.263     normal           
  [Low1/16]DC6-9x1Bytes-1           R=  -2.5  p = 0.942     normal           
  [Low1/16]Gap-16:A                 R=  -2.1  p = 0.957     normal           
  [Low1/16]Gap-16:B                 R=  -0.2  p = 0.551     normal           
  [Low1/16]FPF-14+6/16:(0,14-0)     R=  -0.2  p = 0.566     normal           
  [Low1/16]FPF-14+6/16:(1,14-0)     R=  -1.3  p = 0.828     normal           
  [Low1/16]FPF-14+6/16:(2,14-0)     R=  +2.1  p = 0.075     normal           
  [Low1/16]FPF-14+6/16:(3,14-0)     R=  +0.9  p = 0.263     normal           
  [Low1/16]FPF-14+6/16:(4,14-0)     R=  -1.2  p = 0.811     normal           
  [Low1/16]FPF-14+6/16:(5,14-0)     R=  -1.5  p = 0.863     normal           
  [Low1/16]FPF-14+6/16:(6,14-0)     R=  -0.0  p = 0.505     normal           
  [Low1/16]FPF-14+6/16:(7,14-0)     R=  -0.3  p = 0.592     normal           
  [Low1/16]FPF-14+6/16:(8,14-1)     R=  +2.2  p = 0.062     normal           
  [Low1/16]FPF-14+6/16:(9,14-2)     R=  +1.7  p = 0.120     normal           
  [Low1/16]FPF-14+6/16:(10,14-2)    R=  -1.3  p = 0.815     normal           
  [Low1/16]FPF-14+6/16:(11,14-3)    R=  +0.5  p = 0.363     normal           
  [Low1/16]FPF-14+6/16:(12,14-4)    R=  +2.4  p = 0.047     normal           
  [Low1/16]FPF-14+6/16:(13,14-5)    R=  -2.1  p = 0.939     normal           
  [Low1/16]FPF-14+6/16:(14,14-5)    R=  +1.9  p = 0.092     normal           
  [Low1/16]FPF-14+6/16:(15,14-6)    R=  -0.1  p = 0.520     normal           
  [Low1/16]FPF-14+6/16:(16,14-7)    R=  +0.1  p = 0.455     normal           
  [Low1/16]FPF-14+6/16:(17,14-8)    R=  -0.7  p = 0.690     normal           
  [Low1/16]FPF-14+6/16:(18,14-8)    R=  -1.3  p = 0.815     normal           
  [Low1/16]FPF-14+6/16:(19,14-9)    R=  +2.5  p = 0.054     normal           
  [Low1/16]FPF-14+6/16:(20,14-10)   R=  +1.5  p = 0.141     normal           
  [Low1/16]FPF-14+6/16:(21,14-11)   R=  -1.4  p = 0.866     normal           
  [Low1/16]FPF-14+6/16:(22,14-11)   R=  -0.3  p = 0.523     normal           
  [Low1/16]FPF-14+6/16:all          R=  +0.3  p = 0.438     normal           
  [Low1/16]FPF-14+6/16:cross        R=  +2.6  p = 0.014     normal           
  [Low1/16]BRank(12):128(8)         R=  -0.3  p~= 0.500     normal           
  [Low1/16]BRank(12):256(4)         R=  +2.2  p~= 0.030     normal           
  [Low1/16]BRank(12):384(2)         R=  -1.0  p~= 0.744     normal           
  [Low1/16]BRank(12):512(4)         R=  -0.8  p~= 0.670     normal           
  [Low1/16]BRank(12):768(1)         R=  -0.7  p~= 0.689     normal           
  [Low1/16]BRank(12):1K(2)          R=  -1.0  p~= 0.744     normal           
  [Low1/16]BRank(12):1536(1)        R=  -0.7  p~= 0.689     normal           
  [Low1/16]BRank(12):2K(2)          R=  -0.2  p~= 0.554     normal           
  [Low1/16]BRank(12):3K(1)          R=  -0.7  p~= 0.689     normal           
  [Low1/16]BRank(12):4K(1)          R=  +0.4  p~= 0.366     normal           
  [Low1/16]mod3n(5):(0,9-0)         R=  -1.6  p = 0.792     normal           
  [Low1/16]mod3n(5):(1,9-0)         R=  +2.2  p = 0.134     normal           
  [Low1/16]mod3n(5):(2,9-0)         R=  +2.0  p = 0.163     normal           
  [Low1/16]mod3n(5):(3,9-0)         R=  -3.5  p = 0.962     normal           
  [Low1/16]mod3n(5):(4,9-1)         R=  -4.4  p = 0.987     normal           
  [Low1/16]mod3n(5):(5,9-1)         R=  +1.3  p = 0.262     normal           
  [Low1/16]mod3n(5):(6,9-2)         R=  +1.1  p = 0.287     normal           
  [Low1/16]mod3n(5):(7,9-2)         R=  -1.6  p = 0.794     normal           
  [Low1/16]mod3n(5):(8,9-3)         R=  -4.5  p =1-7.5e-3   normal           
  [Low1/16]mod3n(5):(9,9-3)         R=  -1.8  p = 0.811     normal           
  [Low1/16]mod3n(5):(10,9-4)        R=  +0.3  p = 0.423     normal           
  [Low1/16]mod3n(5):(11,9-4)        R=  +2.2  p = 0.132     normal           
  [Low1/16]mod3n(5):(12,9-5)        R=  -2.1  p = 0.871     normal           
  [Low1/16]mod3n(5):(13,9-5)        R=  +0.2  p = 0.434     normal           
  [Low1/16]mod3n(5):(14,9-6)        R=  -1.3  p = 0.729     normal           
  [Low1/16]mod3n(5):(15,9-6)        R=  -2.1  p = 0.893     normal           
  [Low1/16]TMFn(2+0):wl             R=  +3.2  p~= 0.2       normal           
  [Low1/16]TMFn(2+1):wl             R=  +0.3  p~= 0.4       normal           
  [Low1/16]TMFn(2+2):wl             R=  -0.9  p~= 0.6       normal           
  [Low1/16]TMFn(2+3):wl             R=  +1.0  p~= 0.4       normal           
  [Low1/16]TMFn(2+4):wl             R=  -1.2  p~= 0.7       normal           
  [Low1/16]TMFn(2+5):wl             R=  -2.9  p~= 0.8       normal           
  [Low1/16]TMFn(2+6):wl             R=  +0.2  p~= 0.5       normal           
  [Low1/16]TMFn(2+7):wl             R=  +1.0  p~= 0.4       normal           
  [Low1/32]BCFN(2+0,13-0,T)         R=  +2.2  p = 0.184     normal           
  [Low1/32]BCFN(2+1,13-0,T)         R=  +4.8  p = 0.028     normal           
  [Low1/32]BCFN(2+2,13-1,T)         R=  +0.7  p = 0.376     normal           
  [Low1/32]BCFN(2+3,13-1,T)         R=  -3.3  p = 0.914     normal           
  [Low1/32]BCFN(2+4,13-1,T)         R=  -2.2  p = 0.817     normal           
  [Low1/32]BCFN(2+5,13-2,T)         R=  -1.4  p = 0.706     normal           
  [Low1/32]BCFN(2+6,13-3,T)         R=  -0.2  p = 0.522     normal           
  [Low1/32]BCFN(2+7,13-3,T)         R=  -1.8  p = 0.769     normal           
  [Low1/32]BCFN(2+8,13-4,T)         R=  +1.7  p = 0.236     normal           
  [Low1/32]BCFN(2+9,13-5,T)         R=  +0.5  p = 0.399     normal           
  [Low1/32]BCFN(2+10,13-5,T)        R=  +3.0  p = 0.113     normal           
  [Low1/32]BCFN(2+11,13-6,T)        R=  -1.2  p = 0.675     normal           
  [Low1/32]BCFN(2+12,13-6,T)        R=  +3.3  p = 0.094     normal           
  [Low1/32]BCFN(2+13,13-7,T)        R=  +7.2  p =  8.3e-3   normal           
  [Low1/32]BCFN(2+14,13-8,T)        R=  +6.1  p = 0.018     normal           
  [Low1/32]BCFN(2+15,13-8,T)        R=  +8.5  p =  4.5e-3   normal           
  [Low1/32]BCFN(2+16,13-9,T)        R= +12.7  p =  5.8e-4   normal           
  [Low1/32]BCFN(2+17,13-9,T)        R=  +6.1  p = 0.019     normal           
  [Low1/32]DC6-9x1Bytes-1           R=  +2.8  p = 0.116     normal           
  [Low1/32]Gap-16:A                 R=  +0.7  p = 0.415     normal           
  [Low1/32]Gap-16:B                 R=  -1.2  p = 0.802     normal           
  [Low1/32]FPF-14+6/16:(0,14-0)     R=  -1.2  p = 0.795     normal           
  [Low1/32]FPF-14+6/16:(1,14-0)     R=  +0.4  p = 0.394     normal           
  [Low1/32]FPF-14+6/16:(2,14-0)     R=  -3.0  p = 0.984     normal           
  [Low1/32]FPF-14+6/16:(3,14-0)     R=  +0.6  p = 0.338     normal           
  [Low1/32]FPF-14+6/16:(4,14-0)     R=  -1.2  p = 0.795     normal           
  [Low1/32]FPF-14+6/16:(5,14-0)     R=  -0.8  p = 0.712     normal           
  [Low1/32]FPF-14+6/16:(6,14-0)     R=  +1.0  p = 0.239     normal           
  [Low1/32]FPF-14+6/16:(7,14-1)     R=  +0.8  p = 0.289     normal           
  [Low1/32]FPF-14+6/16:(8,14-2)     R=  +2.0  p = 0.079     normal           
  [Low1/32]FPF-14+6/16:(9,14-2)     R=  +0.7  p = 0.323     normal           
  [Low1/32]FPF-14+6/16:(10,14-3)    R=  +0.9  p = 0.262     normal           
  [Low1/32]FPF-14+6/16:(11,14-4)    R=  +0.6  p = 0.342     normal           
  [Low1/32]FPF-14+6/16:(12,14-5)    R=  -1.1  p = 0.782     normal           
  [Low1/32]FPF-14+6/16:(13,14-5)    R=  -2.4  p = 0.959     normal           
  [Low1/32]FPF-14+6/16:(14,14-6)    R=  +2.7  p = 0.034     normal           
  [Low1/32]FPF-14+6/16:(15,14-7)    R=  -0.2  p = 0.543     normal           
  [Low1/32]FPF-14+6/16:(16,14-8)    R=  -0.9  p = 0.724     normal           
  [Low1/32]FPF-14+6/16:(17,14-8)    R=  -0.9  p = 0.734     normal           
  [Low1/32]FPF-14+6/16:(18,14-9)    R=  -0.4  p = 0.580     normal           
  [Low1/32]FPF-14+6/16:(19,14-10)   R=  +0.4  p = 0.358     normal           
  [Low1/32]FPF-14+6/16:(20,14-11)   R=  +0.6  p = 0.296     normal           
  [Low1/32]FPF-14+6/16:(21,14-11)   R=  -1.0  p = 0.730     normal           
  [Low1/32]FPF-14+6/16:all          R=  -0.8  p = 0.730     normal           
  [Low1/32]FPF-14+6/16:cross        R=  -0.7  p = 0.736     normal           
  [Low1/32]BRank(12):128(8)         R=  -1.9  p~= 0.990     normal           
  [Low1/32]BRank(12):256(4)         R=  -0.1  p~= 0.490     normal           
  [Low1/32]BRank(12):384(2)         R=  -0.2  p~= 0.554     normal           
  [Low1/32]BRank(12):512(4)         R=  +0.4  p~= 0.340     normal           
  [Low1/32]BRank(12):768(1)         R=  +1.8  p~= 0.146     normal           
  [Low1/32]BRank(12):1K(2)          R=  -0.2  p~= 0.554     normal           
  [Low1/32]BRank(12):1536(1)        R=  -0.7  p~= 0.689     normal           
  [Low1/32]BRank(12):2K(2)          R=  -0.2  p~= 0.554     normal           
  [Low1/32]BRank(12):3K(1)          R=  -0.7  p~= 0.689     normal           
  [Low1/32]BRank(12):4K(1)          R=  +0.4  p~= 0.366     normal           
  [Low1/32]mod3n(5):(0,9-0)         R=  -2.2  p = 0.861     normal           
  [Low1/32]mod3n(5):(1,9-0)         R=  +2.0  p = 0.165     normal           
  [Low1/32]mod3n(5):(2,9-0)         R=  -1.9  p = 0.834     normal           
  [Low1/32]mod3n(5):(3,9-1)         R=  -0.2  p = 0.544     normal           
  [Low1/32]mod3n(5):(4,9-1)         R=  +2.2  p = 0.140     normal           
  [Low1/32]mod3n(5):(5,9-2)         R=  -2.8  p = 0.920     normal           
  [Low1/32]mod3n(5):(6,9-2)         R=  -2.1  p = 0.860     normal           
  [Low1/32]mod3n(5):(7,9-3)         R=  +0.2  p = 0.443     normal           
  [Low1/32]mod3n(5):(8,9-3)         R=  +2.4  p = 0.114     normal           
  [Low1/32]mod3n(5):(9,9-4)         R=  -1.9  p = 0.832     normal           
  [Low1/32]mod3n(5):(10,9-4)        R=  -0.2  p = 0.515     normal           
  [Low1/32]mod3n(5):(11,9-5)        R=  +1.6  p = 0.194     normal           
  [Low1/32]mod3n(5):(12,9-5)        R=  +0.7  p = 0.322     normal           
  [Low1/32]mod3n(5):(13,9-6)        R=  -1.8  p = 0.846     normal           
  [Low1/32]mod3n(5):(14,9-6)        R=  -1.2  p = 0.719     normal           
  [Low1/32]mod3n(5):(15,9-6)        R=  -2.0  p = 0.882     normal           
  [Low1/32]TMFn(2+0):wl             R=  +1.5  p~= 0.3       normal           
  [Low1/32]TMFn(2+1):wl             R=  +0.3  p~= 0.5       normal           
  [Low1/32]TMFn(2+2):wl             R=  +1.2  p~= 0.3       normal           
  [Low1/32]TMFn(2+3):wl             R=  -2.9  p~= 0.8       normal           
  [Low1/32]TMFn(2+4):wl             R=  +0.1  p~= 0.5       normal           
  [Low1/32]TMFn(2+5):wl             R=  -0.0  p~= 0.5       normal           
  [Low1/32]TMFn(2+6):wl             R=  +1.2  p~= 0.3       normal           
  [Low1/64]BCFN(2+0,13-1,T)         R=  +3.9  p = 0.060     normal           
  [Low1/64]BCFN(2+1,13-1,T)         R=  +1.8  p = 0.223     normal           
  [Low1/64]BCFN(2+2,13-1,T)         R=  -0.8  p = 0.623     normal           
  [Low1/64]BCFN(2+3,13-1,T)         R=  -2.5  p = 0.846     normal           
  [Low1/64]BCFN(2+4,13-2,T)         R=  +2.1  p = 0.192     normal           
  [Low1/64]BCFN(2+5,13-3,T)         R=  +2.7  p = 0.133     normal           
  [Low1/64]BCFN(2+6,13-3,T)         R=  -0.5  p = 0.569     normal           
  [Low1/64]BCFN(2+7,13-4,T)         R=  +2.8  p = 0.125     normal           
  [Low1/64]BCFN(2+8,13-5,T)         R=  -1.5  p = 0.721     normal           
  [Low1/64]BCFN(2+9,13-5,T)         R=  +6.2  p = 0.012     normal           
  [Low1/64]BCFN(2+10,13-6,T)        R=  +6.0  p = 0.016     normal           
  [Low1/64]BCFN(2+11,13-6,T)        R=  +0.7  p = 0.352     normal           
  [Low1/64]BCFN(2+12,13-7,T)        R=  +7.0  p =  9.3e-3   normal           
  [Low1/64]BCFN(2+13,13-8,T)        R=  +4.7  p = 0.042     normal           
  [Low1/64]BCFN(2+14,13-8,T)        R=  +7.2  p =  9.6e-3   normal           
  [Low1/64]BCFN(2+15,13-9,T)        R=  +6.4  p = 0.017     normal           
  [Low1/64]BCFN(2+16,13-9,T)        R=  +3.7  p = 0.068     normal           
  [Low1/64]DC6-9x1Bytes-1           R=  +1.7  p = 0.258     normal           
  [Low1/64]Gap-16:A                 R=  +3.0  p = 0.038     normal           
  [Low1/64]Gap-16:B                 R=  +3.0  p = 0.018     normal           
  [Low1/64]FPF-14+6/16:(0,14-0)     R=  -0.3  p = 0.580     normal           
  [Low1/64]FPF-14+6/16:(1,14-0)     R=  +1.6  p = 0.130     normal           
  [Low1/64]FPF-14+6/16:(2,14-0)     R=  -0.3  p = 0.596     normal           
  [Low1/64]FPF-14+6/16:(3,14-0)     R=  +0.5  p = 0.370     normal           
  [Low1/64]FPF-14+6/16:(4,14-0)     R=  -1.8  p = 0.897     normal           
  [Low1/64]FPF-14+6/16:(5,14-0)     R=  -0.5  p = 0.627     normal           
  [Low1/64]FPF-14+6/16:(6,14-1)     R=  -0.3  p = 0.580     normal           
  [Low1/64]FPF-14+6/16:(7,14-2)     R=  +1.3  p = 0.191     normal           
  [Low1/64]FPF-14+6/16:(8,14-2)     R=  -0.6  p = 0.674     normal           
  [Low1/64]FPF-14+6/16:(9,14-3)     R=  -1.9  p = 0.913     normal           
  [Low1/64]FPF-14+6/16:(10,14-4)    R=  +2.2  p = 0.062     normal           
  [Low1/64]FPF-14+6/16:(11,14-5)    R=  -1.5  p = 0.864     normal           
  [Low1/64]FPF-14+6/16:(12,14-5)    R=  -1.6  p = 0.870     normal           
  [Low1/64]FPF-14+6/16:(13,14-6)    R=  -0.9  p = 0.722     normal           
  [Low1/64]FPF-14+6/16:(14,14-7)    R=  -1.6  p = 0.875     normal           
  [Low1/64]FPF-14+6/16:(15,14-8)    R=  -1.1  p = 0.775     normal           
  [Low1/64]FPF-14+6/16:(16,14-8)    R=  -1.5  p = 0.866     normal           
  [Low1/64]FPF-14+6/16:(17,14-9)    R=  +1.2  p = 0.186     normal           
  [Low1/64]FPF-14+6/16:(18,14-10)   R=  +0.6  p = 0.309     normal           
  [Low1/64]FPF-14+6/16:(19,14-11)   R=  -0.2  p = 0.474     normal           
  [Low1/64]FPF-14+6/16:(20,14-11)   R=  +1.0  p = 0.215     normal           
  [Low1/64]FPF-14+6/16:all          R=  -0.6  p = 0.669     normal           
  [Low1/64]FPF-14+6/16:cross        R=  +0.7  p = 0.215     normal           
  [Low1/64]BRank(12):128(8)         R=  -1.1  p~= 0.860     normal           
  [Low1/64]BRank(12):256(4)         R=  +1.7  p~= 0.060     normal           
  [Low1/64]BRank(12):384(1)         R=  +0.4  p~= 0.366     normal           
  [Low1/64]BRank(12):512(4)         R=  -1.4  p~= 0.890     normal           
  [Low1/64]BRank(12):768(1)         R=  -0.7  p~= 0.689     normal           
  [Low1/64]BRank(12):1K(2)          R=  -0.2  p~= 0.554     normal           
  [Low1/64]BRank(12):1536(1)        R=  -0.7  p~= 0.689     normal           
  [Low1/64]BRank(12):2K(2)          R=  -0.2  p~= 0.554     normal           
  [Low1/64]BRank(12):3K(1)          R=  +0.4  p~= 0.366     normal           
  [Low1/64]mod3n(5):(0,9-0)         R=  +2.2  p = 0.140     normal           
  [Low1/64]mod3n(5):(1,9-0)         R=  -1.8  p = 0.815     normal           
  [Low1/64]mod3n(5):(2,9-1)         R=  +0.5  p = 0.395     normal           
  [Low1/64]mod3n(5):(3,9-1)         R=  +0.2  p = 0.459     normal           
  [Low1/64]mod3n(5):(4,9-2)         R=  +2.0  p = 0.155     normal           
  [Low1/64]mod3n(5):(5,9-2)         R=  +1.2  p = 0.267     normal           
  [Low1/64]mod3n(5):(6,9-3)         R=  +4.4  p = 0.019     normal           
  [Low1/64]mod3n(5):(7,9-3)         R=  +1.5  p = 0.221     normal           
  [Low1/64]mod3n(5):(8,9-4)         R=  -0.3  p = 0.544     normal           
  [Low1/64]mod3n(5):(9,9-4)         R=  -1.0  p = 0.677     normal           
  [Low1/64]mod3n(5):(10,9-5)        R=  -1.1  p = 0.688     normal           
  [Low1/64]mod3n(5):(11,9-5)        R=  -2.1  p = 0.868     normal           
  [Low1/64]mod3n(5):(12,9-6)        R=  -0.3  p = 0.501     normal           
  [Low1/64]mod3n(5):(13,9-6)        R=  -0.1  p = 0.472     normal           
  [Low1/64]mod3n(5):(14,9-6)        R=  -0.7  p = 0.604     normal           
  [Low1/64]mod3n(5):(15,9-6)        R=  +2.6  p = 0.091     normal           
  [Low1/64]TMFn(2+0):wl             R=  -2.8  p~= 0.8       normal           
  [Low1/64]TMFn(2+1):wl             R=  -0.9  p~= 0.6       normal           
  [Low1/64]TMFn(2+2):wl             R=  -0.6  p~= 0.6       normal           
  [Low1/64]TMFn(2+3):wl             R=  -2.1  p~= 0.8       normal           
  [Low1/64]TMFn(2+4):wl             R=  +0.3  p~= 0.5       normal           
  [Low1/64]TMFn(2+5):wl             R=  -0.5  p~= 0.6       normal           
  [Low4/16]BCFN(2+0,13-0,T)         R=  -2.6  p = 0.855     normal           
  [Low4/16]BCFN(2+1,13-0,T)         R=  -0.8  p = 0.621     normal           
  [Low4/16]BCFN(2+2,13-0,T)         R=  -3.3  p = 0.912     normal           
  [Low4/16]BCFN(2+3,13-0,T)         R=  +0.4  p = 0.437     normal           
  [Low4/16]BCFN(2+4,13-0,T)         R=  +1.0  p = 0.339     normal           
  [Low4/16]BCFN(2+5,13-0,T)         R=  +3.7  p = 0.066     normal           
  [Low4/16]BCFN(2+6,13-1,T)         R=  -3.4  p = 0.918     normal           
  [Low4/16]BCFN(2+7,13-1,T)         R=  +1.2  p = 0.303     normal           
  [Low4/16]BCFN(2+8,13-2,T)         R=  +2.3  p = 0.173     normal           
  [Low4/16]BCFN(2+9,13-3,T)         R=  +1.6  p = 0.246     normal           
  [Low4/16]BCFN(2+10,13-3,T)        R=  -2.1  p = 0.801     normal           
  [Low4/16]BCFN(2+11,13-4,T)        R=  -3.1  p = 0.906     normal           
  [Low4/16]BCFN(2+12,13-5,T)        R=  +3.4  p = 0.090     normal           
  [Low4/16]BCFN(2+13,13-5,T)        R=  -3.5  p = 0.939     normal           
  [Low4/16]BCFN(2+14,13-6,T)        R=  +4.4  p = 0.047     normal           
  [Low4/16]BCFN(2+15,13-6,T)        R=  +0.9  p = 0.327     normal           
  [Low4/16]BCFN(2+16,13-7,T)        R=  +0.3  p = 0.402     normal           
  [Low4/16]BCFN(2+17,13-8,T)        R=  -0.0  p = 0.437     normal           
  [Low4/16]BCFN(2+18,13-8,T)        R=  +0.6  p = 0.335     normal           
  [Low4/16]BCFN(2+19,13-9,T)        R=  +2.3  p = 0.139     normal           
  [Low4/16]BCFN(2+20,13-9,T)        R=  -2.6  p = 0.945     normal           
  [Low4/16]DC6-9x1Bytes-1           R=  +3.6  p = 0.029     normal           
  [Low4/16]Gap-16:A                 R=  +1.0  p = 0.308     normal           
  [Low4/16]Gap-16:B                 R=  -0.4  p = 0.606     normal           
  [Low4/16]FPF-14+6/16:(0,14-0)     R=  +1.7  p = 0.119     normal           
  [Low4/16]FPF-14+6/16:(1,14-0)     R=  -2.3  p = 0.946     normal           
  [Low4/16]FPF-14+6/16:(2,14-0)     R=  +0.1  p = 0.461     normal           
  [Low4/16]FPF-14+6/16:(3,14-0)     R=  +0.7  p = 0.316     normal           
  [Low4/16]FPF-14+6/16:(4,14-0)     R=  +2.8  p = 0.024     normal           
  [Low4/16]FPF-14+6/16:(5,14-0)     R=  -2.0  p = 0.918     normal           
  [Low4/16]FPF-14+6/16:(6,14-0)     R=  -1.2  p = 0.803     normal           
  [Low4/16]FPF-14+6/16:(7,14-0)     R=  +1.6  p = 0.137     normal           
  [Low4/16]FPF-14+6/16:(8,14-0)     R=  -0.0  p = 0.508     normal           
  [Low4/16]FPF-14+6/16:(9,14-0)     R=  +2.4  p = 0.048     normal           
  [Low4/16]FPF-14+6/16:(10,14-1)    R=  -0.6  p = 0.672     normal           
  [Low4/16]FPF-14+6/16:(11,14-2)    R=  +1.0  p = 0.238     normal           
  [Low4/16]FPF-14+6/16:(12,14-2)    R=  +1.5  p = 0.156     normal           
  [Low4/16]FPF-14+6/16:(13,14-3)    R=  +0.9  p = 0.269     normal           
  [Low4/16]FPF-14+6/16:(14,14-4)    R=  -1.3  p = 0.825     normal           
  [Low4/16]FPF-14+6/16:(15,14-5)    R=  -0.8  p = 0.715     normal           
  [Low4/16]FPF-14+6/16:(16,14-5)    R=  +1.4  p = 0.156     normal           
  [Low4/16]FPF-14+6/16:(17,14-6)    R=  +1.6  p = 0.138     normal           
  [Low4/16]FPF-14+6/16:(18,14-7)    R=  +0.9  p = 0.249     normal           
  [Low4/16]FPF-14+6/16:(19,14-8)    R=  -1.2  p = 0.799     normal           
  [Low4/16]FPF-14+6/16:(20,14-8)    R=  +0.8  p = 0.280     normal           
  [Low4/16]FPF-14+6/16:(21,14-9)    R=  -2.7  p = 0.989     normal           
  [Low4/16]FPF-14+6/16:(22,14-10)   R=  -0.8  p = 0.691     normal           
  [Low4/16]FPF-14+6/16:(23,14-11)   R=  -1.0  p = 0.741     normal           
  [Low4/16]FPF-14+6/16:(24,14-11)   R=  -1.2  p = 0.794     normal           
  [Low4/16]FPF-14+6/16:all          R=  +1.5  p = 0.155     normal           
  [Low4/16]FPF-14+6/16:cross        R=  +0.7  p = 0.231     normal           
  [Low4/16]BRank(12):128(8)         R=  -0.7  p~= 0.750     normal           
  [Low4/16]BRank(12):256(8)         R=  -1.5  p~= 0.940     normal           
  [Low4/16]BRank(12):384(2)         R=  -1.0  p~= 0.744     normal           
  [Low4/16]BRank(12):512(4)         R=  -1.4  p~= 0.890     normal           
  [Low4/16]BRank(12):768(2)         R=  -1.0  p~= 0.744     normal           
  [Low4/16]BRank(12):1K(4)          R=  -0.1  p~= 0.490     normal           
  [Low4/16]BRank(12):1536(1)        R=  +1.8  p~= 0.146     normal           
  [Low4/16]BRank(12):2K(2)          R=  -1.0  p~= 0.744     normal           
  [Low4/16]BRank(12):3K(1)          R=  -0.7  p~= 0.689     normal           
  [Low4/16]BRank(12):4K(2)          R=  -1.0  p~= 0.744     normal           
  [Low4/16]BRank(12):6K(1)          R=  -0.7  p~= 0.689     normal           
  [Low4/16]BRank(12):8K(1)          R=  -0.7  p~= 0.689     normal           
  [Low4/16]mod3n(5):(0,9-0)         R=  -4.5  p = 0.989     normal           
  [Low4/16]mod3n(5):(1,9-0)         R=  +2.9  p = 0.075     normal           
  [Low4/16]mod3n(5):(2,9-0)         R=  -0.6  p = 0.621     normal           
  [Low4/16]mod3n(5):(3,9-0)         R=  +2.8  p = 0.081     normal           
  [Low4/16]mod3n(5):(4,9-0)         R=  -0.2  p = 0.538     normal           
  [Low4/16]mod3n(5):(5,9-0)         R=  +2.7  p = 0.094     normal           
  [Low4/16]mod3n(5):(6,9-1)         R=  -2.3  p = 0.872     normal           
  [Low4/16]mod3n(5):(7,9-1)         R=  +1.8  p = 0.180     normal           
  [Low4/16]mod3n(5):(8,9-2)         R=  +2.4  p = 0.120     normal           
  [Low4/16]mod3n(5):(9,9-2)         R=  +2.8  p = 0.084     normal           
  [Low4/16]mod3n(5):(10,9-3)        R=  +0.5  p = 0.394     normal           
  [Low4/16]mod3n(5):(11,9-3)        R=  +5.6  p =  4.5e-3   normal           
  [Low4/16]mod3n(5):(12,9-4)        R=  +1.4  p = 0.237     normal           
  [Low4/16]mod3n(5):(13,9-4)        R=  +1.1  p = 0.281     normal           
  [Low4/16]mod3n(5):(14,9-5)        R=  -1.5  p = 0.779     normal           
  [Low4/16]mod3n(5):(15,9-5)        R=  +0.8  p = 0.315     normal           
  [Low4/16]TMFn(2+0):wl             R=  -0.9  p~= 0.6       normal           
  [Low4/16]TMFn(2+1):wl             R=  -2.5  p~= 0.8       normal           
  [Low4/16]TMFn(2+2):wl             R=  -1.9  p~= 0.7       normal           
  [Low4/16]TMFn(2+3):wl             R=  +0.3  p~= 0.5       normal           
  [Low4/16]TMFn(2+4):wl             R=  +0.6  p~= 0.4       normal           
  [Low4/16]TMFn(2+5):wl             R=  -0.8  p~= 0.6       normal           
  [Low4/16]TMFn(2+6):wl             R=  +0.6  p~= 0.4       normal           
  [Low4/16]TMFn(2+7):wl             R=  +1.0  p~= 0.4       normal           
  [Low4/16]TMFn(2+8):wl             R=  +0.1  p~= 0.5       normal           
  [Low4/16]TMFn(2+9):wl             R=  +2.3  p~= 0.2       normal           
  [Low4/32]BCFN(2+0,13-0,T)         R=  +0.8  p = 0.372     normal           
  [Low4/32]BCFN(2+1,13-0,T)         R=  +5.1  p = 0.021     normal           
  [Low4/32]BCFN(2+2,13-0,T)         R=  +2.6  p = 0.144     normal           
  [Low4/32]BCFN(2+3,13-0,T)         R=  -0.1  p = 0.518     normal           
  [Low4/32]BCFN(2+4,13-0,T)         R=  -1.4  p = 0.719     normal           
  [Low4/32]BCFN(2+5,13-1,T)         R=  -2.7  p = 0.870     normal           
  [Low4/32]BCFN(2+6,13-1,T)         R=  -3.2  p = 0.910     normal           
  [Low4/32]BCFN(2+7,13-2,T)         R=  -1.1  p = 0.660     normal           
  [Low4/32]BCFN(2+8,13-3,T)         R=  -4.0  p = 0.955     normal           
  [Low4/32]BCFN(2+9,13-3,T)         R=  +2.4  p = 0.161     normal           
  [Low4/32]BCFN(2+10,13-4,T)        R=  +2.7  p = 0.138     normal           
  [Low4/32]BCFN(2+11,13-5,T)        R=  +4.0  p = 0.058     normal           
  [Low4/32]BCFN(2+12,13-5,T)        R=  +0.8  p = 0.351     normal           
  [Low4/32]BCFN(2+13,13-6,T)        R=  -2.8  p = 0.889     normal           
  [Low4/32]BCFN(2+14,13-6,T)        R=  +2.2  p = 0.172     normal           
  [Low4/32]BCFN(2+15,13-7,T)        R=  -0.4  p = 0.511     normal           
  [Low4/32]BCFN(2+16,13-8,T)        R=  -3.0  p = 0.948     normal           
  [Low4/32]BCFN(2+17,13-8,T)        R=  -2.6  p = 0.898     normal           
  [Low4/32]BCFN(2+18,13-9,T)        R=  -2.8  p = 0.961     normal           
  [Low4/32]BCFN(2+19,13-9,T)        R=  -1.5  p = 0.739     normal           
  [Low4/32]DC6-9x1Bytes-1           R=  +2.0  p = 0.183     normal           
  [Low4/32]Gap-16:A                 R=  +3.3  p = 0.016     normal           
  [Low4/32]Gap-16:B                 R=  +3.0  p = 0.018     normal           
  [Low4/32]FPF-14+6/16:(0,14-0)     R=  -1.2  p = 0.812     normal           
  [Low4/32]FPF-14+6/16:(1,14-0)     R=  -1.0  p = 0.752     normal           
  [Low4/32]FPF-14+6/16:(2,14-0)     R=  +1.5  p = 0.147     normal           
  [Low4/32]FPF-14+6/16:(3,14-0)     R=  +1.3  p = 0.189     normal           
  [Low4/32]FPF-14+6/16:(4,14-0)     R=  +1.1  p = 0.216     normal           
  [Low4/32]FPF-14+6/16:(5,14-0)     R=  +1.0  p = 0.245     normal           
  [Low4/32]FPF-14+6/16:(6,14-0)     R=  -0.6  p = 0.670     normal           
  [Low4/32]FPF-14+6/16:(7,14-0)     R=  -1.5  p = 0.855     normal           
  [Low4/32]FPF-14+6/16:(8,14-0)     R=  +1.1  p = 0.220     normal           
  [Low4/32]FPF-14+6/16:(9,14-1)     R=  -1.1  p = 0.795     normal           
  [Low4/32]FPF-14+6/16:(10,14-2)    R=  -0.1  p = 0.517     normal           
  [Low4/32]FPF-14+6/16:(11,14-2)    R=  +2.0  p = 0.086     normal           
  [Low4/32]FPF-14+6/16:(12,14-3)    R=  +1.4  p = 0.170     normal           
  [Low4/32]FPF-14+6/16:(13,14-4)    R=  +1.9  p = 0.100     normal           
  [Low4/32]FPF-14+6/16:(14,14-5)    R=  +0.5  p = 0.358     normal           
  [Low4/32]FPF-14+6/16:(15,14-5)    R=  +0.5  p = 0.352     normal           
  [Low4/32]FPF-14+6/16:(16,14-6)    R=  -1.3  p = 0.825     normal           
  [Low4/32]FPF-14+6/16:(17,14-7)    R=  +0.7  p = 0.314     normal           
  [Low4/32]FPF-14+6/16:(18,14-8)    R=  -0.7  p = 0.689     normal           
  [Low4/32]FPF-14+6/16:(19,14-8)    R=  -0.2  p = 0.524     normal           
  [Low4/32]FPF-14+6/16:(20,14-9)    R=  -0.8  p = 0.700     normal           
  [Low4/32]FPF-14+6/16:(21,14-10)   R=  -1.8  p = 0.925     normal           
  [Low4/32]FPF-14+6/16:(22,14-11)   R=  +1.8  p = 0.114     normal           
  [Low4/32]FPF-14+6/16:(23,14-11)   R=  -0.2  p = 0.473     normal           
  [Low4/32]FPF-14+6/16:all          R=  +0.8  p = 0.294     normal           
  [Low4/32]FPF-14+6/16:cross        R=  -1.0  p = 0.851     normal           
  [Low4/32]BRank(12):128(8)         R=  +0.1  p~= 0.450     normal           
  [Low4/32]BRank(12):256(8)         R=  +1.6  p~= 0.060     normal           
  [Low4/32]BRank(12):384(2)         R=  -1.0  p~= 0.744     normal           
  [Low4/32]BRank(12):512(4)         R=  -1.4  p~= 0.890     normal           
  [Low4/32]BRank(12):768(1)         R=  +0.4  p~= 0.366     normal           
  [Low4/32]BRank(12):1K(4)          R=  -0.8  p~= 0.670     normal           
  [Low4/32]BRank(12):1536(1)        R=  -0.7  p~= 0.689     normal           
  [Low4/32]BRank(12):2K(2)          R=  -0.2  p~= 0.554     normal           
  [Low4/32]BRank(12):3K(1)          R=  -0.7  p~= 0.689     normal           
  [Low4/32]BRank(12):4K(2)          R=  -0.2  p~= 0.554     normal           
  [Low4/32]BRank(12):6K(1)          R=  -0.7  p~= 0.689     normal           
  [Low4/32]mod3n(5):(0,9-0)         R=  -1.2  p = 0.729     normal           
  [Low4/32]mod3n(5):(1,9-0)         R=  -2.7  p = 0.912     normal           
  [Low4/32]mod3n(5):(2,9-0)         R=  -0.1  p = 0.528     normal           
  [Low4/32]mod3n(5):(3,9-0)         R=  +1.2  p = 0.283     normal           
  [Low4/32]mod3n(5):(4,9-0)         R=  +3.6  p = 0.039     normal           
  [Low4/32]mod3n(5):(5,9-1)         R=  -3.8  p = 0.974     normal           
  [Low4/32]mod3n(5):(6,9-1)         R=  +2.1  p = 0.145     normal           
  [Low4/32]mod3n(5):(7,9-2)         R=  -0.1  p = 0.519     normal           
  [Low4/32]mod3n(5):(8,9-2)         R=  +0.7  p = 0.351     normal           
  [Low4/32]mod3n(5):(9,9-3)         R=  +0.6  p = 0.367     normal           
  [Low4/32]mod3n(5):(10,9-3)        R=  +1.1  p = 0.289     normal           
  [Low4/32]mod3n(5):(11,9-4)        R=  +0.7  p = 0.354     normal           
  [Low4/32]mod3n(5):(12,9-4)        R=  +1.1  p = 0.281     normal           
  [Low4/32]mod3n(5):(13,9-5)        R=  -1.4  p = 0.752     normal           
  [Low4/32]mod3n(5):(14,9-5)        R=  +0.1  p = 0.450     normal           
  [Low4/32]mod3n(5):(15,9-6)        R=  -1.6  p = 0.798     normal           
  [Low4/32]TMFn(2+0):wl             R=  -2.0  p~= 0.8       normal           
  [Low4/32]TMFn(2+1):wl             R=  -0.6  p~= 0.6       normal           
  [Low4/32]TMFn(2+2):wl             R=  +2.0  p~= 0.2       normal           
  [Low4/32]TMFn(2+3):wl             R=  +1.6  p~= 0.3       normal           
  [Low4/32]TMFn(2+4):wl             R=  -3.0  p~= 0.8       normal           
  [Low4/32]TMFn(2+5):wl             R=  -0.0  p~= 0.5       normal           
  [Low4/32]TMFn(2+6):wl             R=  -1.2  p~= 0.7       normal           
  [Low4/32]TMFn(2+7):wl             R=  +1.7  p~= 0.3       normal           
  [Low4/32]TMFn(2+8):wl             R=  +2.5  p~= 0.2       normal           
  [Low4/64]BCFN(2+0,13-0,T)         R=  +1.2  p = 0.307     normal           
  [Low4/64]BCFN(2+1,13-0,T)         R=  -5.5  p = 0.989     normal           
  [Low4/64]BCFN(2+2,13-0,T)         R=  -2.5  p = 0.847     normal           
  [Low4/64]BCFN(2+3,13-0,T)         R=  +1.3  p = 0.294     normal           
  [Low4/64]BCFN(2+4,13-1,T)         R=  +2.1  p = 0.198     normal           
  [Low4/64]BCFN(2+5,13-1,T)         R=  -0.9  p = 0.635     normal           
  [Low4/64]BCFN(2+6,13-2,T)         R=  -3.0  p = 0.894     normal           
  [Low4/64]BCFN(2+7,13-3,T)         R=  -1.7  p = 0.746     normal           
  [Low4/64]BCFN(2+8,13-3,T)         R=  +0.2  p = 0.453     normal           
  [Low4/64]BCFN(2+9,13-4,T)         R=  -3.1  p = 0.908     normal           
  [Low4/64]BCFN(2+10,13-5,T)        R=  -1.7  p = 0.746     normal           
  [Low4/64]BCFN(2+11,13-5,T)        R=  -2.0  p = 0.794     normal           
  [Low4/64]BCFN(2+12,13-6,T)        R=  -1.1  p = 0.651     normal           
  [Low4/64]BCFN(2+13,13-6,T)        R=  -2.0  p = 0.790     normal           
  [Low4/64]BCFN(2+14,13-7,T)        R=  -1.4  p = 0.708     normal           
  [Low4/64]BCFN(2+15,13-8,T)        R=  +1.6  p = 0.213     normal           
  [Low4/64]BCFN(2+16,13-8,T)        R=  -0.4  p = 0.506     normal           
  [Low4/64]BCFN(2+17,13-9,T)        R=  +1.4  p = 0.212     normal           
  [Low4/64]BCFN(2+18,13-9,T)        R=  +4.4  p = 0.046     normal           
  [Low4/64]DC6-9x1Bytes-1           R=  -0.6  p = 0.699     normal           
  [Low4/64]Gap-16:A                 R=  +1.4  p = 0.220     normal           
  [Low4/64]Gap-16:B                 R=  +4.6  p =  7.2e-4   normalish       
  [Low4/64]FPF-14+6/16:(0,14-0)     R=  -0.5  p = 0.635     normal           
  [Low4/64]FPF-14+6/16:(1,14-0)     R=  +1.7  p = 0.121     normal           
  [Low4/64]FPF-14+6/16:(2,14-0)     R=  -1.7  p = 0.892     normal           
  [Low4/64]FPF-14+6/16:(3,14-0)     R=  -0.9  p = 0.731     normal           
  [Low4/64]FPF-14+6/16:(4,14-0)     R=  +3.2  p = 0.012     normal           
  [Low4/64]FPF-14+6/16:(5,14-0)     R=  -1.0  p = 0.764     normal           
  [Low4/64]FPF-14+6/16:(6,14-0)     R=  +1.5  p = 0.145     normal           
  [Low4/64]FPF-14+6/16:(7,14-0)     R=  +1.2  p = 0.208     normal           
  [Low4/64]FPF-14+6/16:(8,14-1)     R=  +0.2  p = 0.461     normal           
  [Low4/64]FPF-14+6/16:(9,14-2)     R=  -1.4  p = 0.845     normal           
  [Low4/64]FPF-14+6/16:(10,14-2)    R=  +1.5  p = 0.143     normal           
  [Low4/64]FPF-14+6/16:(11,14-3)    R=  -0.6  p = 0.678     normal           
  [Low4/64]FPF-14+6/16:(12,14-4)    R=  +0.4  p = 0.382     normal           
  [Low4/64]FPF-14+6/16:(13,14-5)    R=  -2.0  p = 0.928     normal           
  [Low4/64]FPF-14+6/16:(14,14-5)    R=  +0.1  p = 0.464     normal           
  [Low4/64]FPF-14+6/16:(15,14-6)    R=  +0.4  p = 0.392     normal           
  [Low4/64]FPF-14+6/16:(16,14-7)    R=  -0.5  p = 0.633     normal           
  [Low4/64]FPF-14+6/16:(17,14-8)    R=  -1.9  p = 0.917     normal           
  [Low4/64]FPF-14+6/16:(18,14-8)    R=  -2.2  p = 0.950     normal           
  [Low4/64]FPF-14+6/16:(19,14-9)    R=  +0.1  p = 0.437     normal           
  [Low4/64]FPF-14+6/16:(20,14-10)   R=  -0.9  p = 0.721     normal           
  [Low4/64]FPF-14+6/16:(21,14-11)   R=  +0.8  p = 0.248     normal           
  [Low4/64]FPF-14+6/16:(22,14-11)   R=  +3.5  p = 0.023     normal           
  [Low4/64]FPF-14+6/16:all          R=  +1.0  p = 0.261     normal           
  [Low4/64]FPF-14+6/16:cross        R=  -1.1  p = 0.867     normal           
  [Low4/64]BRank(12):128(8)         R=  +0.5  p~= 0.300     normal           
  [Low4/64]BRank(12):256(4)         R=  -0.2  p~= 0.500     normal           
  [Low4/64]BRank(12):384(2)         R=  +0.8  p~= 0.293     normal           
  [Low4/64]BRank(12):512(4)         R=  -1.4  p~= 0.890     normal           
  [Low4/64]BRank(12):768(1)         R=  +0.4  p~= 0.366     normal           
  [Low4/64]BRank(12):1K(2)          R=  -1.0  p~= 0.744     normal           
  [Low4/64]BRank(12):1536(1)        R=  +0.4  p~= 0.366     normal           
  [Low4/64]BRank(12):2K(2)          R=  -1.0  p~= 0.744     normal           
  [Low4/64]BRank(12):3K(1)          R=  +0.4  p~= 0.366     normal           
  [Low4/64]BRank(12):4K(1)          R=  -0.7  p~= 0.689     normal           
  [Low4/64]mod3n(5):(0,9-0)         R=  -0.1  p = 0.514     normal           
  [Low4/64]mod3n(5):(1,9-0)         R=  +0.7  p = 0.358     normal           
  [Low4/64]mod3n(5):(2,9-0)         R=  -0.1  p = 0.515     normal           
  [Low4/64]mod3n(5):(3,9-0)         R=  +0.1  p = 0.489     normal           
  [Low4/64]mod3n(5):(4,9-1)         R=  +1.9  p = 0.173     normal           
  [Low4/64]mod3n(5):(5,9-1)         R=  -0.8  p = 0.654     normal           
  [Low4/64]mod3n(5):(6,9-2)         R=  +0.8  p = 0.346     normal           
  [Low4/64]mod3n(5):(7,9-2)         R=  +3.3  p = 0.052     normal           
  [Low4/64]mod3n(5):(8,9-3)         R=  -2.2  p = 0.870     normal           
  [Low4/64]mod3n(5):(9,9-3)         R=  -1.4  p = 0.760     normal           
  [Low4/64]mod3n(5):(10,9-4)        R=  +1.0  p = 0.290     normal           
  [Low4/64]mod3n(5):(11,9-4)        R=  +2.5  p = 0.108     normal           
  [Low4/64]mod3n(5):(12,9-5)        R=  +1.4  p = 0.216     normal           
  [Low4/64]mod3n(5):(13,9-5)        R=  +1.1  p = 0.258     normal           
  [Low4/64]mod3n(5):(14,9-6)        R=  +0.6  p = 0.323     normal           
  [Low4/64]mod3n(5):(15,9-6)        R=  +0.3  p = 0.376     normal           
  [Low4/64]TMFn(2+0):wl             R=  -1.8  p~= 0.7       normal           
  [Low4/64]TMFn(2+1):wl             R=  +0.1  p~= 0.5       normal           
  [Low4/64]TMFn(2+2):wl             R=  +1.0  p~= 0.4       normal           
  [Low4/64]TMFn(2+3):wl             R=  -3.0  p~= 0.8       normal           
  [Low4/64]TMFn(2+4):wl             R=  -0.3  p~= 0.5       normal           
  [Low4/64]TMFn(2+5):wl             R=  -0.6  p~= 0.6       normal           
  [Low4/64]TMFn(2+6):wl             R=  +2.5  p~= 0.2       normal           
  [Low4/64]TMFn(2+7):wl             R=  +4.3  p~= 0.1       normal           
  [Low8/32]BCFN(2+0,13-0,T)         R=  -2.5  p = 0.846     normal           
  [Low8/32]BCFN(2+1,13-0,T)         R=  +2.1  p = 0.192     normal           
  [Low8/32]BCFN(2+2,13-0,T)         R=  +1.4  p = 0.286     normal           
  [Low8/32]BCFN(2+3,13-0,T)         R=  +1.9  p = 0.217     normal           
  [Low8/32]BCFN(2+4,13-0,T)         R=  +0.3  p = 0.442     normal           
  [Low8/32]BCFN(2+5,13-0,T)         R=  -1.4  p = 0.719     normal           
  [Low8/32]BCFN(2+6,13-1,T)         R=  +1.5  p = 0.267     normal           
  [Low8/32]BCFN(2+7,13-1,T)         R=  +3.1  p = 0.108     normal           
  [Low8/32]BCFN(2+8,13-2,T)         R=  +0.9  p = 0.347     normal           
  [Low8/32]BCFN(2+9,13-3,T)         R=  +5.8  p = 0.013     normal           
  [Low8/32]BCFN(2+10,13-3,T)        R=  -2.3  p = 0.832     normal           
  [Low8/32]BCFN(2+11,13-4,T)        R=  +2.2  p = 0.183     normal           
  [Low8/32]BCFN(2+12,13-5,T)        R=  -2.8  p = 0.881     normal           
  [Low8/32]BCFN(2+13,13-5,T)        R=  -1.1  p = 0.658     normal           
  [Low8/32]BCFN(2+14,13-6,T)        R=  -0.1  p = 0.478     normal           
  [Low8/32]BCFN(2+15,13-6,T)        R=  +2.6  p = 0.142     normal           
  [Low8/32]BCFN(2+16,13-7,T)        R=  -2.3  p = 0.844     normal           
  [Low8/32]BCFN(2+17,13-8,T)        R=  +1.7  p = 0.206     normal           
  [Low8/32]BCFN(2+18,13-8,T)        R=  -0.6  p = 0.538     normal           
  [Low8/32]BCFN(2+19,13-9,T)        R=  -1.9  p = 0.813     normal           
  [Low8/32]BCFN(2+20,13-9,T)        R=  -1.2  p = 0.673     normal           
  [Low8/32]DC6-9x1Bytes-1           R=  -0.0  p = 0.542     normal           
  [Low8/32]Gap-16:A                 R=  -0.2  p = 0.627     normal           
  [Low8/32]Gap-16:B                 R=  +0.1  p = 0.470     normal           
  [Low8/32]FPF-14+6/16:(0,14-0)     R=  +0.8  p = 0.281     normal           
  [Low8/32]FPF-14+6/16:(1,14-0)     R=  -1.6  p = 0.874     normal           
  [Low8/32]FPF-14+6/16:(2,14-0)     R=  -2.7  p = 0.973     normal           
  [Low8/32]FPF-14+6/16:(3,14-0)     R=  +1.4  p = 0.157     normal           
  [Low8/32]FPF-14+6/16:(4,14-0)     R=  +0.3  p = 0.428     normal           
  [Low8/32]FPF-14+6/16:(5,14-0)     R=  -1.1  p = 0.774     normal           
  [Low8/32]FPF-14+6/16:(6,14-0)     R=  +0.7  p = 0.317     normal           
  [Low8/32]FPF-14+6/16:(7,14-0)     R=  -0.1  p = 0.516     normal           
  [Low8/32]FPF-14+6/16:(8,14-0)     R=  -1.9  p = 0.916     normal           
  [Low8/32]FPF-14+6/16:(9,14-0)     R=  +1.5  p = 0.152     normal           
  [Low8/32]FPF-14+6/16:(10,14-1)    R=  -1.1  p = 0.795     normal           
  [Low8/32]FPF-14+6/16:(11,14-2)    R=  +0.1  p = 0.477     normal           
  [Low8/32]FPF-14+6/16:(12,14-2)    R=  -1.6  p = 0.876     normal           
  [Low8/32]FPF-14+6/16:(13,14-3)    R=  -1.5  p = 0.857     normal           
  [Low8/32]FPF-14+6/16:(14,14-4)    R=  -0.5  p = 0.645     normal           
  [Low8/32]FPF-14+6/16:(15,14-5)    R=  +1.2  p = 0.201     normal           
  [Low8/32]FPF-14+6/16:(16,14-5)    R=  +1.2  p = 0.205     normal           
  [Low8/32]FPF-14+6/16:(17,14-6)    R=  -1.8  p = 0.898     normal           
  [Low8/32]FPF-14+6/16:(18,14-7)    R=  -0.1  p = 0.520     normal           
  [Low8/32]FPF-14+6/16:(19,14-8)    R=  +0.8  p = 0.278     normal           
  [Low8/32]FPF-14+6/16:(20,14-8)    R=  -0.4  p = 0.591     normal           
  [Low8/32]FPF-14+6/16:(21,14-9)    R=  +1.9  p = 0.097     normal           
  [Low8/32]FPF-14+6/16:(22,14-10)   R=  -0.1  p = 0.489     normal           
  [Low8/32]FPF-14+6/16:(23,14-11)   R=  +0.5  p = 0.314     normal           
  [Low8/32]FPF-14+6/16:(24,14-11)   R=  +0.0  p = 0.426     normal           
  [Low8/32]FPF-14+6/16:all          R=  -1.3  p = 0.840     normal           
  [Low8/32]FPF-14+6/16:cross        R=  +0.9  p = 0.180     normal           
  [Low8/32]BRank(12):128(8)         R=  +0.5  p~= 0.300     normal           
  [Low8/32]BRank(12):256(8)         R=  +0.6  p~= 0.250     normal           
  [Low8/32]BRank(12):384(2)         R=  -1.0  p~= 0.744     normal           
  [Low8/32]BRank(12):512(4)         R=  -1.4  p~= 0.890     normal           
  [Low8/32]BRank(12):768(2)         R=  -0.2  p~= 0.554     normal           
  [Low8/32]BRank(12):1K(4)          R=  -0.8  p~= 0.670     normal           
  [Low8/32]BRank(12):1536(1)        R=  -0.7  p~= 0.689     normal           
  [Low8/32]BRank(12):2K(2)          R=  +0.8  p~= 0.293     normal           
  [Low8/32]BRank(12):3K(1)          R=  -0.7  p~= 0.689     normal           
  [Low8/32]BRank(12):4K(2)          R=  -0.2  p~= 0.554     normal           
  [Low8/32]BRank(12):6K(1)          R=  -0.7  p~= 0.689     normal           
  [Low8/32]BRank(12):8K(1)          R=  +0.4  p~= 0.366     normal           
  [Low8/32]mod3n(5):(0,9-0)         R=  -0.6  p = 0.615     normal           
  [Low8/32]mod3n(5):(1,9-0)         R=  -0.0  p = 0.512     normal           
  [Low8/32]mod3n(5):(2,9-0)         R=  -0.0  p = 0.504     normal           
  [Low8/32]mod3n(5):(3,9-0)         R=  +0.6  p = 0.377     normal           
  [Low8/32]mod3n(5):(4,9-0)         R=  +2.0  p = 0.163     normal           
  [Low8/32]mod3n(5):(5,9-0)         R=  +0.8  p = 0.339     normal           
  [Low8/32]mod3n(5):(6,9-1)         R=  +0.2  p = 0.455     normal           
  [Low8/32]mod3n(5):(7,9-1)         R=  -0.6  p = 0.612     normal           
  [Low8/32]mod3n(5):(8,9-2)         R=  -1.3  p = 0.744     normal           
  [Low8/32]mod3n(5):(9,9-2)         R=  -0.1  p = 0.510     normal           
  [Low8/32]mod3n(5):(10,9-3)        R=  -1.7  p = 0.796     normal           
  [Low8/32]mod3n(5):(11,9-3)        R=  +2.8  p = 0.087     normal           
  [Low8/32]mod3n(5):(12,9-4)        R=  +0.9  p = 0.315     normal           
  [Low8/32]mod3n(5):(13,9-4)        R=  -1.0  p = 0.676     normal           
  [Low8/32]mod3n(5):(14,9-5)        R=  -3.5  p = 0.982     normal           
  [Low8/32]mod3n(5):(15,9-5)        R=  -1.8  p = 0.827     normal           
  [Low8/32]TMFn(2+0):wl             R=  +0.7  p~= 0.4       normal           
  [Low8/32]TMFn(2+1):wl             R=  +0.5  p~= 0.4       normal           
  [Low8/32]TMFn(2+2):wl             R=  +0.5  p~= 0.4       normal           
  [Low8/32]TMFn(2+3):wl             R=  +2.5  p~= 0.2       normal           
  [Low8/32]TMFn(2+4):wl             R=  +0.3  p~= 0.4       normal           
  [Low8/32]TMFn(2+5):wl             R=  -3.7  p~= 0.9       normal           
  [Low8/32]TMFn(2+6):wl             R=  -0.4  p~= 0.6       normal           
  [Low8/32]TMFn(2+7):wl             R=  +1.1  p~= 0.3       normal           
  [Low8/32]TMFn(2+8):wl             R=  -0.8  p~= 0.6       normal           
  [Low8/32]TMFn(2+9):wl             R=  +1.4  p~= 0.3       normal           
  [Low8/64]BCFN(2+0,13-0,T)         R=  -3.1  p = 0.900     normal           
  [Low8/64]BCFN(2+1,13-0,T)         R=  +0.5  p = 0.419     normal           
  [Low8/64]BCFN(2+2,13-0,T)         R=  -0.3  p = 0.547     normal           
  [Low8/64]BCFN(2+3,13-0,T)         R=  +3.1  p = 0.101     normal           
  [Low8/64]BCFN(2+4,13-0,T)         R=  +2.3  p = 0.170     normal           
  [Low8/64]BCFN(2+5,13-1,T)         R=  -1.8  p = 0.762     normal           
  [Low8/64]BCFN(2+6,13-1,T)         R=  -1.7  p = 0.753     normal           
  [Low8/64]BCFN(2+7,13-2,T)         R=  -0.6  p = 0.592     normal           
  [Low8/64]BCFN(2+8,13-3,T)         R=  +0.3  p = 0.439     normal           
  [Low8/64]BCFN(2+9,13-3,T)         R=  +3.8  p = 0.067     normal           
  [Low8/64]BCFN(2+10,13-4,T)        R=  -0.9  p = 0.630     normal           
  [Low8/64]BCFN(2+11,13-5,T)        R=  -1.1  p = 0.657     normal           
  [Low8/64]BCFN(2+12,13-5,T)        R=  -1.1  p = 0.653     normal           
  [Low8/64]BCFN(2+13,13-6,T)        R=  +0.4  p = 0.406     normal           
  [Low8/64]BCFN(2+14,13-6,T)        R=  -3.6  p = 0.953     normal           
  [Low8/64]BCFN(2+15,13-7,T)        R=  -2.0  p = 0.795     normal           
  [Low8/64]BCFN(2+16,13-8,T)        R=  -2.2  p = 0.837     normal           
  [Low8/64]BCFN(2+17,13-8,T)        R=  -0.5  p = 0.516     normal           
  [Low8/64]BCFN(2+18,13-9,T)        R=  +1.0  p = 0.267     normal           
  [Low8/64]BCFN(2+19,13-9,T)        R=  -0.5  p = 0.506     normal           
  [Low8/64]DC6-9x1Bytes-1           R=  -1.7  p = 0.867     normal           
  [Low8/64]Gap-16:A                 R=  -0.7  p = 0.739     normal           
  [Low8/64]Gap-16:B                 R=  +1.4  p = 0.162     normal           
  [Low8/64]FPF-14+6/16:(0,14-0)     R=  -0.9  p = 0.728     normal           
  [Low8/64]FPF-14+6/16:(1,14-0)     R=  -1.3  p = 0.820     normal           
  [Low8/64]FPF-14+6/16:(2,14-0)     R=  +1.9  p = 0.093     normal           
  [Low8/64]FPF-14+6/16:(3,14-0)     R=  -1.2  p = 0.797     normal           
  [Low8/64]FPF-14+6/16:(4,14-0)     R=  -0.8  p = 0.726     normal           
  [Low8/64]FPF-14+6/16:(5,14-0)     R=  -1.9  p = 0.912     normal           
  [Low8/64]FPF-14+6/16:(6,14-0)     R=  +2.5  p = 0.041     normal           
  [Low8/64]FPF-14+6/16:(7,14-0)     R=  +0.8  p = 0.290     normal           
  [Low8/64]FPF-14+6/16:(8,14-0)     R=  +1.5  p = 0.145     normal           
  [Low8/64]FPF-14+6/16:(9,14-1)     R=  +1.3  p = 0.176     normal           
  [Low8/64]FPF-14+6/16:(10,14-2)    R=  -0.1  p = 0.526     normal           
  [Low8/64]FPF-14+6/16:(11,14-2)    R=  -0.8  p = 0.709     normal           
  [Low8/64]FPF-14+6/16:(12,14-3)    R=  -0.4  p = 0.600     normal           
  [Low8/64]FPF-14+6/16:(13,14-4)    R=  +0.4  p = 0.380     normal           
  [Low8/64]FPF-14+6/16:(14,14-5)    R=  -0.9  p = 0.744     normal           
  [Low8/64]FPF-14+6/16:(15,14-5)    R=  +1.4  p = 0.170     normal           
  [Low8/64]FPF-14+6/16:(16,14-6)    R=  -0.8  p = 0.718     normal           
  [Low8/64]FPF-14+6/16:(17,14-7)    R=  +0.0  p = 0.473     normal           
  [Low8/64]FPF-14+6/16:(18,14-8)    R=  +0.7  p = 0.293     normal           
  [Low8/64]FPF-14+6/16:(19,14-8)    R=  -2.2  p = 0.954     normal           
  [Low8/64]FPF-14+6/16:(20,14-9)    R=  +1.8  p = 0.114     normal           
  [Low8/64]FPF-14+6/16:(21,14-10)   R=  -0.2  p = 0.520     normal           
  [Low8/64]FPF-14+6/16:(22,14-11)   R=  +2.1  p = 0.087     normal           
  [Low8/64]FPF-14+6/16:(23,14-11)   R=  -1.1  p = 0.773     normal           
  [Low8/64]FPF-14+6/16:all          R=  +0.3  p = 0.423     normal           
  [Low8/64]FPF-14+6/16:cross        R=  -1.0  p = 0.856     normal           
  [Low8/64]BRank(12):128(8)         R=  -0.3  p~= 0.500     normal           
  [Low8/64]BRank(12):256(8)         R=  +0.1  p~= 0.450     normal           
  [Low8/64]BRank(12):384(2)         R=  +0.6  p~= 0.322     normal           
  [Low8/64]BRank(12):512(4)         R=  -0.1  p~= 0.490     normal           
  [Low8/64]BRank(12):768(1)         R=  -0.7  p~= 0.689     normal           
  [Low8/64]BRank(12):1K(4)          R=  -0.8  p~= 0.670     normal           
  [Low8/64]BRank(12):1536(1)        R=  -0.7  p~= 0.689     normal           
  [Low8/64]BRank(12):2K(2)          R=  -0.2  p~= 0.554     normal           
  [Low8/64]BRank(12):3K(1)          R=  +0.4  p~= 0.366     normal           
  [Low8/64]BRank(12):4K(2)          R=  -0.2  p~= 0.554     normal           
  [Low8/64]BRank(12):6K(1)          R=  -0.7  p~= 0.689     normal           
  [Low8/64]mod3n(5):(0,9-0)         R=  +4.7  p = 0.011     normal           
  [Low8/64]mod3n(5):(1,9-0)         R=  -1.2  p = 0.727     normal           
  [Low8/64]mod3n(5):(2,9-0)         R=  -0.3  p = 0.553     normal           
  [Low8/64]mod3n(5):(3,9-0)         R=  +0.9  p = 0.327     normal           
  [Low8/64]mod3n(5):(4,9-0)         R=  +1.6  p = 0.219     normal           
  [Low8/64]mod3n(5):(5,9-1)         R=  +0.2  p = 0.462     normal           
  [Low8/64]mod3n(5):(6,9-1)         R=  -1.4  p = 0.760     normal           
  [Low8/64]mod3n(5):(7,9-2)         R=  +1.0  p = 0.302     normal           
  [Low8/64]mod3n(5):(8,9-2)         R=  +2.8  p = 0.088     normal           
  [Low8/64]mod3n(5):(9,9-3)         R=  -2.8  p = 0.925     normal           
  [Low8/64]mod3n(5):(10,9-3)        R=  -0.4  p = 0.575     normal           
  [Low8/64]mod3n(5):(11,9-4)        R=  -1.6  p = 0.784     normal           
  [Low8/64]mod3n(5):(12,9-4)        R=  -0.8  p = 0.642     normal           
  [Low8/64]mod3n(5):(13,9-5)        R=  -0.2  p = 0.500     normal           
  [Low8/64]mod3n(5):(14,9-5)        R=  +1.9  p = 0.158     normal           
  [Low8/64]mod3n(5):(15,9-6)        R=  +1.0  p = 0.261     normal           
  [Low8/64]TMFn(2+0):wl             R=  -0.7  p~= 0.6       normal           
  [Low8/64]TMFn(2+1):wl             R=  -3.3  p~= 0.8       normal           
  [Low8/64]TMFn(2+2):wl             R=  +3.6  p~= 0.1       normal           
  [Low8/64]TMFn(2+3):wl             R=  +2.3  p~= 0.2       normal           
  [Low8/64]TMFn(2+4):wl             R=  -2.4  p~= 0.8       normal           
  [Low8/64]TMFn(2+5):wl             R=  -1.0  p~= 0.6       normal           
  [Low8/64]TMFn(2+6):wl             R=  +0.6  p~= 0.4       normal           
  [Low8/64]TMFn(2+7):wl             R=  +3.0  p~= 0.2       normal           
  [Low8/64]TMFn(2+8):wl             R=  +2.3  p~= 0.2       normal

PracRand was advertised by pcg-random.com and according to it's docs outperforms dieharder and testu01 in it's analysis. I mainly choose it because it was already prebuild for windows and I did not have to switch to linux to build the other tools myself. You are more than welcome to go ahead and run benchmarks using TestU01 or Dieharder and report back.

Performance

Performed with OpenJDKs jmh benchmark harness testing the throughput of nextInt. Higher numbers are better Jmh parameters

  • Single: java -jar benchmarks.jar -f 5 -tu us -w15
  • Multi:  java -jar benchmarks.jar -f 5 -tu us -w15 -t 4 -e "Fast|Splittable"
wmic:root\cli>cpu get caption, name, numberofcores, maxclockspeed
Caption                               MaxClockSpeed  Name                                     NumberOfCores
Intel64 Family 6 Model 94 Stepping 3  3301           Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz  4

Single threading

RNG Mode Cnt Score Error Units
JdkRandom thrpt 25 104,803 ± 0,955 ops/us
JdkSplittable thrpt 25 307,956 ± 6,684 ops/us
MersenneTwister thrpt 25 127,690 ± 0,854 ops/us
MersenneTwisterFast thrpt 25 163,238 ± 2,404 ops/us
PcgRR thrpt 25 215,295 ± 2,442 ops/us
PcgRS thrpt 25 216,910 ± 1,022 ops/us
PcgRSFast thrpt 25 326,687 ± 1,587 ops/us
PcgRSUFast thrpt 25 335,159 ± 1,381 ops/us

Be aware of the axis scales. The PCG family performs really well in single threaded environments. In multithreading the CAS instruction is capping the execution speed. Note that while JdkRandom and PCU's are thread safe they rely on Compare And Swap instructions which, if contested (higher contention) result in a lower throughput (In other words the more threads try to access a thread safe instance the slower it will overall get).

Multi threading

Next take a look at the thread safe implementation under high congestion (the synchronized block, lock or cas instructions are constantly contested). As you can see under really high stress the locked version performs the best, but does it really warrant the trade off to be more than 4 times slower if it does not get raced? Probably not but it has to be decided on a case by case basis.

To avoid object creation overhead a good way to implement high throughput rngs for multi threaded environments is to use make use of the PcgRSFast implementation combined with the Threadlocal class instance to be used within executor pools. (TODO link to GA for example)

Note

The code is provided as is with no guarantee on correct implementation or liability. Please check it for yourself and if you find any errors open an issue and optionally a pull request. It would be nice if you let me know if the code was to use for your.

About

PCG — Java Implementation. High quality fast random number generator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.4%
  • C++ 0.6%