# 
# RandomSource: JDK
# RNG: org.apache.commons.rng.core.source32.JDKRandom
# Seed: 15d51b84df33a63d
# 
# Java: 1.8.0_202
# Runtime: Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
# JVM: Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
# OS: Linux 3.13.0-91-generic amd64
# Native byte-order: LITTLE_ENDIAN
# Output byte-order: LITTLE_ENDIAN
# 
# Analyzer: /home/ah403/rng/PractRand/RNG_test_094 stdin32 -tf 1 -te 0 -tlmin 1KB -tlmax 4TB -multithreaded 
# 
# Start: 2019-10-26 20:25:53
# 
RNG_test using PractRand version 0.94
RNG = RNG_stdin32, seed = unknown
test set = core, folding = standard (32 bit)

rng=RNG_stdin32, seed=unknown
length= 1 kilobyte (2^10 bytes), time= 0.2 seconds
  no anomalies in 6 test result(s)

rng=RNG_stdin32, seed=unknown
length= 2 kilobytes (2^11 bytes), time= 0.3 seconds
  no anomalies in 8 test result(s)

rng=RNG_stdin32, seed=unknown
length= 4 kilobytes (2^12 bytes), time= 0.4 seconds
  no anomalies in 18 test result(s)

rng=RNG_stdin32, seed=unknown
length= 8 kilobytes (2^13 bytes), time= 0.7 seconds
  no anomalies in 21 test result(s)

rng=RNG_stdin32, seed=unknown
length= 16 kilobytes (2^14 bytes), time= 1.0 seconds
  no anomalies in 26 test result(s)

rng=RNG_stdin32, seed=unknown
length= 32 kilobytes (2^15 bytes), time= 1.4 seconds
  no anomalies in 34 test result(s)

rng=RNG_stdin32, seed=unknown
length= 64 kilobytes (2^16 bytes), time= 1.9 seconds
  no anomalies in 42 test result(s)

rng=RNG_stdin32, seed=unknown
length= 128 kilobytes (2^17 bytes), time= 2.4 seconds
  no anomalies in 50 test result(s)

rng=RNG_stdin32, seed=unknown
length= 256 kilobytes (2^18 bytes), time= 2.9 seconds
  no anomalies in 59 test result(s)

rng=RNG_stdin32, seed=unknown
length= 512 kilobytes (2^19 bytes), time= 3.5 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/32]FPF-14+6/16:(0,14-8)     R=  -6.7  p =1-9.9e-8   mildly suspicious
  [Low1/32]FPF-14+6/16:(1,14-9)     R=  -4.7  p =1-5.4e-6   unusual          
  [Low1/32]FPF-14+6/16:all          R= -10.4  p =1-5.3e-7   very suspicious  
  [Low1/32]FPF-14+6/16:cross        R=  -1.7  p =1-7.9e-4   unusual          
  ...and 63 test result(s) without anomalies

rng=RNG_stdin32, seed=unknown
length= 1 megabyte (2^20 bytes), time= 4.0 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low8/32]Gap-16:A                 R= +10.7  p =  2.0e-8   very suspicious  
  [Low1/32]DC6-9x1Bytes-1           R= +25.1  p =  1.5e-12    FAIL           
  [Low1/32]Gap-16:A                 R= +4152  p =  5e-3368    FAIL !!!!!!!!  
  [Low1/32]Gap-16:B                 R= +5464  p =  1e-4174    FAIL !!!!!!!!  
  [Low1/32]FPF-14+6/16:(0,14-8)     R=  -5.5  p =1-4.1e-6   unusual          
  [Low1/32]FPF-14+6/16:all          R=  -7.3  p =1-4.1e-5   mildly suspicious
  ...and 68 test result(s) without anomalies

# 
# End: 2019-10-26 20:25:57
# 
# Exit value: 0
# Bytes used: 1114112 >= 2^20 (1.1 MB)
# 
# Test duration: 0.07638333333333333 minutes
# 
