StatMech
Loading...
Searching...
No Matches
GUEgenerator< RealType > Class Template Reference

Generator of matrices in the Gaussian Unitary Ensemble (GUE) More...

#include <RandomMatrices.hpp>

Collaboration diagram for GUEgenerator< RealType >:
Collaboration graph

Public Member Functions

 GUEgenerator (int seed=0, RealType stddev=1.0)
 Constructor.
 
template<typename EigenMatrix >
void operator() (EigenMatrix &mat)
 Generates an instance of a random matrix.
 
void status (void) const
 Show the current status of the generator.
 
void discard (unsigned long long num)
 Discards random numbers to advance internal states of the random number generator.
 
template<typename EigenMatrix >
void discard (EigenMatrix const &mat, unsigned long long num)
 Discards instances of random matrices to advance internal states of the random number generator.
 

Private Attributes

std::mt19937 mt
 
std::normal_distribution< RealType > Gaussian
 
unsigned long long count
 

Detailed Description

template<typename RealType = double>
class GUEgenerator< RealType >

Generator of matrices in the Gaussian Unitary Ensemble (GUE)

Template Parameters
RealType: the type of floating-point numbers.

Constructor & Destructor Documentation

◆ GUEgenerator()

template<typename RealType = double>
GUEgenerator< RealType >::GUEgenerator ( int  seed = 0,
RealType  stddev = 1.0 
)
inline

Constructor.

Parameters
seedseed for the random number generator
stddevStandard deviation of diagonal elements
33 : mt(seed), Gaussian{0.0, stddev}, count{0} {};
std::normal_distribution< RealType > Gaussian
Definition RandomMatrices.hpp:23
std::mt19937 mt
Definition RandomMatrices.hpp:22
unsigned long long count
Definition RandomMatrices.hpp:24

Member Function Documentation

◆ discard() [1/2]

template<typename RealType = double>
template<typename EigenMatrix >
void GUEgenerator< RealType >::discard ( EigenMatrix const &  mat,
unsigned long long  num 
)
inline

Discards instances of random matrices to advance internal states of the random number generator.

Parameters
matMatrix the shape of which is the same as random matrices to be discarded
numNumber of random matrices to be discarded
80 {
81 this->discard(num * 2 * mat.size());
82 }
void discard(unsigned long long num)
Discards random numbers to advance internal states of the random number generator.
Definition RandomMatrices.hpp:67

◆ discard() [2/2]

template<typename RealType = double>
void GUEgenerator< RealType >::discard ( unsigned long long  num)
inline

Discards random numbers to advance internal states of the random number generator.

Parameters
numNumber of random numbers to be discarded
67 {
68 for(auto j = 0; j < num; ++j) Gaussian(mt);
69 count += num;
70 }

◆ operator()()

template<typename RealType = double>
template<typename EigenMatrix >
void GUEgenerator< RealType >::operator() ( EigenMatrix &  mat)
inline

Generates an instance of a random matrix.

Parameters
[out]matMatrix to which the generated matrix is assigned
40 {
41 mat = mat.NullaryExpr(mat.rows(), mat.cols(), [&]() {
42 return Complex_t<RealType>(Gaussian(mt), Gaussian(mt));
43 });
44 mat = (mat + mat.adjoint().eval()) / 2.0;
45 count += 2 * mat.size();
46 }

◆ status()

template<typename RealType = double>
void GUEgenerator< RealType >::status ( void  ) const
inline

Show the current status of the generator.

  • Mean: Mean of each elements
  • Stddev: Standard deviation of diagonal elements
  • Count: Number of random numbers generated by the instance so far
54 {
55 std::cout << "GUEgenerator.status()"
56 << "\n";
57 std::cout << "\tMean: " << Gaussian.mean() << "\n";
58 std::cout << "\tStddev: " << Gaussian.stddev() << "\n";
59 std::cout << "\tCount: " << this->count << std::endl;
60 }

Member Data Documentation

◆ count

template<typename RealType = double>
unsigned long long GUEgenerator< RealType >::count
mutableprivate

◆ Gaussian

template<typename RealType = double>
std::normal_distribution<RealType> GUEgenerator< RealType >::Gaussian
private

◆ mt

template<typename RealType = double>
std::mt19937 GUEgenerator< RealType >::mt
private

The documentation for this class was generated from the following file: