32 const std::string
test_name =
"RandomNumbers.SFMT.GaussianField";
36 const std::string filename_input =
"test_RandomNumbers_SFMT_GaussianField.yaml";
37 const std::string filename_output =
"stdout";
39 class Parameters_Test_RandomNumbers :
public Parameters {
41 Parameters_Test_RandomNumbers()
43 Register_int(
"seed", 0);
45 Register_string(
"verbose_level",
"NULL");
47 Register_double(
"expected_result", 0.0);
55 #ifdef USE_TESTMANAGER_AUTOREGISTER
68 unique_ptr<Parameters> params_test(
new Parameters_Test_RandomNumbers);
69 unique_ptr<Parameters> params_all(
new Parameters);
71 params_all->Register_Parameters(
"Test_RandomNumbers", params_test);
75 int iseed = params_test->get_int(
"seed");
76 const string str_vlevel = params_test->get_string(
"verbose_level");
78 const bool do_check = params_test->is_set(
"expected_result");
79 const double expected_result = do_check ? params_test->get_double(
"expected_result") : 0.0;
85 vout.
general(vl,
" vlevel = %s\n", str_vlevel.c_str());
90 unique_ptr<RandomNumbers> rand(
new RandomNumbers_SFMT(iseed));
91 unique_ptr<Timer> timer(
new Timer(test_name));
100 Field v(Nin, Nvol, Nex);
105 rand->gauss_lex_global(v);
108 for (
int i = 0; i < size; ++i) {
110 vr += v.cmp(i) * v.cmp(i);
119 av = av_all / global_size;
120 vr = vr_all / global_size - av * av;
124 vout.
general(vl,
"Gaussian distribution (Field):\n");
125 vout.
general(vl,
" number of samples = %10d\n", size);
128 vout.
general(vl,
" variance(expect) = %10.8f\n", 1.0 / sqrt(2.0));
134 printf(
"result = %24.20f\n", result);
140 vout.
detailed(vl,
"check skipped: expected_result not set.\n\n");
145 #endif // USE_SFMTLIB
void detailed(const char *format,...)
void general(const char *format,...)
const std::string test_name
Container of Field-type object.
static bool RegisterTest(const std::string &key, const Test_function func)
int verify(const double result, const double expected, double eps)
static int reduce_sum(int count, double *recv_buf, double *send_buf, int pattern=0)
make a global sum of an array of double over the communicator. pattern specifies the dimensions to be...
static void read(const std::string ¶ms_file, Parameters *params)
static VerboseLevel set_verbose_level(const std::string &str)