Inherited Members
public:
// fields
vQParam qubit2stat;
vQParam init_qubit2stat;
// methods
virtual bool qubitMeasure(size_t qn) = 0;
virtual QError pMeasure(Qnum& qnum, prob_vec& mResult) = 0;
virtual QError initState(size_t head_rank, size_t rank_size, size_t qubit_num) = 0;
virtual QError initState(size_t qubit_num, const QStat& state = {}) = 0;
virtual QError unitarySingleQubitGate(size_t qn, QStat& matrix, bool isConjugate, GateType) = 0;
virtual QError controlunitarySingleQubitGate(size_t qn, Qnum& qnum, QStat& matrix, bool isConjugate, GateType) = 0;
virtual QError unitaryDoubleQubitGate(size_t qn_0, size_t qn_1, QStat& matrix, bool isConjugate, GateType) = 0;
virtual QError controlunitaryDoubleQubitGate(size_t qn_0, size_t qn_1, Qnum& qnum, QStat& matrix, bool isConjugate, GateType) = 0;
virtual QStat getQState() = 0;
virtual void set_random_engine(RandomEngine* rng);
virtual double get_random_double();
virtual QError Reset(size_t qn) = 0;
QGateParam& findgroup(size_t qn);
bool TensorProduct(QGateParam& qgroup0, QGateParam& qgroup1);
template <
const qcomplex_t& U00,
const qcomplex_t& U01,
const qcomplex_t& U10,
const qcomplex_t& U11
>
QError single_gate(
size_t qn,
bool isConjugate,
double error_rate
);
QError U1_GATE(size_t qn, double theta, bool isConjugate, double error_rate);
template <const double& Nx, const double& Ny, const double& Nz>
QError single_angle_gate(
size_t qn,
double theta,
bool isConjugate,
double error_rate
);
template <const double& Nx, const double& Ny, const double& Nz>
QError control_single_angle_gate(
size_t qn,
double theta,
Qnum vControlBit,
bool isConjugate,
double error_rate
);
template <
const qcomplex_t& U00,
const qcomplex_t& U01,
const qcomplex_t& U10,
const qcomplex_t& U11
>
QError control_single_gate(
size_t qn,
Qnum vControlBit,
bool isConjugate,
double error_rate
);
CONST_GATE(P0);
CONST_GATE(P1);
CONST_GATE(X);
CONST_GATE(Y);
CONST_GATE(Z);
CONST_GATE(Hadamard);
CONST_GATE(T);
CONST_GATE(S);
SINGLE_ANGLE_GATE(RX_GATE);
SINGLE_ANGLE_GATE(RY_GATE);
SINGLE_ANGLE_GATE(RZ_GATE);
CONTROL_SINGLE_ANGLE_GATE(RX_GATE);
CONTROL_SINGLE_ANGLE_GATE(RY_GATE);
CONTROL_SINGLE_ANGLE_GATE(RZ_GATE);
CONTROL_CONST_GATE(Hadamard);
CONTROL_CONST_GATE(X);
CONTROL_CONST_GATE(Y);
CONTROL_CONST_GATE(Z);
CONTROL_CONST_GATE(T);
CONTROL_CONST_GATE(S);
CONTROL_CONST_GATE(P0);
CONTROL_CONST_GATE(P1);
QError CNOT(size_t qn_0, size_t qn_1, bool isConjugate, double error_rate);
QError CNOT(size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate);
QError iSWAP(size_t qn_0, size_t qn_1, double theta, bool isConjugate, double);
QError iSWAP(
size_t qn_0,
size_t qn_1,
Qnum& vControlBit,
double theta,
bool isConjugate,
double
);
QError iSWAP(size_t qn_0, size_t qn_1, bool isConjugate, double error_rate);
QError iSWAP(size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate);
QError SqiSWAP(size_t qn_0, size_t qn_1, bool isConjugate, double error_rate);
QError SqiSWAP(size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate);
QError CR(size_t qn_0, size_t qn_1, double theta, bool isConjugate, double error_rate);
QError CR(
size_t qn_0,
size_t qn_1,
Qnum& vControlBit,
double theta,
bool isConjugate,
double error_rate
);
QError CZ(size_t qn_0, size_t qn_1, bool isConjugate, double error_rate);
QError CZ(size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate);
virtual QError unitarySingleQubitGate(size_t qn, QStat& matrix, bool isConjugate, GateType);
virtual QError controlunitarySingleQubitGate(size_t qn, Qnum& qnum, QStat& matrix, bool isConjugate, GateType);
virtual QError unitaryDoubleQubitGate(size_t qn_0, size_t qn_1, QStat& matrix, bool isConjugate, GateType);
virtual QError controlunitaryDoubleQubitGate(size_t qn_0, size_t qn_1, Qnum& qnum, QStat& matrix, bool isConjugate, GateType);
QError DiagonalGate(Qnum& vQubit, QStat& matrix, bool isConjugate, double error_rate);
QError controlDiagonalGate(Qnum& vQubit, QStat& matrix, Qnum& vControlBit, bool isConjugate, double error_rate);
virtual QStat getQState();
virtual QError Reset(size_t qn);
virtual bool qubitMeasure(size_t qn);
QError pMeasure(Qnum& qnum, prob_tuple& mResult, int select_max = -1);
virtual QError pMeasure(Qnum& qnum, prob_vec& mResult);
virtual QError initState(size_t head_rank, size_t rank_size, size_t qubit_num);
virtual QError initState(size_t qubit_num, const QStat& state = {});
QError P00(size_t qn_0, size_t qn_1, bool isConjugate, double error_rate);
QError SWAP(size_t qn_0, size_t qn_1, bool isConjugate, double error_rate);
QError P11(size_t qn_0, size_t qn_1, bool isConjugate, double error_rate);