Sequential Quantum Gate Decomposer
v1.8.8
Powerful decomposition of general unitarias into one- and two-qubit gates gates
|
A class representing a SYC operation. More...
#include <SYC.h>
Public Member Functions | |
void | apply_from_right (Matrix &input) |
Call to apply the gate on the input array/matrix by input*SYC. More... | |
void | apply_to (Matrix &input, bool parallel=false) |
Call to apply the gate on the input array/matrix by SYC*input. More... | |
void | apply_to_list (std::vector< Matrix > &input) |
Call to apply the gate on the input array/matrix by U3*input. More... | |
Matrix | calc_one_qubit_u3 (double Theta, double Phi, double Lambda) |
Calculate the matrix of a U3 gate gate corresponding to the given parameters acting on a single qbit space. More... | |
virtual Matrix | calc_one_qubit_u3 () |
Calculate the matrix of the constans gates. More... | |
SYC * | clone () |
Call to create a clone of the present class. More... | |
int | get_control_qbit () |
Call to get the index of the control qubit. More... | |
Matrix | get_matrix () |
Call to retrieve the operation matrix. More... | |
Matrix | get_matrix (bool parallel=false) |
Call to retrieve the operation matrix. More... | |
int | get_parameter_num () |
Call to get the number of free parameters. More... | |
int | get_qbit_num () |
Call to get the number of qubits composing the unitary. More... | |
int | get_target_qbit () |
Call to get the index of the target qubit. More... | |
gate_type | get_type () |
Call to get the type of the operation. More... | |
virtual void | parameters_for_calc_one_qubit (double &ThetaOver2, double &Phi, double &Lambda) |
Calculate the matrix of a U3 gate gate corresponding to the given parameters acting on a single qbit space. 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... | |
void | reorder_qubits (std::vector< int > qbit_list) |
Call to reorder the qubits in the matrix of the operation. More... | |
void | set_control_qbit (int control_qbit_in) |
Call to set the control qubit for the gate operation. More... | |
void | set_debugfile (std::string debugfile) |
Call to set the debugfile name. More... | |
void | set_matrix (Matrix input) |
Call to set the stored matrix in the operation. More... | |
void | set_qbit_num (int qbit_num) |
Call to set the number of qubits spanning the matrix of the operation. More... | |
void | set_target_qbit (int target_qbit_in) |
Call to set the target qubit for the gate operation. More... | |
void | set_verbose (int verbose_in) |
Call to set the verbose attribute. More... | |
SYC () | |
Nullary constructor of the class. More... | |
SYC (int qbit_num_in, int target_qbit_in, int control_qbit_in) | |
Constructor of the class. More... | |
~SYC () | |
Destructor of the class. 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 | verbose |
Set the verbosity level of the output messages. More... | |
Protected Member Functions | |
void | apply_kernel_from_right (Matrix &u3_1qbit, Matrix &input) |
Call to apply the gate kernel on the input state or unitary from right (no AVX support) More... | |
void | apply_kernel_to (Matrix &u3_1qbit, Matrix &input, bool deriv=false, bool parallel=false) |
Call to apply the gate kernel on the input state or unitary with optional AVX support. More... | |
Protected Attributes | |
int | control_qbit |
The index of the qubit which acts as a control qubit (control_qbit >= 0) in controlled operations. More... | |
int | matrix_size |
The size N of the NxN matrix associated with the operations. More... | |
int | parameter_num |
the number of free parameters of the operation More... | |
int | qbit_num |
number of qubits spanning the matrix of the operation More... | |
int | target_qbit |
The index of the qubit on which the operation acts (target_qbit >= 0) More... | |
gate_type | type |
The type of the operation (see enumeration gate_type) More... | |
Constructor of the class.
qbit_num_in | The number of qubits in the unitaries |
target_qbit_in | The identification number of the target qubit. (0 <= target_qbit <= qbit_num-1) |
control_qbit_in | The identification number of the control qubit. (0 <= target_qbit <= qbit_num-1) |
Definition at line 60 of file SYC.cpp.
|
virtual |
Call to apply the gate kernel on the input state or unitary from right (no AVX support)
u3_1qbit | The 2x2 kernel of the gate operation |
input | The input matrix on which the transformation is applied |
deriv | Set true to apply derivate transformation, false otherwise |
Definition at line 359 of file Gate.cpp.
|
protectedinherited |
Call to apply the gate kernel on the input state or unitary with optional AVX support.
u3_1qbit | The 2x2 kernel of the gate operation |
input | The input matrix on which the transformation is applied |
deriv | Set true to apply derivate transformation, false otherwise (optional) |
parallel | Set true to apply parallel kernels, false otherwise (optional) |
u3_1qbit | The 2x2 kernel of the gate operation |
input | The input matrix on which the transformation is applied |
deriv | Set true to apply derivate transformation, false otherwise (optional) |
deriv | Set true to apply parallel kernels, false otherwise (optional) |
Definition at line 292 of file Gate.cpp.
Call to apply the gate on the input array/matrix by SYC*input.
Call to apply the gate on the input array/matrix SYC*input.
input | The input array on which the gate is applied |
parallel | Set true to apply parallel kernels, false otherwise (optional) |
Reimplemented from Gate.
Definition at line 135 of file SYC.cpp.
|
inherited |
Call to apply the gate on the input array/matrix by U3*input.
parameters | An array of parameters to calculate the matrix of the U3 gate. |
input | The input array on which the gate is applied |
Definition at line 127 of file Gate.cpp.
|
inherited |
Calculate the matrix of a U3 gate gate corresponding to the given parameters acting on a single qbit space.
Theta | Real parameter standing for the parameter theta. |
Phi | Real parameter standing for the parameter phi. |
Lambda | Real parameter standing for the parameter lambda. |
ThetaOver2 | Real parameter standing for the parameter theta. |
Phi | Real parameter standing for the parameter phi. |
Lambda | Real parameter standing for the parameter lambda. |
Definition at line 439 of file Gate.cpp.
|
virtualinherited |
|
virtual |
|
inherited |
Matrix SYC::get_matrix | ( | ) |
Call to retrieve the operation matrix.
Call to retrieve the gate matrix.
parallel | Set true to apply parallel kernels, false otherwise |
parallel | Set true to apply parallel kernels, false otherwise |
Definition at line 119 of file SYC.cpp.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
virtualinherited |
Calculate the matrix of a U3 gate gate corresponding to the given parameters acting on a single qbit space.
Set static values for the angles and constans parameters for calculating the matrix of the gates.
Theta | Real parameter standing for the parameter theta. |
Phi | Real parameter standing for the parameter phi. |
Lambda | Real parameter standing for the parameter lambda. |
ThetaOver2 | Real parameter standing for the parameter theta. |
Phi | Real parameter standing for the parameter phi. |
Lambda | Real parameter standing for the parameter lambda. |
|
inherited |
Call to print output messages in the function of the verbosity level.
sstream | The stringstream input to store the output messages. |
verbose_level | Integer 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.
|
virtual |
Call to reorder the qubits in the matrix of the operation.
Call to reorder the qubits in the matrix of the gate.
qbit_list | The reordered list of qubits spanning the matrix |
Reimplemented from Gate.
Definition at line 326 of file SYC.cpp.
|
inherited |
|
inherited |
Call to set the debugfile name.
debugfile | String variable. Set the debugfile name. |
Definition at line 95 of file logging.cpp.
|
inherited |
|
virtual |
Call to set the number of qubits spanning the matrix of the operation.
Call to set the number of qubits spanning the matrix of the gate.
qbit_num | The number of qubits |
Reimplemented from Gate.
Definition at line 314 of file SYC.cpp.
|
inherited |
|
inherited |
Call to set the verbose attribute.
verbose_in | Integer variable. Set the number to specify the verbosity level for output messages. |
Definition at line 85 of file logging.cpp.
|
protectedinherited |
|
inherited |
|
inherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |