Notes for Intel® oneAPI Math Kernel Library Vector Statistics

ID 772987
Date 12/04/2020
Public
Document Table of Contents

R250

This is a generalized feedback shift register generator:

Feedback shift register generators possess ample theoretical foundation and were initially intended for cryptographic and communication applications. Physicists widely use R250 generator, as it is simple and fast in implementation. However, this generator fails in some types of tests, one of which is the 2D Self-Avoiding Random Walk Test.

Real Implementation (Single and Double Precision)

The output vector is the sequence of the floating-point values u0, u1, ...

Integer Implementation

The output vector of 32-bit integers x0, x1, ...

Stream Initialization by Function vslNewStream

R250 generates the stream and initializes it specifying the input 32-bit integer parameter seed. The stream state is the array of 250 32-bit integers x-250, x-249, x-1, initialized in the following way:

  1. If seed = 0, assume seed = 1. Assume x-250 = seed.

  2. Initialize x-249, ..., x0 according to recurrent correlation xn +1 = 69069xn(mod232).

  3. Interpret the values x7k-247, k = 0, 1, ..., 31 as a binary matrix of size 32x32 and perform the following: set the diagonal bits to 1, and the under-diagonal bits to 0.

Stream Initialization by Function vslNewStreamEx

R250 generates a stream and initializes it specifying the array n of 32-bit integer params[]:

  1. If n ≥ 0, assume xk-250 = params[k], k=0,1,...,249.

If n = 0, assume seed = 1, and perform the initialization as described in the above section on stream initialization by the function vslNewStream.

Subsequences Selection Methods

vslSkipAheadStream
Not supported
vslSkipAheadStreamEx
Not supported
vslLeapfrogStream
Not supported

Generator Period

Empirical Testing Results Summary

Test Name
vsRngUniform
vdRngUniform
viRngUniform
viRngUniformBits
3D Spheres Test OK (0% errors) OK (0% errors) Not applicable OK (0% errors)
Birthday Spacing Test Not applicable Not applicable Not applicable OK (0% errors)
Bitstream Test Not applicable Not applicable Not applicable OK (25% errors)
Rank of 31x31 Binary Matrices Test Not applicable Not applicable Not applicable OK (10% errors)
Rank of 32x32 Binary Matrices Test Not applicable Not applicable Not applicable OK (0% errors)
Rank of 6x8 Binary Matrices Test Not applicable Not applicable Not applicable OK (0% errors)
Counts-the-1’s Test (stream of bits) Not applicable Not applicable Not applicable OK (30% errors)
Counts-the-1’s Test (stream of specific bytes) Not applicable Not applicable Not applicable OK (0% errors)
Craps Test OK (20% errors) OK (20% errors) OK (20% errors) OK (20% errors)
Parking Lot Test OK (0% errors) OK (0% errors) Not applicable OK (0% errors)
2D Self-Avoiding Random Walk Test FAIL (70% errors) FAIL (80% errors) Not applicable FAIL (80% errors)
NOTE:
  1. The tabulated data is obtained using the one-level (threshold) testing technique. The OK result indicates FAIL < 50%. The run fails when p-value falls outside the interval [0.05, 0.95].

  2. The stream tested is generated by calling the function vslNewStream with seed=7,777,777.