Sequential Quantum Gate Decomposer  v1.9.3
Powerful decomposition of general unitarias into one- and two-qubit gates gates
List of all members | Public Member Functions | Public Attributes
Random_Unitary Class Reference

A class to cerate general random unitary matrix according to arXiv:1303:5904v1. More...

#include <Random_Unitary.h>

Inheritance diagram for Random_Unitary:
Inheritance graph
[legend]

Public Member Functions

Matrix Construct_Unitary_Matrix ()
 Call to create a random unitary. More...
 
Matrix Construct_Unitary_Matrix (double *vartheta, double *varphi, double *varkappa)
 Generates a unitary matrix from parameters vartheta, varphi, varkappa according to arXiv:1303:5904v1. More...
 
Matrix Construct_Unitary_Matrix (double *parameters)
 Generates a unitary matrix from parameters parameters according to arXiv:1303:5904v1. More...
 
int convert_indexes (int varalpha, int varbeta)
 Calculates an index from paramaters varalpha and varbeta. More...
 
Matrix E_alpha_beta (int varalpha, int varbeta)
 Implements matrix I below Eq (7) of arXiv:1303:5904v1. More...
 
double gamma ()
 Implements Eq (11) of arXiv:1303:5904v1. More...
 
Matrix I_alpha_beta (int varalpha, int varbeta)
 Implements matrix I below Eq (7) of arXiv:1303:5904v1. More...
 
double kronecker (int a, int b)
 Kronecker delta. More...
 
Matrix M (int varalpha, int varbeta, QGD_Complex16 s, QGD_Complex16 t)
 Implements Eq (8) of arXiv:1303:5904v1. More...
 
Matrix Omega (int varalpha, int varbeta, QGD_Complex16 x, QGD_Complex16 y)
 Eq (6) of arXiv:1303:5904v1. More...
 
void print (const std::stringstream &sstream, int verbose_level=1) const
 Call to print output messages in the function of the verbosity level. More...
 
Matrix Q (QGD_Complex16 u1, QGD_Complex16 u2)
 Implements Eq (9) of arXiv:1303:5904v1. More...
 
 Random_Unitary (int dim_in)
 Constructor of the class. More...
 
void set_debugfile (std::string debugfile)
 Call to set the debugfile name. More...
 
void set_verbose (int verbose_in)
 Call to set the verbose attribute. More...
 

Public Attributes

bool debug
 Logical variable. Set true to write output messages to the 'debug.txt' file. More...
 
std::string debugfile_name
 String variable. Set the debug file name. More...
 
int dim
 The number of rows in the created unitary. More...
 
int verbose
 Set the verbosity level of the output messages. More...
 

Detailed Description

A class to cerate general random unitary matrix according to arXiv:1303:5904v1.

Definition at line 51 of file Random_Unitary.h.

Constructor & Destructor Documentation

◆ Random_Unitary()

Random_Unitary::Random_Unitary ( int  dim_in)

Constructor of the class.

Parameters
dim_inThe number of rows in the random unitary to be ceated.
Returns
An instance of the class

Definition at line 126 of file Random_Unitary.cpp.

Member Function Documentation

◆ Construct_Unitary_Matrix() [1/3]

Matrix Random_Unitary::Construct_Unitary_Matrix ( )

Call to create a random unitary.

Returns
Returns with a pointer to the created random unitary

Definition at line 143 of file Random_Unitary.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Construct_Unitary_Matrix() [2/3]

Matrix Random_Unitary::Construct_Unitary_Matrix ( double *  vartheta,
double *  varphi,
double *  varkappa 
)

Generates a unitary matrix from parameters vartheta, varphi, varkappa according to arXiv:1303:5904v1.

Parameters
varthetaarray of dim*(dim-1)/2 elements
varphiarray of dim*(dim-1)/2 elements
varkappaarray of dim-1 elements
Returns
Returns with a pointer to the generated unitary

Definition at line 189 of file Random_Unitary.cpp.

Here is the call graph for this function:

◆ Construct_Unitary_Matrix() [3/3]

Matrix Random_Unitary::Construct_Unitary_Matrix ( double *  parameters)

Generates a unitary matrix from parameters parameters according to arXiv:1303:5904v1.

Parameters
parametersarray of (dim+1)*(dim-1) elements
Returns
The constructed unitary

Definition at line 255 of file Random_Unitary.cpp.

Here is the call graph for this function:

◆ convert_indexes()

int Random_Unitary::convert_indexes ( int  varalpha,
int  varbeta 
)

Calculates an index from paramaters varalpha and varbeta.

Parameters
varalphaAn integer
varbetaAn integer
Returns
Returns with the calculated index.

Definition at line 244 of file Random_Unitary.cpp.

Here is the caller graph for this function:

◆ E_alpha_beta()

Matrix Random_Unitary::E_alpha_beta ( int  varalpha,
int  varbeta 
)

Implements matrix I below Eq (7) of arXiv:1303:5904v1.

Parameters
varalphaAn integer
varbetaAn integer
Returns
Return with a pointer to the calculated E matrix of Eq. (7) of arXiv:1303:5904v1

Definition at line 363 of file Random_Unitary.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gamma()

double Random_Unitary::gamma ( )

Implements Eq (11) of arXiv:1303:5904v1.

Returns
Returns eith the value of gamma

Definition at line 398 of file Random_Unitary.cpp.

Here is the caller graph for this function:

◆ I_alpha_beta()

Matrix Random_Unitary::I_alpha_beta ( int  varalpha,
int  varbeta 
)

Implements matrix I below Eq (7) of arXiv:1303:5904v1.

Parameters
varalphaAn integer
varbetaAn integer
Returns
Return with a pointer to the calculated I matrix of Eq. (7) of arXiv:1303:5904v1

Definition at line 380 of file Random_Unitary.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ kronecker()

double Random_Unitary::kronecker ( int  a,
int  b 
)

Kronecker delta.

Parameters
aAn integer
bAn integer
Returns
Returns with the Kronecker delta value of a and b.

Definition at line 412 of file Random_Unitary.cpp.

Here is the caller graph for this function:

◆ M()

Matrix Random_Unitary::M ( int  varalpha,
int  varbeta,
QGD_Complex16  s,
QGD_Complex16  t 
)

Implements Eq (8) of arXiv:1303:5904v1.

Parameters
varalphaAn integer
varbetaAn integer
sA complex number
tA complex number
Returns
Return with a pointer to the calculated M matrix of Eq. (8) of arXiv:1303:5904v1

Definition at line 307 of file Random_Unitary.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Omega()

Matrix Random_Unitary::Omega ( int  varalpha,
int  varbeta,
QGD_Complex16  x,
QGD_Complex16  y 
)

Eq (6) of arXiv:1303:5904v1.

Parameters
varalphaAn integer
varbetaAn integer
xA complex number
yA complex number
Returns
Return with a pointer to the calculated Omega matrix of Eq. (6) of arXiv:1303:5904v1

Definition at line 269 of file Random_Unitary.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ print()

void logging::print ( const std::stringstream &  sstream,
int  verbose_level = 1 
) const
inherited

Call to print output messages in the function of the verbosity level.

Parameters
sstreamThe stringstream input to store the output messages.
verbose_levelInteger input. High level means write more to the standart output, 0 means write nothing. The default value is set to 1.

Definition at line 55 of file logging.cpp.

◆ Q()

Matrix Random_Unitary::Q ( QGD_Complex16  u1,
QGD_Complex16  u2 
)

Implements Eq (9) of arXiv:1303:5904v1.

Parameters
u1A complex number
u2A complex number
Returns
Return with a pointer to the calculated Q matrix of Eq. (9) of arXiv:1303:5904v1

Definition at line 341 of file Random_Unitary.cpp.

Here is the caller graph for this function:

◆ set_debugfile()

void logging::set_debugfile ( std::string  debugfile)
inherited

Call to set the debugfile name.

Parameters
debugfileString variable. Set the debugfile name.

Definition at line 95 of file logging.cpp.

Here is the caller graph for this function:

◆ set_verbose()

void logging::set_verbose ( int  verbose_in)
inherited

Call to set the verbose attribute.

Parameters
verbose_inInteger variable. Set the number to specify the verbosity level for output messages.

Definition at line 85 of file logging.cpp.

Here is the caller graph for this function:

Member Data Documentation

◆ debug

bool logging::debug
inherited

Logical variable. Set true to write output messages to the 'debug.txt' file.

Definition at line 53 of file logging.h.

◆ debugfile_name

std::string logging::debugfile_name
inherited

String variable. Set the debug file name.

Definition at line 56 of file logging.h.

◆ dim

int Random_Unitary::dim

The number of rows in the created unitary.

Definition at line 56 of file Random_Unitary.h.

◆ verbose

int logging::verbose
inherited

Set the verbosity level of the output messages.

Definition at line 50 of file logging.h.


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