LatticeYangMills
random.h
Go to the documentation of this file.
1 /******************************************************************************
2 *
3 * MIT License
4 *
5 * Copyright (c) 2018 Giovanni Pederiva
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24 ******************************************************************************/
25 
34 #pragma once
35 #include <random>
36 #include <boost/random.hpp>
37 #include "Math/su3.h"
38 
52 class Random{
53 public:
54  static double randUniform();
55  static SU3 randSU3();
56  static SU3 randSU3Transf(double epsilon);
57 private:
58  static std::random_device rd;
59  static boost::random::mt19937 randomGen;
60  static boost::random::uniform_real_distribution<double> randomUniformInterval;
61 };
static SU3 randSU3()
returns random SU3 matrix, by choosing 2 random complex vectors as the first two columns, orthogonalizing them and taking the outer product as a third column
Definition: random.cpp:54
Implementation of a class to perform arithmetics between links.
Definition: su3.h:53
static double randUniform()
returns a number from a uniform distribution between 0 and 1
Definition: random.cpp:47
static SU3 randSU3Transf(double epsilon)
returns a random SU3 element with controlled spread around the unity matrix.
Definition: random.cpp:118
Class providing interfaces for the RNG and other utilities.
Definition: random.h:52
Basic library to implement SU3 matrix arithmetics and functions.