Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
apply_dedicated_gate_kernel_to_input.h
Go to the documentation of this file.
1 #ifndef APPLY_DEDICATED_GATE_KERNEL_TO_INPUT_H
2 #define APPLY_DEDICATED_GATE_KERNEL_TO_INPUT_H
3 
4 #include "matrix.h"
5 #include "common.h"
6 
15 void apply_X_kernel_to_input(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
16 void apply_X_kernel_from_right(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
17 
26 void apply_Y_kernel_to_input(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
27 void apply_Y_kernel_from_right(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
28 
37 void apply_Z_kernel_to_input(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
38 void apply_Z_kernel_from_right(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
39 
48 void apply_H_kernel_to_input(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
49 void apply_H_kernel_from_right(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
50 
59 void apply_S_kernel_to_input(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
60 void apply_S_kernel_from_right(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
61 
70 void apply_T_kernel_to_input(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
71 void apply_T_kernel_from_right(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
72 
81 void apply_SWAP_kernel_to_input(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
82 void apply_SWAP_kernel_from_right(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
83 void apply_SYC_kernel_to_input(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
84 void apply_SYC_kernel_from_right(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
85 
86 // TBB Parallelized versions
87 void apply_X_kernel_to_input_tbb(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
88 void apply_X_kernel_from_right_tbb(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
89 void apply_Y_kernel_to_input_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
90 void apply_Y_kernel_from_right_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
91 void apply_Z_kernel_to_input_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
92 void apply_Z_kernel_from_right_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
93 void apply_H_kernel_to_input_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
94 void apply_H_kernel_from_right_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
95 void apply_S_kernel_to_input_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
96 void apply_S_kernel_from_right_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
97 void apply_T_kernel_to_input_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
98 void apply_T_kernel_from_right_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
99 void apply_SWAP_kernel_to_input_tbb(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
100 void apply_SWAP_kernel_from_right_tbb(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
101 void apply_SYC_kernel_to_input_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
102 void apply_SYC_kernel_from_right_tbb(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
103 
104 // OpenMP Parallelized versions
105 void apply_X_kernel_to_input_omp(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
106 void apply_X_kernel_from_right_omp(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
107 void apply_Y_kernel_to_input_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
108 void apply_Y_kernel_from_right_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
109 void apply_Z_kernel_to_input_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
110 void apply_Z_kernel_from_right_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
111 void apply_H_kernel_to_input_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
112 void apply_H_kernel_from_right_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
113 void apply_S_kernel_to_input_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
114 void apply_S_kernel_from_right_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
115 void apply_T_kernel_to_input_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
116 void apply_T_kernel_from_right_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
117 void apply_SWAP_kernel_to_input_omp(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
118 void apply_SWAP_kernel_from_right_omp(Matrix& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
119 void apply_SYC_kernel_to_input_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
120 void apply_SYC_kernel_from_right_omp(Matrix& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
121 
122 // Float32 overloads
123 void apply_X_kernel_to_input(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
124 void apply_X_kernel_from_right(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
125 void apply_Y_kernel_to_input(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
126 void apply_Y_kernel_from_right(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
127 void apply_Z_kernel_to_input(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
128 void apply_Z_kernel_from_right(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
129 void apply_H_kernel_to_input(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
130 void apply_H_kernel_from_right(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
131 void apply_S_kernel_to_input(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
132 void apply_S_kernel_from_right(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
133 void apply_T_kernel_to_input(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
134 void apply_T_kernel_from_right(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
135 void apply_SWAP_kernel_to_input(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
136 void apply_SWAP_kernel_from_right(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
137 void apply_SYC_kernel_to_input(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
138 void apply_SYC_kernel_from_right(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
139 
140 void apply_X_kernel_to_input_tbb(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
141 void apply_X_kernel_from_right_tbb(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
142 void apply_Y_kernel_to_input_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
143 void apply_Y_kernel_from_right_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
144 void apply_Z_kernel_to_input_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
145 void apply_Z_kernel_from_right_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
146 void apply_H_kernel_to_input_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
147 void apply_H_kernel_from_right_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
148 void apply_S_kernel_to_input_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
149 void apply_S_kernel_from_right_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
150 void apply_T_kernel_to_input_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
151 void apply_T_kernel_from_right_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
152 void apply_SWAP_kernel_to_input_tbb(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
153 void apply_SWAP_kernel_from_right_tbb(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
154 void apply_SYC_kernel_to_input_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
155 void apply_SYC_kernel_from_right_tbb(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
156 
157 void apply_X_kernel_to_input_omp(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
158 void apply_X_kernel_from_right_omp(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
159 void apply_Y_kernel_to_input_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
160 void apply_Y_kernel_from_right_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
161 void apply_Z_kernel_to_input_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
162 void apply_Z_kernel_from_right_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
163 void apply_H_kernel_to_input_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
164 void apply_H_kernel_from_right_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
165 void apply_S_kernel_to_input_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
166 void apply_S_kernel_from_right_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
167 void apply_T_kernel_to_input_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
168 void apply_T_kernel_from_right_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
169 void apply_SWAP_kernel_to_input_omp(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
170 void apply_SWAP_kernel_from_right_omp(Matrix_float& input, const std::vector<int>& target_qbits, const std::vector<int>& control_qbits, const int& matrix_size);
171 void apply_SYC_kernel_to_input_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
172 void apply_SYC_kernel_from_right_omp(Matrix_float& input, const int& target_qbit, const int& control_qbit, const int& matrix_size);
173 
174 #endif // APPLY_DEDICATED_GATE_KERNEL_TO_INPUT_H
void apply_SWAP_kernel_to_input_tbb(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_Z_kernel_to_input(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Applies the Z gate kernel to the input matrix.
void apply_T_kernel_from_right(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_H_kernel_from_right(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_H_kernel_from_right_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_X_kernel_from_right(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_SWAP_kernel_from_right(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_H_kernel_to_input(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Applies the H (Hadamard) gate kernel to the input matrix.
void apply_Z_kernel_from_right_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_Z_kernel_from_right_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_X_kernel_to_input_tbb(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_S_kernel_to_input(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Applies the S gate kernel to the input matrix.
void apply_Y_kernel_from_right_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_Z_kernel_to_input_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_Y_kernel_from_right_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_Y_kernel_to_input_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_SWAP_kernel_to_input_omp(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_SYC_kernel_to_input_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_SWAP_kernel_to_input(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
Applies the SWAP gate kernel to the input matrix.
matrix_size
[load Umtx]
Definition: example.py:58
void apply_X_kernel_from_right_omp(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_H_kernel_to_input_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_SYC_kernel_to_input(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_Y_kernel_to_input(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Applies the Y gate kernel to the input matrix.
void apply_SWAP_kernel_from_right_tbb(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_S_kernel_from_right_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Header file of complex array storage array with automatic and thread safe reference counting...
void apply_Z_kernel_to_input_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_H_kernel_from_right_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_X_kernel_to_input(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
Applies the X gate kernel to the input matrix.
void apply_SYC_kernel_from_right(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_SYC_kernel_from_right_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_Z_kernel_from_right(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Double-precision complex matrix (float64).
Definition: matrix.h:38
void apply_S_kernel_to_input_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_X_kernel_to_input_omp(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_Y_kernel_to_input_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Single-precision complex matrix (float32).
Definition: matrix_float.h:41
void apply_T_kernel_from_right_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_T_kernel_to_input_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_SYC_kernel_from_right_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_S_kernel_from_right(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_S_kernel_to_input_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Header file for commonly used functions and wrappers to CBLAS functions.
void apply_X_kernel_from_right_tbb(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_Y_kernel_from_right(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_SWAP_kernel_from_right_omp(Matrix &input, const std::vector< int > &target_qbits, const std::vector< int > &control_qbits, const int &matrix_size)
void apply_T_kernel_to_input(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
Applies the T gate kernel to the input matrix.
void apply_T_kernel_from_right_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_H_kernel_to_input_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_S_kernel_from_right_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_SYC_kernel_to_input_tbb(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
void apply_T_kernel_to_input_omp(Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)