Branch data Line data Source code
1 : : // *****************************************************************************
2 : : /*!
3 : : \file src/RNGTest/Crush.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 Crush battery
9 : : \details Class re-creating the TestU01 library's Crush 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 "Crush.hpp"
38 : :
39 : : namespace rngtest {
40 : :
41 : : extern TestStack g_testStack;
42 : :
43 : : } // rngtest::
44 : :
45 : : using rngtest::Crush;
46 : :
47 : : void
48 : 1 : Crush::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 Crush 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 : : 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's Serial Over, t = 2
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 t=2"},
[ + + ][ - + ]
[ - - ][ - - ]
76 [ + - ]: 1 : 1L, 500L * MILLION, 0, 4096L, 2 );
77 : :
78 : : // Marsaglia's Serial Over, t = 4
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 t=4"},
[ + + ][ - + ]
[ - - ][ - - ]
84 [ + - ]: 1 : 1L, 300L * MILLION, 0, 64L, 4 );
85 : :
86 : : // Marsaglia's 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 [ + - ]: 1 : 10L, 10L * MILLION, 0, 1024L * 1024, 2 );
93 : :
94 : : // Marsaglia's Collision Over, t = 2, r = 10
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=10"},
[ + + ][ + - ]
[ - - ][ - - ]
100 [ + - ]: 1 : 10L, 10L * MILLION, 10, 1024L * 1024, 2 );
101 : :
102 : : // Marsaglia's Collision Over, t = 4, 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=4 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
108 [ + - ]: 1 : 10L, 10L * MILLION, 0, 1024L, 4 );
109 : :
110 : : // Marsaglia's Collision Over, t = 4, r = 20
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=4 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
116 [ + - ]: 1 : 10L, 10L * MILLION, 20, 1024L, 4 );
117 : :
118 : : // Marsaglia's Collision Over, t = 8, 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=8 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
124 [ + - ]: 1 : 10L, 10L * MILLION, 0, 32L, 8 );
125 : :
126 : : // Marsaglia's Collision Over, t = 8, r = 25
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=8 r=25"},
[ + + ][ + - ]
[ - - ][ - - ]
132 [ + - ]: 1 : 10L, 10L * MILLION, 25, 32L, 8 );
133 : :
134 : : // Marsaglia's Collision Over, t = 20, 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=20 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
140 [ + - ]: 1 : 10L, 10L * MILLION, 0, 4L, 20 );
141 : :
142 : : // Marsaglia's Collision Over, t = 20, r = 28
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=20 r=28"},
[ + + ][ + - ]
[ - - ][ - - ]
148 [ + - ]: 1 : 10L, 10L * MILLION, 28, 4L, 20 );
149 : :
150 : : #ifdef USE_LONGLONG
151 : :
152 : : // Marsaglia's Birthday Spacings, t = 2, r = 0
153 : : #if LONG_MAX <= 2147483647L
154 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
155 : : sres_Poisson, sres_CreatePoisson,
156 : : sres_DeletePoisson,
157 : : long, long, int, long, int, int > > >
158 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=2 r=0"},
159 : : 10L, 10L * MILLION, 0, 1073741824L, 2, 1 );
160 : : #else // LONG_MAX
161 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
162 : : sres_Poisson, sres_CreatePoisson,
163 : : sres_DeletePoisson,
164 : : long, long, int, long, int, int > > >
165 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=2 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
166 [ + - ]: 1 : 5L, 20L * MILLION, 0, 2L*1073741824L, 2, 1 );
167 : : #endif // LONG_MAX
168 : :
169 : : // Marsaglia's Birthday Spacings, t = 3, r = 0
170 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
171 : : sres_Poisson, sres_CreatePoisson,
172 : : sres_DeletePoisson,
173 : : long, long, int, long, int, int > > >
174 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=3 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
175 [ + - ]: 1 : 5L, 20L * MILLION, 0, 2097152L, 3, 1 );
176 : :
177 : : // Marsaglia's Birthday Spacings, t = 4, r = 0
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 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=4 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
183 [ + - ]: 1 : 5L, 20L * MILLION, 0, 65536L, 4, 1 );
184 : :
185 : : // Marsaglia's Birthday Spacings, t = 7, r = 0
186 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
187 : : sres_Poisson, sres_CreatePoisson,
188 : : sres_DeletePoisson,
189 : : long, long, int, long, int, int > > >
190 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Birthday Spacings t=7 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
191 [ + - ]: 1 : 3L, 20L * MILLION, 0, 512L, 7, 1 );
192 : :
193 : : // Marsaglia's Birthday Spacings, t = 7, r = 7
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=7 r=7"},
[ + + ][ + - ]
[ - - ][ - - ]
199 [ + - ]: 1 : 3L, 20L * MILLION, 7, 512L, 7, 1 );
200 : :
201 : : // Marsaglia's Birthday Spacings, t = 8, 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=8 r=14"},
[ + + ][ + - ]
[ - - ][ - - ]
207 [ + - ]: 1 : 3L, 20L * MILLION, 14, 256L, 8, 1 );
208 : :
209 : : // Marsaglia's Birthday Spacings, t = 8, r = 22
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=8 r=22"},
[ + + ][ + - ]
[ - - ][ - - ]
215 [ + - ]: 1 : 3L, 20L * MILLION, 22, 256L, 8, 1 );
216 : :
217 : : #else // USE_LONGLONG
218 : :
219 : : // Marsaglia's Birthday Spacings, t = 2, r = 0
220 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
221 : : sres_Poisson, sres_CreatePoisson,
222 : : sres_DeletePoisson,
223 : : long, long, int, long, int, int > > >
224 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=2 r=0"},
225 : : 200L, 4L * MILLION / 10, 0, 67108864L, 2, 1 );
226 : :
227 : : // Marsaglia's Birthday Spacings, t = 3, r = 0
228 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
229 : : sres_Poisson, sres_CreatePoisson,
230 : : sres_DeletePoisson,
231 : : long, long, int, long, int, int > > >
232 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=3 r=0"},
233 : : 100L, 4L * MILLION / 10, 0, 131072L, 3, 1 );
234 : :
235 : : // Marsaglia's Birthday Spacings, t = 4, r = 0
236 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
237 : : sres_Poisson, sres_CreatePoisson,
238 : : sres_DeletePoisson,
239 : : long, long, int, long, int, int > > >
240 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=4 r=0"},
241 : : 200L, 4L * MILLION / 10, 0, 1024L * 8, 4, 1 );
242 : :
243 : : // Marsaglia's Birthday Spacings, t = 13, r = 0
244 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
245 : : sres_Poisson, sres_CreatePoisson,
246 : : sres_DeletePoisson,
247 : : long, long, int, long, int, int > > >
248 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=0"},
249 : : 100L, 4L * MILLION / 10, 0, 16L, 13, 1 );
250 : :
251 : : // Marsaglia's Birthday Spacings, t = 13, r = 10
252 : : stack.add< TestU01< TestU01Props< tag::BirthdaySpacings, CProxy_TestU01Suite,
253 : : sres_Poisson, sres_CreatePoisson,
254 : : sres_DeletePoisson,
255 : : long, long, int, long, int, int > > >
256 : : ( proxy, tests, rng, gen, {"Birthday Spacings t=13 r=10"},
257 : : 100L, 4L * MILLION / 10, 10, 16L, 13, 1 );
258 : :
259 : : // Marsaglia's Birthday Spacings, t = 13, r = 20
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=13 r=20"},
265 : : 100L, 4L * MILLION / 10, 20, 16L, 13, 1 );
266 : :
267 : : // Marsaglia's Birthday Spacings, t = 13, r = 26
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, rng, {"Birthday Spacings t=13 r=26"},
273 : : 100L, 4L * MILLION / 10, 26, 16L, 13, 1 );
274 : :
275 : : #endif // USE_LONGLONG
276 : :
277 : : // Close Pairs, t = 2
278 : : stack.add< TestU01< TestU01Props< tag::ClosePairs, CProxy_TestU01Suite,
279 : : snpair_Res, snpair_CreateRes,
280 : : snpair_DeleteRes,
281 : : long, long, int, int, int, int, int > > >
282 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Close Pairs NP t=2",
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ + - ]
[ - - ][ - - ]
283 : : "Close Pairs mNP t=2",
284 : : "Close Pairs mNP1 t=2",
285 : : "Close Pairs mNP2 t=2",
286 : : "Close Pairs mNJumps t=2"},
287 [ + - ]: 1 : 10L, 2L * MILLION, 0, 2, 0, 30, 0 );
288 : :
289 : : // Close Pairs, t = 3
290 : : stack.add< TestU01< TestU01Props< tag::ClosePairs, CProxy_TestU01Suite,
291 : : snpair_Res, snpair_CreateRes,
292 : : snpair_DeleteRes,
293 : : long, long, int, int, int, int, int > > >
294 [ + - ][ + - ]: 7 : ( proxy, tests, rng, gen, {"Close Pairs NP t=3",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
295 : : "Close Pairs mNP t=3",
296 : : "Close Pairs mNP1 t=3",
297 : : "Close Pairs mNP2 t=3",
298 : : "Close Pairs mNJumps t=3",
299 : : "Close Pairs mNP2S t=3"},
300 [ + - ]: 1 : 10L, 2L * MILLION, 0, 3, 0, 30, 1 );
301 : :
302 : : // Close Pairs, t = 7
303 : : stack.add< TestU01< TestU01Props< tag::ClosePairs, CProxy_TestU01Suite,
304 : : snpair_Res, snpair_CreateRes,
305 : : snpair_DeleteRes,
306 : : long, long, int, int, int, int, int > > >
307 [ + - ][ + - ]: 7 : ( proxy, tests, rng, gen, {"Close Pairs NP t=3",
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
308 : : "Close Pairs mNP t=3",
309 : : "Close Pairs mNP1 t=3",
310 : : "Close Pairs mNP2 t=3",
311 : : "Close Pairs mNJumps t=3",
312 : : "Close Pairs mNP2S t=3"},
313 [ + - ]: 1 : 5L, 2L * MILLION, 0, 7, 0, 30, 1 );
314 : :
315 : : // Close Pairs Bit Match, t = 2
316 : : stack.add< TestU01< TestU01Props< tag::ClosePairsBitMatch, CProxy_TestU01Suite,
317 : : snpair_Res, snpair_CreateRes,
318 : : snpair_DeleteRes,
319 : : long, long, int, int > > >
320 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Close Pairs Bit Match t=2"},
[ + + ][ + - ]
[ - - ][ - - ]
321 [ + - ]: 1 : 4L, 4L * MILLION, 0, 2 );
322 : :
323 : : // Close Pairs Bit Match, t = 4
324 : : stack.add< TestU01< TestU01Props< tag::ClosePairsBitMatch, CProxy_TestU01Suite,
325 : : snpair_Res, snpair_CreateRes,
326 : : snpair_DeleteRes,
327 : : long, long, int, int > > >
328 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Close Pairs Bit Match t=4"},
[ + + ][ + - ]
[ - - ][ - - ]
329 [ + - ]: 1 : 2L, 4L * MILLION, 0, 4 );
330 : :
331 : : // Knuth's Simple Poker, d = 16, r = 0
332 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
333 : : sres_Chi2, sres_CreateChi2,
334 : : sres_DeleteChi2,
335 : : long, long, int, int, int > > >
336 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=16 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
337 [ + - ]: 1 : 1L, 40L * MILLION, 0, 16, 16 );
338 : :
339 : : // Knuth's Simple Poker, d = 16, r = 26
340 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
341 : : sres_Chi2, sres_CreateChi2,
342 : : sres_DeleteChi2,
343 : : long, long, int, int, int > > >
344 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=16 r=26"},
[ + + ][ + - ]
[ - - ][ - - ]
345 [ + - ]: 1 : 1L, 40L * MILLION, 26, 16, 16 );
346 : :
347 : : // Knuth's Simple Poker, d = 64, r = 0
348 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
349 : : sres_Chi2, sres_CreateChi2,
350 : : sres_DeleteChi2,
351 : : long, long, int, int, int > > >
352 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=64 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
353 [ + - ]: 1 : 1L, 10L * MILLION, 0, 64, 64 );
354 : :
355 : : // Knuth's Simple Poker, d = 64, r = 24
356 : : stack.add< TestU01< TestU01Props< tag::SimplePoker, CProxy_TestU01Suite,
357 : : sres_Chi2, sres_CreateChi2,
358 : : sres_DeleteChi2,
359 : : long, long, int, int, int > > >
360 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Simplified Poker d=64 r=24"},
[ + + ][ + - ]
[ - - ][ - - ]
361 [ + - ]: 1 : 1L, 10L * MILLION, 24, 64, 64 );
362 : :
363 : : // Knuth's Coupon Collector, d = 4, r = 0
364 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
365 : : sres_Chi2, sres_CreateChi2,
366 : : sres_DeleteChi2,
367 : : long, long, int, int > > >
368 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=4 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
369 [ + - ]: 1 : 1L, 40L * MILLION, 0, 4 );
370 : :
371 : : // Knuth's Coupon Collector, d = 4, r = 28
372 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
373 : : sres_Chi2, sres_CreateChi2,
374 : : sres_DeleteChi2,
375 : : long, long, int, int > > >
376 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=4 r=28"},
[ + + ][ + - ]
[ - - ][ - - ]
377 [ + - ]: 1 : 1L, 40L * MILLION, 28, 4 );
378 : :
379 : : // Knuth's Coupon Collector, d = 16, r = 0
380 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
381 : : sres_Chi2, sres_CreateChi2,
382 : : sres_DeleteChi2,
383 : : long, long, int, int > > >
384 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=16 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
385 [ + - ]: 1 : 1L, 10L * MILLION, 0, 16 );
386 : :
387 : : // Knuth's Coupon Collector, d = 16, r = 26
388 : : stack.add< TestU01< TestU01Props< tag::CouponCollector, CProxy_TestU01Suite,
389 : : sres_Chi2, sres_CreateChi2,
390 : : sres_DeleteChi2,
391 : : long, long, int, int > > >
392 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Coupon Collector d=16 r=26"},
[ + + ][ + - ]
[ - - ][ - - ]
393 [ + - ]: 1 : 1L, 10L * MILLION, 26, 16 );
394 : :
395 : : // Knuth's Gap, r = 0
396 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
397 : : sres_Chi2, sres_CreateChi2,
398 : : sres_DeleteChi2,
399 : : long, long, int, double, double > > >
400 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=0"},
[ + + ][ - + ]
[ - - ][ - - ]
401 [ + - ]: 1 : 1L, 100L * MILLION, 0, 0.0, 0.125 );
402 : :
403 : : // Knuth's Gap, r = 27
404 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
405 : : sres_Chi2, sres_CreateChi2,
406 : : sres_DeleteChi2,
407 : : long, long, int, double, double > > >
408 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=27"},
[ + + ][ - + ]
[ - - ][ - - ]
409 [ + - ]: 1 : 1L, 100L * MILLION, 27, 0.0, 0.125 );
410 : :
411 : : // Knuth's Gap, r = 0, n = 5e+6
412 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
413 : : sres_Chi2, sres_CreateChi2,
414 : : sres_DeleteChi2,
415 : : long, long, int, double, double > > >
416 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=0 n=5M"},
[ + + ][ - + ]
[ - - ][ - - ]
417 [ + - ]: 1 : 1L, 5L * MILLION, 0, 0.0, 1.0/256.0 );
418 : :
419 : : // Knuth's Gap, r = 22, n = 5e+6
420 : : stack.add< TestU01< TestU01Props< tag::Gap, CProxy_TestU01Suite,
421 : : sres_Chi2, sres_CreateChi2,
422 : : sres_DeleteChi2,
423 : : long, long, int, double, double > > >
424 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Gap r=22 n=5M"},
[ + + ][ - + ]
[ - - ][ - - ]
425 [ + - ]: 1 : 1L, 5L * MILLION, 22, 0.0, 1.0/256.0 );
426 : :
427 : : // Knuth's Run, r = 0
428 : : stack.add< TestU01< TestU01Props< tag::Run, CProxy_TestU01Suite,
429 : : sres_Chi2, sres_CreateChi2,
430 : : sres_DeleteChi2,
431 : : long, long, int, int > > >
432 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Run r=0"},
[ + + ][ - + ]
[ - - ][ - - ]
433 [ + - ]: 1 : 1L, 500L * MILLION, 0, 1 );
434 : :
435 : : // Knuth's Run, r = 15
436 : : stack.add< TestU01< TestU01Props< tag::Run, CProxy_TestU01Suite,
437 : : sres_Chi2, sres_CreateChi2,
438 : : sres_DeleteChi2,
439 : : long, long, int, int > > >
440 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Run r=15"},
[ + + ][ - + ]
[ - - ][ - - ]
441 [ + - ]: 1 : 1L, 500L * MILLION, 15, 0 );
442 : :
443 : : // Knuth's Permutation, r = 0
444 : : stack.add< TestU01< TestU01Props< tag::Permutation, CProxy_TestU01Suite,
445 : : sres_Chi2, sres_CreateChi2,
446 : : sres_DeleteChi2,
447 : : long, long, int, int > > >
448 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Permutation r=0"},
[ + + ][ - + ]
[ - - ][ - - ]
449 [ + - ]: 1 : 1L, 50L * MILLION, 0, 10 );
450 : :
451 : : // Knuth's Permutation, r = 15
452 : : stack.add< TestU01< TestU01Props< tag::Permutation, CProxy_TestU01Suite,
453 : : sres_Chi2, sres_CreateChi2,
454 : : sres_DeleteChi2,
455 : : long, long, int, int > > >
456 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Permutation r=15"},
[ + + ][ + - ]
[ - - ][ - - ]
457 [ + - ]: 1 : 1L, 50L * MILLION, 15, 10 );
458 : :
459 : : // Knuth's Collision with permutations, r = 0
460 : : stack.add< TestU01< TestU01Props< tag::CollisionPermut, CProxy_TestU01Suite,
461 : : sknuth_Res2, sknuth_CreateRes2,
462 : : sknuth_DeleteRes2,
463 : : long, long, int, int > > >
464 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision w. Permutations r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
465 [ + - ]: 1 : 5L, 10L * MILLION, 0, 13 );
466 : :
467 : : // Knuth's Collision with permutations, r = 15
468 : : stack.add< TestU01< TestU01Props< tag::CollisionPermut, CProxy_TestU01Suite,
469 : : sknuth_Res2, sknuth_CreateRes2,
470 : : sknuth_DeleteRes2,
471 : : long, long, int, int > > >
472 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Collision w. Permutations r=15"},
[ + + ][ + - ]
[ - - ][ - - ]
473 [ + - ]: 1 : 5L, 10L * MILLION, 15, 13 );
474 : :
475 : : // Knuth's Maximum-of-t, t = 5
476 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
477 : : sknuth_Res1, sknuth_CreateRes1,
478 : : sknuth_DeleteRes1,
479 : : long, long, int, int, int, int, int > > >
480 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=5",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
481 : : "Maximum-of-t Anderson-Darling t=5"},
482 : 2 : 10L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 5, gofw_Sum,
483 [ + - ]: 1 : gofw_AD );
484 : :
485 : : // Knuth's Maximum-of-t, t = 10
486 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
487 : : sknuth_Res1, sknuth_CreateRes1,
488 : : sknuth_DeleteRes1,
489 : : long, long, int, int, int, int, int > > >
490 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=10",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
491 : : "Maximum-of-t Anderson-Darling t=10"},
492 : 2 : 5L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 10, gofw_Sum,
493 [ + - ]: 1 : gofw_AD );
494 : :
495 : : // Knuth's Maximum-of-t, t = 20
496 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
497 : : sknuth_Res1, sknuth_CreateRes1,
498 : : sknuth_DeleteRes1,
499 : : long, long, int, int, int, int, int > > >
500 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=20",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
501 : : "Maximum-of-t Anderson-Darling t=20"},
502 : 2 : 1L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 20,
503 [ + - ]: 1 : gofw_Mean, gofw_Mean );
504 : :
505 : : // Knuth's Maximum-of-t, t = 30
506 : : stack.add< TestU01< TestU01Props< tag::MaxOft, CProxy_TestU01Suite,
507 : : sknuth_Res1, sknuth_CreateRes1,
508 : : sknuth_DeleteRes1,
509 : : long, long, int, int, int, int, int > > >
510 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Maximum-of-t t=30",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
511 : : "Maximum-of-t Anderson-Darling t=30"},
512 : 2 : 1L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 30,
513 [ + - ]: 1 : gofw_Mean, gofw_Mean );
514 : :
515 : : // Sample Products, t = 10
516 : : stack.add< TestU01< TestU01Props< tag::SampleProd, CProxy_TestU01Suite,
517 : : sres_Basic, sres_CreateBasic,
518 : : sres_DeleteBasic,
519 : : long, long, int, int > > >
520 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Products t=10"},
[ + + ][ + - ]
[ - - ][ - - ]
521 [ + - ]: 1 : 1L, 10L * MILLION, 0, 10 );
522 : :
523 : : // Sample Products, t = 30
524 : : stack. add< TestU01< TestU01Props< tag::SampleProd, CProxy_TestU01Suite,
525 : : sres_Basic, sres_CreateBasic,
526 : : sres_DeleteBasic,
527 : : long, long, int, int > > >
528 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Products t=30"},
[ + + ][ + - ]
[ - - ][ - - ]
529 [ + - ]: 1 : 1L, 10L * MILLION, 0, 30 );
530 : :
531 : : // Sample Mean
532 : : stack.add< TestU01< TestU01Props< tag::SampleMean, CProxy_TestU01Suite,
533 : : sres_Basic, sres_CreateBasic,
534 : : sres_DeleteBasic,
535 : : long, long, int > > >
536 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Mean"},
[ + + ][ - + ]
[ - - ][ - - ]
537 [ + - ]: 1 : 10L * MILLION, 20L, 0 );
538 : :
539 : : // Sample Autorrelation
540 : : stack.add< TestU01< TestU01Props< tag::SampleCorr, CProxy_TestU01Suite,
541 : : sres_Basic, sres_CreateBasic,
542 : : sres_DeleteBasic,
543 : : long, long, int, int > > >
544 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sample Autorrelation"},
[ + + ][ + - ]
[ - - ][ - - ]
545 [ + - ]: 1 : 1L, 500L * MILLION, 0, 1 );
546 : :
547 : : // Maurer's "universal" test, r = 0
548 : : stack.add< TestU01< TestU01Props< tag::AppearanceSpacings, CProxy_TestU01Suite,
549 : : sres_Basic, sres_CreateBasic,
550 : : sres_DeleteBasic,
551 : : long, long, long, int, int, int > > >
552 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Appearance Spacings r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
553 [ + - ]: 1 : 1L, 10L * MILLION, 400L * MILLION, 0, 30, 15 );
554 : :
555 : : // Maurer's "universal" test, r = 20
556 : : stack.add< TestU01< TestU01Props< tag::AppearanceSpacings, CProxy_TestU01Suite,
557 : : sres_Basic, sres_CreateBasic,
558 : : sres_DeleteBasic,
559 : : long, long, long, int, int, int > > >
560 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Appearance Spacings r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
561 [ + - ]: 1 : 1L, 10L * MILLION, 100L * MILLION, 20, 10, 15 );
562 : :
563 : : // Weight Distribution, r = 0
564 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
565 : : sres_Chi2, sres_CreateChi2,
566 : : sres_DeleteChi2,
567 : : long, long, int, long, double, double > > >
568 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
569 [ + - ]: 1 : 1L, 2L * MILLION, 0, 256L, 0.0, 0.125 );
570 : :
571 : : // Weight Distribution, r = 8
572 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
573 : : sres_Chi2, sres_CreateChi2, sres_DeleteChi2,
574 : : long, long, int, long, double, double > > >
575 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=8"},
[ + + ][ + - ]
[ - - ][ - - ]
576 [ + - ]: 1 : 1L, 2L * MILLION, 8, 256L, 0.0, 0.125 );
577 : :
578 : : // Weight Distribution, r = 16
579 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
580 : : sres_Chi2, sres_CreateChi2,
581 : : sres_DeleteChi2,
582 : : long, long, int, long, double, double > > >
583 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=16"},
[ + + ][ + - ]
[ - - ][ - - ]
584 [ + - ]: 1 : 1L, 2L * MILLION, 16, 256L, 0.0, 0.125 );
585 : :
586 : : // Weight Distribution, r = 24
587 : : stack.add< TestU01< TestU01Props< tag::WeightDistrib, CProxy_TestU01Suite,
588 : : sres_Chi2, sres_CreateChi2,
589 : : sres_DeleteChi2,
590 : : long, long, int, long, double, double > > >
591 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Weight Distribution r=24"},
[ + + ][ + - ]
[ - - ][ - - ]
592 [ + - ]: 1 : 1L, 2L * MILLION, 24, 256L, 0.0, 0.125 );
593 : :
594 : : // Sum Collector
595 : : stack.add< TestU01< TestU01Props< tag::SumCollector, CProxy_TestU01Suite,
596 : : sres_Chi2, sres_CreateChi2,
597 : : sres_DeleteChi2,
598 : : long, long, int, double > > >
599 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Sum Collector"},
[ + + ][ - + ]
[ - - ][ - - ]
600 [ + - ]: 1 : 1L, 20L * MILLION, 0, 10.0 );
601 : :
602 : : // Marsaglia's Matrix Rank, 60 x 60, r = 0
603 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
604 : : sres_Chi2, sres_CreateChi2,
605 : : sres_DeleteChi2,
606 : : long, long, int, int, int, int > > >
607 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank 60x60 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
608 [ + - ]: 1 : 1L, static_cast<long>(MILLION), 0, 30, 2 * 30, 2 * 30 );
609 : :
610 : : // Marsaglia's Matrix Rank, 60 x 60, r = 20
611 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
612 : : sres_Chi2, sres_CreateChi2,
613 : : sres_DeleteChi2,
614 : : long, long, int, int, int, int > > >
615 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank 60x60 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
616 [ + - ]: 1 : 1L, static_cast<long>(MILLION), 20, 10, 2 * 30, 2 * 30 );
617 : :
618 : : // Marsaglia's Matrix Rank, 300 x 300, r = 0
619 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
620 : : sres_Chi2, sres_CreateChi2,
621 : : sres_DeleteChi2,
622 : : long, long, int, int, int, int > > >
623 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank 300x300 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
624 [ + - ]: 1 : 1L, 50L * THOUSAND, 0, 30, 10 * 30, 10 * 30 );
625 : :
626 : : // Marsaglia's Matrix Rank, 300 x 300, r = 20
627 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
628 : : sres_Chi2, sres_CreateChi2,
629 : : sres_DeleteChi2,
630 : : long, long, int, int, int, int > > >
631 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank 300x300 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
632 [ + - ]: 1 : 1L, 50L * THOUSAND, 20, 10, 10 * 30, 10 * 30 );
633 : :
634 : : // Marsaglia's Matrix Rank, 1200 x 1200, r = 0
635 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
636 : : sres_Chi2, sres_CreateChi2,
637 : : sres_DeleteChi2,
638 : : long, long, int, int, int, int > > >
639 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank 1200x1200 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
640 [ + - ]: 1 : 1L, 2L * THOUSAND, 0, 30, 40 * 30, 40 * 30 );
641 : :
642 : : // Marsaglia's Matrix Rank, 1200 x 1200, r = 20
643 : : stack.add< TestU01< TestU01Props< tag::MatrixRank, CProxy_TestU01Suite,
644 : : sres_Chi2, sres_CreateChi2,
645 : : sres_DeleteChi2,
646 : : long, long, int, int, int, int > > >
647 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Matrix Rank 1200x1200 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
648 [ + - ]: 1 : 1L, 2L * THOUSAND, 20, 10, 40 * 30, 40 * 30 );
649 : :
650 : : // Marsaglia's Modified Savir
651 : : stack.add< TestU01< TestU01Props< tag::Savir2, CProxy_TestU01Suite,
652 : : sres_Chi2, sres_CreateChi2,
653 : : sres_DeleteChi2,
654 : : long, long, int, long, int > > >
655 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Savir2"},
[ + + ][ - + ]
[ - - ][ - - ]
656 [ + - ]: 1 : 1L, 20L * MILLION, 0, 1024L * 1024L, 30 );
657 : :
658 : : // Marsaglia's greatest common divisor, r = 0
659 : : stack.add< TestU01< TestU01Props< tag::GCD, CProxy_TestU01Suite,
660 : : smarsa_Res2, smarsa_CreateRes2,
661 : : smarsa_DeleteRes2,
662 : : long, long, int, int > > >
663 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"GCD r=0"},
[ + + ][ - + ]
[ - - ][ - - ]
664 [ + - ]: 1 : 1L, 100L * MILLION, 0, 30 );
665 : :
666 : : // Marsaglia's greatest common divisor, r = 10
667 : : stack.add< TestU01< TestU01Props< tag::GCD, CProxy_TestU01Suite,
668 : : smarsa_Res2, smarsa_CreateRes2,
669 : : smarsa_DeleteRes2,
670 : : long, long, int, int > > >
671 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"GCD r=10"},
[ + + ][ - + ]
[ - - ][ - - ]
672 [ + - ]: 1 : 1L, 40L * MILLION, 10, 20 );
673 : :
674 : : // Random Walk 1, L = 90, r = 0
675 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
676 : : swalk_Res, swalk_CreateRes,
677 : : swalk_DeleteRes,
678 : : long, long, int, int, long, long > > >
679 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=90 r=0",
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ + - ]
[ - - ][ - - ]
680 : : "Random Walk 1 Stat M L=90 r=0",
681 : : "Random Walk 1 Stat J L=90 r=0",
682 : : "Random Walk 1 Stat R L=90 r=0",
683 : : "Random Walk 1 Stat C L=90 r=0"},
684 [ + - ]: 1 : 1L, 50L * MILLION, 0, 30, 90L, 90L );
685 : :
686 : : // Random Walk 1, L = 90, r = 0
687 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
688 : : swalk_Res, swalk_CreateRes,
689 : : swalk_DeleteRes,
690 : : long, long, int, int, long, long > > >
691 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=90 r=20",
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ + - ]
[ - - ][ - - ]
692 : : "Random Walk 1 Stat M L=90 r=20",
693 : : "Random Walk 1 Stat J L=90 r=20",
694 : : "Random Walk 1 Stat R L=90 r=20",
695 : : "Random Walk 1 Stat C L=90 r=20"},
696 [ + - ]: 1 : 1L, 10L * MILLION, 20, 10, 90L, 90L );
697 : :
698 : : // Random Walk 1, L = 1000, r = 0
699 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
700 : : swalk_Res, swalk_CreateRes,
701 : : swalk_DeleteRes,
702 : : long, long, int, int, long, long > > >
703 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=1000 r=0",
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ + - ]
[ - - ][ - - ]
704 : : "Random Walk 1 Stat M L=1000 r=0",
705 : : "Random Walk 1 Stat J L=1000 r=0",
706 : : "Random Walk 1 Stat R L=1000 r=0",
707 : : "Random Walk 1 Stat C L=1000 r=0"},
708 [ + - ]: 1 : 1L, 5L * MILLION, 0, 30, 1000L, 1000L );
709 : :
710 : : // Random Walk 1, L = 1000, r = 20
711 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
712 : : swalk_Res, swalk_CreateRes,
713 : : swalk_DeleteRes,
714 : : long, long, int, int, long, long > > >
715 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=1000 r=20",
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ + - ]
[ - - ][ - - ]
716 : : "Random Walk 1 Stat M L=1000 r=20",
717 : : "Random Walk 1 Stat J L=1000 r=20",
718 : : "Random Walk 1 Stat R L=1000 r=20",
719 : : "Random Walk 1 Stat C L=1000 r=20"},
720 [ + - ]: 1 : 1L, static_cast<long>(MILLION), 20, 10, 1000L, 1000L );
721 : :
722 : : // Random Walk 1, L = 10000, r = 0
723 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
724 : : swalk_Res, swalk_CreateRes,
725 : : swalk_DeleteRes,
726 : : long, long, int, int, long, long > > >
727 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=10000 r=0",
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ + - ]
[ - - ][ - - ]
728 : : "Random Walk 1 Stat M L=10000 r=0",
729 : : "Random Walk 1 Stat J L=10000 r=0",
730 : : "Random Walk 1 Stat R L=10000 r=0",
731 : : "Random Walk 1 Stat C L=10000 r=0"},
732 [ + - ]: 1 : 1L, MILLION / 2, 0, 30, 10000L, 10000L );
733 : :
734 : : // Random Walk 1, L = 10000, r = 20
735 : : stack.add< TestU01< TestU01Props< tag::RandomWalk1, CProxy_TestU01Suite,
736 : : swalk_Res, swalk_CreateRes,
737 : : swalk_DeleteRes,
738 : : long, long, int, int, long, long > > >
739 [ + - ][ + - ]: 6 : ( proxy, tests, rng, gen, {"Random Walk 1 Stat H L=10000 r=20",
[ + - ][ + - ]
[ + - ][ + - ]
[ + + ][ + - ]
[ - - ][ - - ]
740 : : "Random Walk 1 Stat M L=10000 r=20",
741 : : "Random Walk 1 Stat J L=10000 r=20",
742 : : "Random Walk 1 Stat R L=10000 r=20",
743 : : "Random Walk 1 Stat C L=10000 r=20"},
744 [ + - ]: 1 : 1L, MILLION / 10, 20, 10, 10000L, 10000L );
745 : :
746 : : // Linear Complexity, r = 0
747 : : stack.add< TestU01< TestU01Props< tag::LinearComp, CProxy_TestU01Suite,
748 : : scomp_Res, scomp_CreateRes,
749 : : scomp_DeleteRes,
750 : : long, long, int, int > > >
751 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Linear Complexity Jump r=0",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
752 : : "Linear Complexity Size r=0"},
753 [ + - ]: 1 : 1L, 120L * THOUSAND, 0, 1 );
754 : :
755 : : // Linear Complexity, r = 29
756 : : stack.add< TestU01< TestU01Props< tag::LinearComp, CProxy_TestU01Suite,
757 : : scomp_Res, scomp_CreateRes,
758 : : scomp_DeleteRes,
759 : : long, long, int, int > > >
760 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Linear Complexity Jump r=29",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
761 : : "Linear Complexity Size r=29"},
762 [ + - ]: 1 : 1L, 120L * THOUSAND, 29, 1 );
763 : :
764 : : // Lempel-Ziv Compressibility
765 : : stack.add< TestU01< TestU01Props< tag::LempelZiv, CProxy_TestU01Suite,
766 : : sres_Basic, sres_CreateBasic,
767 : : sres_DeleteBasic,
768 : : long, int, int, int > > >
769 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Lempel-Ziv Compressibility"},
[ + + ][ + - ]
[ - - ][ - - ]
770 [ + - ]: 1 : 10L, 25, 0, 30 );
771 : :
772 : : // Fourier3, r = 0
773 : : stack.add< TestU01< TestU01Props< tag::Fourier3, CProxy_TestU01Suite,
774 : : sspectral_Res, sspectral_CreateRes,
775 : : sspectral_DeleteRes,
776 : : long, int, int, int > > >
777 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Fourier 3 r=0"},
[ + + ][ - + ]
[ - - ][ - - ]
778 [ + - ]: 1 : 50L * THOUSAND, 14, 0, 30 );
779 : :
780 : : // Fourier3, r = 20
781 : : stack.add< TestU01< TestU01Props< tag::Fourier3, CProxy_TestU01Suite,
782 : : sspectral_Res, sspectral_CreateRes,
783 : : sspectral_DeleteRes,
784 : : long, int, int, int > > >
785 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Fourier 3 r=20"},
[ + + ][ - + ]
[ - - ][ - - ]
786 [ + - ]: 1 : 50L * THOUSAND, 14, 20, 10 );
787 : :
788 : : // Longest Head Run, r = 0
789 : : stack.add< TestU01< TestU01Props< tag::LongestHeadRun, CProxy_TestU01Suite,
790 : : sstring_Res2, sstring_CreateRes2,
791 : : sstring_DeleteRes2,
792 : : long, long, int, int, long > > >
793 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Longest Head Run Chi r=0",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
794 : : "Longest Head Run Disc r=0"},
795 [ + - ]: 1 : 1L, 1000L, 0, 30, 20L + 10L * MILLION );
796 : :
797 : : // Longest Head Run, r = 20
798 : : stack.add< TestU01< TestU01Props< tag::LongestHeadRun, CProxy_TestU01Suite,
799 : : sstring_Res2, sstring_CreateRes2,
800 : : sstring_DeleteRes2,
801 : : long, long, int, int, long > > >
802 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"Longest Head Run Chi r=20",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
803 : : "Longest Head Run Disc r=20"},
804 [ + - ]: 1 : 1L, 300L, 20, 10, 20L + 10L * MILLION );
805 : :
806 : : // Periods In Strings, r = 0
807 : : stack.add< TestU01< TestU01Props< tag::PeriodsInStrings, CProxy_TestU01Suite,
808 : : sres_Chi2, sres_CreateChi2,
809 : : sres_DeleteChi2,
810 : : long, long, int, int > > >
811 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Periods In Strings r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
812 [ + - ]: 1 : 1L, 300L * MILLION, 0, 30 );
813 : :
814 : : // Periods In Strings, r = 15
815 : : stack.add< TestU01< TestU01Props< tag::PeriodsInStrings, CProxy_TestU01Suite,
816 : : sres_Chi2, sres_CreateChi2,
817 : : sres_DeleteChi2,
818 : : long, long, int, int > > >
819 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Periods In Strings r=15"},
[ + + ][ + - ]
[ - - ][ - - ]
820 [ + - ]: 1 : 1L, 300L * MILLION, 15, 15 );
821 : :
822 : : // Hamming Weight 2, r = 0
823 : : stack.add< TestU01< TestU01Props< tag::HammingWeight2, CProxy_TestU01Suite,
824 : : sres_Basic, sres_CreateBasic,
825 : : sres_DeleteBasic,
826 : : long, long, int, int, long > > >
827 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Weight 2 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
828 [ + - ]: 1 : 100L, 100L * MILLION, 0, 30, static_cast<long>(MILLION) );
829 : :
830 : : // Hamming Weight 2, r = 20
831 : : stack.add< TestU01< TestU01Props< tag::HammingWeight2, CProxy_TestU01Suite,
832 : : sres_Basic, sres_CreateBasic,
833 : : sres_DeleteBasic,
834 : : long, long, int, int, long > > >
835 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Weight 2 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
836 [ + - ]: 1 : 30L, 100L * MILLION, 20, 10, static_cast<long>(MILLION) );
837 : :
838 : : // Hamming Correlation, L = 30
839 : : stack.add< TestU01< TestU01Props< tag::HammingCorr, CProxy_TestU01Suite,
840 : : sstring_Res, sstring_CreateRes,
841 : : sstring_DeleteRes,
842 : : long, long, int, int, int > > >
843 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Correlation L=30"},
[ + + ][ + - ]
[ - - ][ - - ]
844 [ + - ]: 1 : 1L, 500L * MILLION, 0, 30, 30 );
845 : :
846 : : // Hamming Correlation, L = 300
847 : : stack.add< TestU01< TestU01Props< tag::HammingCorr, CProxy_TestU01Suite,
848 : : sstring_Res, sstring_CreateRes,
849 : : sstring_DeleteRes,
850 : : long, long, int, int, int > > >
851 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Correlation L=300"},
[ + + ][ + - ]
[ - - ][ - - ]
852 [ + - ]: 1 : 1L, 50L * MILLION, 0, 30, 10 * 30 );
853 : :
854 : : // Hamming Correlation, L = 1200
855 : : stack.add< TestU01< TestU01Props< tag::HammingCorr, CProxy_TestU01Suite,
856 : : sstring_Res, sstring_CreateRes,
857 : : sstring_DeleteRes,
858 : : long, long, int, int, int > > >
859 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Correlation L=1200"},
[ + + ][ + - ]
[ - - ][ - - ]
860 [ + - ]: 1 : 1L, 10L * MILLION, 0, 30, 40 * 30 );
861 : :
862 : : // Hamming independence, L = 30, r = 0
863 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
864 : : sstring_Res, sstring_CreateRes,
865 : : sstring_DeleteRes,
866 : : long, long, int, int, int, int > > >
867 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=30 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
868 [ + - ]: 1 : 1L, 300L * MILLION, 0, 30, 30, 0 );
869 : :
870 : : // Hamming independence, L = 30, r = 20
871 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
872 : : sstring_Res, sstring_CreateRes,
873 : : sstring_DeleteRes,
874 : : long, long, int, int, int, int > > >
875 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=30 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
876 [ + - ]: 1 : 1L, 100L * MILLION, 20, 10, 30, 0 );
877 : :
878 : : // Hamming independence, L = 300, r = 0
879 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
880 : : sstring_Res, sstring_CreateRes,
881 : : sstring_DeleteRes,
882 : : long, long, int, int, int, int > > >
883 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=300 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
884 [ + - ]: 1 : 1L, 30L * MILLION, 0, 30, 10 * 30, 0 );
885 : :
886 : : // Hamming independence, L = 300, r = 20
887 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
888 : : sstring_Res, sstring_CreateRes,
889 : : sstring_DeleteRes,
890 : : long, long, int, int, int, int > > >
891 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=300 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
892 [ + - ]: 1 : 1L, 10L * MILLION, 20, 10, 10 * 30, 0 );
893 : :
894 : : // Hamming independence, L = 1200, r = 0
895 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
896 : : sstring_Res, sstring_CreateRes,
897 : : sstring_DeleteRes,
898 : : long, long, int, int, int, int > > >
899 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=1200 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
900 [ + - ]: 1 : 1L, 10L * MILLION, 0, 30, 40 * 30, 0 );
901 : :
902 : : // Hamming independence, L = 1200, r = 20
903 : : stack.add< TestU01< TestU01Props< tag::HammingIndep, CProxy_TestU01Suite,
904 : : sstring_Res, sstring_CreateRes,
905 : : sstring_DeleteRes,
906 : : long, long, int, int, int, int > > >
907 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Hamming Independence L=1200 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
908 [ + - ]: 1 : 1L, static_cast<long>(MILLION), 20, 10, 40 * 30, 0 );
909 : :
910 : : // String Run, r = 0
911 : : stack.add< TestU01< TestU01Props< tag::StringRun, CProxy_TestU01Suite,
912 : : sstring_Res3, sstring_CreateRes3,
913 : : sstring_DeleteRes3,
914 : : long, long, int, int > > >
915 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"String Run NRuns r=0",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
916 : : "String Run NBits r=0"},
917 [ + - ]: 1 : 1L, 1L * BILLION, 0, 30 );
918 : :
919 : : // String Run, r = 20
920 : : stack.add< TestU01< TestU01Props< tag::StringRun, CProxy_TestU01Suite,
921 : : sstring_Res3, sstring_CreateRes3,
922 : : sstring_DeleteRes3,
923 : : long, long, int, int > > >
924 [ + - ][ + - ]: 3 : ( proxy, tests, rng, gen, {"String Run NRuns r=20",
[ + - ][ + + ]
[ + - ][ - - ]
[ - - ]
925 : : "String Run NBits r=20"},
926 [ + - ]: 1 : 1L, 1L * BILLION, 20, 10 );
927 : :
928 : : // Autocorrelation, d = 1, r = 0
929 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
930 : : sres_Basic, sres_CreateBasic,
931 : : sres_DeleteBasic,
932 : : long, long, int, int, int > > >
933 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=1 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
934 [ + - ]: 1 : 10L, 30L + BILLION, 0, 30, 1 );
935 : :
936 : : // Autocorrelation, d = 1, r = 20
937 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
938 : : sres_Basic, sres_CreateBasic,
939 : : sres_DeleteBasic,
940 : : long, long, int, int, int > > >
941 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=1 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
942 [ + - ]: 1 : 5L, 1L + BILLION, 20, 10, 1 );
943 : :
944 : : // Autocorrelation, d = 30, r = 0
945 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
946 : : sres_Basic, sres_CreateBasic,
947 : : sres_DeleteBasic,
948 : : long, long, int, int, int > > >
949 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=30 r=0"},
[ + + ][ + - ]
[ - - ][ - - ]
950 [ + - ]: 1 : 10L, 31L + BILLION, 0, 30, 30 );
951 : :
952 : : // Autocorrelation, d = 10, r = 20
953 : : stack.add< TestU01< TestU01Props< tag::AutoCorr, CProxy_TestU01Suite,
954 : : sres_Basic, sres_CreateBasic,
955 : : sres_DeleteBasic,
956 : : long, long, int, int, int > > >
957 [ + - ][ + - ]: 2 : ( proxy, tests, rng, gen, {"Autocorrelation d=10 r=20"},
[ + + ][ + - ]
[ - - ][ - - ]
958 [ + - ]: 1 : 5L, 11L + BILLION, 20, 10, 10 );
959 : 1 : }
|