23 #ifndef N_Qubit_Decomposition_H 24 #define N_Qubit_Decomposition_H N_Qubit_Decomposition()
Nullary constructor of the class.
void decompose_submatrix()
Start the decompostion process to recursively decompose the submatrices.
virtual void start_decomposition(bool finalize_decomp=true)
Start the disentanglig process of the unitary.
void finalize_decomposition()
After the main optimization problem is solved, the indepent qubits can be rotated into state |0> by t...
void set_custom_gate_structure(std::map< int, Gates_block *> gate_structure_in)
Call to set custom layers to the gate structure that are intended to be used in the subdecomposition...
virtual ~N_Qubit_Decomposition()
Destructor of the class.
A base class to determine the decomposition of an N-qubit unitary into a sequence of CNOT and U3 gate...
Double-precision complex matrix (float64).
Single-precision complex matrix (float32).
void extract_subdecomposition_results(Sub_Matrix_Decomposition *cSub_decomposition)
Call to extract and store the calculated parameters and gates of the sub-decomposition processes...
guess_type
Type definition of the types of the initial guess.
std::map< std::string, Config_Element > config
config metadata utilized during the optimization
Header file for a class responsible for the disentanglement of one qubit from the others...
std::map< int, Gates_block * > gate_structure
A map of <int n: Gates_block* block> describing custom gate structure to be used in the decomposition...
A class responsible for the disentanglement of one qubit from the others.
int set_identical_blocks(int n, int identical_blocks_in)
Set the number of identical successive blocks during the subdecomposition of the n-th qubit...
A base class to determine the decomposition of an N-qubit unitary into a sequence of CNOT and U3 gate...