§
    ¹³Ùgú  ã                   óŽ   — d Z ddlZddlmZ  G d„ de¦  «        Z G d„ de¦  «        Z G d„ d	e¦  «        Z G d
„ de¦  «        ZdS )zGlobal R gates.é    N)ÚQuantumCircuitc                   ó4   ‡ — e Zd ZdZdedededdfˆ fd„Zˆ xZS )ÚGRuŠ  Global R gate.

    **Circuit symbol:**

    .. code-block:: text

             â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”�
        q_0: â”¤0         â”œ
             â”‚          â”‚
        q_1: â”¤1 GR(Ï´,Ï†) â”œ
             â”‚          â”‚
        q_2: â”¤2         â”œ
             â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

    The global R gate is native to atomic systems (ion traps, cold neutrals). The global R
    can be applied to multiple qubits simultaneously.

    In the one-qubit case, this is equivalent to an R(theta, phi) operation,
    and is thus reduced to the RGate. The global R gate is a direct sum of R
    operations on all individual qubits.

    .. math::

        GR(\theta, \phi) = \exp(-i \sum_{i=1}^{n} (\cos(\phi)X_i + \sin(\phi)Y_i) \theta/2)

    **Expanded Circuit:**

    .. plot::
       :alt: Diagram illustrating the previously described circuit.

       from qiskit.circuit.library import GR
       from qiskit.visualization.library import _generate_circuit_library_visualization
       import numpy as np
       circuit = GR(num_qubits=3, theta=np.pi/4, phi=np.pi/2)
       _generate_circuit_library_visualization(circuit)

    Ú
num_qubitsÚthetaÚphiÚreturnNc                 ó  •— d|d›d|d›d�}t          ||¬¦  «        }|                     |||j        ¦  «         t          ¦   «                              ||¬¦  «         |                      |                     ¦   «         | j        ¦  «         dS )zÕCreate a new Global R (GR) gate.

        Args:
            num_qubits: number of qubits.
            theta: rotation angle about axis determined by phi
            phi: angle of rotation axis in xy-plane
        zGR(z.2fz, ú)©ÚnameN)r   ÚrÚqubitsÚsuperÚ__init__ÚappendÚto_gate)Úselfr   r   r   r   ÚcircuitÚ	__class__s         €úa/granary/edev/quantum/lib/python3.11/site-packages/qiskit/circuit/library/generalized_gates/gr.pyr   zGR.__init__:   s�   ø€ ð -�UÐ,Ð,Ð, #Ð,Ð,Ð,Ð,ˆÝ  °$Ð7Ñ7Ô7ˆØ�	Š	�%˜˜gœnÑ-Ô-Ð-å‰Œ×Ò˜¨$ÐÑ/Ô/Ð/Ø�Š�G—O’OÑ%Ô% t¤{Ñ3Ô3Ð3Ð3Ð3ó    ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚfloatr   Ú__classcell__©r   s   @r   r   r      sd   ø€ € € € € ð$ð $ðL4 3ð 4¨uð 4¸5ð 4ÀTð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r   r   c                   ó0   ‡ — e Zd ZdZdededdfˆ fd„Zˆ xZS )ÚGRXue  Global RX gate.

    **Circuit symbol:**

    .. code-block:: text

             â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”�
        q_0: â”¤0         â”œ
             â”‚          â”‚
        q_1: â”¤1  GRX(Ï´) â”œ
             â”‚          â”‚
        q_2: â”¤2         â”œ
             â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

    The global RX gate is native to atomic systems (ion traps, cold neutrals). The global RX
    can be applied to multiple qubits simultaneously.

    In the one-qubit case, this is equivalent to an RX(theta) operations,
    and is thus reduced to the RXGate. The global RX gate is a direct sum of RX
    operations on all individual qubits.

    .. math::

        GRX(\theta) = \exp(-i \sum_{i=1}^{n} X_i \theta/2)

    **Expanded Circuit:**

    .. plot::
       :alt: Diagram illustrating the previously described circuit.

        from qiskit.circuit.library import GRX
        from qiskit.visualization.library import _generate_circuit_library_visualization
        import numpy as np
        circuit = GRX(num_qubits=3, theta=np.pi/4)
        _generate_circuit_library_visualization(circuit)

    r   r   r	   Nc                 óP   •— t          ¦   «                              ||d¬¦  «         dS )z“Create a new Global RX (GRX) gate.

        Args:
            num_qubits: number of qubits.
            theta: rotation angle about x-axis
        r   ©r   N)r   r   ©r   r   r   r   s      €r   r   zGRX.__init__q   s*   ø€ õ 	‰Œ×Ò˜ U°ÐÑ2Ô2Ð2Ð2Ð2r   r   r!   s   @r   r#   r#   J   s]   ø€ € € € € ð$ð $ðL3 3ð 3¨uð 3¸ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3r   r#   c                   ó0   ‡ — e Zd ZdZdededdfˆ fd„Zˆ xZS )ÚGRYu_  Global RY gate.

    **Circuit symbol:**

    .. code-block:: text

             â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”�
        q_0: â”¤0         â”œ
             â”‚          â”‚
        q_1: â”¤1  GRY(Ï´) â”œ
             â”‚          â”‚
        q_2: â”¤2         â”œ
             â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

    The global RY gate is native to atomic systems (ion traps, cold neutrals). The global RY
    can be applied to multiple qubits simultaneously.

    In the one-qubit case, this is equivalent to an RY(theta) operation,
    and is thus reduced to the RYGate. The global RY gate is a direct sum of RY
    operations on all individual qubits.

    .. math::

        GRY(\theta) = \exp(-i \sum_{i=1}^{n} Y_i \theta/2)

    **Expanded Circuit:**

    .. plot::
       :alt: Diagram illustrating the previously described circuit.

       from qiskit.circuit.library import GRY
       from qiskit.visualization.library import _generate_circuit_library_visualization
       import numpy as np
       circuit = GRY(num_qubits=3, theta=np.pi/4)
       _generate_circuit_library_visualization(circuit)

    r   r   r	   Nc                 ój   •— t          ¦   «                              ||t          j        dz  ¬¦  «         dS )z“Create a new Global RY (GRY) gate.

        Args:
            num_qubits: number of qubits.
            theta: rotation angle about y-axis
        é   r%   N)r   r   ÚnpÚpir&   s      €r   r   zGRY.__init__¢   s0   ø€ õ 	‰Œ×Ò˜ Uµ´¸±	ÐÑ:Ô:Ð:Ð:Ð:r   r   r!   s   @r   r(   r(   {   s]   ø€ € € € € ð$ð $ðL; 3ð ;¨uð ;¸ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r   r(   c                   ó0   ‡ — e Zd ZdZdededdfˆ fd„Zˆ xZS )ÚGRZuU  Global RZ gate.

    **Circuit symbol:**

    .. code-block:: text

             â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”�
        q_0: â”¤0         â”œ
             â”‚          â”‚
        q_1: â”¤1  GRZ(Ï†) â”œ
             â”‚          â”‚
        q_2: â”¤2         â”œ
             â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜

    The global RZ gate is native to atomic systems (ion traps, cold neutrals). The global RZ
    can be applied to multiple qubits simultaneously.

    In the one-qubit case, this is equivalent to an RZ(phi) operation,
    and is thus reduced to the RZGate. The global RZ gate is a direct sum of RZ
    operations on all individual qubits.

    .. math::

        GRZ(\phi) = \exp(-i \sum_{i=1}^{n} Z_i \phi)

    **Expanded Circuit:**

    .. plot::
       :alt: Diagram illustrating the previously described circuit.

       from qiskit.circuit.library import GRZ
       from qiskit.visualization.library import _generate_circuit_library_visualization
       import numpy as np
       circuit = GRZ(num_qubits=3, phi=np.pi/2)
       _generate_circuit_library_visualization(circuit)

    r   r   r	   Nc                 ó„   •— t          ¦   «                              |d¬¦  «         |                      || j        ¦  «         dS )z‘Create a new Global RZ (GRZ) gate.

        Args:
            num_qubits: number of qubits.
            phi: rotation angle about z-axis
        Úgrzr   N)r   r   Úrzr   )r   r   r   r   s      €r   r   zGRZ.__init__Ó   s>   ø€ õ 	‰Œ×Ò˜¨%ÐÑ0Ô0Ð0Ø�Š��T”[Ñ!Ô!Ð!Ð!Ð!r   r   r!   s   @r   r.   r.   ¬   s]   ø€ € € € € ð$ð $ðL" 3ð "¨Uð "°tð "ð "ð "ð "ð "ð "ð "ð "ð "ð "r   r.   )	r   Únumpyr+   Úqiskit.circuit.quantumcircuitr   r   r#   r(   r.   © r   r   ú<module>r5      sà   ðð Ð à Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ð44ð 44ð 44ð 44ð 44ˆñ 44ô 44ð 44ðn.3ð .3ð .3ð .3ð .3ˆ"ñ .3ô .3ð .3ðb.;ð .;ð .;ð .;ð .;ˆ"ñ .;ô .;ð .;ðb/"ð /"ð /"ð /"ð /"ˆ.ñ /"ô /"ð /"ð /"ð /"r   