class AbstractDistributedFullAmplitudeEngine

Distributed full amplitude engine abstract class.

#include <AbstractFullAmplitudeEngine.h>

class AbstractDistributedFullAmplitudeEngine
{
public:
    // methods

    virtual void initState(
        int head_rank,
        int rank_size,
        int qubit_num
        ) = 0;

    virtual QStat getQState() = 0;

    virtual void singleQubitOperation(
        const int& iQn,
        QStat U,
        bool isConjugate
        ) = 0;

    virtual void controlsingleQubitOperation(
        const int& iQn,
        Qnum& qnum,
        QStat U,
        bool isConjugate
        ) = 0;

    virtual void doubleQubitOperation(
        const int& iQn1,
        const int& iQn2,
        QStat U,
        bool isConjugate
        ) = 0;

    virtual void controldoubleQubitOperation(
        const int& iQn1,
        const int& iQn2,
        Qnum& qnum,
        QStat U,
        bool isConjugate
        ) = 0;

    virtual int measureQubitOperation(const int& qn) = 0;

    virtual void PMeasureQubitOperation(
        Qnum& qnum,
        prob_vec& mResult
        ) = 0;

    virtual void reset_qubit_operation(const int& qn) = 0;
};