.. index:: pair: class; QPUImpl .. _doxid-class_q_p_u_impl: class QPUImpl ============= .. toctree:: :hidden: Overview ~~~~~~~~ QPU implementation base class. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class QPUImpl { public: // methods virtual bool :target:`qubitMeasure`(size_t qn) = 0; virtual :ref:`QError` :target:`pMeasure`( :ref:`Qnum`& qnum, :ref:`prob_vec`& mResult ) = 0; virtual :ref:`QError` :target:`initState`( size_t head_rank, size_t rank_size, size_t qubit_num ) = 0; virtual :ref:`QError` :target:`initState`( size_t qubit_num, const :ref:`QStat`& state = {} ) = 0; virtual :ref:`QError` :ref:`unitarySingleQubitGate`(size_t qn, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType`) = 0; virtual :ref:`QError` :ref:`controlunitarySingleQubitGate`(size_t qn, :ref:`Qnum`& qnum, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType`) = 0; virtual :ref:`QError` :ref:`unitaryDoubleQubitGate`(size_t qn_0, size_t qn_1, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType`) = 0; virtual :ref:`QError` :ref:`controlunitaryDoubleQubitGate`(size_t qn_0, size_t qn_1, :ref:`Qnum`& qnum, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType`) = 0; virtual :ref:`QStat` :ref:`getQState`() = 0; virtual void :target:`set_random_engine`(:ref:`RandomEngine`* rng); virtual double :target:`get_random_double`(); virtual :ref:`QError` :ref:`Reset`(size_t qn) = 0; }; // direct descendants class :ref:`CPUImplQPU`; class :ref:`CPUImplQPUSingleThread`; class :ref:`DistributedFullAmplitudeEngine`; class :ref:`NoisyCPUImplQPU`; class :ref:`MPSImplQPU`; .. _details-class_q_p_u_impl: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ QPU implementation base class. Methods ------- .. index:: pair: function; unitarySingleQubitGate .. _doxid-class_q_p_u_impl_1a5d4651b69e9ddcf7f3180b577a80ea22: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QError` unitarySingleQubitGate(size_t qn, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType`) = 0 unitary single qubit gate .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - qubit address * - QStat& - matrix * - bool - state of conjugate * - GateType - gate type .. rubric:: Returns: QError .. index:: pair: function; controlunitarySingleQubitGate .. _doxid-class_q_p_u_impl_1ad1d0629c91a42e06e079d6d6c215c0a9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QError` controlunitarySingleQubitGate( size_t qn, :ref:`Qnum`& qnum, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType` ) = 0 controlunitary single qubit gate .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - qubit address * - Qnum& - control qubit addresses * - QStat - & matrix * - bool - state of conjugate * - GateType - gate type .. rubric:: Returns: QError .. index:: pair: function; unitaryDoubleQubitGate .. _doxid-class_q_p_u_impl_1ad5f00e8ccf36ca66f48f4c63b3650e61: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QError` unitaryDoubleQubitGate( size_t qn_0, size_t qn_1, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType` ) = 0 unitary double qubit gate .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - first qubit address * - size_t - second qubit address * - QStat& - matrix * - bool - state of conjugate * - GateType - gate type .. rubric:: Returns: QError .. index:: pair: function; controlunitaryDoubleQubitGate .. _doxid-class_q_p_u_impl_1ac164d4305076d2d34f61997ef63a1f34: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QError` controlunitaryDoubleQubitGate( size_t qn_0, size_t qn_1, :ref:`Qnum`& qnum, :ref:`QStat`& matrix, bool isConjugate, :ref:`GateType` ) = 0 controlunitary double qubit gate .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - first qubit address * - size_t - second qubit address * - Qnum& - control qubit addresses * - QStat& - quantum states * - bool - state of conjugate * - GateType - gate type .. rubric:: Returns: QError .. index:: pair: function; getQState .. _doxid-class_q_p_u_impl_1aa4152648b4001296305ee546a1136abc: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QStat` getQState() = 0 get quantum states .. index:: pair: function; Reset .. _doxid-class_q_p_u_impl_1a9087cb5109b90f3215093165b11b4218: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`QError` Reset(size_t qn) = 0 reset qubit .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - size_t - qubit address