class CPUImplQPUSingleThread¶
Overview¶
#include <CPUImplQPUSingleThread.h> class CPUImplQPUSingleThread: public QPUImpl { public: // fields vQParam qubit2stat; vQParam init_qubit2stat; // construction CPUImplQPUSingleThread(); CPUImplQPUSingleThread(size_t); // methods QGateParam& findgroup(size_t qn); bool TensorProduct( QGateParam& qgroup0, QGateParam& qgroup1 ); 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); virtual QError P0( size_t qn, bool isConjugate, double error_rate ); virtual QError P0( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError P1( size_t qn, bool isConjugate, double error_rate ); virtual QError P1( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError Hadamard( size_t qn, bool isConjugate, double error_rate ); virtual QError Hadamard( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError X( size_t qn, bool isConjugate, double error_rate ); virtual QError X( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError Y( size_t qn, bool isConjugate, double error_rate ); virtual QError Y( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError Z( size_t qn, bool isConjugate, double error_rate ); virtual QError Z( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError T( size_t qn, bool isConjugate, double error_rate ); virtual QError T( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError S( size_t qn, bool isConjugate, double error_rate ); virtual QError S( size_t qn, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError U1_GATE( size_t qn, double theta, bool isConjugate, double error_rate ); virtual QError RX_GATE( size_t qn, double theta, bool isConjugate, double error_rate ); virtual QError RX_GATE( size_t qn, double theta, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError RY_GATE( size_t qn, double theta, bool isConjugate, double error_rate ); virtual QError RY_GATE( size_t qn, double theta, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError RZ_GATE( size_t qn, double theta, bool isConjugate, double error_rate ); virtual QError RZ_GATE( size_t qn, double theta, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError CNOT( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ); virtual QError CNOT( size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError CR( size_t qn_0, size_t qn_1, double theta, bool isConjugate, double error_rate ); virtual QError CR( size_t qn_0, size_t qn_1, Qnum& vControlBit, double theta, bool isConjugate, double error_rate ); virtual QError CZ( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ); virtual QError CZ( size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError iSWAP( size_t qn_0, size_t qn_1, double theta, bool isConjugate, double error_rate ); virtual QError iSWAP( size_t qn_0, size_t qn_1, Qnum& vControlBit, double theta, bool isConjugate, double error_rate ); virtual QError iSWAP( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ); virtual QError iSWAP( size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError SqiSWAP( size_t qn_0, size_t qn_1, bool isConjugate, double error_rate ); virtual QError SqiSWAP( size_t qn_0, size_t qn_1, Qnum& vControlBit, bool isConjugate, double error_rate ); virtual QError DiagonalGate( Qnum& vQubit, QStat& matrix, bool isConjugate, double error_rate ); virtual 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 = {} ); }; // direct descendants class CPUImplQPUSingleThreadWithOracle;
Inherited Members¶
public: // 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;
Detailed Documentation¶
Methods¶
virtual QError unitarySingleQubitGate(size_t qn, QStat& matrix, bool isConjugate, GateType)
unitary single qubit gate
Parameters:
size_t |
qubit address |
QStat& |
matrix |
bool |
state of conjugate |
GateType |
gate type |
Returns:
QError
virtual QError controlunitarySingleQubitGate( size_t qn, Qnum& qnum, QStat& matrix, bool isConjugate, GateType )
controlunitary single qubit gate
Parameters:
size_t |
qubit address |
Qnum& |
control qubit addresses |
QStat |
& matrix |
bool |
state of conjugate |
GateType |
gate type |
Returns:
QError
virtual QError unitaryDoubleQubitGate( size_t qn_0, size_t qn_1, QStat& matrix, bool isConjugate, GateType )
unitary double qubit gate
Parameters:
size_t |
first qubit address |
size_t |
second qubit address |
QStat& |
matrix |
bool |
state of conjugate |
GateType |
gate type |
Returns:
QError
virtual QError controlunitaryDoubleQubitGate( size_t qn_0, size_t qn_1, Qnum& qnum, QStat& matrix, bool isConjugate, GateType )
controlunitary double qubit gate
Parameters:
size_t |
first qubit address |
size_t |
second qubit address |
Qnum& |
control qubit addresses |
QStat& |
quantum states |
bool |
state of conjugate |
GateType |
gate type |
Returns:
QError
virtual QStat getQState()
get quantum states
virtual QError Reset(size_t qn)
reset qubit
Parameters:
size_t |
qubit address |