On 07/10/2019 15:00, Gilles Sadowski wrote:
Hi.

Le lun. 7 oct. 2019 à 15:54, Alex Herbert <alex.d.herb...@gmail.com> a écrit :
I have found a bug in the stress test application that affects all the
BigCrush results.

This was found when updating the stress test application to support
64-bit testing within PractRand, and testing of upper and lower 32-bits
from 64-bit out. An initial attempt to show that the lower 32-bits, bit
reversed, of the XOR_SHIFT_1024_S systematically fail Linear Complexity
tests did not work.

The bug was a dual reversal of the platform byte-order. Code was added
to reverse the byte order in the link c application that read from stdin
and passes numbers to BigCrush. Later code was added to reverse the byte
order in the Java application so allowing Dieharder to work. The
original c application should have been updated but was not (despite the
fact I thought I had done this). So the byte order was not correct after
a dual reversal and the BigCrush results refer to a byte reversed output
sequence.

I fixed the code and have verified that the stress test application can
identify Linear Complexity failures in XOR_SHIFT_1024_S.

I am rerunning BigCrush for the other generators.

Testing of generators with PractRand is still under trial and will
probably not make it for the 1.3 release. The only outstanding item for
1.3 is continued work on updating the user guide.
The userguide (and web site) can be updated at any time (between
releases); it is not be a blocker.

BigCrush has finished. Not much changed.

I've added an option to look for systematic failures to the stress test application. It is shown in the below table using the intersection symbol (view these tables using a fixed width font):

RNG                      New                   ∩          Old                   
∩
JDK                      50,51,52,49,51        48         74,72,74,73,74        
70
WELL_512_A               6,7,8,6,6             6          7,6,6,6,6             
6
WELL_1024_A              5,4,5,5,4             4          4,4,5,4,4             
4
WELL_19937_A             2,2,3,3,3             2          3,3,2,2,2             
2
WELL_19937_C             4,2,2,2,2             2          2,2,3,2,2             
2
WELL_44497_A             3,2,2,2,3             2          2,2,2,2,3             
2
WELL_44497_B             2,2,2,2,2             2          2,3,2,2,2             
2
MT                       2,3,2,2,3             2          2,3,2,2,2             
2
ISAAC                    1,1,0,0,1             0          0,1,2,0,0             0
SPLIT_MIX_64             0,0,0,1,0             0          1,0,0,0,0             0
XOR_SHIFT_1024_S         1,0,0,0,2             0          0,0,0,0,0             0
TWO_CMRES                0,1,0,0,0             0          4,3,3,5,4             
3
MT_64                    2,2,2,2,2             2          2,3,2,2,2             
2
MWC_256                  0,1,1,1,0             0          0,0,0,2,0             0
KISS                     1,1,0,0,0             0          0,0,0,0,0             0
XOR_SHIFT_1024_S_PHI     0,2,0,0,1             0          0,0,0,0,0             0
XO_RO_SHI_RO_64_S        1,2,3,1,1             1          1,1,2,1,3             
1
XO_RO_SHI_RO_64_SS       0,1,0,0,0             0          0,0,0,0,0             0
XO_SHI_RO_128_PLUS       0,0,1,0,0             0          1,2,2,1,1             
1
XO_SHI_RO_128_SS         1,0,1,0,0             0          0,1,0,0,0             0
XO_RO_SHI_RO_128_PLUS    1,0,0,0,0             0          0,1,0,0,0             0
XO_RO_SHI_RO_128_SS      1,1,1,0,0             0          1,0,1,0,0             0
XO_SHI_RO_256_PLUS       1,0,0,0,0             0          0,0,0,0,0             0
XO_SHI_RO_256_SS         0,0,0,0,1             0          0,1,0,2,1             0
XO_SHI_RO_512_PLUS       0,2,0,0,0             0          0,0,0,2,2             0
XO_SHI_RO_512_SS         0,0,0,0,0             0          0,1,0,1,0             0
PCG_XSH_RR_32            0,0,0,0,0             0          0,0,0,0,0             0
PCG_XSH_RS_32            0,1,2,1,0             0          1,0,1,1,0             0
PCG_RXS_M_XS_64          0,1,0,0,0             0          0,0,1,0,0             0
PCG_MCG_XSH_RR_32        0,0,0,0,0             0          0,0,0,0,0             0
PCG_MCG_XSH_RS_32        2,1,0,1,0             0          1,1,0,0,0             0
MSWS                     0,0,0,1,2             0          0,0,0,1,0             0
SFC_32                   0,0,0,1,1             0          0,1,0,0,2             0
SFC_64                   0,0,0,1,2             0          0,1,0,0,1             0
JSF_32                   0,0,0,1,2             0          0,0,0,1,1             0
JSF_64                   0,0,2,0,0             0          1,1,0,0,0             0
XO_SHI_RO_128_PP         0,0,0,1,1             0          1,0,0,1,0             0
XO_RO_SHI_RO_128_PP      0,0,0,0,0             0          0,1,0,1,0             0
XO_SHI_RO_256_PP         0,1,1,0,1             0          0,0,0,0,1             0
XO_SHI_RO_512_PP         0,0,1,0,0             0          0,0,2,1,0             0
XO_RO_SHI_RO_1024_PP     0,0,3,0,1             0          0,0,0,0,0             0
XO_RO_SHI_RO_1024_S      0,1,0,0,0             0          0,0,0,1,0             0
XO_RO_SHI_RO_1024_SS     0,1,0,0,0             0          0,1,0,0,1             0

Notable changes:

JDK                : 74,72,74,73,74 -> 50,51,52,49,51
TWO_CMRES          : 4,3,3,5,4      -> 0,1,0,0,0
XO_SHI_RO_128_PLUS : 1,2,2,1,1      -> 0,0,1,0,0


Changes of systematic failures:

JDK                : 70 -> 48
TWO_CMRES          :  3 ->  0
XO_SHI_RO_128_PLUS :  1 ->  0


Unchanged systematic failures:

WELL_* and MT variants systematically fail linear complexity. WELL_512 and WELL_1024 also fail matrix rank.

The other generators have similar results before and after, i.e. no systematic failures.

Of note the PCG RR variants never fail. This was true in the old results too.


I've added an option to the results command that generates the table for the user guide to add the systematic failures in parentheses after the failure counts, e.g.

XO_SHI_RO_512_PP         0,0,1,0,0 (0)

I am not sure if this is worthwhile. There are no cases amongst the good generators (no systematic failures) where there are sporadic failures in all 5 test runs. Thus all the good generators have at least one run with no failures.

So the value would be mainly zero except for the generators noted above.

Alex



Best regards,
Gilles

Alex
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to