Quinoa all test code coverage report
Current view: top level - RNGTest - Crush.cpp (source / functions) Hit Total Coverage
Commit: Quinoa_v0.3-957-gb4f0efae0 Lines: 196 200 98.0 %
Date: 2021-11-11 18:25:50 Functions: 1 1 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 528 1056 50.0 %

           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                 :          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'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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :               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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          6 :              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                 :          7 :              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                 :          7 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :          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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          0 :              10L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 5, gofw_Sum,
     483                 :          3 :              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                 :          0 :              5L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 10, gofw_Sum,
     493                 :          3 :              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                 :          0 :              1L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 20,
     503                 :          3 :              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                 :          0 :              1L, 10L * MILLION, 0, static_cast<int>(MILLION / 10), 30,
     513                 :          3 :              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                 :          2 :              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                 :          2 :               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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :            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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          6 :              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                 :          6 :              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                 :          6 :              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                 :          6 :              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                 :          6 :              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                 :          6 :              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                 :          3 :              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                 :          3 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          3 :              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                 :          3 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          3 :              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                 :          3 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              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                 :          2 :              5L, 11L + BILLION, 20, 10, 10 );
     959                 :          1 : }

Generated by: LCOV version 1.14