27 namespace Test_RandomNumbers_Mseries {
28 const std::string
test_name =
"RandomNumbers.Mseries.Uniform";
32 const std::string filename_input =
"test_RandomNumbers_Mseries_Uniform.yaml";
33 const std::string filename_output =
"stdout";
35 class Parameters_Test_RandomNumbers :
public Parameters {
37 Parameters_Test_RandomNumbers()
39 Register_int(
"number_of_seeds", 0);
40 Register_int(
"seed_base", 0);
41 Register_int(
"number_of_samples", 0);
43 Register_string(
"verbose_level",
"NULL");
45 Register_double(
"expected_result", 0.0);
53 #ifdef USE_TESTMANAGER_AUTOREGISTER
66 Parameters *params_test =
new Parameters_Test_RandomNumbers;
72 params_manager.
read_params(filename_input, params_all);
74 int Nseed = params_test->
get_int(
"number_of_seeds");
75 int seed_base = params_test->
get_int(
"seed_base");
76 int Nrand = params_test->
get_int(
"number_of_samples");
77 const string str_vlevel = params_test->
get_string(
"verbose_level");
79 const bool do_check = params_test->
is_set(
"expected_result");
80 const double expected_result = do_check ? params_test->
get_double(
"expected_result") : 0.0;
88 vout.
general(vl,
" vlevel = %s\n", str_vlevel.c_str());
101 vout.
general(vl,
" number of samples = %10d\n", Nrand);
106 for (
int iseed = 0; iseed < Nseed; ++iseed) {
107 int iseed2 = seed_base + iseed;
112 for (
int i = 0; i < Nrand; ++i) {
113 double rn1 = rand->
get();
114 double rn2 = rand->
get();
115 double r = rn1 * rn1 + rn2 * rn2;
116 if (r < 1.0) { ++Npi; }
120 double pi_exp = (4.0 * Npi) / Nrand;
123 t2 += pi_exp * pi_exp;
126 vout.
general(vl,
" %10d %14.10f\n", iseed2, pi_exp);
131 double api = t1 / (double)Nseed;
132 double vpi = t2 / (double)Nseed - api * api;
133 double dpi = sqrt(vpi);
134 double epi = dpi / sqrt((
double)Nseed - 1);
136 double pi = 3.141592653589793;
159 vout.
detailed(vl,
"check skipped: expected_result not set.\n\n");
Random number generator base on M-series.
void read_params(const std::string ¶ms_file, Parameters *params)
read parameters from file.
void detailed(const char *format,...)
void general(const char *format,...)
int get_int(const string &key) const
int uniform_calc_pi(void)
static bool RegisterTest(const std::string &key, const Test_function func)
bool is_set(const string &) const
double get_double(const string &key) const
const std::string test_name
void Register_Parameters(const string &, Parameters *const)
Base class of random number generators.
Parameter manager with YAML parser.
int verify(const double expected, const double result)
string get_string(const string &key) const
void report(const Bridge::VerboseLevel vl=Bridge::GENERAL)
static VerboseLevel set_verbose_level(const std::string &str)