63 RY::RY(
int qbit_num_in,
int target_qbit_in) {
76 std::stringstream sstream;
77 sstream <<
"The index of the target qubit is larger than the number of qubits" << std::endl;
79 throw "The index of the target qubit is larger than the number of qubits";
114 std::string err(
"RY::apply_to: Wrong input size in RY gate apply.");
121 ThetaOver2 = parameters[0];
144 std::stringstream sstream;
145 sstream <<
"Wrong matrix size in U3 apply_from_right" << std::endl;
152 ThetaOver2 = parameters[0];
177 std::stringstream sstream;
178 sstream <<
"Wrong matrix size in RY apply_derivate_to" << std::endl;
183 std::vector<Matrix> ret;
187 parameters_tmp[0] = parameters_mtx[0] + M_PI/2;
189 apply_to(parameters_tmp, res_mtx, parallel);
190 ret.push_back(res_mtx);
241 std::string err(
"RY::extract_parameters: Cant extract parameters, since the dinput arary has not enough elements.");
249 return extracted_parameters;
std::vector< Gate * > parents
list of parent gates to be applied in the circuit prior to this current gate
virtual void apply_from_right(Matrix_real ¶meters, Matrix &input)
Call to apply the gate on the input array/matrix by input*U3.
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 ...
void print(const std::stringstream &sstream, int verbose_level=1) const
Call to print output messages in the function of the verbosity level.
int control_qbit
The index of the qubit which acts as a control qubit (control_qbit >= 0) in controlled operations...
void set_children(std::vector< Gate *> &children_)
Call to set the children of the current gate.
int target_qbit
The index of the qubit on which the operation acts (target_qbit >= 0)
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) ...
virtual void apply_to(Matrix_real ¶meters, Matrix &input, int parallel)
Call to retrieve the gate matrix.
int matrix_size
The size N of the NxN matrix associated with the operations.
RY()
Nullary constructor of the class.
gate_type type
The type of the operation (see enumeration gate_type)
int rows
The number of rows.
int cols
The number of columns.
void set_parameter_start_idx(int start_idx)
Call to set the starting index of the parameters in the parameter array corresponding to the circuit ...
int get_parameter_start_idx()
Call to get the starting index of the parameters in the parameter array corresponding to the circuit ...
virtual Matrix calc_one_qubit_u3()
Calculate the matrix of the constans gates.
int Power_of_2(int n)
Calculates the n-th power of 2.
Class to store data of complex arrays and its properties.
A class representing a U3 gate.
int size() const
Call to get the number of the allocated elements.
int get_parameter_num()
Call to get the number of free parameters.
std::string name
A string labeling the gate operation.
std::vector< Gate * > children
list of child gates to be applied after this current gate
void apply_kernel_to(Matrix &u3_1qbit, Matrix &input, bool deriv=false, int parallel=0)
Call to apply the gate kernel on the input state or unitary with optional AVX support.
Header file for a class representing a rotation gate around the Y axis.
int parameter_num
the number of free parameters of the operation
void set_parents(std::vector< Gate *> &parents_)
Call to set the parents of the current gate.
Matrix copy()
Call to create a copy of the matrix.
virtual std::vector< Matrix > apply_derivate_to(Matrix_real ¶meters, Matrix &input, int parallel)
Call to evaluate the derivate of the circuit on an inout with respect to all of the free parameters...
int qbit_num
number of qubits spanning the matrix of the operation
virtual ~RY()
Destructor of the class.
virtual Matrix_real extract_parameters(Matrix_real ¶meters)
Call to extract parameters from the parameter array corresponding to the circuit, in which the gate i...
Class to store data of complex arrays and its properties.
virtual RY * clone()
Call to create a clone of the present class.