27 namespace Test_RandomNumbers_Mseries {
28 const std::string
test_name =
"RandomNumbers.Mseries.GaussianField";
32 const std::string filename_input =
"test_RandomNumbers_Mseries_GaussianField.yaml";
33 const std::string filename_output =
"stdout";
35 class Parameters_Test_RandomNumbers :
public Parameters {
37 Parameters_Test_RandomNumbers()
39 Register_int(
"seed", 0);
41 Register_string(
"verbose_level",
"NULL");
43 Register_double(
"expected_result", 0.0);
51 #ifdef USE_TESTMANAGER_AUTOREGISTER
64 Parameters *params_test =
new Parameters_Test_RandomNumbers;
70 params_manager.
read_params(filename_input, params_all);
72 int iseed = params_test->
get_int(
"seed");
73 const string str_vlevel = params_test->
get_string(
"verbose_level");
75 const bool do_check = params_test->
is_set(
"expected_result");
76 const double expected_result = do_check ? params_test->
get_double(
"expected_result") : 0.0;
82 vout.
general(vl,
" vlevel = %s\n", str_vlevel.c_str());
97 Field v(Nin, Nvol, Nex);
105 for (
int i = 0; i < size; ++i) {
107 vr += v.
cmp(i) * v.
cmp(i);
116 av = av_all / global_size;
117 vr = vr_all / global_size - av * av;
121 vout.
general(vl,
"Gaussian distribution (Field):\n");
122 vout.
general(vl,
" number of samples = %10d\n", size);
125 vout.
general(vl,
" variance(expect) = %10.8f\n", 1.0 / sqrt(2.0));
144 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,...)
Container of Field-type object.
double cmp(const int jin, const int site, const int jex) const
int get_int(const string &key) const
virtual void gauss_lex_global(Field &)
gaussian random number defined on global lattice.
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.
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...
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)