# 
# RandomSource: SPLIT_MIX_64
# RNG: org.apache.commons.rng.core.source64.SplitMix64
# Seed: f661566555d485fa
# 
# 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-25 21:03:08
# 
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.4 seconds
  no anomalies in 18 test result(s)

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

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

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

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

rng=RNG_stdin64, seed=unknown
length= 128 kilobytes (2^17 bytes), time= 2.1 seconds
  no anomalies in 59 test result(s)

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

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

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

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

rng=RNG_stdin64, seed=unknown
length= 4 megabytes (2^22 bytes), time= 5.0 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low4/64]Gap-16:B                 R=  +4.6  p =  1.1e-3   unusual          
  ...and 119 test result(s) without anomalies

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

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

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

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

rng=RNG_stdin64, seed=unknown
length= 128 megabytes (2^27 bytes), time= 9.1 seconds
  no anomalies in 193 test result(s)

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

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

rng=RNG_stdin64, seed=unknown
length= 1 gigabyte (2^30 bytes), time= 17.1 seconds
  no anomalies in 243 test result(s)

rng=RNG_stdin64, seed=unknown
length= 2 gigabytes (2^31 bytes), time= 24.0 seconds
  no anomalies in 261 test result(s)

rng=RNG_stdin64, seed=unknown
length= 4 gigabytes (2^32 bytes), time= 36.0 seconds
  no anomalies in 277 test result(s)

rng=RNG_stdin64, seed=unknown
length= 8 gigabytes (2^33 bytes), time= 62.1 seconds
  no anomalies in 294 test result(s)

rng=RNG_stdin64, seed=unknown
length= 16 gigabytes (2^34 bytes), time= 114 seconds
  no anomalies in 310 test result(s)

rng=RNG_stdin64, seed=unknown
length= 32 gigabytes (2^35 bytes), time= 213 seconds
  no anomalies in 325 test result(s)

rng=RNG_stdin64, seed=unknown
length= 64 gigabytes (2^36 bytes), time= 425 seconds
  no anomalies in 340 test result(s)

rng=RNG_stdin64, seed=unknown
length= 128 gigabytes (2^37 bytes), time= 843 seconds
  no anomalies in 355 test result(s)

rng=RNG_stdin64, seed=unknown
length= 256 gigabytes (2^38 bytes), time= 1660 seconds
  no anomalies in 369 test result(s)

rng=RNG_stdin64, seed=unknown
length= 512 gigabytes (2^39 bytes), time= 3352 seconds
  no anomalies in 383 test result(s)

rng=RNG_stdin64, seed=unknown
length= 1 terabyte (2^40 bytes), time= 6695 seconds
  no anomalies in 397 test result(s)

rng=RNG_stdin64, seed=unknown
length= 2 terabytes (2^41 bytes), time= 13212 seconds
  no anomalies in 409 test result(s)

rng=RNG_stdin64, seed=unknown
length= 4 terabytes (2^42 bytes), time= 26751 seconds
  no anomalies in 422 test result(s)

# 
# End: 2019-10-26 04:29:01
# 
# Exit value: 0
# Bytes used: 4398046584832 >= 2^42 (4.4 TB)
# 
# Test duration: 445.87405 minutes
# 
