ó
    Óz	i­
  ã                  óR   • S r SSKJr  SSKJrJr  SSKJr   S         SS jjrg)	z5Synthesis for multiple-control, multiple-target Gate.é    )Úannotations)ÚQuantumCircuitÚGate)Úmcmt_v_chainNc                óš   • U R                   S:w  a  [        S5      e[        R                  " [	        U R                  5       XU5      5      nU$ )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 â”œâ”€â”€â”€â”€â”€
              â””â”€â”€â”€â”˜          â””â”€â”€â”€â”˜

Args:
    gate: Base gate to be applied to the targets.
    num_ctrl_qubits: Number of control qubits.
    num_target_qubits: Number of target qubits.
    ctrl_state: Optional control state as an integer.

Returns:
    The synthesized circuit for the MCMT gate.

é   z/Only single qubit gates are supported as input.)Ú
num_qubitsÚ
ValueErrorr   Ú_from_circuit_datar   Úcontrol)ÚgateÚnum_ctrl_qubitsÚnum_target_qubitsÚ
ctrl_stateÚcircs        Úg/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/synthesis/multi_controlled/mcmt_vchain.pyÚsynth_mcmt_vchainr      sF   € ðD ‡˜!ÓÜÐJÓKÐKä×,Ò,ÜT—\‘\“^ _ÈÓTó€Dð €Kó    )N)
r   r   r   Úintr   r   r   z
int | NoneÚreturnr   )	Ú__doc__Ú
__future__r   Úqiskit.circuitr   r   Ú-qiskit._accelerate.synthesis.multi_controlledr   r   © r   r   Ú<module>r      sG   ðñ <å "ç /Ý Fð X\ð(Ø
ð(Ø!$ð(Ø9<ð(ØJTð(àö(r   