class AbstractQuantumGates

Quantum Gates Abstract Class.

#include <QPUImpl.h>

class AbstractQuantumGates
{
public:
    // methods

    virtual QError DiagonalGate(
        Qnum& vQubit,
        QStat& matrix,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError controlDiagonalGate(
        Qnum& vQubit,
        QStat& matrix,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError Reset(size_t qn) = 0;

    virtual QError Hadamard(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError Hadamard(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError X(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError X(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError P0(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError P0(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError P1(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError P1(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError Y(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError Y(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError Z(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError Z(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError T(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError T(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError S(
        size_t qn,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError S(
        size_t qn,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError U1_GATE(
        size_t qn,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError RX_GATE(
        size_t qn,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError RX_GATE(
        size_t qn,
        double theta,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError RY_GATE(
        size_t qn,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError RY_GATE(
        size_t qn,
        double theta,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError RZ_GATE(
        size_t qn,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError RZ_GATE(
        size_t qn,
        double theta,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError CNOT(
        size_t qn_0,
        size_t qn_1,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError CNOT(
        size_t qn_0,
        size_t qn_1,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError CR(
        size_t qn_0,
        size_t qn_1,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError CR(
        size_t qn_0,
        size_t qn_1,
        Qnum& vControlBit,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError CZ(
        size_t qn_0,
        size_t qn_1,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError CZ(
        size_t qn_0,
        size_t qn_1,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError iSWAP(
        size_t qn_0,
        size_t qn_1,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError iSWAP(
        size_t qn_0,
        size_t qn_1,
        Qnum& vControlBit,
        double theta,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError iSWAP(
        size_t qn_0,
        size_t qn_1,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError iSWAP(
        size_t qn_0,
        size_t qn_1,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError SqiSWAP(
        size_t qn_0,
        size_t qn_1,
        bool isConjugate,
        double error_rate
        ) = 0;

    virtual QError SqiSWAP(
        size_t qn_0,
        size_t qn_1,
        Qnum& vControlBit,
        bool isConjugate,
        double error_rate
        ) = 0;
};