# 
# RandomSource: PCG_MCG_XSH_RS_32
# RNG: org.apache.commons.rng.core.source32.PcgMcgXshRs32
# Seed: eabd02bbb2659f18
# 
# 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-25 03:00:38
# 
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.4 seconds
  no anomalies in 8 test result(s)

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

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

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

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

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

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

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

rng=RNG_stdin32, seed=unknown
length= 512 kilobytes (2^19 bytes), time= 4.3 seconds
  no anomalies in 67 test result(s)

rng=RNG_stdin32, seed=unknown
length= 1 megabyte (2^20 bytes), time= 5.2 seconds
  no anomalies in 74 test result(s)

rng=RNG_stdin32, seed=unknown
length= 2 megabytes (2^21 bytes), time= 6.1 seconds
  no anomalies in 87 test result(s)

rng=RNG_stdin32, seed=unknown
length= 4 megabytes (2^22 bytes), time= 7.0 seconds
  Test Name                         Raw       Processed     Evaluation
  DC6-9x1Bytes-1                    R=  +6.2  p =  3.0e-3   unusual          
  ...and 96 test result(s) without anomalies

rng=RNG_stdin32, seed=unknown
length= 8 megabytes (2^23 bytes), time= 7.8 seconds
  no anomalies in 106 test result(s)

rng=RNG_stdin32, seed=unknown
length= 16 megabytes (2^24 bytes), time= 8.7 seconds
  no anomalies in 118 test result(s)

rng=RNG_stdin32, seed=unknown
length= 32 megabytes (2^25 bytes), time= 9.8 seconds
  no anomalies in 128 test result(s)

rng=RNG_stdin32, seed=unknown
length= 64 megabytes (2^26 bytes), time= 11.2 seconds
  no anomalies in 140 test result(s)

rng=RNG_stdin32, seed=unknown
length= 128 megabytes (2^27 bytes), time= 12.9 seconds
  no anomalies in 154 test result(s)

rng=RNG_stdin32, seed=unknown
length= 256 megabytes (2^28 bytes), time= 15.3 seconds
  no anomalies in 165 test result(s)

rng=RNG_stdin32, seed=unknown
length= 512 megabytes (2^29 bytes), time= 18.8 seconds
  no anomalies in 178 test result(s)

rng=RNG_stdin32, seed=unknown
length= 1 gigabyte (2^30 bytes), time= 24.9 seconds
  no anomalies in 192 test result(s)

rng=RNG_stdin32, seed=unknown
length= 2 gigabytes (2^31 bytes), time= 36.1 seconds
  no anomalies in 204 test result(s)

rng=RNG_stdin32, seed=unknown
length= 4 gigabytes (2^32 bytes), time= 58.4 seconds
  no anomalies in 216 test result(s)

rng=RNG_stdin32, seed=unknown
length= 8 gigabytes (2^33 bytes), time= 103 seconds
  no anomalies in 229 test result(s)

rng=RNG_stdin32, seed=unknown
length= 16 gigabytes (2^34 bytes), time= 189 seconds
  no anomalies in 240 test result(s)

rng=RNG_stdin32, seed=unknown
length= 32 gigabytes (2^35 bytes), time= 355 seconds
  no anomalies in 251 test result(s)

rng=RNG_stdin32, seed=unknown
length= 64 gigabytes (2^36 bytes), time= 700 seconds
  no anomalies in 263 test result(s)

rng=RNG_stdin32, seed=unknown
length= 128 gigabytes (2^37 bytes), time= 1378 seconds
  no anomalies in 273 test result(s)

rng=RNG_stdin32, seed=unknown
length= 256 gigabytes (2^38 bytes), time= 2637 seconds
  no anomalies in 284 test result(s)

rng=RNG_stdin32, seed=unknown
length= 512 gigabytes (2^39 bytes), time= 5540 seconds
  Test Name                         Raw       Processed     Evaluation
  TMFn(2+11):wl                     R= +26.6  p~=   4e-9    very suspicious  
  [Low8/32]TMFn(2+9):wl             R= +24.1  p~=   1e-7    suspicious       
  ...and 293 test result(s) without anomalies

rng=RNG_stdin32, seed=unknown
length= 1 terabyte (2^40 bytes), time= 10734 seconds
  Test Name                         Raw       Processed     Evaluation
  BCFN(2+2,13-0,T)                  R=  -8.3  p =1-2.4e-4   unusual          
  FPF-14+6/16:cross                 R=  -2.3  p =1-5.4e-4   unusual          
  TMFn(2+11):wl                     R= +53.5  p~=   4e-25     FAIL !!        
  TMFn(2+12):wl                     R= +25.6  p~=   1e-8    very suspicious  
  [Low8/32]TMFn(2+9):wl             R= +50.9  p~=   1e-23     FAIL !!        
  [Low8/32]TMFn(2+10):wl            R= +22.6  p~=   5e-7    mildly suspicious
  ...and 298 test result(s) without anomalies

# 
# End: 2019-10-25 05:59:33
# 
# Exit value: 0
# Bytes used: 1099511693312 >= 2^40 (1.1 TB)
# 
# Test duration: 178.924 minutes
# 
