ó
    Óz	ig
  ã                  óB   • S r SSKJr  SSKJrJr   S       SS jjrg)z7Synthesis for multiple-control, multiple-target X Gate.é    )Úannotations)ÚQuantumCircuitÚQuantumRegisterNc                óh  • [        U S5      n[        US5      n[        X45      nU S:X  a  UR                  US   /U-  XBS9  U$ [        US-
  SS5       H  nUR                  XFS-
     XF   5        M     UR	                  X4S   US9  [        SU5       H  nUR                  XFS-
     XF   5        M     U$ )uØ  Synthesize MCMT X gate.

This uses a special circuit structure that is efficient for MCMT X gates. It does not require
any ancillary qubits and benefits from efficient MCX decompositions.

E.g. a 3-control, 3-target X gate will be synthesized as::

    q_0: â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â– â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
                      |
    q_1: â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â– â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
                      |
    q_2: â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â– â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
                    â”Œâ”€â”´â”€â”
    q_3: â”€â”€â”€â”€â”€â”€â”€â”€â– â”€â”€â”¤ X â”œâ”€â”€â– â”€â”€â”€â”€â”€â”€â”€
               â”Œâ”€â”´â”€â”â””â”€â”€â”€â”˜â”Œâ”€â”´â”€â”
    q_4: â”€â”€â”€â– â”€â”€â”¤ X â”œâ”€â”€â”€â”€â”€â”¤ X â”œâ”€â”€â– â”€â”€
          â”Œâ”€â”´â”€â”â””â”€â”€â”€â”˜     â””â”€â”€â”€â”˜â”Œâ”€â”´â”€â”
    q_5: â”€â”¤ X â”œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”¤ X â”œ
          â””â”€â”€â”€â”˜               â””â”€â”€â”€â”˜

Args:
    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 X gate.

ÚctrlÚtargé   r   )Ú
ctrl_stateéÿÿÿÿ)r   r   ÚcxÚrangeÚmcx)Únum_ctrl_qubitsÚnum_target_qubitsr
   Úqr_cÚqr_tÚqcÚis          Úf/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/synthesis/multi_controlled/mcmt_xgate.pyÚsynth_mcmt_xgater      sÇ   € ôB ˜?¨FÓ3€DÜÐ,¨fÓ5€DÜ	˜Ó	#€Bà˜!ÓØ
‰ˆtA‰wˆiÐ+Ñ+¨TˆÑIØˆ	ô Ð$ qÑ(¨!¨RÖ0ˆØ
‰ˆdq‘5‰k˜4™7Ö#ñ 1ð ‡FFˆ4a‘ Z€FÑ0ä1Ð'Ö(ˆØ
‰ˆdq‘5‰k˜4™7Ö#ñ )ð €Ió    )N)r   Úintr   r   r
   z
int | NoneÚreturnr   )Ú__doc__Ú
__future__r   Úqiskit.circuitr   r   r   © r   r   Ú<module>r      s<   ðñ >å "ç :ð LPð2Øð2Ø-0ð2Ø>Hð2àö2r   