rngtest::TestU01Stack class

Stack of TestU01 RNG statistical tests.

Public types

template<class... Args>
using FnPtr = std::vector<double>(*)(Args...)

Constructors, destructors, conversion operators

TestU01Stack() explicit
Constructor.

Public functions

template<class TestType, class Proxy, typename... Ts>
void add(Proxy& proxy, std::vector<std::function<StatTest()>>& tests, tk::ctr::RNGType r, unif01_Gen*const gen, std::vector<std::string>&& names, Ts&&... xargs) const
Add a statistical test to battery.
auto generator(tk::ctr::RNGType r) const -> unif01_Gen*
Find RNG properties based on RNG id.

Public variables

tk::TaggedTuple<brigand::list<tag::BirthdaySpacings, FnPtr<unif01_Gen*, sres_Poisson*, const std::tuple<long, long, int, long, int, int>&>, tag::Collision, FnPtr<unif01_Gen*, sknuth_Res2*, const std::tuple<long, long, int, long, int>&>, tag::RandomWalk1, FnPtr<unif01_Gen*, swalk_Res*, const std::tuple<long, long, int, int, long, long>&>, tag::Gap, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, double, double>&>, tag::SimplePoker, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int, int>&>, tag::CouponCollector, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::MaxOft, FnPtr<unif01_Gen*, sknuth_Res1*, const std::tuple<long, long, int, int, int, int, int>&>, tag::WeightDistrib, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, long, double, double>&>, tag::MatrixRank, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int, int, int>&>, tag::HammingIndep, FnPtr<unif01_Gen*, sstring_Res*, const std::tuple<long, long, int, int, int, int>&>, tag::SerialOver, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, long, int>&>, tag::CollisionOver, FnPtr<unif01_Gen*, smarsa_Res*, const std::tuple<long, long, int, long, int>&>, tag::ClosePairs, FnPtr<unif01_Gen*, snpair_Res*, const std::tuple<long, long, int, int, int, int, int>&>, tag::ClosePairsBitMatch, FnPtr<unif01_Gen*, snpair_Res*, const std::tuple<long, long, int, int>&>, tag::Run, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::Permutation, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::CollisionPermut, FnPtr<unif01_Gen*, sknuth_Res2*, const std::tuple<long, long, int, int>&>, tag::SampleProd, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int>&>, tag::SampleMean, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int>&>, tag::SampleCorr, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int>&>, tag::AppearanceSpacings, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, long, int, int, int>&>, tag::SumCollector, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, double>&>, tag::Savir2, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, long, int>&>, tag::GCD, FnPtr<unif01_Gen*, smarsa_Res2*, const std::tuple<long, long, int, int>&>, tag::LinearComp, FnPtr<unif01_Gen*, scomp_Res*, const std::tuple<long, long, int, int>&>, tag::LempelZiv, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, int, int, int>&>, tag::Fourier3, FnPtr<unif01_Gen*, sspectral_Res*, const std::tuple<long, int, int, int>&>, tag::LongestHeadRun, FnPtr<unif01_Gen*, sstring_Res2*, const std::tuple<long, long, int, int, long>&>, tag::PeriodsInStrings, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::HammingWeight2, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int, long>&>, tag::HammingCorr, FnPtr<unif01_Gen*, sstring_Res*, const std::tuple<long, long, int, int, int>&>, tag::StringRun, FnPtr<unif01_Gen*, sstring_Res3*, const std::tuple<long, long, int, int>&>, tag::AutoCorr, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int, int>&>>> runner
Compile-time tag-based access to individual test wrappers.

Stack of TestU01 statistical tests wrappers

static auto BirthdaySpacings(unif01_Gen* gen, sres_Poisson* res, const std::tuple<long, long, int, long, int, int>& xargs) -> std::vector<double>
static auto Collision(unif01_Gen* gen, sknuth_Res2* res, const std::tuple<long, long, int, long, int>& xargs) -> std::vector<double>
static auto Gap(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, double, double>& xargs) -> std::vector<double>
static auto SimplePoker(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int, int>& xargs) -> std::vector<double>
static auto CouponCollector(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto MaxOft(unif01_Gen* gen, sknuth_Res1* res, const std::tuple<long, long, int, int, int, int, int>& xargs) -> std::vector<double>
static auto WeightDistrib(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, long, double, double>& xargs) -> std::vector<double>
static auto MatrixRank(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int, int, int>& xargs) -> std::vector<double>
static auto HammingIndep(unif01_Gen* gen, sstring_Res* res, const std::tuple<long, long, int, int, int, int>& xargs) -> std::vector<double>
static auto RandomWalk1(unif01_Gen* gen, swalk_Res* res, const std::tuple<long, long, int, int, long, long>& xargs) -> std::vector<double>
static auto SerialOver(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, long, int>& xargs) -> std::vector<double>
static auto CollisionOver(unif01_Gen* gen, smarsa_Res* res, const std::tuple<long, long, int, long, int>& xargs) -> std::vector<double>
static auto ClosePairs(unif01_Gen* gen, snpair_Res* res, const std::tuple<long, long, int, int, int, int, int>& xargs) -> std::vector<double>
static auto ClosePairsBitMatch(unif01_Gen* gen, snpair_Res* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto Run(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto Permutation(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto CollisionPermut(unif01_Gen* gen, sknuth_Res2* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto SampleProd(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto SampleMean(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int>& xargs) -> std::vector<double>
static auto SampleCorr(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto AppearanceSpacings(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, long, int, int, int>& xargs) -> std::vector<double>
static auto SumCollector(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, double>& xargs) -> std::vector<double>
static auto Savir2(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, long, int>& xargs) -> std::vector<double>
static auto GCD(unif01_Gen* gen, smarsa_Res2* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto LinearComp(unif01_Gen* gen, scomp_Res* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto LempelZiv(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, int, int, int>& xargs) -> std::vector<double>
static auto Fourier3(unif01_Gen* gen, sspectral_Res* res, const std::tuple<long, int, int, int>& xargs) -> std::vector<double>
static auto LongestHeadRun(unif01_Gen* gen, sstring_Res2* res, const std::tuple<long, long, int, int, long>& xargs) -> std::vector<double>
static auto PeriodsInStrings(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto HammingWeight2(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int, long>& xargs) -> std::vector<double>
static auto HammingCorr(unif01_Gen* gen, sstring_Res* res, const std::tuple<long, long, int, int, int>& xargs) -> std::vector<double>
static auto StringRun(unif01_Gen* gen, sstring_Res3* res, const std::tuple<long, long, int, int>& xargs) -> std::vector<double>
static auto AutoCorr(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int, int>& xargs) -> std::vector<double>

Typedef documentation

template<class... Args>
using rngtest::TestU01Stack::FnPtr = std::vector<double>(*)(Args...)

Function pointer type to use to define pointers to test runner functions

Function documentation

rngtest::TestU01Stack::TestU01Stack() explicit

Constructor.

Associate RNGs to global-scope wrappers. Admittedly, this code is ugly and looks stupid at first sight. However, this is a translation of runtime information (user-selected RNGs) to compile-time information: associating RNG ids from an enum class, tk::ctr::RNGType::value, to a compile-time constant, underlying_type value, facilitating a different pair of global-scope RNG wrappers (uniform and uniform_bits) with code reuse. Note that uniform and uniform_bits wrappers must be global-scope as they are used as external generators to TestU01. Templating them on the id enables the compiler generate a different wrapper for a different RNG facilitating simultaneous calls to any or all wrappers as they are unique functions.

template<class TestType, class Proxy, typename... Ts>
void rngtest::TestU01Stack::add(Proxy& proxy, std::vector<std::function<StatTest()>>& tests, tk::ctr::RNGType r, unif01_Gen*const gen, std::vector<std::string>&& names, Ts&&... xargs) const

Add a statistical test to battery.

Parameters
proxy in Charm++ host proxy to which the test calls back to
tests in Vector of test constructors to add tests to
in RNG ID enum
gen in Raw function pointer to TestU01 statistical test
names in Vector of statisical test names (can be more than one associated with a given test, since a test can contain more than one statistical test evaluation, yielding multiple p-values)
xargs in Extra arguments to test-run

Note that adding a test to the battery does not invoke the test constructor, it only records the information on how to call the test constructor in the future. That is it binds the constructor arguments to the constructor call and records the the information so only a function call "()" is necessary to instantiate it.

unif01_Gen* rngtest::TestU01Stack::generator(tk::ctr::RNGType r) const

Find RNG properties based on RNG id.

Parameters
in RNG ID enum
Returns Raw function pointer to TestU01 statistical test

Find TestU01 RNG wrapper based on RNG id

static std::vector<double> rngtest::TestU01Stack::BirthdaySpacings(unif01_Gen* gen, sres_Poisson* res, const std::tuple<long, long, int, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::Collision(unif01_Gen* gen, sknuth_Res2* res, const std::tuple<long, long, int, long, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::Gap(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, double, double>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::SimplePoker(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::CouponCollector(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::MaxOft(unif01_Gen* gen, sknuth_Res1* res, const std::tuple<long, long, int, int, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::WeightDistrib(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, long, double, double>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::MatrixRank(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::HammingIndep(unif01_Gen* gen, sstring_Res* res, const std::tuple<long, long, int, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::RandomWalk1(unif01_Gen* gen, swalk_Res* res, const std::tuple<long, long, int, int, long, long>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::SerialOver(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, long, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::CollisionOver(unif01_Gen* gen, smarsa_Res* res, const std::tuple<long, long, int, long, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::ClosePairs(unif01_Gen* gen, snpair_Res* res, const std::tuple<long, long, int, int, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::ClosePairsBitMatch(unif01_Gen* gen, snpair_Res* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::Run(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::Permutation(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::CollisionPermut(unif01_Gen* gen, sknuth_Res2* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::SampleProd(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::SampleMean(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::SampleCorr(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::AppearanceSpacings(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, long, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::SumCollector(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, double>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::Savir2(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, long, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::GCD(unif01_Gen* gen, smarsa_Res2* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::LinearComp(unif01_Gen* gen, scomp_Res* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::LempelZiv(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::Fourier3(unif01_Gen* gen, sspectral_Res* res, const std::tuple<long, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::LongestHeadRun(unif01_Gen* gen, sstring_Res2* res, const std::tuple<long, long, int, int, long>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::PeriodsInStrings(unif01_Gen* gen, sres_Chi2* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::HammingWeight2(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int, long>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::HammingCorr(unif01_Gen* gen, sstring_Res* res, const std::tuple<long, long, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::StringRun(unif01_Gen* gen, sstring_Res3* res, const std::tuple<long, long, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

static std::vector<double> rngtest::TestU01Stack::AutoCorr(unif01_Gen* gen, sres_Basic* res, const std::tuple<long, long, int, int, int>& xargs)

Parameters
gen in Raw function pointer to TestU01 statistical test
res in Pointer to test results object
xargs in Test arguments
Returns Vector p-values as a result of the statistical test

Variable documentation

tk::TaggedTuple<brigand::list<tag::BirthdaySpacings, FnPtr<unif01_Gen*, sres_Poisson*, const std::tuple<long, long, int, long, int, int>&>, tag::Collision, FnPtr<unif01_Gen*, sknuth_Res2*, const std::tuple<long, long, int, long, int>&>, tag::RandomWalk1, FnPtr<unif01_Gen*, swalk_Res*, const std::tuple<long, long, int, int, long, long>&>, tag::Gap, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, double, double>&>, tag::SimplePoker, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int, int>&>, tag::CouponCollector, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::MaxOft, FnPtr<unif01_Gen*, sknuth_Res1*, const std::tuple<long, long, int, int, int, int, int>&>, tag::WeightDistrib, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, long, double, double>&>, tag::MatrixRank, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int, int, int>&>, tag::HammingIndep, FnPtr<unif01_Gen*, sstring_Res*, const std::tuple<long, long, int, int, int, int>&>, tag::SerialOver, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, long, int>&>, tag::CollisionOver, FnPtr<unif01_Gen*, smarsa_Res*, const std::tuple<long, long, int, long, int>&>, tag::ClosePairs, FnPtr<unif01_Gen*, snpair_Res*, const std::tuple<long, long, int, int, int, int, int>&>, tag::ClosePairsBitMatch, FnPtr<unif01_Gen*, snpair_Res*, const std::tuple<long, long, int, int>&>, tag::Run, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::Permutation, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::CollisionPermut, FnPtr<unif01_Gen*, sknuth_Res2*, const std::tuple<long, long, int, int>&>, tag::SampleProd, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int>&>, tag::SampleMean, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int>&>, tag::SampleCorr, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int>&>, tag::AppearanceSpacings, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, long, int, int, int>&>, tag::SumCollector, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, double>&>, tag::Savir2, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, long, int>&>, tag::GCD, FnPtr<unif01_Gen*, smarsa_Res2*, const std::tuple<long, long, int, int>&>, tag::LinearComp, FnPtr<unif01_Gen*, scomp_Res*, const std::tuple<long, long, int, int>&>, tag::LempelZiv, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, int, int, int>&>, tag::Fourier3, FnPtr<unif01_Gen*, sspectral_Res*, const std::tuple<long, int, int, int>&>, tag::LongestHeadRun, FnPtr<unif01_Gen*, sstring_Res2*, const std::tuple<long, long, int, int, long>&>, tag::PeriodsInStrings, FnPtr<unif01_Gen*, sres_Chi2*, const std::tuple<long, long, int, int>&>, tag::HammingWeight2, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int, long>&>, tag::HammingCorr, FnPtr<unif01_Gen*, sstring_Res*, const std::tuple<long, long, int, int, int>&>, tag::StringRun, FnPtr<unif01_Gen*, sstring_Res3*, const std::tuple<long, long, int, int>&>, tag::AutoCorr, FnPtr<unif01_Gen*, sres_Basic*, const std::tuple<long, long, int, int, int>&>>> rngtest::TestU01Stack::runner

Compile-time tag-based access to individual test wrappers.

This tagged tuple is practically a compile-time map that associates tags (empty structs) to test wrappers. This is used to find the test wrapper function pointers after migration over the network.