class QPanda::NoiseQVM¶
Overview¶
#include <OriginQuantumMachine.h> class NoiseQVM: public QPanda::QVM { public: // methods virtual void init(); void init(rapidjson::Document&); virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, rapidjson::Document&); virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, int); virtual std::map<std::string, size_t> runWithConfiguration( QProg& prog, std::vector<int>&, int ); virtual std::map<std::string, bool> directlyRun(QProg& qProg); virtual void run(QProg& prog); void set_noise_model( const NOISE_MODEL& model, const GateType& type, double prob ); void set_noise_model( const NOISE_MODEL& model, const GateType& type, double prob, const QVec& qubits ); void set_noise_model( const NOISE_MODEL& model, const GateType& type, double prob, const std::vector<QVec>& qubits ); void set_noise_model( const NOISE_MODEL& model, const GateType& type, double T1, double T2, double t_gate ); void set_noise_model( const NOISE_MODEL& model, const GateType& type, double T1, double T2, double t_gate, const QVec& qubits ); void set_noise_model( const NOISE_MODEL& model, const GateType& type, double T1, double T2, double t_gate, const std::vector<QVec>& qubits ); void set_measure_error( const NOISE_MODEL& model, double prob, const QVec& qubits = {} ); void set_measure_error( const NOISE_MODEL& model, double T1, double T2, double t_gate, const QVec& qubits = {} ); void set_mixed_unitary_error( const GateType& type, const std::vector<QStat>& unitary_matrices, const std::vector<double>& probs ); void set_mixed_unitary_error( const GateType& type, const std::vector<QStat>& unitary_matrices, const std::vector<double>& probs, const QVec& qubits ); void set_mixed_unitary_error( const GateType& type, const std::vector<QStat>& unitary_matrices, const std::vector<double>& probs, const std::vector<QVec>& qubits ); void set_reset_error( double p0, double p1, const QVec& qubits = {} ); void set_readout_error( const std::vector<std::vector<double>>& probs_list, const QVec& qubits = {} ); void set_rotation_error(double error); };
Inherited Members¶
public: // methods virtual Qubit* allocateQubitThroughPhyAddress(size_t) = 0; virtual Qubit* allocateQubitThroughVirAddress(size_t) = 0; virtual void init() = 0; virtual QMachineStatus* getStatus() const = 0; virtual std::map<std::string, bool> directlyRun(QProg& qProg) = 0; virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, rapidjson::Document&) = 0; virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, int) = 0; virtual std::map<GateType, size_t> getGateTimeMap() const = 0; virtual void finalize() = 0; virtual QStat getQState() const = 0; virtual size_t getVirtualQubitAddress(Qubit*) const = 0; virtual bool swapQubitPhysicalAddress(Qubit*, Qubit*) = 0; virtual void setConfig(const Configuration&) = 0; virtual Qubit* allocateQubit() = 0; virtual QVec allocateQubits(size_t) = 0; virtual ClassicalCondition allocateCBit() = 0; virtual ClassicalCondition allocateCBit(size_t) = 0; virtual std::vector<ClassicalCondition> allocateCBits(size_t) = 0; virtual void Free_Qubit(Qubit*) = 0; virtual void Free_Qubits(QVec&) = 0; virtual void Free_CBit(ClassicalCondition&) = 0; virtual void Free_CBits(std::vector<ClassicalCondition>&) = 0; virtual size_t getAllocateQubit() = 0; virtual size_t getAllocateCMem() = 0; virtual void setConfigure(const Configuration&) = 0; virtual Qubit* qAlloc() = 0; virtual QVec qAllocMany(size_t qubit_count) = 0; virtual ClassicalCondition cAlloc() = 0; virtual ClassicalCondition cAlloc(size_t) = 0; virtual std::vector<ClassicalCondition> cAllocMany(size_t) = 0; virtual void qFree(Qubit*) = 0; virtual void qFreeAll(QVec&) = 0; virtual void cFree(ClassicalCondition&) = 0; virtual void cFreeAll(std::vector<ClassicalCondition>&) = 0; virtual size_t getAllocateQubitNum() = 0; virtual size_t getAllocateCMemNum() = 0; virtual void initState(const QStat& state = {}, const QVec& qlist = {}) = 0; virtual size_t get_allocate_qubits(QVec&) = 0; virtual size_t get_allocate_cbits(std::vector<ClassicalCondition>&) = 0; virtual double get_expectation(QProg, const QHamiltonian&, const QVec&) = 0; virtual double get_expectation(QProg, const QHamiltonian&, const QVec&, int) = 0; virtual void initState(const QStat& state = {}, const QVec& qlist = {}); virtual Qubit* allocateQubitThroughPhyAddress(size_t); virtual Qubit* allocateQubitThroughVirAddress(size_t); virtual QMachineStatus* getStatus() const; virtual QResult* getResult(); virtual std::map<std::string, bool> getResultMap(); virtual void finalize(); virtual std::map<std::string, bool> directlyRun(QProg& qProg); virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, rapidjson::Document&); virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<ClassicalCondition>&, int); virtual std::map<std::string, size_t> runWithConfiguration(QProg&, std::vector<int>&, int); virtual std::map<GateType, size_t> getGateTimeMap() const; virtual QStat getQState() const; virtual size_t getVirtualQubitAddress(Qubit*) const; virtual bool swapQubitPhysicalAddress(Qubit*, Qubit*); virtual void set_random_engine(RandomEngine* rng); virtual void setConfig(const Configuration& config); virtual Qubit* allocateQubit(); virtual QVec allocateQubits(size_t); virtual ClassicalCondition allocateCBit(); virtual std::vector<ClassicalCondition> allocateCBits(size_t); virtual ClassicalCondition allocateCBit(size_t); virtual size_t getAllocateQubit(); virtual size_t getAllocateCMem(); virtual void Free_Qubit(Qubit*); virtual void Free_Qubits(QVec&); virtual void Free_CBit(ClassicalCondition&); virtual void Free_CBits(std::vector<ClassicalCondition>&); virtual void setConfigure(const Configuration&); virtual Qubit* qAlloc(); virtual QVec qAllocMany(size_t qubit_count); virtual ClassicalCondition cAlloc(); virtual ClassicalCondition cAlloc(size_t); virtual std::vector<ClassicalCondition> cAllocMany(size_t); virtual void qFree(Qubit*); virtual void qFreeAll(QVec&); virtual void cFree(ClassicalCondition&); virtual void cFreeAll(std::vector<ClassicalCondition>&); virtual size_t getAllocateQubitNum(); virtual size_t getAllocateCMemNum(); virtual size_t get_allocate_qubits(QVec&); virtual size_t get_allocate_cbits(std::vector<ClassicalCondition>&); virtual double get_expectation(QProg, const QHamiltonian&, const QVec&); virtual double get_expectation(QProg, const QHamiltonian&, const QVec&, int);
Detailed Documentation¶
Methods¶
virtual void init()
init
Returns:
void
virtual std::map<std::string, size_t> runWithConfiguration( QProg&, std::vector<ClassicalCondition>&, rapidjson::Document& )
runWithConfiguration
Parameters:
QProg& |
quantum program |
std::vector<ClassicalCondition>& |
|
rapidjson::Document& |
Returns:
std::map<std::string, Eigen::size_t>
virtual std::map<std::string, size_t> runWithConfiguration( QProg&, std::vector<ClassicalCondition>&, int )
runWithConfiguration
Parameters:
QProg& |
quantum program |
std::vector<ClassicalCondition>& |
|
int |
Returns:
std::map<std::string, Eigen::size_t>
virtual std::map<std::string, bool> directlyRun(QProg& qProg)
directlyRun
Parameters:
QProg& |
quantum program |
Returns:
std::map<std::string, bool>
void set_rotation_error(double error)
set QGate rotation angle errors
Parameters:
double |
rotation angle errors |
Returns:
void
See also: