# 
# RandomSource: XO_SHI_RO_512_PLUS
# RNG: org.apache.commons.rng.core.source64.XoShiRo512Plus
# Seed: f7a79efeff9de5877f78fd70a1238403de62150ecc3caf2eaf388e637f6ba6b57d153c620832ae5a88f96d117f79cfd2e987209d4f060983a2fb0506ec1c80a2
# 
# Java: 1.8.0_222
# Runtime: OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
# JVM: OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
# OS: Linux 4.4.0-165-generic amd64
# Native byte-order: LITTLE_ENDIAN
# Output byte-order: LITTLE_ENDIAN
# 64-bit output: true
# 
# Analyzer: /home/ah403/rng/PractRand/RNG_test_094 stdin64 -tf 1 -te 0 -tlmin 1KB -tlmax 4TB -multithreaded 
# 
# Start: 2019-10-26 12:31:54
# 
RNG_test using PractRand version 0.94
RNG = RNG_stdin64, seed = unknown
test set = core, folding = standard (64 bit)

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

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

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

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

rng=RNG_stdin64, seed=unknown
length= 16 kilobytes (2^14 bytes), time= 1.2 seconds
  no anomalies in 32 test result(s)

rng=RNG_stdin64, seed=unknown
length= 32 kilobytes (2^15 bytes), time= 1.5 seconds
  no anomalies in 36 test result(s)

rng=RNG_stdin64, seed=unknown
length= 64 kilobytes (2^16 bytes), time= 2.0 seconds
  no anomalies in 52 test result(s)

rng=RNG_stdin64, seed=unknown
length= 128 kilobytes (2^17 bytes), time= 2.7 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/64]DC6-9x1Bytes-1           R=  +8.3  p =  2.2e-3   unusual          
  ...and 58 test result(s) without anomalies

rng=RNG_stdin64, seed=unknown
length= 256 kilobytes (2^18 bytes), time= 3.2 seconds
  no anomalies in 72 test result(s)

rng=RNG_stdin64, seed=unknown
length= 512 kilobytes (2^19 bytes), time= 4.1 seconds
  no anomalies in 81 test result(s)

rng=RNG_stdin64, seed=unknown
length= 1 megabyte (2^20 bytes), time= 4.6 seconds
  no anomalies in 93 test result(s)

rng=RNG_stdin64, seed=unknown
length= 2 megabytes (2^21 bytes), time= 5.2 seconds
  no anomalies in 105 test result(s)

rng=RNG_stdin64, seed=unknown
length= 4 megabytes (2^22 bytes), time= 6.0 seconds
  no anomalies in 120 test result(s)

rng=RNG_stdin64, seed=unknown
length= 8 megabytes (2^23 bytes), time= 6.8 seconds
  no anomalies in 133 test result(s)

rng=RNG_stdin64, seed=unknown
length= 16 megabytes (2^24 bytes), time= 7.7 seconds
  no anomalies in 147 test result(s)

rng=RNG_stdin64, seed=unknown
length= 32 megabytes (2^25 bytes), time= 8.5 seconds
  no anomalies in 162 test result(s)

rng=RNG_stdin64, seed=unknown
length= 64 megabytes (2^26 bytes), time= 9.6 seconds
  no anomalies in 177 test result(s)

rng=RNG_stdin64, seed=unknown
length= 128 megabytes (2^27 bytes), time= 10.7 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low4/64]BCFN(2+1,13-5,T)         R=  -6.3  p =1-7.9e-4   unusual          
  ...and 192 test result(s) without anomalies

rng=RNG_stdin64, seed=unknown
length= 256 megabytes (2^28 bytes), time= 12.5 seconds
  no anomalies in 210 test result(s)

rng=RNG_stdin64, seed=unknown
length= 512 megabytes (2^29 bytes), time= 15.1 seconds
  no anomalies in 226 test result(s)

rng=RNG_stdin64, seed=unknown
length= 1 gigabyte (2^30 bytes), time= 19.4 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/64]BRank(12):768(1)         R= +5405  p~=  3e-1628    FAIL !!!!!!!!  
  ...and 242 test result(s) without anomalies

# 
# End: 2019-10-26 12:32:14
# 
# Exit value: 0
# Bytes used: 1073815552 >= 2^30 (1.1 GB)
# 
# Test duration: 0.3371166666666667 minutes
# 
