12 #ifndef QNLP_SIMULATOR_INTERFACE_H 13 #define QNLP_SIMULATOR_INTERFACE_H 33 virtual void applyGateX(std::size_t qubit_idx) = 0;
40 virtual void applyGateY(std::size_t qubit_idx) = 0;
47 virtual void applyGateZ(std::size_t qubit_idx) = 0;
54 virtual void applyGateI(std::size_t qubit_idx) = 0;
61 virtual void applyGateH(std::size_t qubit_idx) = 0;
76 virtual void applyGateRotX(std::size_t qubit_idx,
double angle_rad) = 0;
84 virtual void applyGateRotY(std::size_t qubit_idx,
double angle_rad) = 0;
92 virtual void applyGateRotZ(std::size_t qubit_idx,
double angle_rad) = 0;
virtual void applyGateH(std::size_t qubit_idx)=0
Apply Hadamard gate to qubit at qubit_idx.
virtual void applyGateRotZ(std::size_t qubit_idx, double angle_rad)=0
Arbitrary rotation around Z axis by angle 'angle_rad' in radians.
virtual void applyGateCY(std::size_t control, std::size_t target)=0
Apply Controlled Pauli-Y on target qubit.
virtual void applyGateRotX(std::size_t qubit_idx, double angle_rad)=0
Arbitrary rotation around X axis by angle 'angle_rad' in radians.
virtual void applyGateX(std::size_t qubit_idx)=0
Apply Pauli-X gate to qubit at qubit_idx.
virtual void applyGateRotY(std::size_t qubit_idx, double angle_rad)=0
Arbitrary rotation around Y axis by angle 'angle_rad' in radians.
virtual void applyGatePhaseShift(double angle, std::size_t qubit_idx)=0
Apply Phase Shift on specified qubit by angle in radians.
virtual void applyGateCX(std::size_t control, std::size_t target)=0
Apply Controlled Pauli-X (CNOT) on target qubit.
virtual void applyGateZ(std::size_t qubit_idx)=0
Apply Pauli-Z gate to qubit at qubit_idx.
virtual void applyGateI(std::size_t qubit_idx)=0
Apply Identity to qubit at qubit_idx.
virtual void applyGateCZ(std::size_t control, std::size_t target)=0
Apply Controlled Pauli-Z on target qubit.
virtual void applyGateY(std::size_t qubit_idx)=0
Apply Pauli-Y gate to qubit at qubit_idx.
virtual void applyGateCH(std::size_t control, std::size_t target)=0
Apply Controlled Hadamard on target qubit.
virtual void applyGateSqrtX(std::size_t qubit_idx)=0
Apply \sqrt{Pauli-X} gate to qubit at qubit_idx.
virtual std::size_t getNumQubits()=0
Get the Number of qubits in the simulator.
virtual void applyGateCPhaseShift(double angle, std::size_t control, std::size_t target)=0
Apply Controlled Phase Shift on specified qubit by angle in radians.