QNLP  v1.0
QNLP::ISimulator Class Referenceabstract

#include <ISimulator.hpp>

Collaboration diagram for QNLP::ISimulator:
Collaboration graph

Public Member Functions

virtual void applyGateX (std::size_t qubit_idx)=0
 Apply Pauli-X gate to qubit at qubit_idx. More...
 
virtual void applyGateY (std::size_t qubit_idx)=0
 Apply Pauli-Y gate to qubit at qubit_idx. More...
 
virtual void applyGateZ (std::size_t qubit_idx)=0
 Apply Pauli-Z gate to qubit at qubit_idx. More...
 
virtual void applyGateI (std::size_t qubit_idx)=0
 Apply Identity to qubit at qubit_idx. More...
 
virtual void applyGateH (std::size_t qubit_idx)=0
 Apply Hadamard gate to qubit at qubit_idx. More...
 
virtual void applyGateSqrtX (std::size_t qubit_idx)=0
 Apply \sqrt{Pauli-X} gate to qubit at qubit_idx. More...
 
virtual void applyGateRotX (std::size_t qubit_idx, double angle_rad)=0
 Arbitrary rotation around X axis by angle 'angle_rad' in radians. More...
 
virtual void applyGateRotY (std::size_t qubit_idx, double angle_rad)=0
 Arbitrary rotation around Y axis by angle 'angle_rad' in radians. More...
 
virtual void applyGateRotZ (std::size_t qubit_idx, double angle_rad)=0
 Arbitrary rotation around Z axis by angle 'angle_rad' in radians. More...
 
virtual void applyGateCX (std::size_t control, std::size_t target)=0
 Apply Controlled Pauli-X (CNOT) on target qubit. More...
 
virtual void applyGateCY (std::size_t control, std::size_t target)=0
 Apply Controlled Pauli-Y on target qubit. More...
 
virtual void applyGateCZ (std::size_t control, std::size_t target)=0
 Apply Controlled Pauli-Z on target qubit. More...
 
virtual void applyGateCH (std::size_t control, std::size_t target)=0
 Apply Controlled Hadamard on target qubit. More...
 
virtual void applyGatePhaseShift (double angle, std::size_t qubit_idx)=0
 Apply Phase Shift on specified qubit by angle in radians. More...
 
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. More...
 
virtual std::size_t getNumQubits ()=0
 Get the Number of qubits in the simulator. More...
 

Detailed Description

Definition at line 22 of file ISimulator.hpp.

Member Function Documentation

◆ applyGateCH()

virtual void QNLP::ISimulator::applyGateCH ( std::size_t  control,
std::size_t  target 
)
pure virtual

Apply Controlled Hadamard on target qubit.

Parameters
controlQubit index acting as control
targetQubit index acting as target

◆ applyGateCPhaseShift()

virtual void QNLP::ISimulator::applyGateCPhaseShift ( double  angle,
std::size_t  control,
std::size_t  target 
)
pure virtual

Apply Controlled Phase Shift on specified qubit by angle in radians.

Parameters
angleAngle of phase shift in rads
controlQubit index acting as control
targetQubit index acting as target

◆ applyGateCX()

virtual void QNLP::ISimulator::applyGateCX ( std::size_t  control,
std::size_t  target 
)
pure virtual

Apply Controlled Pauli-X (CNOT) on target qubit.

Parameters
controlQubit index acting as control
targetQubit index acting as target

◆ applyGateCY()

virtual void QNLP::ISimulator::applyGateCY ( std::size_t  control,
std::size_t  target 
)
pure virtual

Apply Controlled Pauli-Y on target qubit.

Parameters
controlQubit index acting as control
targetQubit index acting as target

◆ applyGateCZ()

virtual void QNLP::ISimulator::applyGateCZ ( std::size_t  control,
std::size_t  target 
)
pure virtual

Apply Controlled Pauli-Z on target qubit.

Parameters
controlQubit index acting as control
targetQubit index acting as target

◆ applyGateH()

virtual void QNLP::ISimulator::applyGateH ( std::size_t  qubit_idx)
pure virtual

Apply Hadamard gate to qubit at qubit_idx.

Parameters
qubit_idxIndex of qubit to apply gate upon

◆ applyGateI()

virtual void QNLP::ISimulator::applyGateI ( std::size_t  qubit_idx)
pure virtual

Apply Identity to qubit at qubit_idx.

Parameters
qubit_idxIndex of qubit to apply gate upon

◆ applyGatePhaseShift()

virtual void QNLP::ISimulator::applyGatePhaseShift ( double  angle,
std::size_t  qubit_idx 
)
pure virtual

Apply Phase Shift on specified qubit by angle in radians.

Parameters
angleAngle of phase shift in rads
qubit_idxIndex of target qubit to perform phase shift upon

◆ applyGateRotX()

virtual void QNLP::ISimulator::applyGateRotX ( std::size_t  qubit_idx,
double  angle_rad 
)
pure virtual

Arbitrary rotation around X axis by angle 'angle_rad' in radians.

Parameters
qubit_idxIndex of qubit to apply rotation upon
angle_radAngle of rotation in radians

◆ applyGateRotY()

virtual void QNLP::ISimulator::applyGateRotY ( std::size_t  qubit_idx,
double  angle_rad 
)
pure virtual

Arbitrary rotation around Y axis by angle 'angle_rad' in radians.

Parameters
qubit_idxIndex of qubit to apply rotation upon
angle_radAngle of rotation in radians

◆ applyGateRotZ()

virtual void QNLP::ISimulator::applyGateRotZ ( std::size_t  qubit_idx,
double  angle_rad 
)
pure virtual

Arbitrary rotation around Z axis by angle 'angle_rad' in radians.

Parameters
qubit_idxIndex of qubit to apply rotation upon
angle_radAngle of rotation in radians

◆ applyGateSqrtX()

virtual void QNLP::ISimulator::applyGateSqrtX ( std::size_t  qubit_idx)
pure virtual

Apply \sqrt{Pauli-X} gate to qubit at qubit_idx.

Parameters
qubit_idxIndex of qubit to apply gate upon

◆ applyGateX()

virtual void QNLP::ISimulator::applyGateX ( std::size_t  qubit_idx)
pure virtual

Apply Pauli-X gate to qubit at qubit_idx.

Parameters
qubit_idxIndex of qubit to apply gate upon

◆ applyGateY()

virtual void QNLP::ISimulator::applyGateY ( std::size_t  qubit_idx)
pure virtual

Apply Pauli-Y gate to qubit at qubit_idx.

Parameters
qubit_idxIndex of qubit to apply gate upon

◆ applyGateZ()

virtual void QNLP::ISimulator::applyGateZ ( std::size_t  qubit_idx)
pure virtual

Apply Pauli-Z gate to qubit at qubit_idx.

Parameters
qubit_idxIndex of qubit to apply gate upon

◆ getNumQubits()

virtual std::size_t QNLP::ISimulator::getNumQubits ( )
pure virtual

Get the Number of qubits in the simulator.

Returns
std::size_t Returns the length of (number of qubits in) the quantum register.

Referenced by TEST_CASE().

Here is the caller graph for this function:

The documentation for this class was generated from the following file: