§
    º³ÙgŠ	  ã                  ó>   — d Z ddlmZ ddlmZmZ ddlmZ 	 ddd„ZdS )z5Synthesis for multiple-control, multiple-target Gate.é    )Úannotations)ÚQuantumCircuitÚGate)Úmcmt_v_chainNÚgater   Únum_ctrl_qubitsÚintÚnum_target_qubitsÚ
ctrl_stateú
int | NoneÚreturnr   c                ó¦   — | j         dk    rt          d¦  «        ‚t          j        t	          |                      ¦   «         |||¦  «        ¦  «        }|S )u<  Synthesize MCMT using a V-chain.

    This uses a chain of CCX gates, using ``num_ctrl_qubits - 1`` auxiliary qubits.

    For example, a 3-control and 2-target H gate will be synthesized as::

        q_0: ──■────────────────────────■──
               │                        │
        q_1: ──■────────────────────────■──
               │                        │
        q_2: ──┼────■──────────────■────┼──
               │    │  ┌───┐       │    │
        q_3: ──┼────┼──┤ H ├───────┼────┼──
               │    │  └─┬─┘┌───┐  │    │
        q_4: ──┼────┼────┼──┤ H ├──┼────┼──
             ┌─┴─┐  │    │  └─┬─┘  │  ┌─┴─┐
        q_5: ┤ X ├──■────┼────┼────■──┤ X ├
             └───┘┌─┴─┐  │    │  ┌─┴─┐└───┘
        q_6: ─────┤ X ├──■────■──┤ X ├─────
                  └───┘          └───┘

    é   z/Only single qubit gates are supported as input.)Ú
num_qubitsÚ
ValueErrorr   Ú_from_circuit_datar   Úcontrol)r   r   r
   r   Úcircs        úc/granary/edev/quantum/lib/python3.11/site-packages/qiskit/synthesis/multi_controlled/mcmt_vchain.pyÚsynth_mcmt_vchainr      sS   € ð2 „˜!ÒÐÝÐJÑKÔKÐKåÔ,Ý�T—\’\‘^”^ _Ð6GÈÑTÔTñô €Dð €Kó    )N)
r   r   r   r	   r
   r	   r   r   r   r   )	Ú__doc__Ú
__future__r   Úqiskit.circuitr   r   Ú-qiskit._accelerate.synthesis.multi_controlledr   r   © r   r   ú<module>r      ss   ðð <Ð ;à "Ð "Ð "Ð "Ð "Ð "à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø FÐ FÐ FÐ FÐ FÐ Fð X\ðð ð ð ð ð ð r   