Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
CROT.h
Go to the documentation of this file.
1 /*
2 Created on Fri Jun 26 14:13:26 2020
3 Copyright 2020 Peter Rakyta, Ph.D.
4 
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
8 
9  http://www.apache.org/licenses/LICENSE-2.0
10 
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16 
17 @author: Peter Rakyta, Ph.D.
18 */
23 #ifndef CROT_H
24 #define CROT_H
25 
26 #include "RY.h"
27 #include "CNOT.h"
28 #include "matrix.h"
29 #include "matrix_real.h"
30 #define _USE_MATH_DEFINES
31 #include <math.h>
32 
33 
34 
38 class CROT: public Gate {
39 
40 protected:
41 public:
42 
46 CROT();
47 
48 CROT(int qbit_num_in, int target_qbit_in, int control_qbit_in);
49 
50 ~CROT() override;
51 
52 virtual Matrix gate_kernel(const Matrix_real& precomputed_sincos) override;
53 virtual Matrix_float gate_kernel(const Matrix_real_float& precomputed_sincos) override;
54 virtual Matrix inverse_gate_kernel(const Matrix_real& precomputed_sincos) override;
55 virtual Matrix_float inverse_gate_kernel(const Matrix_real_float& precomputed_sincos) override;
56 virtual Matrix derivative_kernel(const Matrix_real& precomputed_sincos, int param_idx) override;
57 virtual Matrix_float derivative_kernel(const Matrix_real_float& precomputed_sincos, int param_idx) override;
58 virtual Matrix derivative_aux_kernel(const Matrix_real& precomputed_sincos, int param_idx) override;
59 virtual Matrix_float derivative_aux_kernel(const Matrix_real_float& precomputed_sincos, int param_idx) override;
60 virtual void gate_kernel_to(const Matrix_real& precomputed_sincos, Matrix& output) override;
61 virtual void gate_kernel_to(const Matrix_real_float& precomputed_sincos, Matrix_float& output) override;
62 virtual void inverse_gate_kernel_to(const Matrix_real& precomputed_sincos, Matrix& output) override;
63 virtual void inverse_gate_kernel_to(const Matrix_real_float& precomputed_sincos, Matrix_float& output) override;
64 virtual void derivative_kernel_to(const Matrix_real& precomputed_sincos, int param_idx, Matrix& output) override;
65 virtual void derivative_kernel_to(const Matrix_real_float& precomputed_sincos, int param_idx, Matrix_float& output) override;
66 virtual void derivative_aux_kernel_to(const Matrix_real& precomputed_sincos, int param_idx, Matrix& output) override;
67 virtual void derivative_aux_kernel_to(const Matrix_real_float& precomputed_sincos, int param_idx, Matrix_float& output) override;
68 
69 virtual CROT* clone() override;
70 
71 
72 
73 std::vector<double> get_parameter_multipliers() const override;
74 
75 };
76 
77 
78 #endif //CROT
virtual CROT * clone() override
Call to create a clone of the present class.
Definition: CROT.cpp:266
Class to store single-precision real arrays and properties.
~CROT() override
Destructor of the class.
Definition: CROT.cpp:114
virtual Matrix derivative_kernel(const Matrix_real &precomputed_sincos, int param_idx) override
Definition: CROT.cpp:147
std::vector< double > get_parameter_multipliers() const override
Returns the per-parameter multipliers relative to 2π used by extract_parameters. ...
Definition: CROT.cpp:279
virtual Matrix gate_kernel(const Matrix_real &precomputed_sincos) override
Compute the gate kernel matrix from precomputed trigonometric values.
Definition: CROT.cpp:119
A class representing a CROT gate.
Definition: CROT.h:38
Header file for a class representing a CNOT operation.
virtual void derivative_aux_kernel_to(const Matrix_real &precomputed_sincos, int param_idx, Matrix &output) override
Definition: CROT.cpp:233
Header file of complex array storage array with automatic and thread safe reference counting...
Double-precision complex matrix (float64).
Definition: matrix.h:38
virtual void derivative_kernel_to(const Matrix_real &precomputed_sincos, int param_idx, Matrix &output) override
Definition: CROT.cpp:203
virtual void inverse_gate_kernel_to(const Matrix_real &precomputed_sincos, Matrix &output) override
Definition: CROT.cpp:189
Single-precision complex matrix (float32).
Definition: matrix_float.h:41
Base class for the representation of general gate operations.
Definition: Gate.h:86
virtual void gate_kernel_to(const Matrix_real &precomputed_sincos, Matrix &output) override
Definition: CROT.cpp:175
CROT()
Nullary constructor of the class.
Definition: CROT.cpp:48
virtual Matrix derivative_aux_kernel(const Matrix_real &precomputed_sincos, int param_idx) override
Definition: CROT.cpp:161
Class to store data of complex arrays and its properties.
Definition: matrix_real.h:41
virtual Matrix inverse_gate_kernel(const Matrix_real &precomputed_sincos) override
Definition: CROT.cpp:133