§
    fŠtjiG  ã                   ó´   — d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZ ddlmc mZ ddlmZmZmZ g d¢Zd	„ Zdd
„Zdd„Zd„ Zdd„Zdd„ZdS )zr
ltisys -- a collection of functions to convert linear time invariant systems
from one representation to another.
é    N)	Úr_ÚeyeÚ
atleast_2dÚpolyÚdotÚasarrayÚzerosÚarrayÚouter)Úlinalg)Úarray_namespaceÚxp_sizeé   )Útf2zpkÚzpk2tfÚ	normalize)Útf2ssÚabcd_normalizeÚss2tfÚzpk2ssÚss2zpkÚcont2discretec                 óà  — t          | |¦  «        \  } }t          | j        ¦  «        }|dk    rt          | g| j        ¦  «        } | j        d         }t          |¦  «        }||k    rd}t          |¦  «        ‚|dk    s|dk    rRt          g t          ¦  «        t          g t          ¦  «        t          g t          ¦  «        t          g t          ¦  «        fS t          j	        t          j
        | j        d         ||z
  f| j        ¬¦  «        | f¦  «        } | j        d         dk    rt          | dd…df         ¦  «        }nt          dggt          ¦  «        }|dk    ra|                     | j        ¦  «        }t          d¦  «        t          d|j        d         f¦  «        t          |j        d         df¦  «        |fS t          |dd…         g¦  «         }t          |t          |dz
  |dz
  ¦  «        f         }t          |dz
  d¦  «        }	| dd…dd…f         t          | dd…df         |dd…         ¦  «        z
  }
|                     |
j        d         |	j        d         f¦  «        }||	|
|fS )	a½  Transfer function to state-space representation.

    Parameters
    ----------
    num, den : array_like
        Sequences representing the coefficients of the numerator and
        denominator polynomials, in order of descending degree. The
        denominator needs to be at least as long as the numerator.

    Returns
    -------
    A, B, C, D : ndarray
        State space representation of the system, in controller canonical
        form.

    Examples
    --------
    Convert the transfer function:

    .. math:: H(s) = \frac{s^2 + 3s + 3}{s^2 + 2s + 1}

    >>> num = [1, 3, 3]
    >>> den = [1, 2, 1]

    to the state-space representation:

    .. math::

        \dot{\textbf{x}}(t) =
        \begin{bmatrix} -2 & -1 \\ 1 & 0 \end{bmatrix} \textbf{x}(t) +
        \begin{bmatrix} 1 \\ 0 \end{bmatrix} \textbf{u}(t) \\

        \textbf{y}(t) = \begin{bmatrix} 1 & 2 \end{bmatrix} \textbf{x}(t) +
        \begin{bmatrix} 1 \end{bmatrix} \textbf{u}(t)

    >>> from scipy.signal import tf2ss
    >>> A, B, C, D = tf2ss(num, den)
    >>> A
    array([[-2., -1.],
           [ 1.,  0.]])
    >>> B
    array([[ 1.],
           [ 0.]])
    >>> C
    array([[ 1.,  2.]])
    >>> D
    array([[ 1.]])
    r   z7Improper transfer function. `num` is longer than `den`.r   )ÚdtypeéÿÿÿÿN)r   r   é   )r   ÚlenÚshaper   r   Ú
ValueErrorr
   ÚfloatÚnpÚhstackr	   r   Úreshaper   r   r   )ÚnumÚdenÚnnÚMÚKÚmsgÚDÚfrowÚAÚBÚCs              úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/signal/_lti_conversion.pyr   r      sE  € õp ˜˜cÑ"Ô"�H€CˆÝ	ˆSŒY‰Œ€BØ	ˆQ‚w€wÝ�s�e˜SœYÑ'Ô'ˆØŒ	�!Œ€AÝˆC‰Œ€AØˆ1‚u€uØGˆÝ˜‰oŒoÐØˆA‚v€v��a’�Ý�b�%Ñ Ô ¥%¨­EÑ"2Ô"2µE¸"½eÑ4DÔ4DÝ�b�%Ñ Ô ð"ð 	"õ Œ)•R”X˜sœy¨œ|¨Q°©UÐ3¸3¼9ÐEÑEÔEÀsÐKÑ
LÔ
L€Cà
„y�„}�qÒÐÝ�s˜1˜1˜1˜a˜4”yÑ!Ô!ˆˆõ �A�3�%�ÑÔˆàˆA‚v€vØ�IŠI�c”iÑ Ô ˆå�f‘”�u a¨¬°¬ _Ñ5Ô5Ý�q”w˜q”z 1�oÑ&Ô&¨ð+ð 	+õ �3�q�r�r”7�)ÑÔÐ€DÝ
ˆ4•�Q˜‘U˜A ™EÑ"Ô"Ð"Ô#€AÝˆA�‰E�1‰Œ€AØˆAˆAˆAˆqˆrˆrˆEŒ
•U˜3˜q˜q˜q !˜tœ9 c¨!¨"¨"¤gÑ.Ô.Ñ.€AØ	�	Š	�1”7˜1”:˜qœw qœzÐ*Ñ+Ô+€Aàˆa��Aˆ:Ðó    c           	      óR  ‡— | €|€|€t          d¦  «        ‚|€|€t          d¦  «        ‚|€|€t          d¦  «        ‚t          | |||¦  «        Šˆfd„| |||fD ¦   «         \  } }}}| j        d         p|j        d         p|j        d         pd}|j        d         p|j        d         pd}|j        d         p|j        d         pd}t          | ¦  «        dk    r‰                     ||f¦  «        n| } t          |¦  «        dk    r‰                     ||f¦  «        n|}t          |¦  «        dk    r‰                     ||f¦  «        n|}t          |¦  «        dk    r‰                     ||f¦  «        n|}| j        ||fk    rt          d| j        › d	|› d
|› d�¦  «        ‚|j        ||fk    rt          d|j        › d	|› d
|› d�¦  «        ‚|j        ||fk    rt          d|j        › d	|› d
|› d�¦  «        ‚|j        ||fk    rt          d|j        › d	|› d
|› d�¦  «        ‚| |||fS )a×	  Check state-space matrices compatibility and ensure they are 2d arrays.

    Converts input matrices into two-dimensional arrays as needed. Then the dimensions
    n, q, p are determined by investigating the non-zero entries of the array shapes.
    If a parameter is ``None``, or has shape (0, 0), it is set to a
    zero-array of compatible shape. Finally, it is verified that all parameter shapes
    are compatible to each other. If that fails, a ``ValueError`` is raised. Note that
    the dimensions n, q, p are allowed to be zero.

    Parameters
    ----------
    A: array_like, optional
        Two-dimensional array of shape (n, n).
    B: array_like, optional
        Two-dimensional array of shape (n, p).
    C: array_like, optional
        Two-dimensional array of shape (q, n).
    D: array_like, optional
        Two-dimensional array of shape (q, p).

    Returns
    -------
    A, B, C, D : array
        State-space matrices as two-dimensional arrays.

    Notes
    -----
    The :ref:`tutorial_signal_state_space_representation` section of the
    :ref:`user_guide` presents the corresponding definitions of continuous-time and
    disrcete time state space systems.

    Raises
    ------
    ValueError
        If the dimensions n, q, or p could not be determined or if the shapes are
        incompatible with each other.

    See Also
    --------
    StateSpace: Linear Time Invariant system in state-space form.
    dlti: Discrete-time linear time invariant system base class.
    tf2ss: Transfer function to state-space representation.
    ss2tf: State-space to transfer function.
    ss2zpk: State-space representation to zero-pole-gain representation.
    cont2discrete: Transform a continuous to a discrete state-space system.

    Examples
    --------
    The following example demonstrates that the passed lists are converted into
    two-dimensional arrays:

    >>> from scipy.signal import abcd_normalize
    >>> AA, BB, CC, DD = abcd_normalize(A=[[1, 2], [3, 4]], B=[[-1], [5]],
    ...                                 C=[[4, 5]], D=2.5)
    >>> AA.shape, BB.shape, CC.shape, DD.shape
    ((2, 2), (2, 1), (1, 2), (1, 1))

    In the following, the missing parameter C is assumed to be an array of zeros
    with shape (1, 2):

    >>> from scipy.signal import abcd_normalize
    >>> AA, BB, CC, DD = abcd_normalize(A=[[1, 2], [3, 4]], B=[[-1], [5]], D=2.5)
    >>> AA.shape, BB.shape, CC.shape, DD.shape
    ((2, 2), (2, 1), (1, 2), (1, 1))
    >>> CC
    array([[0., 0.]])
    Nz9Dimension n is undefined for parameters A = B = C = None!z5Dimension p is undefined for parameters B = D = None!z5Dimension q is undefined for parameters C = D = None!c              3   ó˜   •K  — | ]D}|�)t          j        ‰                     |¦  «        d¬¦  «        n‰                     d¦  «        V — ŒEd S )Nr   )Úndim)r   r   )ÚxpxÚ
atleast_ndr   r	   )Ú.0ÚM_Úxps     €r/   ú	<genexpr>z!abcd_normalize.<locals>.<genexpr>Á   sf   øè è € ð ;ð ;Ø')ð =?¸N•#”. §¢¨B¡¤°aÐ8Ñ8Ô8Ð8Ø—(’(˜6Ñ"Ô"ð;ð ;ð ;ð ;ð ;ð ;r0   r   r   zParameter A has shape z but should be (z, z)!zParameter B has shape zParameter C has shape zParameter D has shape )r   r   r   r   r	   )r,   r-   r.   r*   ÚnÚpÚqr8   s          @r/   r   r   u   s¡  ø€ ðH 	€y�Q�Y 1 9ÝÐTÑUÔUÐUØ€y�Q�YÝÐPÑQÔQÐQØ€y�Q�YÝÐPÑQÔQÐQå	˜˜A˜q !Ñ	$Ô	$€Bð;ð ;ð ;ð ;Ø./°°A°q¨\ð;ñ ;ô ;�J€A€qˆ!ˆQð 	
Œ�Œ
Ð3�a”g˜a”jÐ3 A¤G¨A¤JÐ3°!€AØ	Œ�Œ
Ð%�a”g˜a”jÐ% A€AØ	Œ�Œ
Ð%�a”g˜a”jÐ% A€Aå# A™JœJ¨!šO˜Oˆ�Š�!�Q�ÑÔÐ°€AÝ# A™JœJ¨!šO˜Oˆ�Š�!�Q�ÑÔÐ°€AÝ# A™JœJ¨!šO˜Oˆ�Š�!�Q�ÑÔÐ°€AÝ# A™JœJ¨!šO˜Oˆ�Š�!�Q�ÑÔÐ°€Aà„w�1�a�&ÒÐÝÐU°!´'ÐUÐUÈ1ÐUÐUÐPQÐUÐUÐUÑVÔVÐVØ„w�1�a�&ÒÐÝÐU°!´'ÐUÐUÈ1ÐUÐUÐPQÐUÐUÐUÑVÔVÐVØ„w�1�a�&ÒÐÝÐU°!´'ÐUÐUÈ1ÐUÐUÐPQÐUÐUÐUÑVÔVÐVØ„w�1�a�&ÒÐÝÐU°!´'ÐUÐUÈ1ÐUÐUÐPQÐUÐUÐUÑVÔVÐVàˆa��Aˆ:Ðr0   c                 óö  — t          | |||¦  «        \  } }}}|j        \  }}||k    rt          d¦  «        ‚|dd…||dz   …f         }|dd…||dz   …f         }	 t          | ¦  «        }n# t          $ r d}Y nw xY w|j        dk    r;|j        dk    r0t          j        |¦  «        }|j        dk    r| j        dk    rg }||fS | j        d         }	| dd…df         |dd…df         z   |ddd…f         z   |z   dz   }
t          j        ||	dz   f|
j        ¦  «        }t          |¦  «        D ]M}t          ||dd…f         ¦  «        }t          | t          ||¦  «        z
  ¦  «        ||         dz
  |z  z   ||<   ŒN||fS )a  State-space to transfer function.

    A, B, C, D defines a linear state-space system with `p` inputs,
    `q` outputs, and `n` state variables.

    Parameters
    ----------
    A : array_like
        State (or system) matrix of shape ``(n, n)``
    B : array_like
        Input matrix of shape ``(n, p)``
    C : array_like
        Output matrix of shape ``(q, n)``
    D : array_like
        Feedthrough (or feedforward) matrix of shape ``(q, p)``
    input : int, optional
        For multiple-input systems, the index of the input to use.

    Returns
    -------
    num : 2-D ndarray
        Numerator(s) of the resulting transfer function(s). `num` has one row
        for each of the system's outputs. Each row is a sequence representation
        of the numerator polynomial.
    den : 1-D ndarray
        Denominator of the resulting transfer function(s). `den` is a sequence
        representation of the denominator polynomial.

    Examples
    --------
    Convert the state-space representation:

    .. math::

        \dot{\textbf{x}}(t) =
        \begin{bmatrix} -2 & -1 \\ 1 & 0 \end{bmatrix} \textbf{x}(t) +
        \begin{bmatrix} 1 \\ 0 \end{bmatrix} \textbf{u}(t) \\

        \textbf{y}(t) = \begin{bmatrix} 1 & 2 \end{bmatrix} \textbf{x}(t) +
        \begin{bmatrix} 1 \end{bmatrix} \textbf{u}(t)

    >>> A = [[-2, -1], [1, 0]]
    >>> B = [[1], [0]]  # 2-D column vector
    >>> C = [[1, 2]]    # 2-D row vector
    >>> D = 1

    to the transfer function:

    .. math:: H(s) = \frac{s^2 + 3s + 3}{s^2 + 2s + 1}

    >>> from scipy.signal import ss2tf
    >>> ss2tf(A, B, C, D)
    (array([[1., 3., 3.]]), array([ 1.,  2.,  1.]))
    z)System does not have the input specified.Nr   r   ç        )r   r   r   r   Úsizer!   ÚravelÚemptyr   Úranger   r   )r,   r-   r.   r*   ÚinputÚnoutÚninr%   r$   Ú
num_statesÚ	type_testÚkÚCks                r/   r   r   Ù   sÄ  € õt    1 a¨Ñ+Ô+�J€A€qˆ!ˆQà”�I€Dˆ#Ø�‚|€|ÝÐDÑEÔEÐEð 	
ˆ!ˆ!ˆ!ˆU�5˜1‘9ˆ_Ð
Ô€AØ	ˆ!ˆ!ˆ!ˆU�5˜1‘9ˆ_Ð
Ô€AðÝ�1‰gŒgˆˆøÝð ð ð Øˆˆˆðøøøð 	
Œ�!Šˆ˜!œ& Aš+˜+ÝŒh�q‰kŒkˆØŒF�aŠKˆK˜aœf¨šk˜kØˆCØ�Cˆxˆà”˜”€JØ�!�!�!�Q�$”˜!˜A˜A˜A˜q˜Dœ'Ñ! A a¨¨¨ d¤GÑ+¨aÑ/°#Ñ5€IÝ
Œ(�D˜* q™.Ð)¨9¬?Ñ
;Ô
;€CÝ�4‰[Œ[ð 9ð 9ˆÝ˜˜!˜Q˜Q˜Q˜$œÑ Ô ˆÝ�a�#˜a ™*œ*‘nÑ%Ô%¨¨1¬°©°SÑ(8Ñ8ˆˆA‰ˆà�ˆ8€Os   ÁA* Á*A9Á8A9c                 ó2   — t          t          | ||¦  «        Ž S )a:  Zero-pole-gain representation to state-space representation

    Parameters
    ----------
    z, p : sequence
        Zeros and poles.
    k : float
        System gain.

    Returns
    -------
    A, B, C, D : ndarray
        State space representation of the system, in controller canonical
        form.

    )r   r   )Úzr;   rH   s      r/   r   r   2  s   € õ" •&˜˜A˜q‘/”/Ð"Ð"r0   c           	      ó8   — t          t          | ||||¬¦  «        Ž S )aª  State-space representation to zero-pole-gain representation.

    A, B, C, D defines a linear state-space system with `p` inputs,
    `q` outputs, and `n` state variables.

    Parameters
    ----------
    A : array_like
        State (or system) matrix of shape ``(n, n)``
    B : array_like
        Input matrix of shape ``(n, p)``
    C : array_like
        Output matrix of shape ``(q, n)``
    D : array_like
        Feedthrough (or feedforward) matrix of shape ``(q, p)``
    input : int, optional
        For multiple-input systems, the index of the input to use.

    Returns
    -------
    z, p : sequence
        Zeros and poles.
    k : float
        System gain.

    )rC   )r   r   )r,   r-   r.   r*   rC   s        r/   r   r   F  s"   € õ6 •5˜˜A˜q !¨5Ð1Ñ1Ô1Ð2Ð2r0   Úzohc                 ó8
  — t          | d¦  «        r,t          | j        ¦  «        r|                      |||¬¦  «        S t          | ¦  «        dk    r[t	          t          | d         | d         ¦  «        |||¬¦  «        }t          |d         |d         |d         |d         ¦  «        |fz   S t          | ¦  «        dk    rbt	          t          | d         | d         | d         ¦  «        |||¬¦  «        }t          |d         |d         |d         |d         ¦  «        |fz   S t          | ¦  «        dk    r| \  }}}}nt          d	¦  «        ‚|d
k    r,|€t          d¦  «        ‚|dk     s|dk    rt          d¦  «        ‚|d
k    rèt          j        |j        d         ¦  «        ||z  |z  z
  }	t          j        |	t          j        |j        d         ¦  «        d|z
  |z  |z  z   ¦  «        }
t          j        |	||z  ¦  «        }t          j        |	                     ¦   «         |                     ¦   «         ¦  «        }|                     ¦   «         }||t          j        ||¦  «        z  z   }�n«|dk    s|dk    rt	          | |d
d¬¦  «        S |dk    s|dk    rt	          | |d
d¬¦  «        S |dk    rt	          | |d
d¬¦  «        S |dk    rþt          j        ||f¦  «        }t          j        t          j        |j        d         |j        d         f¦  «        t          j        |j        d         |j        d         f¦  «        f¦  «        }t          j        ||f¦  «        }t          j        ||z  ¦  «        }|d|j        d         …dd…f         }|dd…d|j        d         …f         }
|dd…|j        d         d…f         }|}|}�nP|dk    rã|j        d         }|j        d         }t          j        t          j        ||g¦  «        |z  t          j        |¦  «        ¦  «        }t%          ||d|z  z   f¦  «        }t          j        |g|gg¦  «        }t          j        |¦  «        }|d|…d|…f         }|d|…|||z   …f         }|d|…||z   d…f         }|}
||z
  ||z  z   }|}|||z  z   }ng|dk    rNt          j        |d¦  «        st          d¦  «        ‚t          j        ||z  ¦  «        }
|
|z  |z  }|}||z  |z  }nt          d|› d�¦  «        ‚|
||||fS )a\  
    Transform a continuous to a discrete state-space system.

    Parameters
    ----------
    system : a tuple describing the system or an instance of `lti`
        The following gives the number of elements in the tuple and
        the interpretation:

            * 1: (instance of `lti`)
            * 2: (num, den)
            * 3: (zeros, poles, gain)
            * 4: (A, B, C, D)

    dt : float
        The discretization time step.
    method : str, optional
        Which method to use:

            * gbt: generalized bilinear transformation
            * bilinear: Tustin's approximation ("gbt" with alpha=0.5)
            * euler: Euler (or forward differencing) method ("gbt" with alpha=0)
            * backward_diff: Backwards differencing ("gbt" with alpha=1.0)
            * zoh: zero-order hold (default)
            * foh: first-order hold (*versionadded: 1.3.0*)
            * impulse: equivalent impulse response (*versionadded: 1.3.0*)

    alpha : float within [0, 1], optional
        The generalized bilinear transformation weighting parameter, which
        should only be specified with method="gbt", and is ignored otherwise

    Returns
    -------
    sysd : tuple containing the discrete system
        Based on the input type, the output will be of the form

        * (num, den, dt)   for transfer function input
        * (zeros, poles, gain, dt)   for zeros-poles-gain input
        * (A, B, C, D, dt) for state-space system input

    Notes
    -----
    By default, the routine uses a Zero-Order Hold (zoh) method to perform
    the transformation. Alternatively, a generalized bilinear transformation
    may be used, which includes the common Tustin's bilinear approximation,
    an Euler's method technique, or a backwards differencing technique.

    The Zero-Order Hold (zoh) method is based on [1]_, the generalized bilinear
    approximation is based on [2]_ and [3]_, the First-Order Hold (foh) method
    is based on [4]_.

    References
    ----------
    .. [1] https://en.wikipedia.org/wiki/Discretization#Discretization_of_linear_state_space_models

    .. [2] http://techteach.no/publications/discretetime_signals_systems/discrete.pdf

    .. [3] G. Zhang, X. Chen, and T. Chen, Digital redesign via the generalized
        bilinear transformation, Int. J. Control, vol. 82, no. 4, pp. 741-754,
        2009.
        (https://www.mypolyuweb.hk/~magzhang/Research/ZCC09_IJC.pdf)

    .. [4] G. F. Franklin, J. D. Powell, and M. L. Workman, Digital control
        of dynamic systems, 3rd ed. Menlo Park, Calif: Addison-Wesley,
        pp. 204-206, 1998.

    Examples
    --------
    We can transform a continuous state-space system to a discrete one:

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy.signal import cont2discrete, lti, dlti, dstep

    Define a continuous state-space system.

    >>> A = np.array([[0, 1],[-10., -3]])
    >>> B = np.array([[0],[10.]])
    >>> C = np.array([[1., 0]])
    >>> D = np.array([[0.]])
    >>> l_system = lti(A, B, C, D)
    >>> t, x = l_system.step(T=np.linspace(0, 5, 100))
    >>> fig, ax = plt.subplots()
    >>> ax.plot(t, x, label='Continuous', linewidth=3)

    Transform it to a discrete state-space system using several methods.

    >>> dt = 0.1
    >>> for method in ['zoh', 'bilinear', 'euler', 'backward_diff', 'foh', 'impulse']:
    ...    d_system = cont2discrete((A, B, C, D), dt, method=method)
    ...    s, x_d = dstep(d_system)
    ...    ax.step(s, np.squeeze(x_d), label=method, where='post')
    >>> ax.axis([t[0], t[-1], x[0], 1.4])
    >>> ax.legend(loc='best')
    >>> fig.tight_layout()
    >>> plt.show()

    Úto_discrete)ÚdtÚmethodÚalphar   r   r   )rQ   rR   é   é   zKFirst argument must either be a tuple of 2 (tf), 3 (zpk), or 4 (ss) arrays.ÚgbtNzUAlpha parameter must be specified for the generalized bilinear transform (gbt) methodzDAlpha parameter must be within the interval [0,1] for the gbt methodg      ð?ÚbilinearÚtusting      à?ÚeulerÚforward_diffr>   Úbackward_diffrM   ÚfohÚimpulsez<Impulse method is only applicable to strictly proper systemszUnknown transformation method 'ú')ÚhasattrÚcallablerO   r   r   r   r   r   r   r   r!   r   r   r   ÚsolveÚ	transposer   r"   r	   ÚvstackÚexpmÚ
block_diagÚblockÚallclose)ÚsystemrP   rQ   rR   ÚsysdÚaÚbÚcÚdÚimaÚadÚbdÚcdÚddÚem_upperÚem_lowerÚemÚmsr:   ÚmÚms11Úms12Úms13s                          r/   r   r   d  s|  € õF ˆv�}Ñ%Ô%ð E­(°6Ô3EÑ*FÔ*Fð EØ×!Ò! R°¸eÐ!ÑDÔDÐDå
ˆ6�{„{�aÒÐÝ�U 6¨!¤9¨f°Q¬iÑ8Ô8¸"ÀVØ#(ð*ñ *ô *ˆå�T˜!”W˜d 1œg t¨A¤w°°Q´Ñ8Ô8¸B¸5Ñ@Ð@Ý	ˆV‰Œ˜Ò	Ð	Ý�V F¨1¤I¨v°a¬y¸&À¼)ÑDÔDÀbØ$*°%ð9ñ 9ô 9ˆå�d˜1”g˜t Aœw¨¨Q¬°°a´Ñ9Ô9¸R¸EÑAÐAÝ	ˆV‰Œ˜Ò	Ð	Ø‰
ˆˆ1ˆa��åð 6ñ 7ô 7ð 	7ð �‚€Øˆ=Ýð Kñ Lô Lð Là�QŠYˆY˜% !š)˜)Ýð 8ñ 9ô 9ð 9ð �‚€åŒf�Q”W˜Q”ZÑ Ô  5¨¡8¨A¡:Ñ-ˆÝŒ\˜#�rœv a¤g¨a¤jÑ1Ô1°S¸±YÀ±NÀ1Ñ4DÑDÑEÔEˆÝŒ\˜#˜r !™tÑ$Ô$ˆõ Œ\˜#Ÿ-š-™/œ/¨1¯;ª;©=¬=Ñ9Ô9ˆØ�\Š\‰^Œ^ˆØ�•r”v˜a ‘}”}Ñ$Ñ$ˆ‰à	�:Ò	Ð	 ¨8Ò!3Ð!3Ý˜V R°¸SÐAÑAÔAÐAà	�7Ò	Ð	˜f¨Ò6Ð6Ý˜V R°¸SÐAÑAÔAÐAà	�?Ò	"Ð	"Ý˜V R°¸SÐAÑAÔAÐAà	�5Šˆå”9˜a ˜VÑ$Ô$ˆõ ”9�bœh¨¬°¬
°A´G¸A´JÐ'?Ñ@Ô@Ý œh¨¬°¬
°A´G¸A´JÐ'?Ñ@Ô@ðBñ Cô Cˆõ ŒY˜ (Ð+Ñ,Ô,ˆÝŒ[˜˜b™Ñ!Ô!ˆð ��”˜”�˜Q˜Q˜Q�Ôˆà����1�Q”W˜Q”Z�<�Ô ˆØ����1”7˜1”:�;�;�ÔˆàˆØˆ‰à	�5ŠˆàŒG�AŒJˆØŒG�AŒJˆõ Ô$¥R¤X¨q°!¨fÑ%5Ô%5¸Ñ%:½B¼FÀ1¹I¼IÑFÔFˆÝ˜!˜Q  Q¡™Y˜Ñ(Ô(ˆÝŒX˜�z H :Ð.Ñ/Ô/ˆåŒ[˜‰_Œ_ˆð �"�1�"�a˜�c�'Œ{ˆØ�"�1�"�a˜˜A™�g�+ŒˆØ�"�1�"�a˜!‘e�f�f�*Œ~ˆàˆØ�D‰[˜4 $™;Ñ&ˆØˆØ��T‘‰\ˆˆà	�9Ò	Ð	ÝŒ{˜1˜aÑ Ô ð 	;Ýð :ñ ;ô ;ð ;õ Œ[˜˜R™Ñ Ô ˆØ�!‰V�b‰[ˆØˆØ�‰U�R‰Zˆˆõ ÐD¸6ÐDÐDÐDÑEÔEÐEàˆr�2�r˜2ÐÐr0   )NNNN)r   )rM   N) Ú__doc__Únumpyr!   r   r   r   r   r   r   r	   r
   r   Úscipyr   Úscipy._lib._array_apir   r   Úscipy._lib.array_api_extraÚ_libÚarray_api_extrar4   Ú_filter_designr   r   r   Ú__all__r   r   r   r   r   r   © r0   r/   ú<module>r„      s‹  ððð ð
 Ð Ð Ð ð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1à Ð Ð Ð Ð Ð à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð €ð^ð ^ð ^ðBað að að aðHVð Vð Vð Vðr#ð #ð #ð(3ð 3ð 3ð 3ð<Gð Gð Gð Gð Gð Gr0   