§
    ¢éUgÈH  ã                  ó>  — U d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlZddlmZ ddlmZ ddlmZmZmZmZ g d¢Zej                             d	d
¦  «        Zded	<   ej                             dd¦  «        ZeedœZe
reZeej        z  ZdMd„ZdNd„Z dOd„Z!	 	 	 dPdd
d
dœdQd'„Z"dd(œdRd,„Z#dd(œdSd-„Z$dTd.„Z%dTd/„Z&dTd0„Z'd1„ Z(	 dUd3„Z)d4„ Z*d5„ Z+	 	 dVd7„Z,	 	 dWd8„Z-	 	 dXd9„Z.dd(œdSd:„Z/dYd=„Z0dZd>„Z1d[d@„Z2d\dA„Z3d]dD„Z4	 	 d^dd(œd_dH„Z5dd(œd`dJ„Z6dd(œdadK„Z7dd(œdSdL„Z8dS )ba6  Utility functions to use Python Array API compatible libraries.

For the context about the Array API see:
https://data-apis.org/array-api/latest/purpose_and_scope.html

The SciPy use case of the Array API is described on the following page:
https://data-apis.org/array-api/latest/use_cases.html#use-case-scipy
é    )ÚannotationsN)Ú
ModuleType)ÚAnyÚLiteralÚTYPE_CHECKING)Úarray_api_compat)Úis_array_api_objÚsizeÚnumpyÚdevice)Úarray_namespaceÚ_asarrayr
   r   ÚSCIPY_ARRAY_APIFz
str | boolÚSCIPY_DEVICEÚcpu)r   r   Úarraysúlist[ArrayLike]Úreturnúlist[Array]c                óF  — t          t          | ¦  «        ¦  «        D �]‚}| |         }t          |t          j        j        ¦  «        rt          d¦  «        ‚t          |t          j        ¦  «        rt          d¦  «        ‚t          |t          j        t          j	        f¦  «        rY|j
        }t          j        |t          j        ¦  «        s2t          j        |t          j        ¦  «        st          d|›d�¦  «        ‚Œát          |¦  «        s’	 t          j        |¦  «        }n# t          $ r t          d¦  «        ‚w xY w|j
        }t          j        |t          j        ¦  «        s4t          j        |t          j        ¦  «        sd|›d�}t          |¦  «        ‚|| |<   �Œ„| S )a€  Raise exceptions on known-bad subclasses.

    The following subclasses are not supported and raise and error:
    - `numpy.ma.MaskedArray`
    - `numpy.matrix`
    - NumPy arrays which do not have a boolean or numerical dtype
    - Any array-like which is neither array API compatible nor coercible by NumPy
    - Any array-like which is coerced by NumPy to an unsupported dtype
    z8Inputs of type `numpy.ma.MaskedArray` are not supported.z0Inputs of type `numpy.matrix` are not supported.zAn argument has dtype `z3`; only boolean and numerical dtypes are supported.zCAn argument is neither array API compatible nor coercible by NumPy.z1An argument was coerced to an unsupported dtype `)ÚrangeÚlenÚ
isinstanceÚnpÚmaÚMaskedArrayÚ	TypeErrorÚmatrixÚndarrayÚgenericÚdtypeÚ
issubdtypeÚnumberÚbool_r	   Ú
asanyarray)r   ÚiÚarrayr!   Úmessages        úT/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/_lib/_array_api.pyÚcompliance_scipyr*   /   s¾  € õ •3�v‘;”;ÑÔð ñ ˆØ�q”	ˆÝ�e�RœUÔ.Ñ/Ô/ð 	PÝÐVÑWÔWÐWÝ˜�rœyÑ)Ô)ð 	PÝÐNÑOÔOÐOÝ�e�bœj­"¬*Ð5Ñ6Ô6ð 	Ø”KˆEÝ”M %­¬Ñ3Ô3ð Uµr´}ÀUÍBÌHÑ7UÔ7Uð UÝð !T¸%ð !Tð !Tð !Tñ Uô Uð Uøå! %Ñ(Ô(ð 	ð7Ýœ eÑ,Ô,��øÝð 7ð 7ð 7Ýð !6ñ 7ô 7ð 7ð7øøøð ”KˆEÝ”M %­¬Ñ3Ô3ð )µr´}ÀUÍBÌHÑ7UÔ7Uð )ðHÈð Hð Hð Hð õ   Ñ(Ô(Ð(ØˆF�1‰IùØ€Ms   ÄD#Ä#D=r'   ÚArrayÚxpr   ÚNonec                ó´   — d}	 |                      |                     | ¦  «        ¦  «        st          |¦  «        ‚dS # t          $ r t          |¦  «        ‚w xY w)zCheck for NaNs or Infs.z#array must not contain infs or NaNsN)ÚallÚisfiniteÚ
ValueErrorr   )r'   r,   Úmsgs      r)   Ú_check_finiter3   U   si   € à
/€CðØ�vŠv�b—k’k %Ñ(Ô(Ñ)Ô)ð 	"Ý˜S‘/”/Ð!ð	"ð 	"øåð ð ð Ý˜‰oŒoÐðøøøs	   „7= ½Ac                 ó|   — t           d         st          S d„ | D ¦   «         }t          |¦  «        }t          j        |Ž S )a0  Get the array API compatible namespace for the arrays xs.

    Parameters
    ----------
    *arrays : sequence of array_like
        Arrays used to infer the common namespace.

    Returns
    -------
    namespace : module
        Common namespace.

    Notes
    -----
    Thin wrapper around `array_api_compat.array_namespace`.

    1. Check for the global switch: SCIPY_ARRAY_API. This can also be accessed
       dynamically through ``_GLOBAL_CONFIG['SCIPY_ARRAY_API']``.
    2. `compliance_scipy` raise exceptions on known-bad subclasses. See
       its definition for more details.

    When the global switch is False, it defaults to the `numpy` namespace.
    In that case, there is no compliance check. This is a convenience to
    ease the adoption. Otherwise, arrays must comply with the new rules.
    r   c                ó   — g | ]}|®|‘ŒS ©N© )Ú.0r'   s     r)   ú
<listcomp>z#array_namespace.<locals>.<listcomp>}   s   € Ð>Ð>Ð>˜¨EÐ,=ˆuÐ,=Ð,=Ð,=ó    )Ú_GLOBAL_CONFIGÚ	np_compatr*   r   r   )r   Ú_arrayss     r)   r   r   _   sF   € õ4 Ð+Ô,ð åÐà>Ð> &Ð>Ñ>Ô>€Gå˜wÑ'Ô'€GåÔ+¨WÐ5Ð5r:   )r,   Úcheck_finiteÚsubokÚ	ArrayLiker!   r   Úorderú"Literal['K', 'A', 'C', 'F'] | NoneÚcopyúbool | NoneúModuleType | Noner>   Úboolr?   c               óî  — |€t          | ¦  «        }|j        dv rd|du rt          j        | |||¬¦  «        } n1|rt          j        | ||¬¦  «        } nt          j        | ||¬¦  «        } |                     | ¦  «        } nd	 |                     | ||¬¦  «        } nJ# t          $ r= t          |                     d¦  «        ¦  «        }|                     | ||¬¦  «        } Y nw xY w|rt          | |¦  «         | S )a`  SciPy-specific replacement for `np.asarray` with `order`, `check_finite`, and
    `subok`.

    Memory layout parameter `order` is not exposed in the Array API standard.
    `order` is only enforced if the input array implementation
    is NumPy based, otherwise `order` is just silently ignored.

    `check_finite` is also not a keyword in the array API standard; included
    here for convenience rather than that having to be a separate function
    call inside SciPy functions.

    `subok` is included to allow this function to preserve the behaviour of
    `np.asanyarray` for NumPy based inputs.
    N>   r   ú!scipy._lib.array_api_compat.numpyT)rA   r!   r?   )rA   r!   )r!   rC   é   )r   Ú__name__r   r'   r%   Úasarrayr   r3   )r'   r!   rA   rC   r,   r>   r?   Ú
coerced_xps           r)   r   r   „   s%  € ð0 
€zÝ˜UÑ#Ô#ˆØ	„{ÐDÐDÐDà�4ˆ<ˆ<Ý”H˜U¨%°uÀEÐJÑJÔJˆEˆEØð 	@Ý”M %¨u¸EÐBÑBÔBˆEˆEå”J˜u¨E¸Ð?Ñ?Ô?ˆEð —
’
˜5Ñ!Ô!ˆˆð	FØ—J’J˜u¨E¸�JÑ=Ô=ˆEˆEøÝð 	Fð 	Fð 	FÝ(¨¯ª°A©¬Ñ7Ô7ˆJØ×&Ò& u°EÀÐ&ÑEÔEˆEˆEˆEð	Føøøð ð !Ý�e˜RÑ Ô Ð à€Ls   Â B ÂAC ÃC ©r,   ÚxÚndimÚintc               óº   — |€t          | ¦  «        }|                     | ¦  «        } | j        |k     r)|                     | d¬¦  «        } t	          | ||¬¦  «        } | S )z9Recursively expand the dimension to have at least `ndim`.Nr   ©Úaxis©rO   r,   )r   rK   rO   Úexpand_dimsÚ
atleast_nd)rN   rO   r,   s      r)   rV   rV   ·   s\   € à	€zÝ˜QÑÔˆØ
�
Š
�1‰Œ€AØ„v�‚}€}Ø�NŠN˜1 1ˆNÑ%Ô%ˆÝ�q˜t¨Ð+Ñ+Ô+ˆØ€Hr:   c               óH   — |€t          | ¦  «        }t          | d|¬¦  «        S )a3  
    Copies an array.

    Parameters
    ----------
    x : array

    xp : array_namespace

    Returns
    -------
    copy : array
        Copied array

    Notes
    -----
    This copy function does not offer all the semantics of `np.copy`, i.e. the
    `subok` and `order` keywords are not used.
    NT)rC   r,   )r   r   ©rN   r,   s     r)   rC   rC   Â   s+   € ð* 
€zÝ˜QÑÔˆå�A˜D RÐ(Ñ(Ô(Ð(r:   c                ó   — | j         dv S )N)r   rH   ©rJ   rM   s    r)   Úis_numpyr[   Ý   ó   € ØŒ;ÐHÐHÐHr:   c                ó   — | j         dv S )N)Úcupyz scipy._lib.array_api_compat.cupyrZ   rM   s    r)   Úis_cupyr_   á   s   € ØŒ;ÐFÐFÐFr:   c                ó   — | j         dv S )N)Útorchz!scipy._lib.array_api_compat.torchrZ   rM   s    r)   Úis_torchrb   å   r\   r:   c                ó   — | j         dv S )N)z	jax.numpyzjax.experimental.array_apirZ   rM   s    r)   Úis_jaxrd   è   s   € ØŒ;ÐEÐEÐEr:   Tc                óh  — d}|rt          | |¦  «         |                     |¦  «        }|r,d| j        › d|j        › �}| j        |j        k    s
J |¦   «         ‚|r=d| j        › d|j        › �}| j        |j        k    s
J |¦   «         ‚t	          | ||¦  «         |                     || j        ¦  «        }|S )NTzdtypes do not match.
Actual: ú

Desired: zShapes do not match.
Actual: )Ú_assert_matching_namespacerK   r!   ÚshapeÚ_check_scalarÚbroadcast_to)ÚactualÚdesiredr,   Úcheck_namespaceÚcheck_dtypeÚcheck_shapeÚ__tracebackhide__Ú_msgs           r)   Ú_strict_checkrr   ì   sÙ   € àÐØð 4Ý" 6¨7Ñ3Ô3Ð3à�jŠj˜Ñ!Ô!€Gàð 3ØX°´ÐXÐXÈÌÐXÐXˆØŒ|˜wœ}Ò,Ð,Ð,¨dÑ,Ô,Ð,àð +ØX°´ÐXÐXÈÌÐXÐXˆØŒ|˜wœ}Ò,Ð,Ð,¨dÑ,Ô,Ð,Ý�f˜g rÑ*Ô*Ð*à�oŠo˜g v¤|Ñ4Ô4€GØ€Nr:   c                óÈ   — d}t          | t          ¦  «        r| n| f} t          |¦  «        }| D ]3}t          |¦  «        }d|j        › d|j        › �}||k    s
J |¦   «         ‚Œ4d S )NTz!Namespaces do not match.
Actual: rf   )r   Útupler   rJ   )rk   rl   rp   Údesired_spaceÚarrÚ	arr_spacerq   s          r)   rg   rg     sš   € ØÐÝ! &­%Ñ0Ô0Ð?ˆVˆV°v°i€FÝ# GÑ,Ô,€MØð 0ð 0ˆÝ# CÑ(Ô(ˆ	ð5Ø$Ô-ð5ð 5à)Ô2ð5ð 5ˆð ˜MÒ)Ð)Ð)¨4Ñ)Ô)Ð)Ð)ð0ð 0r:   c                óV  — d}|j         dk    st          |¦  «        sd S |d         }dt          | ¦  «        › dt          |¦  «        › �}|                     | ¦  «        r|                     |¦  «        s4|                     | ¦  «        s|                     |¦  «        rJ |¦   «         ‚d S d S )NTr7   zTypes do not match:
 Actual: z
 Desired: )rh   r[   ÚtypeÚisscalar)rk   rl   r,   rp   rq   s        r)   ri   ri     sÙ   € ØÐð „}˜ÒÐ¥(¨2¡,¤,ÐØˆð �bŒk€GØU­D°©L¬LÐUÐUÅdÈ7ÁmÄmÐUÐU€DØ�KŠK˜ÑÔð M B§K¢K°Ñ$8Ô$8ð MØ—K’K Ñ'Ô'ðMØ02·²¸GÑ0DÔ0DðMð MØHLñMô Mð Mð Mð Mð Mð Mr:   Ú c           	     ób  — d}|€t          | ¦  «        }t          | |||||¬¦  «        }t          |¦  «        r|j                             | ||¬¦  «        S t          |¦  «        r+|dk    rd n|}|j                             | |dddd|¬¦  «        S t          j                             | ||¬¦  «        S )NT©rm   rn   ro   )Úerr_msgr{   r   F©ÚrtolÚatolÚ	equal_nanrn   r2   )r   rr   r_   ÚtestingÚassert_array_equalrb   Úassert_closer   )rk   rl   rm   rn   ro   r~   r,   rp   s           r)   Úxp_assert_equalr†   &  sÝ   € àÐØ	€zÝ˜VÑ$Ô$ˆÝ˜F G¨RÀØ(3ÀðNñ Nô N€Gåˆr�{„{ð GØŒz×,Ò,¨V°WÀgÐ,ÑNÔNÐNÝ	�"‰Œð Gð " Rš-˜-�$�$¨WˆØŒz×&Ò& v¨w¸QÀQÐRVØ38¸gð 'ñ Gô Gð 	Gõ Œ:×(Ò(¨°À'Ð(ÑJÔJÐJr:   c	           	     óü  — d}	|€t          | ¦  «        }t          | |||||¬¦  «        }|                     | j        d¦  «        }
|€(|
r&|                     | j        ¦  «        j        dz  dz  }n|€d}t          |¦  «        r|j                             | ||||¬¦  «        S t          |¦  «        r+|dk    rd n|}|j         
                    | |||dd	|¬
¦  «        S t          j                             | ||||¬¦  «        S )NTr}   )zreal floatingúcomplex floatingg      à?é   gH¯¼šò×z>)r€   r�   r~   r{   Fr   )r   rr   Úisdtyper!   ÚfinfoÚepsr_   rƒ   Úassert_allcloserb   r…   r   )rk   rl   r€   r�   rm   rn   ro   r~   r,   rp   Úfloatings              r)   Úxp_assert_closer�   9  sI  € àÐØ	€zÝ˜VÑ$Ô$ˆÝ˜F G¨RÀØ(3ÀðNñ Nô N€Gð �zŠz˜&œ,Ð(MÑNÔN€HØ€|˜€|ð �xŠx˜œÑ%Ô%Ô)¨3Ñ.°Ñ2ˆˆØ	ˆØˆåˆr�{„{ð WØŒz×)Ò)¨&°'ÀØ/3¸Wð *ñ Fô Fð 	Få	�"‰Œð WØ! Rš-˜-�$�$¨WˆØŒz×&Ò& v¨w¸TÈØ15À5Ègð 'ñ Wô Wð 	Wõ Œ:×%Ò% f¨g¸DØ+/¸ð &ñ Bô Bð Br:   c                ó   — d}|€t          | ¦  «        }t          | |||||¬¦  «        }t          |¦  «        r|j                             | |||¬¦  «        S t          |¦  «        rH| j        j        dk    r|                      ¦   «         } |j        j        dk    r|                     ¦   «         }t          j                             | |||¬¦  «        S )NTr}   )r~   Úverboser   )
r   rr   r_   rƒ   Úassert_array_lessrb   r   ry   r   r   )	rk   rl   rm   rn   ro   r~   r‘   r,   rp   s	            r)   Úxp_assert_lessr“   V  sê   € àÐØ	€zÝ˜VÑ$Ô$ˆÝ˜F G¨RÀØ(3ÀðNñ Nô N€Gåˆr�{„{ð $ØŒz×+Ò+¨F°GØ4;ÀWð ,ñ Nô Nð 	Nå	�"‰Œð $ØŒ=Ô Ò&Ð&Ø—Z’Z‘\”\ˆFØŒ>Ô %Ò'Ð'Ø—k’k‘m”mˆGåŒ:×'Ò'¨°Ø07Àð (ñ Jô Jð Jr:   c               óˆ  — |€t          | ¦  «        }t          | |¬¦  «        }|                     ||j        ¦  «        }t	          |d|¬¦  «        }|                     ||¬¦  «        }|                     |d¬¦  «        }|j        d         dz
  }|dk    rt          j	        dt          d¬	¦  «         d
}||d d …d f         z  }|j        }|                     |j        d¦  «        r|                     |¦  «        }||z  }||z  }t          d„ t!          |j        ¦  «        D ¦   «         ¦  «        }|                     ||¬¦  «        S )NrM   é   rT   ©r!   é   rR   r   z!Degrees of freedom <= 0 for slice)Ú
stacklevelg        rˆ   c              3  ó,   K  — | ]\  }}|d k    ¯|V — ŒdS )r—   Nr7   )r8   rS   Úlengths      r)   ú	<genexpr>zcov.<locals>.<genexpr>‚  s*   è è € ÐLÐL™,˜$ ÀÈ!ÂÀ�ÀÀÀÀÐLÐLr:   )r   rC   Úresult_typeÚfloat64rV   rK   Úmeanrh   ÚwarningsÚwarnÚRuntimeWarningÚTrŠ   r!   Úconjrt   Ú	enumerateÚsqueeze)	rN   r,   ÚXr!   ÚavgÚfactÚX_TÚcÚaxess	            r)   Úcovr¬   j  sG  € Ø	€zÝ˜QÑÔˆåˆQ�2ˆ‰Œ€AØ�NŠN˜1˜bœjÑ)Ô)€Eå�1˜1 Ð$Ñ$Ô$€AØ
�
Š
�1˜Eˆ
Ñ"Ô"€Aà
�'Š'�!˜!ˆ'Ñ
Ô
€CØŒ7�1Œ:˜‰>€Dàˆq‚y€yÝŒÐ9Ý$°ð	4ñ 	4ô 	4ð 	4àˆàˆˆQˆQˆQ�ˆWŒÑ€AØ
Œ#€CØ	‡z‚z�#”)Ð/Ñ0Ô0ð Ø�gŠg�c‰lŒlˆØ	ˆC‰€AØˆ�I€AÝÐLÐL­)°A´GÑ*<Ô*<ÐLÑLÔLÑLÔL€DØ�:Š:�a˜dˆ:Ñ#Ô#Ð#r:   ÚparamÚstrc                ó   — d| ›d�S )Nz
Providing z$ is only supported for numpy arrays.r7   )r­   s    r)   Úxp_unsupported_param_msgr°   †  s   € ØE˜ÐEÐEÐEÐEr:   c                ó8   — |                      | j        d¦  «        S )Nrˆ   )rŠ   r!   rX   s     r)   Ú
is_complexr²   Š  s   € Ø�:Š:�a”gÐ1Ñ2Ô2Ð2r:   úlist[str] | list[None]c                óè  — g }t          | ¦  «        re|dgz  }ddl}|j                             ¦   «         }t	          d|¦  «        D ]}|d|› �gz  }Œ|j        j                             ¦   «         r|dgz  }|S t          | ¦  «        r@ddl	}|j        j
                             ¦   «         }t	          d|¦  «        D ]}|d|› �gz  }Œ|S t          | ¦  «        rœddl}|                     d¬¦  «        }t	          d|¦  «        D ]}|d|› �gz  }Œ|                     d¬¦  «        }t	          d|¦  «        D ]}|d	|› �gz  }Œ|                     d
¬¦  «        }	t	          d|	¦  «        D ]}|d|› �gz  }Œ|S dgS )z<Returns a list of available devices for the given namespace.r   r   Nzcuda:Úmps)Úbackendzcpu:Úgpuzgpu:Útpuztpu:)rb   ra   ÚcudaÚdevice_countr   Úbackendsrµ   Úis_availabler_   r^   ÚruntimeÚgetDeviceCountrd   Újax)
r,   Údevicesra   Únum_cudar&   r^   r¿   Únum_cpuÚnum_gpuÚnum_tpus
             r)   Úget_xp_devicesrÅ   Ž  sá  € à€GÝ��|„|ð Ø�E�7ÑˆØˆˆˆØ”:×*Ò*Ñ,Ô,ˆÝ�q˜(Ñ#Ô#ð 	%ð 	%ˆAØ˜ ˜˜�}Ñ$ˆGˆGØŒ>Ô×*Ò*Ñ,Ô,ð 	Ø˜�wÑˆGØˆÝ	�‰Œð ØˆˆˆØ”9Ô$×3Ò3Ñ5Ô5ˆÝ�q˜(Ñ#Ô#ð 	%ð 	%ˆAØ˜ ˜˜�}Ñ$ˆGˆGØˆÝ	�‰Œð Øˆ
ˆ
ˆ
Ø×"Ò"¨5Ð"Ñ1Ô1ˆÝ�q˜'Ñ"Ô"ð 	$ð 	$ˆAØ˜
˜q˜
˜
�|Ñ#ˆGˆGØ×"Ò"¨5Ð"Ñ1Ô1ˆÝ�q˜'Ñ"Ô"ð 	$ð 	$ˆAØ˜
˜q˜
˜
�|Ñ#ˆGˆGØ×"Ò"¨5Ð"Ñ1Ô1ˆÝ�q˜'Ñ"Ô"ð 	$ð 	$ˆAØ˜
˜q˜
˜
�|Ñ#ˆGˆGØˆð ˆ6€Mr:   c                óv   — t          | ¦  «        rddl}|j        S t          | ¦  «        rddl}|j        S ddl}|S )zÈ
    Return the `scipy` namespace for alternative backends, where it exists,
    such as `cupyx.scipy` and `jax.scipy`. Useful for ad hoc dispatching.

    Default: return `scipy` (this package).
    r   N)r_   ÚcupyxÚscipyrd   r¿   )r,   rÇ   r¿   rÈ   s       r)   Úscipy_namespace_forrÉ   ²  sP   € õ ˆr�{„{ð ØˆˆˆØŒ{Ðåˆb�z„zð Øˆ
ˆ
ˆ
ØŒyÐà€L€L€LØ€Lr:   Úx1Úx2c               ó0  — t          | |¦  «        }t          |d¦  «        r|                     | |¦  «        S |                     | |¦  «        \  } }|| k     |                     |¦  «        z  }|                     ||| ¦  «        }|j        dk    r|d         n|S )NÚminimumr   r7   )r   ÚhasattrrÍ   Úbroadcast_arraysÚisnanÚwhererO   )rÊ   rË   r,   r&   Úress        r)   Ú
xp_minimumrÓ   É  s•   € å	˜˜RÑ	 Ô	 €BÝˆr�9ÑÔð "Ø�zŠz˜"˜bÑ!Ô!Ð!Ø× Ò   RÑ(Ô(�F€BˆØ	ˆbŠ�B—H’H˜R‘L”LÑ €AØ
�(Š(�1�b˜"Ñ
Ô
€CØ”h !’m�mˆ3ˆrŒ7ˆ7¨Ð,r:   Úminúint | float | Array | NoneÚmaxc              ó¸  — |€t          | ¦  «        n|}|                     || j        ¬¦  «        |                     || j        ¬¦  «        }}t          |d¦  «        r|                     | ||¦  «        S |                     | ||¦  «        \  } }}|                     | d¬¦  «        }||k     }||         ||<   ||k    }||         ||<   |j        dk    r|d         n|S )Nr–   ÚclipT)rC   r   r7   )r   rK   r!   rÎ   rØ   rÏ   rO   )	rN   rÔ   rÖ   r,   ÚaÚbÚyÚiaÚibs	            r)   Úxp_cliprÞ   Ö  så   € ð  "˜z�˜Ñ	Ô	Ð	¨r€BØ�:Š:�c ¤ˆ:Ñ)Ô)¨2¯:ª:°cÀÄ¨:Ñ+IÔ+I€q€AÝˆr�6ÑÔð  Ø�wŠw�q˜!˜QÑÔÐØ×!Ò! ! Q¨Ñ*Ô*�G€A€qˆ!Ø
�
Š
�1˜4ˆ
Ñ Ô €AØ	
ˆQŠ€BØˆbŒE€A€b�EØ	
ˆQŠ€BØˆbŒE€A€b�EØ”F˜a’K�Kˆ1ˆRŒ5ˆ5 QÐ&r:   Úsourcec              óÌ   — |€t          |¦  «        n|}t          t          | j        ¦  «        ¦  «        }|                     |¦  «        }||gz   }|                     | |¦  «        S r6   )r   Úlistr   rO   ÚpopÚpermute_dims)rN   rß   r,   r«   Útemps        r)   Úxp_moveaxis_to_endrå   ì  s_   € ð
 !# 
�˜Ñ	Ô	Ð	°€BÝ•�a”f‘”ÑÔ€DØ�8Š8�FÑÔ€DØ�4�&‰=€DØ�?Š?˜1˜dÑ#Ô#Ð#r:   c              óŒ   — |€t          | |¦  «        n|}|                     | ¦  «        }|                     |dk    || ¦  «        S )Nr   )r   ÚabsrÑ   )rÊ   rË   r,   Úabs_x1s       r)   Úxp_copysignré   ú  sE   € à$& J�˜˜RÑ	 Ô	 Ð	 °B€BØ�VŠV�B‰ZŒZ€FØ�8Š8�B˜!’G˜V f WÑ-Ô-Ð-r:   c              óŒ  — |€t          | ¦  «        n|}t          |¦  «        r|                     | ¦  «        S |                     | |j        ¦  «        }|                     d| j        ¬¦  «        }|                     | dk    ||¦  «        }|                     | dk     | |¦  «        }|                     | dk    d|z  |¦  «        }|S )Nr—   r–   r   )r   r[   ÚsignÚ	full_likeÚnanrK   r!   rÑ   )rN   r,   rë   Úones       r)   Úxp_signrï     s¸   € Ø!˜z�˜Ñ	Ô	Ð	¨r€BÝ��|„|ð Ø�wŠw�q‰zŒzÐØ�<Š<˜˜2œ6Ñ"Ô"€DØ
�*Š*�Q˜aœgˆ*Ñ
&Ô
&€CØ�8Š8�A˜’E˜3 Ñ%Ô%€DØ�8Š8�A˜’E˜C˜4 Ñ&Ô&€DØ�8Š8�A˜’F˜A˜c™E 4Ñ(Ô(€DØ€Kr:   )r   r   r   r   )r'   r+   r,   r   r   r-   )r   r+   r   r   )NNN)r'   r@   r!   r   rA   rB   rC   rD   r,   rE   r>   rF   r?   rF   r   r+   )rN   r+   rO   rP   r,   rE   r   r+   )rN   r+   r,   rE   r   r+   )r,   r   r   rF   )TTT)TTTr{   N)Nr   TTTr{   N)TTTr{   TN)r­   r   r   r®   )rN   r+   r,   r   r   rF   )r,   r   r   r³   )r,   r   r   r   )rÊ   r+   rË   r+   r   r+   )NN)
rÔ   rÕ   rÖ   rÕ   rN   r+   r,   rE   r   r+   )rN   r+   rß   rP   r,   rE   r   r+   )rÊ   r+   rË   r+   r,   rE   r   r+   )9Ú__doc__Ú
__future__r   ÚosrŸ   Útypesr   Útypingr   r   r   r   r   Únumpy.typingÚnptÚ
scipy._libr   Úscipy._lib.array_api_compatr	   r
   r<   r   Ú__all__ÚenvironÚgetr   Ú__annotations__r   r;   r+   r@   r*   r3   r   r   rV   rC   r[   r_   rb   rd   rr   rg   ri   r†   r�   r“   r¬   r°   r²   rÅ   rÉ   rÓ   rÞ   rå   ré   rï   r7   r:   r)   ú<module>rý      s8  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€à Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à Ð Ð Ð Ø Ð Ð Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð <Ð
;Ð
;€ð !œjŸnšnÐ->ÀÑFÔF€Ð FÐ FÐ FÑ FàŒz�~Š~˜n¨eÑ4Ô4€ð 'Ø ðð €ð ð &Ø€EØ˜œÑ%€Ið#ð #ð #ð #ðLð ð ð ð"6ð "6ð "6ð "6ðN Ø48Ø ð	0ð !%Ø"Øð0ð 0ð 0ð 0ð 0ð 0ðf @Dð ð ð ð ð ð ð /3ð )ð )ð )ð )ð )ð )ð6Ið Ið Ið IðGð Gð Gð GðIð Ið Ið IðFð Fð Fð
 GKðð ð ð ð*	0ð 	0ð 	0ðMð Mð Mð2 HLØ59ðKð Kð Kð Kð& IMØGKðBð Bð Bð Bð: GKØBFðJð Jð Jð Jð( .2ð $ð $ð $ð $ð $ð $ð8Fð Fð Fð Fð3ð 3ð 3ð 3ð!ð !ð !ð !ðHð ð ð ð.-ð -ð -ð -ð  +/Ø*.ð	'ð !%ð'ð 'ð 'ð 'ð 'ð 'ð4 !%ð		$ð 	$ð 	$ð 	$ð 	$ð 	$ð EIð .ð .ð .ð .ð .ð .ð 59ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r:   