Branch data Line data Source code
1 : : // *****************************************************************************
2 : : /*!
3 : : \file src/RNGTest/BigCrush.cpp
4 : : \copyright 2012-2015 J. Bakosi,
5 : : 2016-2018 Los Alamos National Security, LLC.,
6 : : 2019-2021 Triad National Security, LLC.
7 : : All rights reserved. See the LICENSE file for details.
8 : : \brief Class re-creating the TestU01 library's BigCrush battery
9 : : \details Class re-creating the TestU01 library's BigCrush battery.
10 : : */
11 : : // *****************************************************************************
12 : :
13 : : #include "NoWarning/charm.hpp"
14 : : #include "NoWarning/pup_stl.hpp"
15 : : #include "NoWarning/pup.hpp"
16 : :
17 : : extern "C" {
18 : : #include <gdef.h>
19 : : #include <gofw.h>
20 : : #include <scomp.h>
21 : : #include <sknuth.h>
22 : : #include <smarsa.h>
23 : : #include <snpair.h>
24 : : #include <sres.h>
25 : : #include <sspectral.h>
26 : : #include <sstring.h>
27 : : #include <swalk.h>
28 : : }
29 : :
30 : : #include "Tags.hpp"
31 : : #include "PUPUtil.hpp"
32 : : #include "TestU01.hpp"
33 : : #include "StatTest.hpp"
34 : : #include "TestStack.hpp"
35 : : #include "TestU01Props.hpp"
36 : : #include "TestU01Stack.hpp"
37 : : #include "BigCrush.hpp"
38 : :
39 : : namespace rngtest {
40 : :
41 : : extern TestStack g_testStack;
42 : :
43 : : } // rngtest::
44 : :
45 : : using rngtest::BigCrush;
46 : :
47 : : void
48 : 1 : BigCrush::addTests( std::vector< std::function< StatTest() > >& tests,
49 : : tk::ctr::RNGType rng,
50 : : CProxy_TestU01Suite& proxy )
51 : : // *****************************************************************************
52 : : // Add statistical tests to battery
53 : : //! \details This function adds, i.e., registers, all statistical tests to the
54 : : //! test stack corresponding to the TestU01 library's BigCrush battery.
55 : : //! \param[in] tests Vector of test constructors
56 : : //! \param[in] rng RNG ID enum associated with the RNG to be tested
57 : : //! \param[in] proxy Charm++ host proxy to which the tests will call back to
58 : : // *****************************************************************************
59 : : {
60 : : // Select test stack
61 : 1 : const auto& stack = g_testStack.TestU01;
62 : :
63 : : // Find RNG
64 : 1 : auto gen = stack.generator( rng );
65 : :
66 : : static const long THOUSAND = 1000;
67 : : static const long MILLION = THOUSAND * THOUSAND;
68 : : static const long BILLION = THOUSAND * MILLION;
69 : :
70 : : // Marsaglia Serial Over, r = 0
71 : : stack.add< TestU01< TestU01Props< tag::SerialOver, CProxy_TestU01Suite,
72 : : sres_Basic, sres_CreateBasic,
73 : : sres_DeleteBasic,
74 : : long, long, int, long, int > > >
75 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Serial Over r=0"},
[ + - ][ + + ]
[ - - ]
76 : 2 : 1L, static_cast<long>(BILLION), 0, 256L, 3 );
77 : :
78 : : // Marsaglia Serial Over, r = 22
79 : : stack.add< TestU01< TestU01Props< tag::SerialOver, CProxy_TestU01Suite,
80 : : sres_Basic, sres_CreateBasic,
81 : : sres_DeleteBasic,
82 : : long, long, int, long, int > > >
83 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Serial Over r=22"},
[ + - ][ + + ]
[ - - ]
84 : 2 : 1L, static_cast<long>(BILLION), 22, 256L, 3 );
85 : :
86 : : // Marsaglia Collision Over, t = 2, r = 0
87 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
88 : : smarsa_Res, smarsa_CreateRes,
89 : : smarsa_DeleteRes,
90 : : long, long, int, long, int > > >
91 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=2 r=0"},
[ + - ][ + + ]
[ - - ]
92 : 2 : 30L, 20L * MILLION, 0, 1024L * 1024L * 2L, 2 );
93 : :
94 : : // Marsaglia Collision Over, t = 2, r = 9
95 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
96 : : smarsa_Res, smarsa_CreateRes,
97 : : smarsa_DeleteRes,
98 : : long, long, int, long, int > > >
99 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=2 r=9"},
[ + - ][ + + ]
[ - - ]
100 : 2 : 30L, 20L * MILLION, 9, 1024L * 1024L * 2L, 2 );
101 : :
102 : : // Marsaglia Collision Over, t = 3, r = 0
103 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
104 : : smarsa_Res, smarsa_CreateRes,
105 : : smarsa_DeleteRes,
106 : : long, long, int, long, int > > >
107 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=3 r=0"},
[ + - ][ + + ]
[ - - ]
108 : 2 : 30L, 20L * MILLION, 0, 1024L * 16L, 3 );
109 : :
110 : : // Marsaglia Collision Over, t = 3, r = 16
111 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
112 : : smarsa_Res, smarsa_CreateRes,
113 : : smarsa_DeleteRes,
114 : : long, long, int, long, int > > >
115 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=3 r=16"},
[ + - ][ + + ]
[ - - ]
116 : 2 : 30L, 20L * MILLION, 16, 1024L * 16L, 3 );
117 : :
118 : : // Marsaglia Collision Over, t = 7, r = 0
119 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
120 : : smarsa_Res, smarsa_CreateRes,
121 : : smarsa_DeleteRes,
122 : : long, long, int, long, int > > >
123 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=7 r=0"},
[ + - ][ + + ]
[ - - ]
124 : 2 : 30L, 20L * MILLION, 0, 64L, 7 );
125 : :
126 : : // Marsaglia Collision Over, t = 7, r = 24
127 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
128 : : smarsa_Res, smarsa_CreateRes,
129 : : smarsa_DeleteRes,
130 : : long, long, int, long, int > > >
131 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=7 r=24"},
[ + - ][ + + ]
[ - - ]
132 : 2 : 30L, 20L * MILLION, 24, 64L, 7 );
133 : :
134 : : // Marsaglia Collision Over, t = 14, r = 0
135 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
136 : : smarsa_Res, smarsa_CreateRes,
137 : : smarsa_DeleteRes,
138 : : long, long, int, long, int > > >
139 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=14 r=0"},
[ + - ][ + + ]
[ - - ]
140 : 2 : 30L, 20L * MILLION, 0, 8L, 14 );
141 : :
142 : : // Marsaglia Collision Over, t = 14, r = 27
143 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
144 : : smarsa_Res, smarsa_CreateRes,
145 : : smarsa_DeleteRes,
146 : : long, long, int, long, int > > >
147 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=14 r=27"},
[ + - ][ + + ]
[ - - ]
148 : 2 : 30L, 20L * MILLION, 27, 8L, 14 );
149 : :
150 : : // Marsaglia Collision Over, t = 21, r = 0
151 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
152 : : smarsa_Res, smarsa_CreateRes,
153 : : smarsa_DeleteRes,
154 : : long, long, int, long, int > > >
155 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=21 r=0"},
[ + - ][ + + ]
[ - - ]
156 : 2 : 30L, 20L * MILLION, 0, 4L, 21 );
157 : :
158 : : // Marsaglia Collision Over, t = 21, r = 0
159 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
160 : : smarsa_Res, smarsa_CreateRes,
161 : : smarsa_DeleteRes,
162 : : long, long, int, long, int > > >
163 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=21 r=0"},
[ + - ][ + + ]
[ - - ]
164 : 2 : 30L, 20L * MILLION, 0, 4L, 21 );
165 : :
166 : : // Marsaglia Collision Over, t = 21, r = 28
167 : : stack.add< TestU01< TestU01Props< tag::CollisionOver, CProxy_TestU01Suite,
168 : : smarsa_Res, smarsa_CreateRes,
169 : : smarsa_DeleteRes,
170 : : long, long, int, long, int > > >
171 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision Over t=21 r=28"},
[ + - ][ + + ]
[ - - ]
172 : 2 : 30L, 20L * MILLION, 28, 4L, 21 );
173 : :
174 : : #ifdef USE_LONGLONG
175 : :
176 : : // Marsaglia's Birthday Spacings, t = 2, r = 0
177 : : #if LONG_MAX <= 2147483647L
178 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
179 : : sres_Poisson, sres_CreatePoisson,
180 : : sres_DeletePoisson,
181 : : long, long, int, long, int, int > > >
182 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=2 r=0"},
183 : : 250L, 4L * MILLION, 0, 1073741824L, 2, 1 );
184 : : #else // LONG_MAX
185 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
186 : : sres_Poisson, sres_CreatePoisson,
187 : : sres_DeletePoisson,
188 : : long, long, int, long, int, int > > >
189 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=2 r=0"},
[ + - ][ + + ]
[ - - ]
190 : 2 : 100L, 10L * MILLION, 0, 2147483648L, 2, 1 );
191 : : #endif // LONG_MAX
192 : :
193 : : // Marsaglia's Birthday Spacings, t = 3, r = 0
194 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
195 : : sres_Poisson, sres_CreatePoisson,
196 : : sres_DeletePoisson,
197 : : long, long, int, long, int, int > > >
198 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=3 r=0"},
[ + - ][ + + ]
[ - - ]
199 : 2 : 20L, 20L * MILLION, 0, 2097152L, 3, 1 );
200 : :
201 : : // Marsaglia's Birthday Spacings, t = 4, r = 14
202 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
203 : : sres_Poisson, sres_CreatePoisson,
204 : : sres_DeletePoisson,
205 : : long, long, int, long, int, int > > >
206 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=4 r=14"},
[ + - ][ + + ]
[ - - ]
207 : 2 : 20L, 30L * MILLION, 14, 65536L, 4, 1 );
208 : :
209 : : // Marsaglia's Birthday Spacings, t = 7, r = 0
210 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
211 : : sres_Poisson, sres_CreatePoisson,
212 : : sres_DeletePoisson,
213 : : long, long, int, long, int, int > > >
214 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=7 r=0"},
[ + - ][ + + ]
[ - - ]
215 : 2 : 20L, 20L * MILLION, 0, 512L, 7, 1 );
216 : :
217 : : // Marsaglia's Birthday Spacings, t = 7, r = 7
218 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
219 : : sres_Poisson, sres_CreatePoisson,
220 : : sres_DeletePoisson,
221 : : long, long, int, long, int, int > > >
222 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=7 r=7"},
[ + - ][ + + ]
[ - - ]
223 : 2 : 20L, 20L * MILLION, 7, 512L, 7, 1 );
224 : :
225 : : // Marsaglia's Birthday Spacings, t = 8, r = 14
226 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
227 : : sres_Poisson, sres_CreatePoisson,
228 : : sres_DeletePoisson,
229 : : long, long, int, long, int, int > > >
230 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=8 r=14"},
[ + - ][ + + ]
[ - - ]
231 : 2 : 20L, 30L * MILLION, 14, 256L, 8, 1 );
232 : :
233 : : // Marsaglia's Birthday Spacings, t = 8, r = 22
234 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
235 : : sres_Poisson, sres_CreatePoisson,
236 : : sres_DeletePoisson,
237 : : long, long, int, long, int, int > > >
238 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=8 r=22"},
[ + - ][ + + ]
[ - - ]
239 : 2 : 20L, 30L * MILLION, 22, 256L, 8, 1 );
240 : :
241 : : // Marsaglia's Birthday Spacings, t = 16, r = 0
242 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
243 : : sres_Poisson, sres_CreatePoisson,
244 : : sres_DeletePoisson,
245 : : long, long, int, long, int, int > > >
246 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=16 r=0"},
[ + - ][ + + ]
[ - - ]
247 : 2 : 20L, 30L * MILLION, 0, 16L, 16, 1 );
248 : :
249 : : // Marsaglia's Birthday Spacings, t = 16, r = 26
250 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
251 : : sres_Poisson, sres_CreatePoisson,
252 : : sres_DeletePoisson,
253 : : long, long, int, long, int, int > > >
254 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=16 r=26"},
[ + - ][ + + ]
[ - - ]
255 : 2 : 20L, 30L * MILLION, 26, 16L, 16, 1 );
256 : :
257 : : #else // USE_LONGLONG
258 : :
259 : : // Marsaglia's Birthday Spacings, t = 2, r = 0
260 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
261 : : sres_Poisson, sres_CreatePoisson,
262 : : sres_DeletePoisson,
263 : : long, long, int, long, int, int > > >
264 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=2 r=0"},
265 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 0, 67108864L, 2, 1 );
266 : :
267 : : // Marsaglia's Birthday Spacings, t = 4, r = 0
268 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
269 : : sres_Poisson, sres_CreatePoisson,
270 : : sres_DeletePoisson,
271 : : long, long, int, long, int, int > > >
272 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=4 r=0"},
273 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 0, 1024L*8L, 4, 1 );
274 : :
275 : : // Marsaglia's Birthday Spacings, t = 4, r = 16
276 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
277 : : sres_Poisson, sres_CreatePoisson,
278 : : sres_DeletePoisson,
279 : : long, long, int, long, int, int > > >
280 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=4 r=16"},
281 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 16, 1024L*8L, 4, 1 );
282 : :
283 : : // Marsaglia's Birthday Spacings, t = 13, r = 0
284 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
285 : : sres_Poisson, sres_CreatePoisson,
286 : : sres_DeletePoisson,
287 : : long, long, int, long, int, int > > >
288 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=0"},
289 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 0, 16L, 13, 1 );
290 : :
291 : : // Marsaglia's Birthday Spacings, t = 13, r = 5
292 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
293 : : sres_Poisson, sres_CreatePoisson,
294 : : sres_DeletePoisson,
295 : : long, long, int, long, int, int > > >
296 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=5"},
297 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 5, 16L, 13, 1 );
298 : :
299 : : // Marsaglia's Birthday Spacings, t = 13, r = 10
300 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
301 : : sres_Poisson, sres_CreatePoisson,
302 : : sres_DeletePoisson,
303 : : long, long, int, long, int, int > > >
304 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=10"},
305 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 10, 16L, 13, 1 );
306 : :
307 : : // Marsaglia's Birthday Spacings, t = 13, r = 15
308 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
309 : : sres_Poisson, sres_CreatePoisson,
310 : : sres_DeletePoisson,
311 : : long, long, int, long, int, int > > >
312 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=15"},
313 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 15, 16L, 13, 1 );
314 : :
315 : : // Marsaglia's Birthday Spacings, t = 13, r = 20
316 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
317 : : sres_Poisson, sres_CreatePoisson,
318 : : sres_DeletePoisson,
319 : : long, long, int, long, int, int > > >
320 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=20"},
321 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 20, 16L, 13, 1 );
322 : :
323 : : // Marsaglia's Birthday Spacings, t = 13, r = 26
324 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
325 : : sres_Poisson, sres_CreatePoisson,
326 : : sres_DeletePoisson,
327 : : long, long, int, long, int, int > > >
328 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=26"},
329 : : 10L*THOUSAND, static_cast<long>(MILLION/10), 26, 16L, 13, 1 );
330 : :
331 : : #endif // USE_LONGLONG
332 : :
333 : : // Close Pairs, t = 3
334 : : stack.add< TestU01< TestU01Props< tag::ClosePairs, CProxy_TestU01Suite,
335 : : snpair_Res, snpair_CreateRes,
336 : : snpair_DeleteRes,
337 : : long, long, int, int, int, int, int > > >
338 [ + - ][ + - ]: 7 : ( proxy, tests, rng, gen, {"Close Pairs NP t=3",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ - - ]
339 : : "Close Pairs mNP t=3",
340 : : "Close Pairs mNP1 t=3",
341 : : "Close Pairs mNP2 t=3",
342 : : "Close Pairs mNJumps t=3",
343 : : "Close Pairs mNP2S t=3"},
344 : 7 : 30L, 6L * MILLION, 0, 3, 0, 30, 1 );
345 : :
346 : : // Close Pairs, t = 5
347 : : stack.add< TestU01< TestU01Props< tag::ClosePairs, CProxy_TestU01Suite,
348 : : snpair_Res, snpair_CreateRes,
349 : : snpair_DeleteRes,
350 : : long, long, int, int, int, int, int > > >
351 [ + - ][ + - ]: 7 : ( proxy, tests, rng, gen, {"Close Pairs NP t=5",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ - - ]
352 : : "Close Pairs mNP t=5",
353 : : "Close Pairs mNP1 t=5",
354 : : "Close Pairs mNP2 t=5",
355 : : "Close Pairs mNJumps t=5",
356 : : "Close Pairs mNP2S t=5"},
357 : 7 : 20L, 4L * MILLION, 0, 5, 0, 30, 1 );
358 : :
359 : : // Close Pairs, t = 9
360 : : stack.add< TestU01< TestU01Props< tag::ClosePairs, CProxy_TestU01Suite,
361 : : snpair_Res, snpair_CreateRes,
362 : : snpair_DeleteRes,
363 : : long, long, int, int, int, int, int > > >
364 [ + - ][ + - ]: 7 : ( proxy, tests, rng, gen, {"Close Pairs NP t=9",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ - - ]
365 : : "Close Pairs mNP t=9",
366 : : "Close Pairs mNP1 t=9",
367 : : "Close Pairs mNP2 t=9",
368 : : "Close Pairs mNJumps t=9",
369 : : "Close Pairs mNP2S t=9"},
370 : 7 : 10L, 3L * MILLION, 0, 9, 0, 30, 1 );
371 : :
372 : : // Close Pairs, t = 16
373 : : stack.add< TestU01< TestU01Props< tag::ClosePairs, CProxy_TestU01Suite,
374 : : snpair_Res, snpair_CreateRes,
375 : : snpair_DeleteRes,
376 : : long, long, int, int, int, int, int > > >
377 [ + - ][ + - ]: 7 : ( proxy, tests, rng, gen, {"Close Pairs NP t=16",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ - - ]
378 : : "Close Pairs mNP t=16",
379 : : "Close Pairs mNP1 t=16",
380 : : "Close Pairs mNP2 t=16",
381 : : "Close Pairs mNJumps t=16",
382 : : "Close Pairs mNP2S t=16"},
383 : 7 : 5L, 2L * MILLION, 0, 16, 0, 30, 1 );
384 : :
385 : : // Knuth's Simple Poker, d = 8, r = 0
386 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
387 : : sres_Chi2, sres_CreateChi2,
388 : : sres_DeleteChi2,
389 : : long, long, int, int, int > > >
390 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=8 r=0"},
[ + - ][ + + ]
[ - - ]
391 : 2 : 1L, 400L * MILLION, 0, 8, 8 );
392 : :
393 : : // Knuth's Simple Poker, d = 8, r = 27
394 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
395 : : sres_Chi2, sres_CreateChi2,
396 : : sres_DeleteChi2,
397 : : long, long, int, int, int > > >
398 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=8 r=27"},
[ + - ][ + + ]
[ - - ]
399 : 2 : 1L, 400L * MILLION, 27, 8, 8 );
400 : :
401 : : // Knuth's Simple Poker, d = 32, r = 0
402 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
403 : : sres_Chi2, sres_CreateChi2,
404 : : sres_DeleteChi2,
405 : : long, long, int, int, int > > >
406 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=32 r=0"},
[ + - ][ + + ]
[ - - ]
407 : 2 : 1L, 100L * MILLION, 0, 32, 32 );
408 : :
409 : : // Knuth's Simple Poker, d = 32, r = 25
410 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
411 : : sres_Chi2, sres_CreateChi2,
412 : : sres_DeleteChi2,
413 : : long, long, int, int, int > > >
414 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=32 r=25"},
[ + - ][ + + ]
[ - - ]
415 : 2 : 1L, 100L * MILLION, 25, 32, 32 );
416 : :
417 : : // Knuth's Coupon Collector, d = 8, r = 0
418 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
419 : : sres_Chi2, sres_CreateChi2,
420 : : sres_DeleteChi2,
421 : : long, long, int, int > > >
422 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=8 r=0"},
[ + - ][ + + ]
[ - - ]
423 : 2 : 1L, 200L * MILLION, 0, 8 );
424 : :
425 : : // Knuth's Coupon Collector, d = 8, r = 10
426 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
427 : : sres_Chi2, sres_CreateChi2,
428 : : sres_DeleteChi2,
429 : : long, long, int, int > > >
430 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=8 r=10"},
[ + - ][ + + ]
[ - - ]
431 : 2 : 1L, 200L * MILLION, 10, 8 );
432 : :
433 : : // Knuth's Coupon Collector, d = 8, r = 20
434 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
435 : : sres_Chi2, sres_CreateChi2,
436 : : sres_DeleteChi2,
437 : : long, long, int, int > > >
438 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=8 r=20"},
[ + - ][ + + ]
[ - - ]
439 : 2 : 1L, 200L * MILLION, 20, 8 );
440 : :
441 : : // Knuth's Coupon Collector, d = 8, r = 27
442 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
443 : : sres_Chi2, sres_CreateChi2,
444 : : sres_DeleteChi2,
445 : : long, long, int, int > > >
446 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=8 r=27"},
[ + - ][ + + ]
[ - - ]
447 : 2 : 1L, 200L * MILLION, 27, 8 );
448 : :
449 : : // Knuth's Gap, r = 0
450 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
451 : : sres_Chi2, sres_CreateChi2,
452 : : sres_DeleteChi2,
453 : : long, long, int, double, double > > >
454 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=0"},
[ + - ][ + + ]
[ - - ]
455 : 2 : 1L, static_cast<long>(BILLION/2), 0, 0.0, 1.0/16.0 );
456 : :
457 : : // Knuth's Gap, r = 25
458 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
459 : : sres_Chi2, sres_CreateChi2,
460 : : sres_DeleteChi2,
461 : : long, long, int, double, double > > >
462 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=25"},
[ + - ][ + + ]
[ - - ]
463 : 2 : 1L, 300L * MILLION, 25, 0.0, 1.0/32.0 );
464 : :
465 : : // Knuth's Gap, r = 0, n = .5e+9
466 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
467 : : sres_Chi2, sres_CreateChi2,
468 : : sres_DeleteChi2,
469 : : long, long, int, double, double > > >
470 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=0 n=.5B"},
[ + - ][ + + ]
[ - - ]
471 : 2 : 1L, static_cast<long>(BILLION / 10), 0, 0.0, 1.0/128.0 );
472 : :
473 : : // Knuth's Gap, r = 20, n = 10e+6
474 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
475 : : sres_Chi2, sres_CreateChi2,
476 : : sres_DeleteChi2,
477 : : long, long, int, double, double > > >
478 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=20 n=10M"},
[ + - ][ + + ]
[ - - ]
479 : 2 : 1L, 10L * MILLION, 20, 0.0, 1.0/1024.0 );
480 : :
481 : : // Knuth's Run, r = 0
482 : : stack.add< TestU01< TestU01Props< tag::Run, CProxy_TestU01Suite,
483 : : sres_Chi2, sres_CreateChi2,
484 : : sres_DeleteChi2,
485 : : long, long, int, int > > >
486 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Run r=0"},
[ + - ][ + + ]
[ - - ]
487 : 2 : 5L, static_cast<long>(BILLION), 0, 0 );
488 : :
489 : : // Knuth's Run, r = 15
490 : : stack.add< TestU01< TestU01Props< tag::Run, CProxy_TestU01Suite,
491 : : sres_Chi2, sres_CreateChi2,
492 : : sres_DeleteChi2,
493 : : long, long, int, int > > >
494 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Run r=15"},
[ + - ][ + + ]
[ - - ]
495 : 2 : 10L, static_cast<long>(BILLION), 15, 1 );
496 : :
497 : : // Knuth's Permutation, t = 3
498 : : stack.add< TestU01< TestU01Props< tag::Permutation, CProxy_TestU01Suite,
499 : : sres_Chi2, sres_CreateChi2,
500 : : sres_DeleteChi2,
501 : : long, long, int, int > > >
502 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Permutation t=3"},
[ + - ][ + + ]
[ - - ]
503 : 2 : 1L, static_cast<long>(BILLION), 5, 3 );
504 : :
505 : : // Knuth's Permutation, t = 5
506 : : stack.add< TestU01< TestU01Props< tag::Permutation, CProxy_TestU01Suite,
507 : : sres_Chi2, sres_CreateChi2,
508 : : sres_DeleteChi2,
509 : : long, long, int, int > > >
510 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Permutation t=5"},
[ + - ][ + + ]
[ - - ]
511 : 2 : 1L, static_cast<long>(BILLION), 5, 5 );
512 : :
513 : : // Knuth's Permutation, t = 7
514 : : stack.add< TestU01< TestU01Props< tag::Permutation, CProxy_TestU01Suite,
515 : : sres_Chi2, sres_CreateChi2,
516 : : sres_DeleteChi2,
517 : : long, long, int, int > > >
518 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Permutation t=7"},
[ + - ][ + + ]
[ - - ]
519 : 2 : 1L, static_cast<long>(BILLION / 2), 5, 7 );
520 : :
521 : : // Knuth's Permutation, t = 10
522 : : stack.add< TestU01< TestU01Props< tag::Permutation, CProxy_TestU01Suite,
523 : : sres_Chi2, sres_CreateChi2,
524 : : sres_DeleteChi2,
525 : : long, long, int, int > > >
526 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Permutation t=10"},
[ + - ][ + + ]
[ - - ]
527 : 2 : 1L, static_cast<long>(BILLION / 2), 10, 10 );
528 : :
529 : : // Knuth's Collision with permutations, r = 0
530 : : stack.add< TestU01< TestU01Props< tag::CollisionPermut, CProxy_TestU01Suite,
531 : : sknuth_Res2, sknuth_CreateRes2,
532 : : sknuth_DeleteRes2,
533 : : long, long, int, int > > >
534 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision w. Permutations r=0"},
[ + - ][ + + ]
[ - - ]
535 : 2 : 20L, 20L * MILLION, 0, 14 );
536 : :
537 : : // Knuth's Collision with permutations, r = 10
538 : : stack.add< TestU01< TestU01Props< tag::CollisionPermut, CProxy_TestU01Suite,
539 : : sknuth_Res2, sknuth_CreateRes2,
540 : : sknuth_DeleteRes2,
541 : : long, long, int, int > > >
542 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision w. Permutations r=10"},
[ + - ][ + + ]
[ - - ]
543 : 2 : 20L, 20L * MILLION, 10, 14 );
544 : :
545 : : // Knuth's Maximum-of-t, t = 8
546 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
547 : : sknuth_Res1, sknuth_CreateRes1,
548 : : sknuth_DeleteRes1,
549 : : long, long, int, int, int, int, int > > >
550 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=8",
[ + - ][ + - ]
[ + + ][ - - ]
551 : : "Maximum-of-t Anderson-Darling t=8"},
552 : 0 : 40L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 8,
553 : 3 : gofw_Sum, gofw_AD );
554 : :
555 : : // Knuth's Maximum-of-t, t = 16
556 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
557 : : sknuth_Res1, sknuth_CreateRes1,
558 : : sknuth_DeleteRes1,
559 : : long, long, int, int, int, int, int > > >
560 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=16",
[ + - ][ + - ]
[ + + ][ - - ]
561 : : "Maximum-of-t Anderson-Darling t=16"},
562 : 0 : 30L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 16,
563 : 3 : gofw_Sum, gofw_AD );
564 : :
565 : : // Knuth's Maximum-of-t, t = 24
566 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
567 : : sknuth_Res1, sknuth_CreateRes1,
568 : : sknuth_DeleteRes1,
569 : : long, long, int, int, int, int, int > > >
570 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=24",
[ + - ][ + - ]
[ + + ][ - - ]
571 : : "Maximum-of-t Anderson-Darling t=24"},
572 : 0 : 20L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 24,
573 : 3 : gofw_Mean, gofw_Mean );
574 : :
575 : : // Knuth's Maximum-of-t, t = 32
576 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
577 : : sknuth_Res1, sknuth_CreateRes1,
578 : : sknuth_DeleteRes1,
579 : : long, long, int, int, int, int, int > > >
580 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=32",
[ + - ][ + - ]
[ + + ][ - - ]
581 : : "Maximum-of-t Anderson-Darling t=32"},
582 : 0 : 20L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 32,
583 : 3 : gofw_Mean, gofw_Mean );
584 : :
585 : : // Sample Products, t = 8
586 : : stack.add< TestU01< TestU01Props< tag::SampleProd, CProxy_TestU01Suite,
587 : : sres_Basic, sres_CreateBasic,
588 : : sres_DeleteBasic,
589 : : long, long, int, int > > >
590 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Products t=8"},
[ + - ][ + + ]
[ - - ]
591 : 2 : 4L, 10L * MILLION, 0, 8 );
592 : :
593 : : // Sample Products, t = 16
594 : : stack.add< TestU01< TestU01Props< tag::SampleProd, CProxy_TestU01Suite,
595 : : sres_Basic, sres_CreateBasic,
596 : : sres_DeleteBasic,
597 : : long, long, int, int > > >
598 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Products t=16"},
[ + - ][ + + ]
[ - - ]
599 : 2 : 20L, 10L * MILLION, 0, 16 );
600 : :
601 : : // Sample Products, t = 24
602 : : stack.add< TestU01< TestU01Props< tag::SampleProd, CProxy_TestU01Suite,
603 : : sres_Basic, sres_CreateBasic,
604 : : sres_DeleteBasic,
605 : : long, long, int, int > > >
606 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Products t=24"},
[ + - ][ + + ]
[ - - ]
607 : 2 : 20L, 10L * MILLION, 0, 24 );
608 : :
609 : : // Sample Mean, r = 0
610 : : stack.add< TestU01< TestU01Props< tag::SampleMean, CProxy_TestU01Suite,
611 : : sres_Basic, sres_CreateBasic,
612 : : sres_DeleteBasic,
613 : : long, long, int > > >
614 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Mean r=0"},
[ + - ][ + + ]
[ - - ]
615 : 2 : 20L * MILLION, 30L, 0 );
616 : :
617 : : // Sample Mean, r = 10
618 : : stack.add< TestU01< TestU01Props< tag::SampleMean, CProxy_TestU01Suite,
619 : : sres_Basic, sres_CreateBasic,
620 : : sres_DeleteBasic,
621 : : long, long, int > > >
622 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Mean r=10"},
[ + - ][ + + ]
[ - - ]
623 : 2 : 20L * MILLION, 30L, 10 );
624 : :
625 : : // Sample Autorrelation, k = 1
626 : : stack.add< TestU01< TestU01Props< tag::SampleCorr, CProxy_TestU01Suite,
627 : : sres_Basic, sres_CreateBasic,
628 : : sres_DeleteBasic,
629 : : long, long, int, int > > >
630 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Autorrelation k=1"},
[ + - ][ + + ]
[ - - ]
631 : 2 : 1L, 2L * BILLION, 0, 1 );
632 : :
633 : : // Sample Autorrelation, k = 2
634 : : stack.add< TestU01< TestU01Props< tag::SampleCorr, CProxy_TestU01Suite,
635 : : sres_Basic, sres_CreateBasic,
636 : : sres_DeleteBasic,
637 : : long, long, int, int > > >
638 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Autorrelation k=2"},
[ + - ][ + + ]
[ - - ]
639 : 2 : 1L, 2L * BILLION, 0, 2 );
640 : :
641 : : // Maurer's "universal" test, r = 0
642 : : stack.add< TestU01< TestU01Props< tag::AppearanceSpacings, CProxy_TestU01Suite,
643 : : sres_Basic, sres_CreateBasic,
644 : : sres_DeleteBasic,
645 : : long, long, long, int, int, int > > >
646 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Appearance Spacings r=0"},
[ + - ][ + + ]
[ - - ]
647 : 2 : 1L, 10L * MILLION, 400L * MILLION, 0, 30, 15 );
648 : :
649 : : // Maurer's "universal" test, r = 0
650 : : stack.add< TestU01< TestU01Props< tag::AppearanceSpacings, CProxy_TestU01Suite,
651 : : sres_Basic, sres_CreateBasic,
652 : : sres_DeleteBasic,
653 : : long, long, long, int, int, int > > >
654 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Appearance Spacings r=0"},
[ + - ][ + + ]
[ - - ]
655 : 0 : 1L, 10L * MILLION, static_cast<long>(BILLION), 0,
656 : 2 : 3, 15 );
657 : :
658 : : // Maurer's "universal" test, r = 27
659 : : stack.add< TestU01< TestU01Props< tag::AppearanceSpacings, CProxy_TestU01Suite,
660 : : sres_Basic, sres_CreateBasic,
661 : : sres_DeleteBasic,
662 : : long, long, long, int, int, int > > >
663 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Appearance Spacings r=27"},
[ + - ][ + + ]
[ - - ]
664 : 0 : 1L, 10L * MILLION, static_cast<long>(BILLION), 27,
665 : 2 : 3, 15 );
666 : :
667 : : // Weight Distribution, r = 0
668 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
669 : : sres_Chi2, sres_CreateChi2,
670 : : sres_DeleteChi2,
671 : : long, long, int, long, double, double > > >
672 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=0"},
[ + - ][ + + ]
[ - - ]
673 : 2 : 1L, 20L * MILLION, 0, 256L, 0.0, 0.25 );
674 : :
675 : : // Weight Distribution, r = 20
676 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
677 : : sres_Chi2, sres_CreateChi2,
678 : : sres_DeleteChi2,
679 : : long, long, int, long, double, double > > >
680 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=20"},
[ + - ][ + + ]
[ - - ]
681 : 2 : 1L, 20L * MILLION, 20, 256L, 0.0, 0.25 );
682 : :
683 : : // Weight Distribution, r = 28
684 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
685 : : sres_Chi2, sres_CreateChi2,
686 : : sres_DeleteChi2,
687 : : long, long, int, long, double, double > > >
688 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=28"},
[ + - ][ + + ]
[ - - ]
689 : 2 : 1L, 20L * MILLION, 28, 256L, 0.0, 0.25 );
690 : :
691 : : // Weight Distribution, r = 0, beta = 1/16
692 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
693 : : sres_Chi2, sres_CreateChi2,
694 : : sres_DeleteChi2,
695 : : long, long, int, long, double, double > > >
696 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=0 beta=1/16"},
[ + - ][ + + ]
[ - - ]
697 : 2 : 1L, 20L * MILLION, 0, 256L, 0.0, 0.0625 );
698 : :
699 : : // Weight Distribution, r = 10
700 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
701 : : sres_Chi2, sres_CreateChi2,
702 : : sres_DeleteChi2,
703 : : long, long, int, long, double, double > > >
704 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=10"},
[ + - ][ + + ]
[ - - ]
705 : 2 : 1L, 20L * MILLION, 10, 256L, 0.0, 0.0625 );
706 : :
707 : : // Weight Distribution, r = 26
708 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
709 : : sres_Chi2, sres_CreateChi2,
710 : : sres_DeleteChi2,
711 : : long, long, int, long, double, double > > >
712 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=26"},
[ + - ][ + + ]
[ - - ]
713 : 2 : 1L, 20L * MILLION, 26, 256L, 0.0, 0.0625 );
714 : :
715 : : // Sum Collector
716 : : stack.add< TestU01< TestU01Props< tag::SumCollector, CProxy_TestU01Suite,
717 : : sres_Chi2, sres_CreateChi2,
718 : : sres_DeleteChi2,
719 : : long, long, int, double > > >
720 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sum Collector"},
[ + - ][ + + ]
[ - - ]
721 : 2 : 1L, 500L * MILLION, 0, 10.0 );
722 : :
723 : : // Marsaglia's Matrix Rank, L = 30, r = 0
724 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
725 : : sres_Chi2, sres_CreateChi2,
726 : : sres_DeleteChi2,
727 : : long, long, int, int, int, int > > >
728 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank L=30 r=0"},
[ + - ][ + + ]
[ - - ]
729 : 2 : 10L, static_cast<long>(MILLION), 0, 5, 30, 30 );
730 : :
731 : : // Marsaglia's Matrix Rank, L = 30, r = 25
732 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
733 : : sres_Chi2, sres_CreateChi2,
734 : : sres_DeleteChi2,
735 : : long, long, int, int, int, int > > >
736 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank L=30 r=25"},
[ + - ][ + + ]
[ - - ]
737 : 2 : 10L, static_cast<long>(MILLION), 25, 5, 30, 30 );
738 : :
739 : : // Marsaglia's Matrix Rank, L = 1000, r = 0
740 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
741 : : sres_Chi2, sres_CreateChi2,
742 : : sres_DeleteChi2,
743 : : long, long, int, int, int, int > > >
744 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank L=1000 r=0"},
[ + - ][ + + ]
[ - - ]
745 : 2 : 1L, 5L * THOUSAND, 0, 4, 1000, 1000 );
746 : :
747 : : // Marsaglia's Matrix Rank, L = 1000, r = 26
748 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
749 : : sres_Chi2, sres_CreateChi2,
750 : : sres_DeleteChi2,
751 : : long, long, int, int, int, int > > >
752 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank L=1000 r=26"},
[ + - ][ + + ]
[ - - ]
753 : 2 : 1L, 5L * THOUSAND, 26, 4, 1000, 1000 );
754 : :
755 : : // Marsaglia's Matrix Rank, L = 5000, r = 15
756 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
757 : : sres_Chi2, sres_CreateChi2,
758 : : sres_DeleteChi2,
759 : : long, long, int, int, int, int > > >
760 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank L=5000 r=15"},
[ + - ][ + + ]
[ - - ]
761 : 2 : 1L, 80L, 15, 15, 5000, 5000 );
762 : :
763 : : // Marsaglia's Matrix Rank, L = 5000, r = 0
764 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
765 : : sres_Chi2, sres_CreateChi2,
766 : : sres_DeleteChi2,
767 : : long, long, int, int, int, int > > >
768 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank L=5000 r=0"},
[ + - ][ + + ]
[ - - ]
769 : 2 : 1L, 80L, 0, 30, 5000, 5000 );
770 : :
771 : : // Marsaglia's Modified Savir
772 : : stack.add< TestU01< TestU01Props< tag::Savir2, CProxy_TestU01Suite,
773 : : sres_Chi2, sres_CreateChi2,
774 : : sres_DeleteChi2,
775 : : long, long, int, long, int > > >
776 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Savir2"},
[ + - ][ + + ]
[ - - ]
777 : 2 : 10L, 10L * MILLION, 10, 1024L * 1024L, 30 );
778 : :
779 : : // Marsaglia's greatest common divisor
780 : : stack.add< TestU01< TestU01Props< tag::GCD, CProxy_TestU01Suite,
781 : : smarsa_Res2, smarsa_CreateRes2,
782 : : smarsa_DeleteRes2,
783 : : long, long, int, int > > >
784 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"GCD"},
[ + - ][ + + ]
[ - - ]
785 : 2 : 10L, 50L * MILLION, 0, 30 );
786 : :
787 : : // Random Walk 1, L = 50, r = 0
788 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
789 : : swalk_Res, swalk_CreateRes,
790 : : swalk_DeleteRes,
791 : : long, long, int, int, long, long > > >
792 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=50 r=0",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ - - ]
793 : : "Random Walk 1 Stat M L=50 r=0",
794 : : "Random Walk 1 Stat J L=50 r=0",
795 : : "Random Walk 1 Stat R L=50 r=0",
796 : : "Random Walk 1 Stat C L=50 r=0"},
797 : 6 : 1L, 100L * MILLION, 0, 5, 50L, 50L );
798 : :
799 : : // Random Walk 1, L = 50, r = 25
800 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
801 : : swalk_Res, swalk_CreateRes,
802 : : swalk_DeleteRes,
803 : : long, long, int, int, long, long > > >
804 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=50 r=25",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ - - ]
805 : : "Random Walk 1 Stat M L=50 r=25",
806 : : "Random Walk 1 Stat J L=50 r=25",
807 : : "Random Walk 1 Stat R L=50 r=25",
808 : : "Random Walk 1 Stat C L=50 r=25"},
809 : 6 : 1L, 100L * MILLION, 25, 5, 50L, 50L );
810 : :
811 : : // Random Walk 1, L = 1000, r = 0
812 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
813 : : swalk_Res, swalk_CreateRes,
814 : : swalk_DeleteRes,
815 : : long, long, int, int, long, long > > >
816 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=1000 r=0",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ - - ]
817 : : "Random Walk 1 Stat M L=1000 r=0",
818 : : "Random Walk 1 Stat J L=1000 r=0",
819 : : "Random Walk 1 Stat R L=1000 r=0",
820 : : "Random Walk 1 Stat C L=1000 r=0"},
821 : 6 : 1L, 10L * MILLION, 0, 10, 1000L, 1000L );
822 : :
823 : : // Random Walk 1, L = 1000, r = 20
824 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
825 : : swalk_Res, swalk_CreateRes,
826 : : swalk_DeleteRes,
827 : : long, long, int, int, long, long > > >
828 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=1000 r=20",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ - - ]
829 : : "Random Walk 1 Stat M L=1000 r=20",
830 : : "Random Walk 1 Stat J L=1000 r=20",
831 : : "Random Walk 1 Stat R L=1000 r=20",
832 : : "Random Walk 1 Stat C L=1000 r=20"},
833 : 6 : 1L, 10L * MILLION, 20, 10, 1000L, 1000L );
834 : :
835 : : // Random Walk 1, L = 10000, r = 0
836 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
837 : : swalk_Res, swalk_CreateRes,
838 : : swalk_DeleteRes,
839 : : long, long, int, int, long, long > > >
840 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=10000 r=0",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ - - ]
841 : : "Random Walk 1 Stat M L=10000 r=0",
842 : : "Random Walk 1 Stat J L=10000 r=0",
843 : : "Random Walk 1 Stat R L=10000 r=0",
844 : : "Random Walk 1 Stat C L=10000 r=0"},
845 : 6 : 1L, static_cast<long>(MILLION), 0, 15, 10000L, 10000L );
846 : :
847 : : // Random Walk 1, L = 10000, r = 15
848 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
849 : : swalk_Res, swalk_CreateRes,
850 : : swalk_DeleteRes,
851 : : long, long, int, int, long, long > > >
852 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=10000 r=15",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ - - ]
853 : : "Random Walk 1 Stat M L=10000 r=15",
854 : : "Random Walk 1 Stat J L=10000 r=15",
855 : : "Random Walk 1 Stat R L=10000 r=15",
856 : : "Random Walk 1 Stat C L=10000 r=15"},
857 : 6 : 1L, static_cast<long>(MILLION), 15, 15, 10000L, 10000L );
858 : :
859 : : // Linear Complexity, r = 0
860 : : stack.add< TestU01< TestU01Props< tag::LinearComp, CProxy_TestU01Suite,
861 : : scomp_Res, scomp_CreateRes,
862 : : scomp_DeleteRes,
863 : : long, long, int, int > > >
864 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Linear Complexity Jump r=0",
[ + - ][ + - ]
[ + + ][ - - ]
865 : : "Linear Complexity Size r=0"},
866 : 3 : 1L, 400L * THOUSAND + 20, 0, 1 );
867 : :
868 : : // Linear Complexity, r = 29
869 : : stack.add< TestU01< TestU01Props< tag::LinearComp, CProxy_TestU01Suite,
870 : : scomp_Res, scomp_CreateRes,
871 : : scomp_DeleteRes,
872 : : long, long, int, int > > >
873 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Linear Complexity Jump r=29",
[ + - ][ + - ]
[ + + ][ - - ]
874 : : "Linear Complexity Size r=29"},
875 : 3 : 1L, 400L * THOUSAND + 20, 29, 1 );
876 : :
877 : : // Lempel-Ziv Compressibility, r = 0
878 : : stack.add< TestU01< TestU01Props< tag::LempelZiv, CProxy_TestU01Suite,
879 : : sres_Basic, sres_CreateBasic,
880 : : sres_DeleteBasic,
881 : : long, int, int, int > > >
882 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Lempel-Ziv Compressibility r=0"},
[ + - ][ + + ]
[ - - ]
883 : 2 : 10L, 27, 0, 30 );
884 : :
885 : : // Lempel-Ziv Compressibility, r = 15
886 : : stack.add< TestU01< TestU01Props< tag::LempelZiv, CProxy_TestU01Suite,
887 : : sres_Basic, sres_CreateBasic,
888 : : sres_DeleteBasic,
889 : : long, int, int, int > > >
890 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Lempel-Ziv Compressibility r=15"},
[ + - ][ + + ]
[ - - ]
891 : 2 : 10L, 27, 15, 15 );
892 : :
893 : : // Fourier3, r = 0
894 : : stack.add< TestU01< TestU01Props< tag::Fourier3, CProxy_TestU01Suite,
895 : : sspectral_Res, sspectral_CreateRes,
896 : : sspectral_DeleteRes,
897 : : long, int, int, int > > >
898 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Fourier 3 r=0"},
[ + - ][ + + ]
[ - - ]
899 : 2 : 100L * THOUSAND, 14, 0, 3 );
900 : :
901 : : // Fourier3, r = 20
902 : : stack.add< TestU01< TestU01Props< tag::Fourier3, CProxy_TestU01Suite,
903 : : sspectral_Res, sspectral_CreateRes,
904 : : sspectral_DeleteRes,
905 : : long, int, int, int > > >
906 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Fourier 3 r=27"},
[ + - ][ + + ]
[ - - ]
907 : 2 : 100L * THOUSAND, 14, 27, 3 );
908 : :
909 : : // Longes Head Run, r = 0
910 : : stack.add< TestU01< TestU01Props< tag::LongestHeadRun, CProxy_TestU01Suite,
911 : : sstring_Res2, sstring_CreateRes2,
912 : : sstring_DeleteRes2,
913 : : long, long, int, int, long > > >
914 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Longest Head Run Chi r=0",
[ + - ][ + - ]
[ + + ][ - - ]
915 : : "Longest Head Run Disc r=0"},
916 : 3 : 1L, 1000L, 0, 3, 20L + 10L * MILLION );
917 : :
918 : : // Longes Head Run, r = 27
919 : : stack.add< TestU01< TestU01Props< tag::LongestHeadRun, CProxy_TestU01Suite,
920 : : sstring_Res2, sstring_CreateRes2,
921 : : sstring_DeleteRes2,
922 : : long, long, int, int, long > > >
923 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Longest Head Run Chi r=27",
[ + - ][ + - ]
[ + + ][ - - ]
924 : : "Longest Head Run Disc r=27"},
925 : 3 : 1L, 1000L, 27, 3, 20L + 10L * MILLION );
926 : :
927 : : // Periods In Strings, r = 0
928 : : stack.add< TestU01< TestU01Props< tag::PeriodsInStrings, CProxy_TestU01Suite,
929 : : sres_Chi2, sres_CreateChi2,
930 : : sres_DeleteChi2,
931 : : long, long, int, int > > >
932 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Periods In Strings r=0"},
[ + - ][ + + ]
[ - - ]
933 : 2 : 10L, BILLION / 2, 0, 10 );
934 : :
935 : : // Periods In Strings, r = 20
936 : : stack.add< TestU01< TestU01Props< tag::PeriodsInStrings, CProxy_TestU01Suite,
937 : : sres_Chi2, sres_CreateChi2,
938 : : sres_DeleteChi2,
939 : : long, long, int, int > > >
940 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Periods In Strings r=20"},
[ + - ][ + + ]
[ - - ]
941 : 2 : 10L, BILLION / 2, 20, 10 );
942 : :
943 : : // Hamming Weight 2, r = 0
944 : : stack.add< TestU01< TestU01Props< tag::HammingWeight2, CProxy_TestU01Suite,
945 : : sres_Basic, sres_CreateBasic,
946 : : sres_DeleteBasic,
947 : : long, long, int, int, long > > >
948 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Weight 2 r=0"},
[ + - ][ + + ]
[ - - ]
949 : 0 : 10L, static_cast<long>(BILLION), 0, 3,
950 : 2 : static_cast<long>(MILLION) );
951 : :
952 : : // Hamming Weight 2, r = 27
953 : : stack.add< TestU01< TestU01Props< tag::HammingWeight2, CProxy_TestU01Suite,
954 : : sres_Basic, sres_CreateBasic,
955 : : sres_DeleteBasic,
956 : : long, long, int, int, long > > >
957 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Weight 2 r=27"},
[ + - ][ + + ]
[ - - ]
958 : 0 : 10L, static_cast<long>(BILLION), 27, 3,
959 : 2 : static_cast<long>(MILLION) );
960 : :
961 : : // Hamming Correlation, L = 30
962 : : stack.add< TestU01< TestU01Props< tag::HammingCorr, CProxy_TestU01Suite,
963 : : sstring_Res, sstring_CreateRes,
964 : : sstring_DeleteRes,
965 : : long, long, int, int, int> > >
966 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Correlation L=30"},
[ + - ][ + + ]
[ - - ]
967 : 2 : 1L, static_cast<long>(BILLION), 10, 10, 30 );
968 : :
969 : : // Hamming Correlation, L = 300
970 : : stack.add< TestU01< TestU01Props< tag::HammingCorr, CProxy_TestU01Suite,
971 : : sstring_Res, sstring_CreateRes,
972 : : sstring_DeleteRes,
973 : : long, long, int, int, int> > >
974 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Correlation L=300"},
[ + - ][ + + ]
[ - - ]
975 : 2 : 1L, 100L * MILLION, 10, 10, 10 * 30 );
976 : :
977 : : // Hamming Correlation, L = 1200
978 : : stack.add< TestU01< TestU01Props< tag::HammingCorr, CProxy_TestU01Suite,
979 : : sstring_Res, sstring_CreateRes,
980 : : sstring_DeleteRes,
981 : : long, long, int, int, int> > >
982 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Correlation L=1200"},
[ + - ][ + + ]
[ - - ]
983 : 2 : 1L, 100L * MILLION, 10, 10, 40 * 30 );
984 : :
985 : : // Hamming independence, L = 30, r = 0
986 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
987 : : sstring_Res, sstring_CreateRes,
988 : : sstring_DeleteRes,
989 : : long, long, int, int, int, int > > >
990 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=30 r=0"},
[ + - ][ + + ]
[ - - ]
991 : 2 : 10L, 30L * MILLION, 0, 3, 30, 0 );
992 : :
993 : : // Hamming independence, L = 30, r = 27
994 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
995 : : sstring_Res, sstring_CreateRes,
996 : : sstring_DeleteRes,
997 : : long, long, int, int, int, int > > >
998 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=30 r=27"},
[ + - ][ + + ]
[ - - ]
999 : 2 : 10L, 30L * MILLION, 27, 3, 30, 0 );
1000 : :
1001 : : // Hamming independence, L = 300, r = 0
1002 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
1003 : : sstring_Res, sstring_CreateRes,
1004 : : sstring_DeleteRes,
1005 : : long, long, int, int, int, int > > >
1006 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=300 r=0"},
[ + - ][ + + ]
[ - - ]
1007 : 2 : 1L, 30L * MILLION, 0, 4, 10 * 30, 0 );
1008 : :
1009 : : // Hamming independence, L = 300, r = 26
1010 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
1011 : : sstring_Res, sstring_CreateRes,
1012 : : sstring_DeleteRes,
1013 : : long, long, int, int, int, int > > >
1014 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=300 r=26"},
[ + - ][ + + ]
[ - - ]
1015 : 2 : 1L, 30L * MILLION, 26, 4, 10 * 30, 0 );
1016 : :
1017 : : // Hamming independence, L = 1200, r = 0
1018 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
1019 : : sstring_Res, sstring_CreateRes,
1020 : : sstring_DeleteRes,
1021 : : long, long, int, int, int, int > > >
1022 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=1200 r=0"},
[ + - ][ + + ]
[ - - ]
1023 : 2 : 1L, 10L * MILLION, 0, 5, 40 * 30, 0 );
1024 : :
1025 : : // Hamming independence, L = 1200, r = 25
1026 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
1027 : : sstring_Res, sstring_CreateRes,
1028 : : sstring_DeleteRes,
1029 : : long, long, int, int, int, int > > >
1030 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=1200 r=25"},
[ + - ][ + + ]
[ - - ]
1031 : 2 : 1L, 10L * MILLION, 25, 5, 40 * 30, 0 );
1032 : :
1033 : : // String Run, r = 0
1034 : : stack.add< TestU01< TestU01Props< tag::StringRun, CProxy_TestU01Suite,
1035 : : sstring_Res3, sstring_CreateRes3,
1036 : : sstring_DeleteRes3,
1037 : : long, long, int, int > > >
1038 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"String Run NRuns r=0",
[ + - ][ + - ]
[ + + ][ - - ]
1039 : : "String Run NBits r=0"},
1040 : 3 : 1L, 2L * BILLION, 0, 3 );
1041 : :
1042 : : // String Run, r = 27
1043 : : stack.add< TestU01< TestU01Props< tag::StringRun, CProxy_TestU01Suite,
1044 : : sstring_Res3, sstring_CreateRes3,
1045 : : sstring_DeleteRes3,
1046 : : long, long, int, int > > >
1047 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"String Run NRuns r=27",
[ + - ][ + - ]
[ + + ][ - - ]
1048 : : "String Run NBits r=27"},
1049 : 3 : 1L, 2L * BILLION, 27, 3 );
1050 : :
1051 : : // Autocorrelation, d = 1, r = 0
1052 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
1053 : : sres_Basic, sres_CreateBasic,
1054 : : sres_DeleteBasic,
1055 : : long, long, int, int, int > > >
1056 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=1 r=0"},
[ + - ][ + + ]
[ - - ]
1057 : 2 : 10L, 30L + BILLION, 0, 3, 1 );
1058 : :
1059 : : // Autocorrelation, d = 3, r = 0
1060 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
1061 : : sres_Basic, sres_CreateBasic,
1062 : : sres_DeleteBasic,
1063 : : long, long, int, int, int > > >
1064 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=3 r=0"},
[ + - ][ + + ]
[ - - ]
1065 : 2 : 10L, 30L + BILLION, 0, 3, 3 );
1066 : :
1067 : : // Autocorrelation, d = 1, r =27
1068 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
1069 : : sres_Basic, sres_CreateBasic,
1070 : : sres_DeleteBasic,
1071 : : long, long, int, int, int > > >
1072 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=1 r=27"},
[ + - ][ + + ]
[ - - ]
1073 : 2 : 10L, 30L + BILLION, 27, 3, 1 );
1074 : :
1075 : : // Autocorrelation, d = 3, r = 27
1076 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
1077 : : sres_Basic, sres_CreateBasic,
1078 : : sres_DeleteBasic,
1079 : : long, long, int, int, int > > >
1080 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=3 r=27"},
[ + - ][ + + ]
[ - - ]
1081 : 2 : 10L, 30L + BILLION, 27, 3, 3 );
1082 : 1 : }
|