.. index:: pair: class; AbstractQuantumGates .. _doxid-class_abstract_quantum_gates: class AbstractQuantumGates ========================== .. toctree:: :hidden: Quantum Gates Abstract Class. .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class AbstractQuantumGates { public: // methods virtual :ref:`QError` :target:`DiagonalGate`( :ref:`Qnum`& vQubit, :ref:`QStat`& matrix, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`controlDiagonalGate`( :ref:`Qnum`& vQubit, :ref:`QStat`& matrix, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`Reset`(size_t qn) = 0; virtual :ref:`QError` :target:`Hadamard`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`Hadamard`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`X`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`X`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`P0`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`P0`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`P1`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`P1`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`Y`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`Y`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`Z`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`Z`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`T`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`T`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`S`( size_t qn, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`S`( size_t qn, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`U1_GATE`( size_t qn, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`RX_GATE`( size_t qn, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`RX_GATE`( size_t qn, double theta, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`RY_GATE`( size_t qn, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`RY_GATE`( size_t qn, double theta, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`RZ_GATE`( size_t qn, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`RZ_GATE`( size_t qn, double theta, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`CNOT`( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`CNOT`( size_t qn_0, size_t qn_1, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`CR`( size_t qn_0, size_t qn_1, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`CR`( size_t qn_0, size_t qn_1, :ref:`Qnum`& vControlBit, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`CZ`( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`CZ`( size_t qn_0, size_t qn_1, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`iSWAP`( size_t qn_0, size_t qn_1, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`iSWAP`( size_t qn_0, size_t qn_1, :ref:`Qnum`& vControlBit, double theta, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`iSWAP`( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`iSWAP`( size_t qn_0, size_t qn_1, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`SqiSWAP`( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ) = 0; virtual :ref:`QError` :target:`SqiSWAP`( size_t qn_0, size_t qn_1, :ref:`Qnum`& vControlBit, bool isConjugate, double error_rate ) = 0; };