.. index:: pair: namespace; QPanda .. _doxid-namespace_q_panda: namespace QPanda ================ .. toctree:: :hidden: namespace_QPanda_DRAW_TEXT_PIC.rst namespace_QPanda_Variational.rst enum_QPanda_ArchType.rst enum_QPanda_CLOUD_QMACHINE_TYPE.rst enum_QPanda_ComplexVertexSplitMethod.rst enum_QPanda_ContentSpecifier.rst enum_QPanda_DAGNodeType.rst enum_QPanda_DecompositionMode.rst enum_QPanda_DoubleGateTransferType.rst enum_QPanda_KarusErrorType.rst enum_QPanda_MatrixUnit.rst enum_QPanda_MeasBasis.rst enum_QPanda_MeasState.rst enum_QPanda_MeasureQVMType.rst enum_QPanda_OperatorSpecifier.rst enum_QPanda_PrepState.rst enum_QPanda_QASMGateType.rst enum_QPanda_QCircuitOPtimizerMode.rst enum_QPanda_QCodarGridDevice.rst enum_QPanda_QMachineType.rst enum_QPanda_QProgStoredNodeType.rst enum_QPanda_REAL_CHIP_TYPE.rst enum_QPanda_SingleGateTransferType.rst enum_QPanda_SwapQubitsMethod.rst struct_QPanda_CNodeCandidate.rst struct_QPanda_CandidateSelector.rst struct_QPanda_DAGSeqNode.rst struct_QPanda_DefineQGateContent.rst struct_QPanda_Dep.rst struct_QPanda_Dependencies.rst struct_QPanda_Dist.rst struct_QPanda_FragLabel.rst struct_QPanda_GataFuncInfo.rst struct_QPanda_GateInfo.rst struct_QPanda_GateOperationInfo.rst struct_QPanda_JsonBackendParser.rst struct_QPanda_JsonBackendParser-2.rst struct_QPanda_JsonBackendParser-3.rst struct_QPanda_JsonBackendParser-4.rst struct_QPanda_JsonFields.rst struct_QPanda_JsonFields-2.rst struct_QPanda_JsonFields-3.rst struct_QPanda_JsonFields-4.rst struct_QPanda_MappingCandidate.rst struct_QPanda_MappingSeq.rst struct_QPanda_MappingSwapSequence.rst struct_QPanda_NoiseConfigs.rst struct_QPanda_OptimizerNodeInfo.rst struct_QPanda_OptimizerSubCir.rst struct_QPanda_PressedCirNode.rst struct_QPanda_QCircuitConfig.rst struct_QPanda_QCircuitConfigReader.rst struct_QPanda_QGateNode.rst struct_QPanda_QGatesTransform.rst struct_QPanda_QProgDAGEdge.rst struct_QPanda_QProgDAGNode.rst struct_QPanda_QubitPointerCmp.rst struct_QPanda_RegParamInfo.rst struct_QPanda_StitchesInfo.rst struct_QPanda_SubCircuit.rst struct_QPanda_Swap.rst struct_QPanda_TracebackInfo.rst struct_QPanda__blocked_matrix.rst struct_QPanda__matrix_block.rst struct_QPanda_axis.rst class_QPanda_AbstractCirOptimizer.rst class_QPanda_AbstractDiffusionOperator.rst class_QPanda_AbstractQuantumCounting.rst class_QPanda_AbstractQubitMapping.rst class_QPanda_AbstractSearchData.rst class_QPanda_ApproxTSFinder.rst class_QPanda_ArchGraph.rst class_QPanda_CPUQVM.rst class_QPanda_CPUSingleThreadQVM.rst class_QPanda_Configuration.rst class_QPanda_CutQCircuit.rst class_QPanda_DecomposeControlSingleQGateIntoMetadataDoubleQGate.rst class_QPanda_DeleteUnitQNode.rst class_QPanda_DiffusionCirBuilder.rst class_QPanda_DynamicQCircuitGraph.rst class_QPanda_FindSubCircuit.rst class_QPanda_FragmentResult.rst class_QPanda_FrontLayer.rst class_QPanda_GPUQVM.rst class_QPanda_GetQubitTopology.rst class_QPanda_Graph.rst class_QPanda_HHLAlg.rst class_QPanda_IdealMachineInterface.rst class_QPanda_IdealQVM.rst class_QPanda_JsonParser.rst class_QPanda_JudgeTwoNodeIterIsSwappable.rst class_QPanda_KarusError.rst class_QPanda_MultiPrecisionMachineInterface.rst class_QPanda_NodeIter.rst class_QPanda_NoiseQVM.rst class_QPanda_NoiseSimulator.rst class_QPanda_NonKarusError.rst class_QPanda_OptBMTQAllocator.rst class_QPanda_OracleBuilder.rst class_QPanda_OriginCMemv2.rst class_QPanda_OriginCollection.rst class_QPanda_OriginMeasure.rst class_QPanda_OriginQubitPool.rst class_QPanda_ParseExpressionStr.rst class_QPanda_PickUpNodes.rst class_QPanda_ProcessOnTraversing.rst class_QPanda_QCirFragments.rst class_QPanda_QCircuitGenerator.rst class_QPanda_QCircuitOPtimizer.rst class_QPanda_QCircuitOptimizerConfig.rst class_QPanda_QCircuitRewrite.rst class_QPanda_QCloudMachine.rst class_QPanda_QGateParseMap.rst class_QPanda_QMachineStatus.rst class_QPanda_QNodeManager.rst class_QPanda_QObject.rst class_QPanda_QPEAlg.rst class_QPanda_QProgDAGVertex.rst class_QPanda_QProgToDAG.rst class_QPanda_QVM.rst class_QPanda_QWhileRegisterAction.rst class_QPanda_QuantumChipAdapter.rst class_QPanda_QuantumChipConfig.rst class_QPanda_QuantumCircuitRegisterAction.rst class_QPanda_QuantumCounting.rst class_QPanda_QuantumMeasureRegisterAction.rst class_QPanda_QuantumProgramRegisterAction.rst class_QPanda_QuantumResetRegisterAction.rst class_QPanda_QubitAddr.rst class_QPanda_QubitNodesSink.rst class_QPanda_RBGate.rst class_QPanda_RecombineFragment.rst class_QPanda_ResultData.rst class_QPanda_SabreQAllocator.rst class_QPanda_SearchCondition.rst class_QPanda_SearchDataByUInt.rst class_QPanda_SearchSpace.rst class_QPanda_ShortestDistanceByBFS.rst class_QPanda_SimplifiedApproxTSFinder.rst class_QPanda_TokenSwapFinder.rst class_QPanda_TopologSequence.rst class_QPanda_WeightedGraph.rst class_QPanda_calloc_fail.rst class_QPanda_gate_alloc_fail.rst class_QPanda_threadPool.rst Overview ~~~~~~~~ .. ref-code-block:: cpp :class: doxyrest-overview-code-block namespace QPanda { // namespaces namespace :ref:`QPanda::DRAW_TEXT_PIC`; namespace :ref:`QPanda::Variational`; // typedefs typedef std::pair :target:`OrbitalAct`; typedef std::vector<:ref:`OrbitalAct`> :target:`OrbitalActVec`; typedef std::pair<:ref:`OrbitalActVec`, std::string> :target:`FermionPair`; typedef :ref:`FermionOp` :target:`FermionOperator`; typedef :ref:`PauliOp` :target:`PauliOperator`; typedef :ref:`AbstractClassicalProg`* (*:target:`CreateClassicalQProgram`)(ClassicalCondition &); typedef :ref:`AbstractControlFlowNode`* (*:target:`CreateQIfTrueFalse_cb`)( ClassicalCondition &, QProg, QProg ); typedef :ref:`AbstractControlFlowNode`* (*:target:`CreateQIfTrueOnly_cb`)( ClassicalCondition &, QProg ); typedef :ref:`AbstractControlFlowNode`* (*:target:`CreateQWhile_cb`)( ClassicalCondition &, QProg ); typedef :ref:`AbstractQuantumCircuit`* (*:target:`CreateQCircuit`)(); typedef void (*:target:`QGATE_FUN`)( QuantumGate *, QVec &, QPUImpl *, bool, QVec &, GateType ); typedef std::map`> :target:`QGATE_FUN_MAP`; typedef int64_t :target:`qmap_size_t`; typedef :ref:`AbstractQuantumProgram`* (*:target:`CreateQProgram`)(); typedef :ref:`AbstractQuantumReset`* (*:target:`CreateReset`)(Qubit *); typedef :ref:`AbstractQuantumMeasure`* (*:target:`CreateMeasure`)( Qubit *, CBit * ); typedef long long :target:`cbit_size_t`; typedef std::pair :target:`CONFIGPAIR`; typedef std::function&, std::vector&)> :ref:`MetadataValidity_cb`; typedef std::vector :target:`Vector`; typedef std::vector<:ref:`Vector`> :target:`Matrix`; typedef std::vector<:ref:`Mapping`> :target:`MappingVector`; typedef std::vector`>> :target:`MappingVectorCollection`; typedef std::vector<:ref:`SwapSeq`> :target:`SwapSeqVector`; typedef std::vector<:ref:`QNodeRef`> :target:`PPartition`; typedef std::vector<:ref:`PPartition`> :target:`PPartitionCollection`; typedef std::vector :target:`Mapping`; typedef std::vector :target:`InverseMap`; typedef std::vector<:ref:`Swap`> :target:`SwapSeq`; typedef std::map :target:`GateWeightMap`; typedef Eigen::MatrixXi :target:`AdjacencyMatrix`; typedef :ref:`SeqNode`<:ref:`DAGSeqNode`> :target:`DAGTopoNode`; typedef :ref:`SeqLayer`<:ref:`DAGSeqNode`> :target:`DAGTopoLayer`; typedef std::pair<:ref:`T`, std::vector<:ref:`T`>> :target:`SeqNode`; typedef std::vector<:ref:`SeqNode`<:ref:`T`>> :target:`SeqLayer`; typedef std::vector`>> :target:`MatData`; typedef :ref:`MatData` :target:`TopologyData`; typedef std::pair :target:`QubitPair`; typedef std::pair> :target:`weight_edge`; typedef rapidjson::Value :target:`Value`; typedef std::shared_ptr<:ref:`OptimizerNodeInfo`> :target:`pOptimizerNodeInfo`; typedef std::map :target:`SinkPos`; typedef std::pair`>> :target:`GatesBufferType`; typedef :ref:`QubitNodesSink` :target:`OptimizerSink`; typedef :ref:`TopologSequence`<:ref:`pOptimizerNodeInfo`> :target:`LayeredTopoSeq`; typedef std::shared_ptr<:ref:`PressedCirNode`> :target:`pPressedCirNode`; typedef :ref:`TopologSequence`<:ref:`pPressedCirNode`> :target:`PressedTopoSeq`; typedef :ref:`SeqLayer`<:ref:`pPressedCirNode`> :target:`PressedLayer`; typedef :ref:`SeqNode`<:ref:`pPressedCirNode`> :target:`PressedNode`; typedef double :target:`EigneDataType`; typedef std::complex<:ref:`EigneDataType`> :target:`EigenComplexT`; typedef Eigen::Matrix<:ref:`EigenComplexT`, -1, -1, Eigen::RowMajor> :target:`EigenMatrixXc`; typedef Eigen::Matrix<:ref:`EigenComplexT`, 2, 2> :target:`EigenMatrix2c`; typedef Eigen::Matrix<:ref:`EigneDataType`, -1, -1> :target:`EigenMatrixX`; typedef Eigen::Matrix<:ref:`EigneDataType`, 2, 2> :target:`EigenMatrix2`; typedef Eigen::Matrix<:ref:`qcomplex_t`, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> :target:`qmatrix_t`; typedef struct :ref:`QPanda::_matrix_block` :target:`matrixBlock_t`; typedef struct :ref:`QPanda::_blocked_matrix` :target:`blockedMatrix_t`; typedef std::function :target:`Task`; typedef :ref:`QGate` (*:ref:`QGateFunc`)(Qubit *); typedef std::function<:ref:`QCircuit`(InputType, OutputType)> :target:`Oracle`; typedef :ref:`FermionOp`<:ref:`complex_var`> :target:`VarFermionOperator`; typedef :ref:`PauliOp`<:ref:`complex_var`> :target:`VarPauliOperator`; typedef std::pair :target:`DoubleQubits`; typedef std::vector<:ref:`QGateNode`> :target:`cir_type`; typedef :ref:`Oracle`<:ref:`QVec`, :ref:`Qubit`*> :target:`BV_Oracle`; typedef :ref:`Oracle`<:ref:`QVec`, :ref:`Qubit`*> :target:`DJ_Oracle`; typedef :ref:`Oracle`<:ref:`QVec`, :ref:`Qubit`*> :target:`grover_oracle`; // enums enum :ref:`ArchType`; enum :ref:`CLOUD_QMACHINE_TYPE`; enum :ref:`ComplexVertexSplitMethod`; enum :ref:`ContentSpecifier`; enum :ref:`DAGNodeType`; enum :ref:`DecompositionMode`; enum :ref:`DoubleGateTransferType`; enum :ref:`KarusErrorType`; enum :ref:`MatrixUnit`; enum :ref:`MeasBasis`; enum :ref:`MeasState`; enum :ref:`MeasureQVMType`; enum :ref:`OperatorSpecifier`; enum :ref:`PrepState`; enum :ref:`QASMGateType`; enum :ref:`QCircuitOPtimizerMode`; enum :ref:`QCodarGridDevice`; enum :ref:`QMachineType`; enum :ref:`QProgStoredNodeType`; enum :ref:`REAL_CHIP_TYPE`; enum :ref:`SingleGateTransferType`; enum :ref:`SwapQubitsMethod`; // structs template struct :ref:`CNodeCandidate`; struct :ref:`CallGateInfo`; struct :ref:`CandidateSelector`; struct :ref:`DAGSeqNode`; struct :ref:`DefineQGateContent`; struct :ref:`Dep`; struct :ref:`Dependencies`; struct :ref:`Dist`; struct :ref:`FragLabel`; struct :ref:`GataFuncInfo`; struct :ref:`GateInfo`; struct :ref:`GateOperationInfo`; template <> struct :ref:`JsonBackendParser`; template struct :ref:`JsonBackendParser`; template struct :ref:`JsonBackendParser>`; template <> struct :ref:`JsonBackendParser`; template <> struct :ref:`JsonFields`; template struct :ref:`JsonFields>`; template <> struct :ref:`JsonFields`; template struct :ref:`JsonFields`; struct :ref:`KakDescription`; struct :ref:`MappingCandidate`; struct :ref:`MappingSeq`; struct :ref:`MappingSwapSequence`; struct :ref:`NoiseConfigs`; struct :ref:`OptimizerNodeInfo`; struct :ref:`OptimizerSubCir`; struct :ref:`PressedCirNode`; struct :ref:`QCircuitConfig`; struct :ref:`QCircuitConfigReader`; struct :ref:`QGateNode`; struct :ref:`QGatesTransform`; struct :ref:`QProgDAGEdge`; struct :ref:`QProgDAGNode`; struct :ref:`QubitPointerCmp`; struct :ref:`RegParamInfo`; struct :ref:`StitchesInfo`; struct :ref:`SubCircuit`; struct :ref:`Swap`; struct :ref:`TracebackInfo`; struct :ref:`_blocked_matrix`; struct :ref:`_matrix_block`; struct :ref:`axis`; // classes class :ref:`AbstractCirOptimizer`; class :ref:`AbstractClassicalProg`; class :ref:`AbstractControlFlowNode`; class :ref:`AbstractDiffusionOperator`; class :ref:`AbstractNodeManager`; class :ref:`AbstractOptimizer`; class :ref:`AbstractQGateNode`; class :ref:`AbstractQuantumCircuit`; class :ref:`AbstractQuantumCounting`; class :ref:`AbstractQuantumMeasure`; class :ref:`AbstractQuantumProgram`; class :ref:`AbstractQuantumReset`; class :ref:`AbstractQubitMapping`; class :ref:`AbstractSearchData`; class :ref:`AdjacentQGates`; class :ref:`ApproxTSFinder`; class :ref:`ArchGraph`; class :ref:`BasicGridDevice`; class :ref:`Brent`; class :ref:`CBit`; class :ref:`CBitFactory`; class :ref:`CBitFactoryHelper`; class :ref:`CExpr`; class :ref:`CExprFactory`; class :ref:`CExprFactoryHelper`; class :ref:`CMem`; class :ref:`CMemFactory`; class :ref:`CMemFactoryHelper`; class :ref:`CPUQVM`; class :ref:`CPUSingleThreadQVM`; class :ref:`CancelControlQubitVector`; class :ref:`ChemiQ`; class :ref:`ClassicalCondition`; class :ref:`ClassicalProg`; class :ref:`ClassicalProgFactory`; class :ref:`ClassicalProgRegisterAction`; class :ref:`ConfigMap`; class :ref:`Configuration`; class :ref:`CrossEntropyBenchmarking`; class :ref:`CutQCircuit`; class :ref:`DecomposeControlSingleQGateIntoMetadataDoubleQGate`; class :ref:`DecomposeControlUnitarySingleQGate`; class :ref:`DecomposeDoubleQGate`; class :ref:`DecomposeMultipleControlQGate`; class :ref:`DecomposeUnitarySingleQGateIntoMetadataSingleQGate`; class :ref:`DeleteUnitQNode`; class :ref:`DiffusionCirBuilder`; class :ref:`DoubleGateTypeValidator`; class :ref:`DynamicQCircuitGraph`; class :ref:`ExGridDevice`; class :ref:`Exp`; template class :ref:`FermionOp`; class :ref:`FillQProg`; class :ref:`FindSubCircuit`; class :ref:`FragmentResult`; class :ref:`FrontLayer`; class :ref:`GPUQVM`; class :ref:`GetAllNodeType`; class :ref:`GetAllUsedQubitAndCBit`; class :ref:`GetQubitTopology`; class :ref:`Graph`; class :ref:`GraphDijkstra`; class :ref:`HHLAlg`; class :ref:`HadamardQCircuit`; class :ref:`IdealMachineInterface`; class :ref:`IdealQVM`; class :ref:`Item`; class :ref:`JsonConfigParam`; template class :ref:`JsonParser`; class :ref:`JudgeTwoNodeIterIsSwappable`; class :ref:`KAK`; class :ref:`KarusError`; class :ref:`MPSImplQPU`; class :ref:`MPSQVM`; class :ref:`MergeSingleGate`; class :ref:`MetadataValidity`; class :ref:`MultiPrecisionMachineInterface`; class :ref:`NodeInfo`; class :ref:`NodeIter`; class :ref:`NodeSortProblemGenerator`; class :ref:`NoiseQVM`; class :ref:`NoiseSimulator`; class :ref:`NonKarusError`; class :ref:`OptBMTQAllocator`; class :ref:`OptimizerFactory`; template class :ref:`OracleBuilder`; class :ref:`OriginCBit`; class :ref:`OriginCExpr`; class :ref:`OriginCMem`; class :ref:`OriginCMemv2`; class :ref:`OriginCOBYLA`; class :ref:`OriginCircuit`; class :ref:`OriginClassicalProg`; class :ref:`OriginCollection`; class :ref:`OriginIRVisitor`; class :ref:`OriginItem`; class :ref:`OriginLBFGSB`; class :ref:`OriginMeasure`; class :ref:`OriginNelderMead`; class :ref:`OriginPhysicalQubit`; class :ref:`OriginPowell`; class :ref:`OriginProgram`; class :ref:`OriginQGate`; class :ref:`OriginQIf`; class :ref:`OriginQMachineStatus`; class :ref:`OriginQResult`; class :ref:`OriginQWhile`; class :ref:`OriginQubit`; class :ref:`OriginQubitPool`; class :ref:`OriginQubitPoolv1`; class :ref:`OriginQubitPoolv2`; class :ref:`OriginReset`; class :ref:`OriginSLSQP`; class :ref:`ParseExpressionStr`; class :ref:`PartialAmplitudeGraph`; class :ref:`PartialAmplitudeQVM`; template class :ref:`PauliOp`; class :ref:`PhysicalQubit`; class :ref:`PhysicalQubitFactory`; class :ref:`PhysicalQubitFactoryHelper`; class :ref:`PickUpNodes`; class :ref:`ProcessOnTraversing`; class :ref:`Psi4Wrapper`; class :ref:`QAOA`; class :ref:`QARM`; class :ref:`QASMToQProg`; class :ref:`QCirFragments`; class :ref:`QCircuit`; class :ref:`QCircuitGenerator`; class :ref:`QCircuitOPtimizer`; class :ref:`QCircuitOptimizerConfig`; class :ref:`QCircuitParam`; class :ref:`QCircuitRewrite`; class :ref:`QCloudMachine`; class :ref:`QCodarMatch`; class :ref:`QGate`; class :ref:`QGateCompare`; class :ref:`QGateCounter`; class :ref:`QGateNodeFactory`; class :ref:`QGateParseMap`; class :ref:`QITE`; class :ref:`QIfFactory`; class :ref:`QIfProg`; class :ref:`QIfRegisterAction`; class :ref:`QMachineStatus`; class :ref:`QMachineStatusFactory`; class :ref:`QMachineTypeTarnfrom`; class :ref:`QMeasure`; class :ref:`QNode`; class :ref:`QNodeDeepCopy`; class :ref:`QNodeManager`; class :ref:`QObject`; class :ref:`QPEAlg`; class :ref:`QPandaException`; class :ref:`QProg`; class :ref:`QProgBuilder`; class :ref:`QProgCheck`; class :ref:`QProgClockCycle`; class :ref:`QProgDAG`; class :ref:`QProgDAGVertex`; class :ref:`QProgDataParse`; class :ref:`QProgExecution`; class :ref:`QProgFlattening`; class :ref:`QProgStored`; class :ref:`QProgToDAG`; class :ref:`QProgToMatrix`; class :ref:`QProgToOriginIR`; class :ref:`QProgToQASM`; class :ref:`QProgToQCircuit`; class :ref:`QProgToQGate`; class :ref:`QProgToQMeasure`; class :ref:`QProgToQuil`; class :ref:`QReset`; class :ref:`QResetFactory`; class :ref:`QResult`; class :ref:`QResultFactory`; class :ref:`QResultFactoryHelper`; class :ref:`QRunesToQProg`; class :ref:`QSVM`; class :ref:`QScheduler`; class :ref:`QString`; class :ref:`QVM`; class :ref:`QVec`; class :ref:`QWhileFactory`; class :ref:`QWhileProg`; class :ref:`QWhileRegisterAction`; class :ref:`QuantumChipAdapter`; class :ref:`QuantumChipConfig`; class :ref:`QuantumCircuitFactory`; class :ref:`QuantumCircuitRegisterAction`; class :ref:`QuantumCounting`; class :ref:`QuantumMachine`; class :ref:`QuantumMachineFactory`; class :ref:`QuantumMachineFactoryHelper`; class :ref:`QuantumMeasureFactory`; class :ref:`QuantumMeasureRegisterAction`; class :ref:`QuantumMetadata`; class :ref:`QuantumProgramFactory`; class :ref:`QuantumProgramRegisterAction`; class :ref:`QuantumResetRegisterAction`; class :ref:`QuantumVolume`; class :ref:`Qubit`; class :ref:`QubitAddr`; class :ref:`QubitFactory`; class :ref:`QubitFactoryHelper`; class :ref:`QubitNodesSink`; class :ref:`QubitPool`; class :ref:`QubitPoolFactory`; class :ref:`QubitPoolFactoryHelper`; class :ref:`QubitReference`; class :ref:`QubitReferenceInterface`; class :ref:`RBGate`; class :ref:`RJson`; class :ref:`RandomCircuit`; class :ref:`RandomizedBenchmarking`; class :ref:`RecombineFragment`; class :ref:`RemapQProg`; class :ref:`ResultData`; class :ref:`SU4TopologyMatch`; class :ref:`SabreQAllocator`; template class :ref:`SearchCondition`; class :ref:`SearchDataByUInt`; template class :ref:`SearchSpace`; class :ref:`ShorAlg`; class :ref:`ShortestDistanceByBFS`; class :ref:`SimpleGridDevice`; class :ref:`SimplifiedApproxTSFinder`; class :ref:`SingleAmplitudeQVM`; class :ref:`SingleGateTypeValidator`; class :ref:`TimeSequenceConfig`; class :ref:`TokenSwapFinder`; template class :ref:`TopologSequence`; class :ref:`TopologyMatch`; class :ref:`TransformByCNOT`; class :ref:`TransformByCZ`; class :ref:`TransformByISWAP`; class :ref:`TransformBySWAP`; class :ref:`TransformDecomposition`; class :ref:`TransformQGateType`; class :ref:`TransformSwapAlg`; class :ref:`TransformSwapAlgFactory`; class :ref:`Traversal`; class :ref:`TraversalConfig`; template class :ref:`TraversalInterface`; class :ref:`TraverseByNodeIter`; class :ref:`UncompletedGridDevice`; template class :ref:`WeightedGraph`; class :ref:`calloc_fail`; class :ref:`complex_var`; class :ref:`gate_alloc_fail`; class :ref:`init_fail`; class :ref:`qalloc_fail`; class :ref:`qcircuit_construction_fail`; class :ref:`qprog_construction_fail`; class :ref:`qprog_syntax_error`; class :ref:`qvm_attributes_error`; class :ref:`result_get_fail`; class :ref:`run_fail`; class :ref:`threadPool`; class :ref:`undefine_error`; // global variables static std::map> :target:`_binary_operation` = { {"+", [](double lval,double rval) {return lval + rval; }}, {"-", [](double lval,double rval) {return lval - rval; } }, {"*", [](double lval,double rval) {return lval* rval; } }, {"/", [](double lval,double rval) {return lval / rval; } }, }; const unsigned short :target:`kUshortMax` = 65535; const int :target:`kCountMoveBit` = 16; const uint32_t :target:`UNDEF_UINT32`; const int :ref:`kInfinite` = 0xffff; const int :ref:`kError` = -1; // global functions DLLEXPORT size_t :ref:`getElectronNum`(const std::string& atom); DLLEXPORT :ref:`PauliOperator` :ref:`JordanWignerTransform`(const :ref:`OrbitalActVec`& fermion_item); DLLEXPORT :ref:`PauliOperator` :ref:`JordanWignerTransform`(const :ref:`FermionOperator`& fermion); DLLEXPORT :ref:`VarPauliOperator` :ref:`JordanWignerTransform`(const :ref:`VarFermionOperator`& fermion); DLLEXPORT :ref:`PauliOperator` :ref:`ParityTransform`(const :ref:`OrbitalActVec`& fermion_item, size_t maxqubit); DLLEXPORT :ref:`PauliOperator` :ref:`ParityTransform`(const :ref:`FermionOperator`& fermio); DLLEXPORT :ref:`VarPauliOperator` :ref:`ParityTransform`(const :ref:`VarFermionOperator`& fermion); DLLEXPORT std::vector :ref:`BKMatrix`(size_t qn); DLLEXPORT :ref:`PauliOperator` :ref:`BravyiKitaevTransform`( const :ref:`OrbitalActVec`& fermion_item, size_t maxqubit, std::vector BK ); DLLEXPORT :ref:`PauliOperator` :ref:`BravyiKitaevTransform`(const :ref:`FermionOperator`& fermion, std::vector BK); DLLEXPORT :ref:`VarPauliOperator` :ref:`BravyiKitaevTransform`(const :ref:`VarFermionOperator`& fermion, std::vector BK); DLLEXPORT size_t :ref:`getCCS_N_Trem`(size_t qn, size_t en); DLLEXPORT size_t :ref:`getCCSD_N_Trem`(size_t qn, size_t en); DLLEXPORT :ref:`FermionOperator` :ref:`getCCS`(size_t qn, size_t en, const vector_d& para_vec); DLLEXPORT :ref:`VarFermionOperator` :ref:`getCCS`(size_t qn, size_t en, :ref:`var`& para); DLLEXPORT :ref:`VarFermionOperator` :ref:`getCCS`(size_t qn, size_t en, std::vector<:ref:`var`>& para); DLLEXPORT :ref:`FermionOperator` :ref:`getCCSD`(size_t qn, size_t en, const vector_d& para_vec); DLLEXPORT :ref:`VarFermionOperator` :ref:`getCCSD`(size_t qn, size_t en, :ref:`var`& para); DLLEXPORT :ref:`VarFermionOperator` :ref:`getCCSD`(size_t qn, size_t en, std::vector<:ref:`var`>& para); DLLEXPORT :ref:`PauliOperator` :ref:`transCC2UCC`(const :ref:`PauliOperator`& cc); DLLEXPORT :ref:`VarPauliOperator` :ref:`transCC2UCC`(const :ref:`VarPauliOperator`& cc); DLLEXPORT :ref:`VQC` :ref:`simulateHamiltonian`(:ref:`QVec`& qubit_vec, :ref:`VarPauliOperator`& pauli, double t, size_t slices); DLLEXPORT :ref:`VQC` :ref:`simulateOneTerm`(:ref:`QVec`& qubit_vec, const QTerm& hamiltonian_term, const :ref:`var`& coef, double t); DLLEXPORT :ref:`VQC` :ref:`simulateZTerm`(:ref:`QVec`& qubit_vec, const :ref:`var`& coef, double t); DLLEXPORT :ref:`FermionOperator` :ref:`parsePsi4DataToFermion`(const std::string& data); :ref:`QCircuit` :ref:`simulateZTerm`(const std::vector<:ref:`Qubit`*>& qubit_vec, double coef, double t); :ref:`QCircuit` :ref:`simulateOneTerm`( const std::vector<:ref:`Qubit`*>& qubit_vec, const QTerm& hamiltonian_term, double coef, double t ); :ref:`QCircuit` :ref:`simulateHamiltonian`( const std::vector<:ref:`Qubit`*>& qubit_vec, const QHamiltonian& hamiltonian, double t, size_t slices ); :ref:`QCircuit` :ref:`simulatePauliZHamiltonian`(const std::vector<:ref:`Qubit`*>& qubit_vec, const QHamiltonian& hamiltonian, double t); :ref:`QCircuit` :ref:`applySingleGateToAll`(const std::string& gate, const std::vector<:ref:`Qubit`*>& qubit_vec); void :ref:`applySingleGateToAll`(const std::string& gate, const std::vector<:ref:`Qubit`*>& qubit_vec, :ref:`QCircuit`& circuit); :ref:`QCircuit` :ref:`ising_model`(const std::vector<:ref:`Qubit`*>& qubit_vec, const QGraph& graph, const vector_d& gamma); :ref:`QCircuit` :ref:`pauliX_model`(const std::vector<:ref:`Qubit`*>& qubit_vec, const vector_d& beta); double :ref:`vector_dot`(std::vector& x, std::vector& y); double :ref:`all_cut_of_graph`( std::vector> adjacent_matrix, std::vector& all_cut_list, std::vector& target_value_list ); template :ref:`PauliOperator` :target:`transVecToPauliOperator`(const std::vector<:ref:`T`>& data_vec); std::vector :target:`transPauliOperatorToVec`(:ref:`PauliOperator` pauli); bool :ref:`init`(:ref:`QMachineType` type = :ref:`CPU`); void :ref:`finalize`(); :ref:`Qubit`* :ref:`qAlloc`(); :ref:`Qubit`* :ref:`qAlloc`(size_t stQubitAddr); std::map :ref:`directlyRun`(:ref:`QProg`& qProg); :ref:`QVec` :ref:`qAllocMany`(size_t stQubitNumber); :ref:`ClassicalCondition` :ref:`cAlloc`(); :ref:`ClassicalCondition` :ref:`cAlloc`(size_t stCBitaddr); std::vector<:ref:`ClassicalCondition`> :ref:`cAllocMany`(size_t stCBitNumber); void :ref:`cFree`(:ref:`ClassicalCondition`&); void :ref:`cFreeAll`(std::vector<:ref:`ClassicalCondition`> vCBit); :ref:`QMachineStatus`* :ref:`getstat`(); size_t :ref:`getAllocateQubitNum`(); :ref:`prob_tuple` :ref:`getProbTupleList`(:ref:`QVec`, int selectMax = -1); :ref:`prob_vec` :ref:`getProbList`(:ref:`QVec`, int selectMax = -1); :ref:`prob_dict` :ref:`getProbDict`(:ref:`QVec`, int selectMax = -1); :ref:`prob_tuple` :ref:`probRunTupleList`(:ref:`QProg`&, :ref:`QVec`, int selectMax = -1); :ref:`prob_vec` :ref:`probRunList`(:ref:`QProg`&, :ref:`QVec`, int selectMax = -1); :ref:`prob_dict` :ref:`probRunDict`(:ref:`QProg`&, :ref:`QVec`, int selectMax = -1); std::map :ref:`runWithConfiguration`(:ref:`QProg`&, std::vector<:ref:`ClassicalCondition`>&, int); std::map :ref:`quickMeasure`(:ref:`QVec`, int); :ref:`prob_vec` :ref:`accumulateProbability`(:ref:`prob_vec`& prob_list); std::map :ref:`quick_measure`( :ref:`QVec` qubit_vector, int shots, :ref:`prob_vec`& accumulate_probabilites ); :ref:`QStat` :ref:`getQState`(); :ref:`QuantumMachine`* :ref:`initQuantumMachine`(:ref:`QMachineType` type = :ref:`CPU`); void :ref:`destroyQuantumMachine`(:ref:`QuantumMachine`* qvm); :ref:`QPanda::QProg` :ref:`MeasureAll`(:ref:`QVec`, std::vector<:ref:`ClassicalCondition`>); :ref:`QProg` :ref:`transformOriginIRToQProg`(std::string filePath, :ref:`QuantumMachine`* qm, :ref:`QVec`& qv, std::vector<:ref:`ClassicalCondition`>& cv); :ref:`QProg` :ref:`convert_originir_to_qprog`(std::string file_path, :ref:`QuantumMachine`* qm); :ref:`QProg` :ref:`convert_originir_to_qprog`(std::string file_path, :ref:`QuantumMachine`* qm, :ref:`QVec`& qv, std::vector<:ref:`ClassicalCondition`>& cv); :ref:`QProg` :ref:`convert_originir_string_to_qprog`(std::string str_originir, :ref:`QuantumMachine`* qm); :ref:`QProg` :ref:`convert_originir_string_to_qprog`(std::string str_originir, :ref:`QuantumMachine`* qm, :ref:`QVec`& qv, std::vector<:ref:`ClassicalCondition`>& cv); :ref:`QProg` :ref:`convert_qasm_to_qprog`(std::string file_path, :ref:`QuantumMachine`* qvm); :ref:`QProg` :ref:`convert_qasm_to_qprog`(std::string file_path, :ref:`QuantumMachine`* qvm, :ref:`QVec`& qv, std::vector<:ref:`ClassicalCondition`>& cv); :ref:`QProg` :ref:`convert_qasm_string_to_qprog`(std::string qasm_str, :ref:`QuantumMachine`* qvm); :ref:`QProg` :ref:`convert_qasm_string_to_qprog`(std::string qasm_str, :ref:`QuantumMachine`* qvm, :ref:`QVec`& qv, std::vector<:ref:`ClassicalCondition`>& cv); size_t :target:`getAllocateCMem`(); :ref:`prob_tuple` :target:`PMeasure`( :ref:`QVec` qubit_vector, int select_max ); :ref:`prob_vec` :target:`PMeasure_no_index`(:ref:`QVec` qubit_vector); size_t :ref:`getAllocateCMemNum`(); :ref:`prob_tuple` :ref:`pMeasure`(:ref:`QVec` qubit_vector, int select_max); :ref:`prob_vec` :ref:`pMeasureNoIndex`(:ref:`QVec` qubit_vector); :ref:`ClassicalCondition` :ref:`operator +` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator +` (:ref:`ClassicalCondition` left_operand, :ref:`ClassicalCondition` right_operand); :ref:`ClassicalCondition` :ref:`operator +` (:ref:`ClassicalCondition` left_operand, :ref:`cbit_size_t` right_operand); :ref:`ClassicalCondition` :ref:`operator -` (:ref:`ClassicalCondition` left_operand, :ref:`ClassicalCondition` right_operand); :ref:`ClassicalCondition` :ref:`operator -` (:ref:`ClassicalCondition` left_operand, :ref:`cbit_size_t` right_operand); :ref:`ClassicalCondition` :ref:`operator -` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator *` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator *` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator *` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator/` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator/` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator/` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator ==` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator ==` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator ==` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator !=` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator !=` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator !=` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` classical_cond); :ref:`ClassicalCondition` :ref:`operator &&` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator &&` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator &&` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` classical_cond); :ref:`ClassicalCondition` :ref:`operator||` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator||` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator||` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` classical_cond); :ref:`ClassicalCondition` :ref:`operator >` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator >` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator >` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator >=` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator >=` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator >=` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator <` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator <` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator <` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator <=` (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`); :ref:`ClassicalCondition` :ref:`operator <=` (:ref:`ClassicalCondition`, :ref:`cbit_size_t`); :ref:`ClassicalCondition` :ref:`operator <=` (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond); :ref:`ClassicalCondition` :ref:`operator !` (:ref:`ClassicalCondition`); :ref:`QIfProg` :target:`CreateIfProg`( :ref:`ClassicalCondition` classical_condition, :ref:`QProg` true_node ); :ref:`QIfProg` :target:`CreateIfProg`( :ref:`ClassicalCondition` classical_condition, :ref:`QProg` true_node, :ref:`QProg` false_node ); :ref:`QWhileProg` :target:`CreateWhileProg`( :ref:`ClassicalCondition`, :ref:`QProg` trueNode ); :ref:`QIfProg` :ref:`createIfProg`(:ref:`ClassicalCondition` cc, :ref:`QProg` true_node); :ref:`QIfProg` :ref:`createIfProg`(:ref:`ClassicalCondition` cc, :ref:`QProg` true_node, :ref:`QProg` false_node); :ref:`QWhileProg` :ref:`createWhileProg`(:ref:`ClassicalCondition` cc, :ref:`QProg` true_node); :ref:`QCircuit` :target:`CreateEmptyCircuit`(); :ref:`HadamardQCircuit` :target:`CreateHadamardQCircuit`(:ref:`QVec`& pQubitVector); :ref:`QCircuit` :ref:`createEmptyCircuit`(); :ref:`HadamardQCircuit` :ref:`createHadamardQCircuit`(:ref:`QVec`& pQubitVector); :ref:`QGate` :ref:`I`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`X`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`X1`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`RX`(:ref:`Qubit`*, double angle); :ref:`QGate` :ref:`U1`(:ref:`Qubit`*, double angle); :ref:`QGate` :ref:`U2`(:ref:`Qubit`* qubit, double phi, double lambda); :ref:`QGate` :ref:`U3`(:ref:`Qubit`* qubit, double theta, double phi, double lambda); :ref:`QGate` :ref:`Y`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`Y1`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`RY`(:ref:`Qubit`*, double angle); :ref:`QGate` :ref:`Z`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`Z1`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`RZ`(:ref:`Qubit`*, double angle); :ref:`QGate` :ref:`RPhi`(:ref:`Qubit`* qubit, double angle, double phi); :ref:`QGate` :ref:`S`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`T`(:ref:`Qubit`*); :ref:`QGate` :ref:`H`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`ECHO`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`BARRIER`(:ref:`Qubit`* qubit); :ref:`QGate` :ref:`BARRIER`(:ref:`QVec` qubits); :ref:`QGate` :ref:`CNOT`(:ref:`Qubit`* control_qubit, :ref:`Qubit`* target_qubit); :ref:`QGate` :ref:`CZ`(:ref:`Qubit`* control_qubit, :ref:`Qubit`* target_qubit); :ref:`QGate` :ref:`U4`(double alpha, double beta, double gamma, double delta, :ref:`Qubit`*); :ref:`QGate` :ref:`U4`(:ref:`QStat`& matrix, :ref:`Qubit`*); :ref:`QGate` :ref:`QDouble`(:ref:`QStat`& matrix, :ref:`Qubit`* qubit1, :ref:`Qubit`* qubit2); :ref:`QGate` :ref:`CU`(double alpha, double beta, double gamma, double delta, :ref:`Qubit`*, :ref:`Qubit`*); :ref:`QGate` :ref:`CU`(:ref:`QStat`& matrix, :ref:`Qubit`*, :ref:`Qubit`*); :ref:`QGate` :ref:`iSWAP`(:ref:`Qubit`* targitBit_fisrt, :ref:`Qubit`* targitBit_second); :ref:`QGate` :ref:`iSWAP`(:ref:`Qubit`* targitBit_fisrt, :ref:`Qubit`* targitBit_second, double theta); :ref:`QGate` :ref:`CR`(:ref:`Qubit`* control_qubit, :ref:`Qubit`* targit_qubit, double theta); :ref:`QGate` :ref:`SqiSWAP`(:ref:`Qubit`* targitBit_fisrt, :ref:`Qubit`* targitBit_second); :ref:`QGate` :ref:`SWAP`(:ref:`Qubit`* targitBit_fisrt, :ref:`Qubit`* targitBit_second); :ref:`QGate` :target:`oracle`( :ref:`QVec` qubits, std::string oracle_name ); :ref:`QGate` :target:`copy_qgate`( :ref:`QuantumGate`* qgate_old, :ref:`QVec` qubit_vector ); :ref:`QGate` :target:`copy_qgate`( :ref:`QGate`& qgate, :ref:`QVec` qubit_vector ); :ref:`QGate` :target:`copy_qgate`( :ref:`QGate`* qgate, :ref:`QVec` qubit_vector ); :ref:`QGate` :ref:`U4`(:ref:`Qubit`*, double alpha, double beta, double gamma, double delta); :ref:`QGate` :ref:`U4`(:ref:`Qubit`*, :ref:`QStat`& matrix); :ref:`QGate` :ref:`QDouble`(:ref:`Qubit`* qubit1, :ref:`Qubit`* qubit2, :ref:`QStat`& matrix); :ref:`QGate` :ref:`CU`(:ref:`Qubit`*, :ref:`Qubit`*, double alpha, double beta, double gamma, double delta); :ref:`QGate` :ref:`CU`(:ref:`Qubit`*, :ref:`Qubit`*, :ref:`QStat`& matrix); :ref:`QGate` :ref:`I`(int qaddr); :ref:`QGate` :ref:`X`(int qaddr); :ref:`QGate` :ref:`X1`(int qaddr); :ref:`QGate` :ref:`RX`(int qaddr, double angle); :ref:`QGate` :ref:`U1`(int qaddr, double angle); :ref:`QGate` :ref:`U2`(int qaddr, double phi, double lambda); :ref:`QGate` :ref:`U3`(int qaddr, double theta, double phi, double lambda); :ref:`QGate` :ref:`Y`(int qaddr); :ref:`QGate` :ref:`Y1`(int qaddr); :ref:`QGate` :ref:`RY`(int qaddr, double angle); :ref:`QGate` :ref:`Z`(int qaddr); :ref:`QGate` :ref:`Z1`(int qaddr); :ref:`QGate` :ref:`RZ`(int qaddr, double angle); :ref:`QGate` :ref:`RPhi`(int qaddr, double angle, double phi); :ref:`QGate` :ref:`S`(int qaddr); :ref:`QGate` :ref:`T`(int qaddr); :ref:`QGate` :ref:`H`(int qaddr); :ref:`QGate` :ref:`ECHO`(int qaddr); :ref:`QGate` :ref:`BARRIER`(int qaddr); :ref:`QGate` :ref:`BARRIER`(std::vector qaddrs); :ref:`QGate` :ref:`CNOT`(int control_qaddr, int target_qaddr); :ref:`QGate` :ref:`CZ`(int control_qaddr, int target_qaddr); :ref:`QGate` :ref:`iSWAP`(int control_qaddr, int target_qaddr); :ref:`QGate` :ref:`iSWAP`(int control_qaddr, int target_qaddr, double theta); :ref:`QGate` :ref:`CR`(int control_qaddr, int target_qaddr, double theta); :ref:`QGate` :ref:`SqiSWAP`(int control_qaddr, int target_qaddr); :ref:`QGate` :ref:`SWAP`(int control_qaddr, int target_qaddr); :ref:`QGate` :ref:`U4`(int qaddr, double alpha, double beta, double gamma, double delta); :ref:`QGate` :ref:`U4`(int qaddr, :ref:`QStat`& matrix); :ref:`QGate` :ref:`QDouble`(int control_qaddr, int target_qaddr, :ref:`QStat`& matrix); :ref:`QGate` :ref:`CU`( int control_qaddr, int target_qaddr, double alpha, double beta, double gamma, double delta ); :ref:`QGate` :ref:`CU`(int control_qaddr, int target_qaddr, :ref:`QStat`& matrix); template _Ty :ref:`deepCopy`(_Ty& node); :ref:`QProg` :target:`CreateEmptyQProg`(); :ref:`QProg` :ref:`createEmptyQProg`(); :ref:`QReset` :ref:`Reset`(:ref:`Qubit`*); :ref:`QReset` :ref:`Reset`(int qaddr); :ref:`QMeasure` :ref:`Measure`(:ref:`Qubit`*, :ref:`ClassicalCondition`); :ref:`QMeasure` :ref:`Measure`(int, int); :ref:`Qubit`* :ref:`get_qubit_by_phyaddr`(int qaddr); :ref:`QVec` :ref:`get_qubits_by_phyaddrs`(const std::vector& qaddrs); void :ref:`execute_qprog`(:ref:`QProg` prog, :ref:`QPUImpl`* qpu, :ref:`TraversalConfig`& param); bool :target:`binaryQProgFileParse`( :ref:`QuantumMachine`* qm, const std::string& filename, :ref:`QVec`& qubits, std::vector<:ref:`ClassicalCondition`>& cbits, :ref:`QProg`& prog ); bool :target:`binaryQProgDataParse`( :ref:`QuantumMachine`* qm, const std::vector& data, :ref:`QVec`& qubits, std::vector<:ref:`ClassicalCondition`>& cbits, :ref:`QProg`& prog ); bool :ref:`transformBinaryDataToQProg`( :ref:`QuantumMachine`* qm, const std::vector& data, :ref:`QVec`& qubits, std::vector<:ref:`ClassicalCondition`>& cbits, :ref:`QProg`& prog ); bool :ref:`transformBinaryDataToQProg`(:ref:`QuantumMachine`* qm, const std::string& filename, :ref:`QVec`& qubits, std::vector<:ref:`ClassicalCondition`>& cbits, :ref:`QProg`& prog); bool :ref:`convert_binary_data_to_qprog`( :ref:`QuantumMachine`* qm, const std::vector& data, :ref:`QVec`& qubits, std::vector<:ref:`ClassicalCondition`>& cbits, :ref:`QProg`& prog ); bool :ref:`convert_binary_data_to_qprog`(:ref:`QuantumMachine`* qm, const std::string& filename, :ref:`QVec`& qubits, std::vector<:ref:`ClassicalCondition`>& cbits, :ref:`QProg`& prog); std::vector :ref:`transformQProgToBinary`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm); void :target:`storeQProgInBinary`( :ref:`QProg`& prog, :ref:`QuantumMachine`* qm, const std::string& filename ); void :ref:`transformQProgToBinary`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm, const std::string& filename); std::vector :ref:`convert_qprog_to_binary`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm); void :ref:`convert_qprog_to_binary`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm, const std::string& filename); template std::string :ref:`transformQProgToOriginIR`(_Ty& node, :ref:`QuantumMachine`* machine); template std::string :ref:`convert_qprog_to_originir`(_Ty& node, :ref:`QuantumMachine`* machine); void :ref:`write_to_originir_file`(:ref:`QProg` prog, :ref:`QuantumMachine`* qvm, const std::string file_name); std::string :ref:`convert_qprog_to_qasm`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm); void :ref:`write_to_qasm_file`(:ref:`QProg` prog, :ref:`QuantumMachine`* qvm, const std::string file_name); std::string :ref:`transformQProgToQuil`(:ref:`QProg`&, :ref:`QuantumMachine`* quantum_machine); std::string :ref:`convert_qprog_to_quil`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm); std::vector<:ref:`ClassicalCondition`> :ref:`transformQRunesToQProg`(std::string, :ref:`QProg`&, :ref:`QuantumMachine`*); void :ref:`quantum_chip_adapter`( :ref:`QProg`& prog, :ref:`QuantumMachine`* quantum_machine, :ref:`QVec`& new_qvec, bool b_mapping = true, const std::string config_data = :ref:`CONFIG_PATH` ); void :target:`quantum_chip_adapter`( :ref:`QCircuit`& cir, :ref:`QuantumMachine`* quantum_machine, :ref:`QVec`& new_qvec, bool b_mapping = true, const std::string config_data = :ref:`CONFIG_PATH` ); std::map :ref:`double_gate_xeb`( :ref:`NoiseQVM`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& range, int num_circuits, int shots, :ref:`GateType` gt = :ref:`GateType::CZ_GATE` ); std::map :ref:`double_gate_xeb`( :ref:`QCloudMachine`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& range, int num_circuits, int shots, :ref:`GateType` gt = :ref:`GateType::CZ_GATE` ); bool :ref:`judge_prog_operate_target_qubts`(:ref:`QProg` prog, const :ref:`QCircuitParam`& cir_param, const std::vector& qubits_vec); :ref:`QCircuit` :target:`random_kak_qcircuit`( :ref:`Qubit`* in_qubit1, :ref:`Qubit`* in_qubit2 ); int :ref:`arbitraryRotationMetadataValidity`(std::vector& gates, std::vector& valid_gates); int :ref:`doubleContinuousMetadataValidity`(std::vector& gates, std::vector& valid_gates); int :ref:`singleContinuousAndDiscreteMetadataValidity`(std::vector& gates, std::vector& valid_gates); int :ref:`doubleDiscreteMetadataValidity`(std::vector& gates, std::vector& valid_gates); int :ref:`doubleGateMetadataValidity`(std::vector& gates, std::vector& valid_gates); int :ref:`validateSingleQGateType`(std::vector& gates, std::vector& valid_gates); int :ref:`validateDoubleQGateType`(std::vector& gates, std::vector& valid_gates); bool :ref:`isMatchTopology`(const :ref:`QGate`& gate, const std::vector>& vecTopoSt); std::string :ref:`getAdjacentQGateType`(:ref:`QProg` prog, :ref:`NodeIter`& nodeItr, std::vector<:ref:`NodeInfo`>& adjacentNodes); bool :ref:`isSwappable`(:ref:`QProg` prog, :ref:`NodeIter`& nodeItr1, :ref:`NodeIter`& nodeItr2); bool :ref:`isSupportedGateType`(const :ref:`NodeIter`& nodeItr); :ref:`QStat` :ref:`getCircuitMatrix`( :ref:`QProg` srcProg, const bool b_bid_endian = false, const :ref:`NodeIter` nodeItrStart = :ref:`NodeIter`(), const :ref:`NodeIter` nodeItrEnd = :ref:`NodeIter`() ); void :ref:`pickUpNode`( :ref:`QProg`& outPutProg, :ref:`QProg` srcProg, const std::vector<:ref:`NodeType`> reject_node_types, const :ref:`NodeIter` nodeItrStart = :ref:`NodeIter`(), const :ref:`NodeIter` nodeItrEnd = :ref:`NodeIter`(), bool bDagger = false ); size_t :ref:`get_all_used_qubits`(:ref:`QProg` prog, std::vector& vecQuBitsInUse); size_t :target:`get_all_used_qubits`( :ref:`QProg` prog, :ref:`QVec`& vecQuBitsInUse ); size_t :ref:`get_all_used_class_bits`(:ref:`QProg` prog, std::vector& vecClBitsInUse); size_t :ref:`get_measure_info`(:ref:`QProg` prog, std::vector>& measure_info); std::string :ref:`printAllNodeType`(:ref:`QProg` prog); void :ref:`get_gate_parameter`(std::shared_ptr<:ref:`AbstractQGateNode`> pGate, std::string& para_str); std::vector :target:`get_gate_parameter`(std::shared_ptr<:ref:`AbstractQGateNode`> pGate); bool :ref:`check_dagger`(std::shared_ptr<:ref:`AbstractQGateNode`> p_gate, const bool& b_dagger); template size_t :target:`getUnSupportQGateNumber`( _Ty node, const std::vector>& gates ); template size_t :ref:`getUnsupportQGateNum`( _Ty node, const std::vector>& gates ); template size_t :target:`getQGateNumber`(_Ty& node); template size_t :ref:`getQGateNum`(_Ty& node); size_t :ref:`getQProgClockCycle`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm, bool optimize = false); size_t :ref:`get_qprog_clock_cycle`(:ref:`QProg`& prog, :ref:`QuantumMachine`* qm, bool optimize = false); size_t :ref:`calculate_quantum_volume`( :ref:`NoiseQVM`* qvm, std::vector> qubit_lists, int ntrials, int shots = 1000 ); size_t :ref:`calculate_quantum_volume`( :ref:`QCloudMachine`* qvm, std::vector> qubit_lists, int ntrials, int shots = 1000 ); std::map :ref:`single_qubit_rb`( :ref:`NoiseQVM`* qvm, :ref:`Qubit`* qbit, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ); std::map :ref:`double_qubit_rb`( :ref:`NoiseQVM`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ); std::map :ref:`single_qubit_rb`( :ref:`QCloudMachine`* qvm, :ref:`Qubit`* qbit, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ); std::map :ref:`double_qubit_rb`( :ref:`QCloudMachine`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ); std::string :ref:`UnicodeToUTF8`(const std::wstring& wstr); std::wstring :ref:`utf8ToWstring`(const std::string& str); std::string :ref:`ulongToUtf8`(unsigned long val); void :ref:`initConsole`(); int :target:`get_wide_char_pos`( const std::string& str, int start_pos ); void :target:`utf8_fit_to_gbk`(std::string& utf8_str); std::string :target:`fit_to_gbk`(std::string& utf8_str); std::string :ref:`draw_qprog`( :ref:`QProg` prog, uint32_t length = 100, bool b_out_put_to_file = false, const :ref:`NodeIter` itr_start = :ref:`NodeIter`(), const :ref:`NodeIter` itr_end = :ref:`NodeIter`() ); std::string :target:`draw_qprog`( :ref:`QProg` prog, :ref:`LayeredTopoSeq`& m_layer_info, uint32_t length = 100, bool b_out_put_to_file = false ); std::string :ref:`draw_qprog_with_clock`( :ref:`QProg` prog, const std::string config_data = :ref:`CONFIG_PATH`, uint32_t length = 100, bool b_out_put_to_file = false, const :ref:`NodeIter` itr_start = :ref:`NodeIter`(), const :ref:`NodeIter` itr_end = :ref:`NodeIter`() ); std::ostream& :ref:`operator <<` (std::ostream& out, :ref:`QProg` prog); :ref:`QProg` :ref:`qcodar_match_by_simple_type`(:ref:`QProg` prog, :ref:`QVec`& qv, :ref:`QuantumMachine`* machine, size_t m = 2, size_t n = 4, size_t run_times = 5); } // namespace QPanda .. _details-namespace_q_panda: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Typedefs -------- .. index:: pair: typedef; MetadataValidity_cb .. _doxid-namespace_q_panda_1a702b41a7cbaaed0e602ffdd3f2511317: .. ref-code-block:: cpp :class: doxyrest-title-code-block typedef std::function&, std::vector&)> MetadataValidity_cb typedef MetadataValidity_cb that add all functions of metadata validity Global Variables ---------------- .. index:: pair: variable; kInfinite .. _doxid-namespace_q_panda_1ac9fc71c9a8eeab90084ef39bbcf3d1b9: .. ref-code-block:: cpp :class: doxyrest-title-code-block const int kInfinite = 0xffff Int infinite. .. index:: pair: variable; kError .. _doxid-namespace_q_panda_1a5412d3664a88fc95732e34ff8dd4cd57: .. ref-code-block:: cpp :class: doxyrest-title-code-block const int kError = -1 Error identifier. Global Functions ---------------- .. index:: pair: function; BravyiKitaevTransform .. _doxid-namespace_q_panda_1afedd09bfbf8604cc573d0f1aa18235fe: .. ref-code-block:: cpp :class: doxyrest-title-code-block DLLEXPORT :ref:`PauliOperator` BravyiKitaevTransform( const :ref:`FermionOperator`& fermion, std::vector BK ) BravyiKitaev transform from FermionOperator to PauliOperator. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - FermionOperator& - fermion operator * - std::vector - BK .. rubric:: Returns: PauliOperator .. rubric:: See also: :ref:`FermionOperator ` :ref:`PauliOperator ` .. index:: pair: function; operator+ .. _doxid-namespace_q_panda_1a79f9ba0093102c6960f516287b008a46: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator + (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator +. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - :ref:`ClassicalCondition ` type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator+ .. _doxid-namespace_q_panda_1aded49dbb459e1f542d1280eb8397e49f: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator + (:ref:`ClassicalCondition` left_operand, :ref:`ClassicalCondition` right_operand) Uverload operator +. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator+ .. _doxid-namespace_q_panda_1aa8cedabac34fe21ae12b018e42baf768: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator + (:ref:`ClassicalCondition` left_operand, :ref:`cbit_size_t` right_operand) Overload operator +. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator- .. _doxid-namespace_q_panda_1a5fec65b0613f12a6f06fd2965a01d26b: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator - (:ref:`ClassicalCondition` left_operand, :ref:`ClassicalCondition` right_operand) Overload operator -. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator- .. _doxid-namespace_q_panda_1a8d5fea538033ed9d3ac24401aa14e087: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator - (:ref:`ClassicalCondition` left_operand, :ref:`cbit_size_t` right_operand) Overload operator -. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator- .. _doxid-namespace_q_panda_1ac5923717dd7d1a73d01f92871810c00a: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator - (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator -. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator* .. _doxid-namespace_q_panda_1ac6a456742e3549447b5e8bb19fd72b36: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator * (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator \*. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator* .. _doxid-namespace_q_panda_1a18356d1a02aa870b69d0c5f915e84069: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator * (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator \*. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator* .. _doxid-namespace_q_panda_1a6fab8cd22d0e5e4478b16b6196bc29ce: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator * (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator -. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator/ .. _doxid-namespace_q_panda_1af85c9ed743b10e12397b3b4104d1225c: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator/ (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator /. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator/ .. _doxid-namespace_q_panda_1a74a5972004b3c74a1261bd4968bdbd30: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator/ (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator /. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator/ .. _doxid-namespace_q_panda_1a17cd104975ee9939997dad2c86785dfb: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator/ (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator /. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator== .. _doxid-namespace_q_panda_1aa9297f3e011a704952923a239ed485e6: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator == (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator ==. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator== .. _doxid-namespace_q_panda_1a22eae2f3c1f05e1fee911486b7a7fa4e: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator == (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator ==. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator== .. _doxid-namespace_q_panda_1ae4ffce30cd5834bfa72cf60791e43ac2: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator == (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator ==. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator!= .. _doxid-namespace_q_panda_1afa028caf35a9d9e084dbd9afa8e264fe: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator != (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator !=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator!= .. _doxid-namespace_q_panda_1ae7aa69e58e9f257d5f07bbad7560115f: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator != (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator !=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator!= .. _doxid-namespace_q_panda_1ac28a7de2c7ade1c51a36590f4046b4fc: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator != (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` classical_cond) Overload operator !=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator&& .. _doxid-namespace_q_panda_1a0622629da6582f9db3b4859db6e9c71d: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator && (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator &&. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator&& .. _doxid-namespace_q_panda_1a146832792072501ef6f8c69f9394fd8a: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator && (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator &&. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator&& .. _doxid-namespace_q_panda_1ae3cc8a3d921c0d9ca686f3c3deb04606: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator && (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` classical_cond) Overload operator &&. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator|| .. _doxid-namespace_q_panda_1a90c5d18d15b8e3fe96ef21f38eff1ee9: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator|| (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator \|\|. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator|| .. _doxid-namespace_q_panda_1a1b70c6c23572784848a181f2309a4d78: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator|| (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator \|\|. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator|| .. _doxid-namespace_q_panda_1a55ca90e077299a68ef87191540cc086a: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator|| (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` classical_cond) Overload operator \|\|. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator> .. _doxid-namespace_q_panda_1acf5b980b8cfd9452873c985f67806811: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator > (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator > .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator> .. _doxid-namespace_q_panda_1a00e9365fb4e4f165aa62225e4cc9ba8b: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator > (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator > .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator> .. _doxid-namespace_q_panda_1a5f1847279db90cc7f6c8f2d961962c5b: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator > (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator > .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator>= .. _doxid-namespace_q_panda_1a00bdd8d5aa2957ea3fc00b9795d87d87: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator >= (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator >=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator>= .. _doxid-namespace_q_panda_1a8966318840d7a56babd9c266c4c9af62: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator >= (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator >=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator>= .. _doxid-namespace_q_panda_1a5ff46a34486693c3ca936313cde32c84: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator >= (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator >=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator< .. _doxid-namespace_q_panda_1ad854327d50cdac2935994d88729b0839: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator < (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator <. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator< .. _doxid-namespace_q_panda_1a76d5f1bf63f25f024dc5270f39f8665f: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator < (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator <. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator< .. _doxid-namespace_q_panda_1a5851cfdf3eaed882d2778100f0e4fa51: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator < (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator <. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator<= .. _doxid-namespace_q_panda_1a695273f4329fcab26841425707e6e658: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator <= (:ref:`ClassicalCondition`, :ref:`ClassicalCondition`) Overload operator <=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator<= .. _doxid-namespace_q_panda_1a4ccd295b1fcbda29af2683acc49f4fa2: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator <= (:ref:`ClassicalCondition`, :ref:`cbit_size_t`) Overload operator <=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - left_operand - left operand * - right_operand - cbit_size_t type right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator<= .. _doxid-namespace_q_panda_1ae650e6b11b8821ac1127be8eda6f77d0: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator <= (:ref:`cbit_size_t` value, :ref:`ClassicalCondition` class_cond) Overload operator <=. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - value - cbit_size_t type left operand * - class_cond - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; operator! .. _doxid-namespace_q_panda_1ac1b69a3a29906767c863d992c1cd1f0c: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`ClassicalCondition` operator ! (:ref:`ClassicalCondition`) Overload operator ! .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - right_operand - right operand .. rubric:: Returns: :ref:`ClassicalCondition ` .. index:: pair: function; iSWAP .. _doxid-namespace_q_panda_1a8ec185e6e71d8677a8c67a1a7da94961: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`QGate` iSWAP(:ref:`Qubit`* targitBit_fisrt, :ref:`Qubit`* targitBit_second) Construct a new quantum iSWAP gate. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - Qubit\* - control qubit * - Qubit\* - target qubit .. rubric:: Returns: :ref:`QPanda::QGate ` quantum gate .. index:: pair: function; iSWAP .. _doxid-namespace_q_panda_1a868cd0394d58af4bab51de17d3a226a2: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`QGate` iSWAP(int control_qaddr, int target_qaddr) Construct a new quantum iSWAP gate. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - int - qaddr control qubit phy addr * - int - qaddr target qubit phy addr .. rubric:: Returns: :ref:`QPanda::QGate ` quantum gate .. index:: pair: function; get_qubit_by_phyaddr .. _doxid-namespace_q_panda_1a5645096c0ab71b397fa93d6933c82af9: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`Qubit`* get_qubit_by_phyaddr(int qaddr) Get :ref:`Qubit ` by physics addr. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - int - qaddr target qubit phy addr .. rubric:: Returns: Qubit\* .. index:: pair: function; get_qubits_by_phyaddrs .. _doxid-namespace_q_panda_1aeec6b672b6907b444babc546f21f2f80: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`QVec` get_qubits_by_phyaddrs(const std::vector& qaddrs) Get :ref:`Qubit ` vector by physics addr vector. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - const - std::vector& qubits physical address vector .. rubric:: Returns: Qubit\* .. index:: pair: function; double_gate_xeb .. _doxid-namespace_q_panda_1a8a78e7043598a0eb5fd5260eae5a8086: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::map double_gate_xeb( :ref:`NoiseQVM`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& range, int num_circuits, int shots, :ref:`GateType` gt = :ref:`GateType::CZ_GATE` ) calculate double gate xeb .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NoiseQVM\* - noise quantum machine * - Qubit\* - qubit0 * - Qubit\* - qubit1 * - const - std::vector& number of layer * - int - number of circuit per layer * - int - run number * - GateType - gate type .. rubric:: Returns: std::map xeb result of each layer .. index:: pair: function; double_gate_xeb .. _doxid-namespace_q_panda_1a4e6719599fa5f593b9bf9b6a0e4adb4c: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::map double_gate_xeb( :ref:`QCloudMachine`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& range, int num_circuits, int shots, :ref:`GateType` gt = :ref:`GateType::CZ_GATE` ) calculate double gate xeb .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QCloudMachine\* - cloud quantum machine * - Qubit\* - qubit0 * - Qubit\* - qubit1 * - const - std::vector& number of layer * - int - number of circuit per layer * - int - run number * - GateType - gate type .. rubric:: Returns: std::map xeb result of each layer .. index:: pair: function; judge_prog_operate_target_qubts .. _doxid-namespace_q_panda_1a79d9a20e217250f8656d288561d83400: .. ref-code-block:: cpp :class: doxyrest-title-code-block bool judge_prog_operate_target_qubts( :ref:`QProg` prog, const :ref:`QCircuitParam`& cir_param, const std::vector& qubits_vec ) Judge whether the prog is related to the target qubits. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QProg ` - the target prog * - cir_param& - :ref:`QCircuit ` param * - std::vector& - the appointed qubits vector .. rubric:: Returns: if the prog have operated any qubit in qubits_vec return true, or else return false .. index:: pair: function; validateDoubleQGateType .. _doxid-namespace_q_panda_1a9cbe217c5ed732b605e0b9bf6fe862c7: .. ref-code-block:: cpp :class: doxyrest-title-code-block int validateDoubleQGateType( std::vector& gates, std::vector& valid_gates ) Verify the validity of double quantum gates. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::vector& - the gates is judged * - std::vector& - output the valid gates .. rubric:: Returns: int double quantum gate type .. index:: pair: function; getUnsupportQGateNum .. _doxid-namespace_q_panda_1a33cbad3ede8ec096606f502b412ddc54: .. ref-code-block:: cpp :class: doxyrest-title-code-block template size_t getUnsupportQGateNum( _Ty node, const std::vector>& gates ) Count quantum program unsupported gate numner. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - _Ty& - quantum program, quantum circuit, quantum while or quantum if * - const - std::vector>& support gates .. rubric:: Returns: size_t Unsupported :ref:`QGate ` number .. index:: pair: function; calculate_quantum_volume .. _doxid-namespace_q_panda_1a50fd844befda5866d03bec17f69bad29: .. ref-code-block:: cpp :class: doxyrest-title-code-block size_t calculate_quantum_volume( :ref:`NoiseQVM`* qvm, std::vector> qubit_lists, int ntrials, int shots = 1000 ) calculate quantum volume .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NoiseQVM\* - noise quantum machine * - std::vector - > qubit_lists, eg: {{1,2}, {1,2,3,4,5}} * - const - std::vector& number of layer * - int - number of random iterations * - int - shots .. rubric:: Returns: size_t quantum volume .. index:: pair: function; calculate_quantum_volume .. _doxid-namespace_q_panda_1ad528da9036d830df40591fd1363712e0: .. ref-code-block:: cpp :class: doxyrest-title-code-block size_t calculate_quantum_volume( :ref:`QCloudMachine`* qvm, std::vector> qubit_lists, int ntrials, int shots = 1000 ) calculate quantum volume .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QCloudMachine\* - real chip * - std::vector - > qubit_lists, eg: {{1,2}, {1,2,3,4,5}} * - const - std::vector& number of layer * - int - number of random iterations * - int - shots .. rubric:: Returns: size_t quantum volume .. index:: pair: function; single_qubit_rb .. _doxid-namespace_q_panda_1a2af4f14425adb140af312c8531077264: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::map single_qubit_rb( :ref:`NoiseQVM`* qvm, :ref:`Qubit`* qbit, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ) single gate rb experiment .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NoiseQVM\* - noise quantum machine * - Qubit\* - qubit * - const - std::vector& number of layer * - int - number of circuit per layer * - int - run number * - const - std::vector interleaved gates .. rubric:: Returns: std::map rb result of each layer .. index:: pair: function; double_qubit_rb .. _doxid-namespace_q_panda_1a76f77daabc6da7dff74434eccecec9e8: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::map double_qubit_rb( :ref:`NoiseQVM`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ) single gate rb experiment .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NoiseQVM\* - noise quantum machine * - Qubit\* - qubit0 * - Qubit\* - qubit1 * - const - std::vector& number of layer * - int - number of circuit per layer * - int - run number * - const - std::vector interleaved gates .. rubric:: Returns: std::map rb result of each layer .. index:: pair: function; single_qubit_rb .. _doxid-namespace_q_panda_1a43a7e21182e88751a06c6fa076610ebc: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::map single_qubit_rb( :ref:`QCloudMachine`* qvm, :ref:`Qubit`* qbit, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ) single gate rb experiment .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QCloudMachine\* - cloud quantum machine * - Qubit\* - qubit * - const - std::vector& number of layer * - int - number of circuit per layer * - int - run number * - const - std::vector interleaved gates .. rubric:: Returns: std::map rb result of each layer .. index:: pair: function; double_qubit_rb .. _doxid-namespace_q_panda_1a3a690fb5120b29b05abc6b7161c4119a: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::map double_qubit_rb( :ref:`QCloudMachine`* qvm, :ref:`Qubit`* qbit0, :ref:`Qubit`* qbit1, const std::vector& clifford_range, int num_circuits, int shots, const std::vector<:ref:`QGate`>& interleaved_gates = {} ) single gate rb experiment .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QCloudMachine\* - cloud quantum machine * - Qubit\* - qubit0 * - Qubit\* - qubit1 * - const - std::vector& number of layer * - int - number of circuit per layer * - int - run number * - const - std::vector interleaved gates .. rubric:: Returns: std::map rb result of each layer .. index:: pair: function; UnicodeToUTF8 .. _doxid-namespace_q_panda_1a2f8937555b21b0f5386dd1b9600d5fff: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::string UnicodeToUTF8(const std::wstring& wstr) convert unicode string to UTF8 string .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::wstring& - the source wstring encoded by Unicode .. rubric:: Returns: string Converted String .. index:: pair: function; utf8ToWstring .. _doxid-namespace_q_panda_1a6faca68de87292f58a9610c14319c6a6: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::wstring utf8ToWstring(const std::string& str) convert UTF8 string to wide string .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::string& - the source string .. rubric:: Returns: wstring Converted wide String .. index:: pair: function; ulongToUtf8 .. _doxid-namespace_q_panda_1ab1858b9fa9df505290bfc2fbbc4a8340: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::string ulongToUtf8(unsigned long val) convert unsigned long to string .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - unsigned long - the source val .. rubric:: Returns: std::string Converted string .. index:: pair: function; initConsole .. _doxid-namespace_q_panda_1ad53087d7c6fb017694c54a34aad3ca5e: .. ref-code-block:: cpp :class: doxyrest-title-code-block void initConsole() set windows console to utf-8 encode