Quantum Gate Decomposer
v1.3
Powerful decomposition of almost any unitary into U3 and CNOT gates
|
A class to cerate general random unitary matrix according to arXiv:1303:5904v1. More...
#include <Random_Unitary.h>
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... | |
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... | |
Public Attributes | |
int | dim |
The number of rows in the created unitary. More... | |
A class to cerate general random unitary matrix according to arXiv:1303:5904v1.
Definition at line 49 of file Random_Unitary.h.
Random_Unitary::Random_Unitary | ( | int | dim_in | ) |
Constructor of the class.
dim_in | The number of rows in the random unitary to be ceated. |
Definition at line 125 of file Random_Unitary.cpp.
Matrix Random_Unitary::Construct_Unitary_Matrix | ( | ) |
Call to create a random unitary.
Definition at line 142 of file Random_Unitary.cpp.
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.
vartheta | array of dim*(dim-1)/2 elements |
varphi | array of dim*(dim-1)/2 elements |
varkappa | array of dim-1 elements |
Definition at line 188 of file Random_Unitary.cpp.
Matrix Random_Unitary::Construct_Unitary_Matrix | ( | double * | parameters | ) |
Generates a unitary matrix from parameters parameters according to arXiv:1303:5904v1.
parameters | array of (dim+1)*(dim-1) elements |
Definition at line 254 of file Random_Unitary.cpp.
int Random_Unitary::convert_indexes | ( | int | varalpha, |
int | varbeta | ||
) |
Calculates an index from paramaters varalpha and varbeta.
varalpha | An integer |
varbeta | An integer |
Definition at line 243 of file Random_Unitary.cpp.
Matrix Random_Unitary::E_alpha_beta | ( | int | varalpha, |
int | varbeta | ||
) |
Implements matrix I below Eq (7) of arXiv:1303:5904v1.
varalpha | An integer |
varbeta | An integer |
Definition at line 362 of file Random_Unitary.cpp.
double Random_Unitary::gamma | ( | ) |
Implements Eq (11) of arXiv:1303:5904v1.
Definition at line 397 of file Random_Unitary.cpp.
Matrix Random_Unitary::I_alpha_beta | ( | int | varalpha, |
int | varbeta | ||
) |
Implements matrix I below Eq (7) of arXiv:1303:5904v1.
varalpha | An integer |
varbeta | An integer |
Definition at line 379 of file Random_Unitary.cpp.
double Random_Unitary::kronecker | ( | int | a, |
int | b | ||
) |
Kronecker delta.
a | An integer |
b | An integer |
Definition at line 411 of file Random_Unitary.cpp.
Matrix Random_Unitary::M | ( | int | varalpha, |
int | varbeta, | ||
QGD_Complex16 | s, | ||
QGD_Complex16 | t | ||
) |
Implements Eq (8) of arXiv:1303:5904v1.
varalpha | An integer |
varbeta | An integer |
s | A complex number |
t | A complex number |
Definition at line 306 of file Random_Unitary.cpp.
Matrix Random_Unitary::Omega | ( | int | varalpha, |
int | varbeta, | ||
QGD_Complex16 | x, | ||
QGD_Complex16 | y | ||
) |
Eq (6) of arXiv:1303:5904v1.
varalpha | An integer |
varbeta | An integer |
x | A complex number |
y | A complex number |
Definition at line 268 of file Random_Unitary.cpp.
Matrix Random_Unitary::Q | ( | QGD_Complex16 | u1, |
QGD_Complex16 | u2 | ||
) |
Implements Eq (9) of arXiv:1303:5904v1.
u1 | A complex number |
u2 | A complex number |
Definition at line 340 of file Random_Unitary.cpp.
int Random_Unitary::dim |
The number of rows in the created unitary.
Definition at line 54 of file Random_Unitary.h.