ó
    Eñi«è  ã            
      ób  • S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSK	r	SSK
JrJr  \(       a  SSKJr  SSKJrJrJrJrJrJrJr   S£     S¤S jjr  S¥       S¦S jjrS§S jrS§S jrS§S jrS rS¨S jr S© SªS jjr    S©       S«S jjrSSS.     S¬S jjr \ r!SSS.     S¬S jjr"SSS.     S¬S jjr#SSS.     S¬S jjr$  S­SSS.       S®S jjjr%S¯S°S jjr&S±S jr'S±S jr(S r)S²S³S jjr*S²S³S  jjr+S³S! jr,S³S" jr-S³S# jr.S´S$ jr/SµS¶S% jjr0     S·     S¸S' jjr1    S¹     S¸S( jjr2     Sº S»S) jjr3    S¼SS*.         S½S+ jjjr4  S¾SS*.     S¿S, jjjr5    SÀ       SÁS- jjr6  S¾SS*.       SÂS. jjjr7    SÀ       SÃS/ jjr8  S¾SS*.     S¿S0 jjjr9    SÀ       SÃS1 jjr:  S¾SS*.     S¿S2 jjjr;    SÀ       SÃS3 jjr<SÄS4 jr=    SÅSS5.     SÆS6 jjjr>      SÇSS5.         SÈS7 jjjr?S8 r@SÉSÊS9 jjrASËSÊS: jjrBSÌSÍS; jjrC  SÎ     SÏS< jjrDSÐS= jrESÐS> jrFS¯SÐS? jjrGSÐS@ jrHS¯SÑSA jjrISÑSB jrJSÑSC jrKSÒSÑSD jjrLS±SÓSE jjrMSF rNS
SG.SÔSH jjrOS&S
SISJ.SÕSK jjrP\QS
4S»SL jjrRS²SÑSM jjrSS²SÑSN jjrTS­SO jrUS­SP jrVS²SÖSQ jjrWS²SÖSR jjrX   S×SS*.   SØSS jjjrYSÙS´ST jjrZSÙS´SU jjr[S±SV jr\S±SÚSW jjr]SÚSX jr^ SÛ   SÜSY jjr_   SÝ       SÞSZ jjr`SßS[ jra Sà       SáS\ jjrbSâS] jrc  Sã       SäS^ jjrd    SåS&S_.     SæS` jjjreSÐSa jrfSÐSb jrgSÐSc jrh   Sç       SèSd jjriS¯SéSe jjrjSêSf jrkS¯SÐSg jjrlSëSÐSh jjrm     Sì     SíSi jjrn    SîSS*.     S¿Sj jjjroS¯SS*.SØSk jjjrpS²SïSl jjrqS²SïSm jjrrSðSo jrsSÖSp jrtS±SñSq jjruS´Sr jrvSðS´Ss jjrwS¯SòSt jjrxS´Su jryS¯SòSv jjrzSóS´Sw jjr{SSS	SxS
Sy.Sz jr|S{ r}SôSõS| jjr~SôSõS} jjr Sö     S÷S~ jjr€SÐS jr�SÐS€ jr‚S²SÐS� jjrƒS¯SÐS‚ jjr„S¯SÐSƒ jjr…SøSõS„ jjr†S¯SÐS… jjr‡SøSõS† jjrˆ    Sù     SúS‡ jjr‰S±SûSˆ jjrŠS¶S‰ jr‹SSSŠ.SüS‹ jjrŒS­SýSŒ jjr�\�rŽ\�r�SþSÐS� jjr�SÐSŽ jr‘SÐS� jr’S¶S� jr“S¶S‘ jr”S¶S’ jr•S¶S“ jr–S¯SÿS” jjr—S¯SÿS• jjr˜S¶S– jr™S— ršS˜ r›S™ rœSš r�S› ržSœ rŸ\	GR@                  \	GRB                  \	GRD                  /S\	GRF                  \	GRH                  //r¥\	GR@                  S\	GRB                  S\	GRD                  Sn\	GRF                  S\	GRH                  Sn0r¦GS S� jr§     GS     GSSž jjr¨     GS   GSSŸ jjr©     GS   GSS  jjrªSÐS¡ jr«GSGSS¢ jjr¬g(  z�A thin pytorch / numpy compat layer.

Things imported from here have numpy-compatible signatures but operate on
pytorch tensors.
é    )ÚannotationsN)ÚOptionalÚTYPE_CHECKINGé   )Ú_dtypes_implÚ_util)ÚSequence)Ú	ArrayLikeÚArrayLikeOrScalarÚCastingModesÚ	DTypeLikeÚNDArrayÚNotImplementedTypeÚOutArrayÚKFc                ó"   • U R                  5       $ ©N)Úclone)ÚaÚorderÚsuboks      ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_numpy/_funcs_impl.pyÚcopyr   %   s   € ð �7‰7‹9Ðó    Ú	same_kindc                ól   • [         R                  " U4U R                  US9u  nU R                  U5        g )N©Úcasting)r   Útypecast_tensorsÚdtypeÚcopy_)ÚdstÚsrcr   Úwheres       r   Úcopytor%   +   s+   € ô ×#Ò# S F¨C¯I©I¸wÑG�F€SØ‡I�Iˆc…Nr   c                 ól   • [         R                  " U 6 n[        U[        5      (       a  [	        U5      $ U$ r   )ÚtorchÚ
atleast_1dÚ
isinstanceÚtupleÚlist©ÚarysÚress     r   r(   r(   5   ó.   € Ü
×
Ò
˜DÐ
!€CÜ�#”u×ÑÜ�C‹yÐàˆ
r   c                 ól   • [         R                  " U 6 n[        U[        5      (       a  [	        U5      $ U$ r   )r'   Ú
atleast_2dr)   r*   r+   r,   s     r   r1   r1   =   r/   r   c                 ól   • [         R                  " U 6 n[        U[        5      (       a  [	        U5      $ U$ r   )r'   Ú
atleast_3dr)   r*   r+   r,   s     r   r3   r3   E   r/   r   c                óL   • U S:X  a  [        S5      e Ub  Ub  [        S5      eg g )N© z&need at least one array to concatenatezQconcatenate() only takes `out` or `dtype` as an argument, but both were provided.)Ú
ValueErrorÚ	TypeError)Útupr    Úouts      r   Ú_concat_checkr:   M   s;   € Ø
ˆbƒyÜÐAÓBÐBà,Ø
�˜5Ñ,äð0ó
ð 	
ð -€r   c                óž   • Uc  Ub  Uc  UR                   R                  OUnO[        R                  " U 6 n[        R
                  " XU5      n U $ )z%Figure out dtypes, cast if necessary.)r    Útorch_dtyper   Úresult_type_implr   r   )Útensorsr9   r    r   Ú	out_dtypes        r   Ú_concat_cast_helperr@   Z   sL   € ð �˜%Ñ+à-2©]�C—I‘I×)Ò)À‰	ä ×1Ò1°7Ð;ˆ	ô ×$Ò$ W¸ÓA€Gà€Nr   c                óv   • [         R                  " U SU06u  p[        XX45      n [        R                  " X5      $ )NÚaxis)r   Úaxis_none_flattenr@   r'   Úcat)r>   rB   r9   r    r   s        r   Ú_concatenaterE   i   s6   € ô ×+Ò+¨WÐ@¸4Ñ@�M€GÜ! '°Ó?€GÜ�9Š9�WÓ#Ð#r   c                ó0   • [        XUS9  [        XX#US9nU$ )N©r9   )rB   r9   r    r   )r:   rE   )Úar_tuplerB   r9   r    r   Úresults         r   ÚconcatenaterJ   r   s!   € ô �( sÒ+Ü˜(°3ÈWÑU€FØ€Mr   ©r    r   c               óV   • [        XS S9  [        XUS9n[        R                  " U5      $ ©NrG   rK   )r:   r@   r'   Úvstack©r8   r    r   r>   s       r   rN   rN   ~   ó)   € ô �# $Ò'Ü! #¸GÑD€GÜ�<Š<˜Ó Ð r   c               óV   • [        XS S9  [        XUS9n[        R                  " U5      $ rM   )r:   r@   r'   ÚhstackrO   s       r   rR   rR   Œ   rP   r   c               óV   • [        XS S9  [        XUS9n[        R                  " U5      $ rM   )r:   r@   r'   ÚdstackrO   s       r   rT   rT   —   s)   € ô �# $Ò'Ü! #¸GÑD€GÜ�<Š<˜Ó Ð r   c               óV   • [        XS S9  [        XUS9n[        R                  " U5      $ rM   )r:   r@   r'   Úcolumn_stackrO   s       r   rV   rV   ¤   s+   € ô �# $Ò'Ü! #¸GÑD€GÜ×Ò˜gÓ&Ð&r   c               ó¢   • [        XUS9  [        XUS9nUS   R                  S-   n[        R                  " X5      n[
        R                  " XQS9$ )NrG   rK   r   r   ©rB   )r:   r@   Úndimr   Únormalize_axis_indexr'   Ústack)ÚarraysrB   r9   r    r   r>   Úresult_ndims          r   r[   r[   ²   sK   € ô �& SÒ)ä! &¸wÑG€GØ˜!‘*—/‘/ AÑ%€KÜ×%Ò% dÓ8€DÜ�;Š;�wÑ*Ð*r   c                óœ   • Uc?  U R                   S:w  a  U R                  5       n UR                  5       nU R                   S-
  n[        X4US9$ )Nr   rX   )rY   ÚflattenrE   )ÚarrÚvaluesrB   s      r   Úappendrb   Â   sE   € Ø�|Ø�8‰8�q‹=Ø—+‘+“-ˆCØ—‘Ó!ˆØ�x‰x˜!‰|ˆÜ˜˜¨DÑ1Ð1r   c                óÐ   • [        U[        5      (       a  [        XX#5      $ [        U[        [        45      (       a  [        U [        U5      U5      $ [        S[        U5      5      e)Nzsplit_helper: )r)   ÚintÚ_split_helper_intr+   r*   Ú_split_helper_listr7   Útype)ÚtensorÚindices_or_sectionsrB   Ústricts       r   Ú_split_helperrk   Î   sX   € ÜÐ%¤s×+Ñ+Ü  ¸dÓKÐKÜ	Ð'¬$´¨×	7Ñ	7ä! &¬$Ð/BÓ*CÀTÓJÐJäÐ(¬$Ð/BÓ*CÓDÐDr   c                ón  • [        U[        5      (       d  [        S5      e[        R                  " X R
                  5      nU R                  U   UpTUS::  a  [        eXE-  S:X  a  XTU-  pvU/U-  nO"U(       a  [        S5      eXE-  XE-  S-   pvU/U-  nX‡S-
  /XV-
  -  -  n[        R                  " XU5      $ )Nzsplit: indices_or_sectionsr   z0array split does not result in an equal divisionr   )
r)   rd   ÚNotImplementedErrorr   rZ   rY   Úshaper6   r'   Úsplit)	rh   ri   rB   rj   ÚlÚnÚnumÚszÚlsts	            r   re   re   Ø   s¼   € ÜÐ)¬3×/Ñ/Ü!Ð">Ó?Ð?ä×%Ò% d¯K©KÓ8€Dð �<‰<˜ÑÐ2€qàˆAƒvÜÐà�u�ƒzØ˜!‘VˆRØˆd�S‰j‰æÜÐOÓPÐPà‘%˜™ !™ˆRØˆd�S‰jˆà�‰Fˆ8�q‘wÑÑ€Cä�;Š;�v DÓ)Ð)r   c                ó®  • [        U[        5      (       d  [        S5      eU Vs/ s H  o3U R                  U   ::  d  M  UPM     nn[	        U5      [	        U5      -
  nUR                  U R                  U   5        US   /[        USS  US S 5       VVs/ s H	  u  pgXg-
  PM     snn-   nUS/U-  -  n[        R                  " XU5      $ s  snf s  snnf )Nz split: indices_or_sections: listr   r   éÿÿÿÿ)	r)   r+   rm   rn   Úlenrb   Úzipr'   ro   )rh   ri   rB   Úxrt   Ú	num_extrar   Úbs           r   rf   rf   ó   s×   € ÜÐ)¬4×0Ñ0Ü!Ð"DÓEÐEñ *Ó
EÒ)�°&·,±,¸tÑ2DÑ-D�1Ñ)€CÐ
EÜÐ'Ó(¬3¨s«8Ñ3€Ià‡J�Jˆv�|‰|˜DÑ!Ô"àˆA‰ðä˜s 1 2˜w¨¨C¨R¨Ô1Ô2Ò1‘4�1ˆŒÑ1Ò2ñ3€Cð ˆAˆ3�‰?Ñ€Cä�;Š;�v DÓ)Ð)ùò Fùó 	3s   ¥C¿CÂCc                ó   • [        XU5      $ r   ©rk   ©Úaryri   rB   s      r   Úarray_splitr€     s   € Ü˜°4Ó8Ð8r   c                ó   • [        XUSS9$ )NT©rj   r}   r~   s      r   ro   ro     s   € Ü˜°4ÀÑEÐEr   c                óv   • U R                   S:X  a  [        S5      eU R                   S:”  a  SOSn[        XUSS9$ )Nr   z3hsplit only works on arrays of 1 or more dimensionsr   Tr‚   ©rY   r6   rk   r~   s      r   Úhsplitr…     s9   € Ø
‡x�x�1ƒ}ÜÐNÓOÐOØ—‘˜1“‰1 !€DÜ˜°4ÀÑEÐEr   c                óN   • U R                   S:  a  [        S5      e[        XSSS9$ )Né   z3vsplit only works on arrays of 2 or more dimensionsr   Tr‚   r„   ©r   ri   s     r   Úvsplitr‰     ó(   € Ø
‡x�x�!ƒ|ÜÐNÓOÐOÜ˜°1¸TÑBÐBr   c                óN   • U R                   S:  a  [        S5      e[        XSSS9$ )Né   z3dsplit only works on arrays of 3 or more dimensionsr‡   Tr‚   r„   rˆ   s     r   Údsplitr�     rŠ   r   c                ó.   • [         R                  " X5      $ r   )r'   Úkron)r   r{   s     r   r�   r�     ó   € Ü�:Š:�aÓÐr   c                ó0   • [         R                  " XU5      $ r   )r'   Úvander)ry   ÚNÚ
increasings      r   r’   r’   #  s   € Ü�<Š<˜˜jÓ)Ð)r   Tc                ó¤   • US:w  d  U(       d  U(       d  [         eUc  [        R                  " 5       R                  n[        R
                  " XX%S9$ ©Nr   ©r    )rm   r   Údefault_dtypesÚfloat_dtyper'   Úlinspace)ÚstartÚstoprr   ÚendpointÚretstepr    rB   s          r   rš   rš   *  s?   € ð ˆqƒy–G¦8Ü!Ð!Ø�}Ü×+Ò+Ó-×9Ñ9ˆä�>Š>˜% sÑ8Ð8r   c                ó  • US:w  d  U(       d  [         e[        R                  " X-  SUS-
  -  5      n[        R                  " U5      n[        R                  " [        R                  " U 5      U-  [        R                  " U5      U-  UUS9$ )Nr   ç      ð?r   )Úbase)rm   r'   ÚpowÚlogÚlogspace)r›   rœ   rr   r�   r    rB   r¡   Úlogbases           r   Ú	geomspacer¦   ;  sr   € ð ˆqƒyžÜ!Ð!Ü�9Š9�T‘\ 3¨#°©'¡?Ó3€DÜ�iŠi˜‹o€GÜ�>Š>Ü�	Š	�%Ó˜7Ñ"Ü�	Š	�$‹˜'Ñ!ØØñ	ð r   c                óT   • US:w  d  U(       d  [         e[        R                  " XX$US9$ )Nr   )r¡   r    )rm   r'   r¤   )r›   rœ   rr   r�   r¡   r    rB   s          r   r¤   r¤   O  s&   € ð ˆqƒyžÜ!Ð!Ü�>Š>˜% s¸UÑCÐCr   )Úlikec               ó0  • US:X  a  [         eUc	  U c  [        eUc  SU pU c  Sn UcW  [        S XU4 5       5      (       a  [        R                  " 5       R
                  O[        R                  " 5       R                  nUR                  (       a  [        R                  OUn[        S XU4 5       5      (       a  [        eUS:”  a  X:”  d  US:  a  X:  a  [        R                  " SUS9$ [        R                  " XX%S9n[        R                  " Xc5      nU$ )Nr   c              3  óN   #   • U  H  n[         R                  " U5      v •  M     g 7fr   )r   Úis_float_or_fp_tensor©Ú.0ry   s     r   Ú	<genexpr>Úarange.<locals>.<genexpr>t  s    é € ÐVÒBU¸Q”<×5Ò5°a×8Ð8ÒBUùó   ‚#%c              3  óN   #   • U  H  n[         R                  " U5      v •  M     g 7fr   )r   Úis_complex_or_complex_tensorr¬   s     r   r®   r¯   z  s    é € Ð
UÒAT¸AŒ<×4Ò4°Q×7Ð7ÒATùr°   r—   )ÚZeroDivisionErrorr7   Úanyr   r˜   r™   Ú	int_dtypeÚ
is_complexr'   Úfloat64rm   ÚemptyÚaranger   Úcast_if_needed)r›   rœ   Ústepr    r¨   Ú
work_dtyperI   s          r   r¹   r¹   ]  s   € ð ˆqƒyÜÐØ�|˜™ÜˆØ�|ð ˜ˆtØ�}Øˆð �}ô ÑVÀ5ÐPTÑBUÓV×VÑVô ×'Ò'Ó)×5Ò5ä×,Ò,Ó.×8Ñ8ð 	ð
 #(×"2×"2”—’¸€Jô Ñ
UÀ%ÈtÑATÓ
U×UÑUÜ!Ð!àˆq‹�U“\ t¨a£x°E³Lä�{Š{˜1 EÑ*Ð*ä�\Š\˜% tÑ>€FÜ×!Ò! &Ó0€FØ€Mr   c               ón   • Uc  [         R                  " 5       R                  n[        R                  " XS9$ ©Nr—   )r   r˜   r™   r'   r¸   ©rn   r    r   r¨   s       r   r¸   r¸   ‰  ó,   € ð �}Ü×+Ò+Ó-×9Ñ9ˆÜ�;Š;�uÑ*Ð*r   c                óV   • [         R                  " XS9nUb  UR                  U5      nU$ r¾   )r'   Ú
empty_likeÚreshape)Ú	prototyper    r   r   rn   rI   s         r   rÂ   rÂ   ™  s-   € ô ×Ò˜iÑ5€FØÑØ—‘ Ó&ˆØ€Mr   c               ó¶   • [        U [        5      (       a  U 4n Uc  UR                  n[        U [        [        45      (       d  U 4n [
        R                  " XUS9$ r¾   )r)   rd   r    r*   r+   r'   Úfull)rn   Ú
fill_valuer    r   r¨   s        r   rÆ   rÆ   ¦  sQ   € ô �%œ×ÑØ�ˆØ�}Ø× Ñ ˆÜ�eœe¤T˜]×+Ñ+Ø�ˆÜ�:Š:�e¨uÑ5Ð5r   c                óX   • [         R                  " XUS9nUb  UR                  U5      nU$ r¾   )r'   Ú	full_likerÃ   )r   rÇ   r    r   r   rn   rI   s          r   rÉ   rÉ   ·  s-   € ô �_Š_˜Q°%Ñ8€FØÑØ—‘ Ó&ˆØ€Mr   c               ón   • Uc  [         R                  " 5       R                  n[        R                  " XS9$ r¾   )r   r˜   r™   r'   Úonesr¿   s       r   rË   rË   Æ  s,   € ð �}Ü×+Ò+Ó-×9Ñ9ˆÜ�:Š:�eÑ)Ð)r   c                óV   • [         R                  " XS9nUb  UR                  U5      nU$ r¾   )r'   Ú	ones_likerÃ   ©r   r    r   r   rn   rI   s         r   rÍ   rÍ   Ò  s+   € ô �_Š_˜QÑ,€FØÑØ—‘ Ó&ˆØ€Mr   c               ón   • Uc  [         R                  " 5       R                  n[        R                  " XS9$ r¾   )r   r˜   r™   r'   Úzerosr¿   s       r   rÐ   rÐ   ß  rÀ   r   c                óV   • [         R                  " XS9nUb  UR                  U5      nU$ r¾   )r'   Ú
zeros_likerÃ   rÎ   s         r   rÒ   rÒ   ë  s-   € ô ×Ò˜aÑ-€FØÑØ—‘ Ó&ˆØ€Mr   c                óÒ  • Ubã  SU R                   -
  nUS:”  a!  U R                  SU-  U R                  -   5      n U(       d  U R                  S   S:w  a  U R                  n U R	                  5       n SUR                   -
  nUS:”  a!  UR                  SU-  UR                  -   5      nU(       d  UR                  S   S:w  a  UR                  nUR	                  5       n[        X4SS9n U $ )z$Prepare inputs for cov and corrcoef.r‡   r   ©r   r   rX   )rY   Úviewrn   ÚmTr   rE   )Úx_tensorÚy_tensorÚrowvarÚ
ndim_extras       r   Ú_xy_helper_corrcoefrÛ   û  sÐ   € ð Ñà˜Ÿ™Ñ&ˆ
Ø˜‹>Ø—}‘} T¨JÑ%6¸¿¹Ñ%GÓHˆHÞ˜(Ÿ.™.¨Ñ+¨qÓ0Ø—{‘{ˆHØ—>‘>Ó#ˆà˜Ÿ™Ñ&ˆ
Ø˜‹>Ø—}‘} T¨JÑ%6¸¿¹Ñ%GÓHˆHÞ˜(Ÿ.™.¨Ñ+¨qÓ0Ø—{‘{ˆHØ—>‘>Ó#ˆä Ð 4¸1Ñ=ˆà€Or   r—   c               óh  • Uc  Ub  [         e[        XU5      nUR                  [        R                  :H  =(       a    UR
                  nU(       a  [        R                  n[        R                  " Xe5      n[        R                  " U5      nU(       a  UR                  [        R                  5      nU$ r   )rm   rÛ   r    r'   Úfloat16Úis_cpuÚfloat32r   rº   ÚcorrcoefÚto)	ry   ÚyrÙ   ÚbiasÚddofr    Ú	xy_tensorÚis_halfrI   s	            r   rà   rà     s‚   € ð Ñ˜4Ñ+ä!Ð!Ü# A¨&Ó1€Ià�‰¤%§-¡-Ñ/×E°Y×5EÑ5E€GÞä—‘ˆä×$Ò$ YÓ6€IÜ�^Š^˜IÓ&€FæØ—‘œ5Ÿ=™=Ó)ˆà€Mr   c               óh  • [        XU5      n Uc
  US:X  a  SOSnU R                  [        R                  :H  =(       a    U R                  nU(       a  [        R
                  n[        R                  " X5      n [        R                  " XXeS9n	U(       a  U	R                  [        R                  5      n	U	$ )Nr   r   )Ú
correctionÚaweightsÚfweights)
rÛ   r    r'   rÝ   rÞ   rß   r   rº   Úcovrá   )
Úmrâ   rÙ   rã   rä   rê   ré   r    ræ   rI   s
             r   rë   rë   0  sƒ   € ô 	˜A &Ó)€Aà�|Ø˜A“I‰q 1ˆà�w‰wœ%Ÿ-™-Ñ'×5¨Q¯X©X€GÞä—‘ˆä×Ò˜QÓ&€AÜ�YŠY�q°HÑP€FæØ—‘œ5Ÿ=™=Ó)ˆà€Mr   c                ó�  • [         R                  " X5      n[        R                  " X5      n [        R                  " X5      nUS:X  a  UR                  S   S-
  OUnUS:X  a!  UR                  S   S-  S:X  a  [        S5      eU S S S 24   nUS S S S 24   n[        R                  R                  R                  XVUS9nUSS S 24   $ )NrÆ   r   r   Úsamer‡   z#mode='same' and even-length weights)Úpadding)
r   r=   r   rº   rn   rm   r'   ÚnnÚ
functionalÚconv1d)r   ÚvÚmodeÚdtrï   ÚaaÚvvrI   s           r   Ú_conv_corr_implrø   N  sÂ   € Ü	×	&Ò	& qÓ	,€BÜ×Ò˜QÓ#€AÜ×Ò˜QÓ#€Aà $¨£ˆa�g‰g�a‰j˜1Šn°D€Gà�&Ó˜QŸW™W Q™Z¨!™^¨qÓ0ô "Ð"GÓHÐHð 
ˆ4’ˆ7‰€BØ	
ˆ4�’qˆ=Ñ	€Bä�X‰X× Ñ ×'Ñ'¨¸Ð'Ð@€Fð �!’Q�$‰<Ðr   c                óŒ   • U R                   S   UR                   S   :  a  Xp[        R                  " US5      n[        XU5      $ )Nr   ©r   )rn   r'   Úfliprø   ©r   ró   rô   s      r   Úconvolverý   e  s>   € à‡w�wˆq�z�A—G‘G˜A‘JÓØˆ1ô 	�
Š
�1�dÓ€Aä˜1 Ó&Ð&r   c                óF   • [         R                  " U5      n[        XU5      $ r   )r'   Úconj_physicalrø   rü   s      r   Ú	correlater   p  s   € Ü×Ò˜AÓ€AÜ˜1 Ó&Ð&r   c               óð   • U R                  5       S:X  a  U R                  S[        S9n [        R                  " 5       R
                  n[        R                  " U 4USS9u  n [        R                  " XU5      $ )Nr   r—   Úsafer   )
ÚnumelÚ	new_emptyrd   r   r˜   rµ   r   r   r'   Úbincount)ry   ÚweightsÚ	minlengthrµ   s       r   r  r  x  s^   € Ø‡w�wƒy�Aƒ~à�K‰K˜¤ˆKÐ%ˆä×+Ò+Ó-×7Ñ7€IÜ×!Ò! 1 $¨	¸6ÑB�D€Qä�>Š>˜! iÓ0Ð0r   c               ó  • US L US L :w  a  [        S5      eU R                  [        R                  :w  a  U R	                  [        R                  5      n Uc  Uc  [        R
                  " U 5      nU$ [        R
                  " XU5      nU$ )Nz1either both or neither of x and y should be given)r6   r    r'   Úboolrá   r$   )Ú	conditionry   râ   rI   s       r   r$   r$   ƒ  sw   € ð 	
ˆTˆ	�q˜D�yÓ!ÜÐLÓMÐMà‡�œ%Ÿ*™*Ó$Ø—L‘L¤§¡Ó,ˆ	à�y�Q‘YÜ—’˜YÓ'ˆð €Mô —’˜Y¨1Ó-ˆØ€Mr   c                ó   • U R                   $ r   )rY   ©r   s    r   rY   rY   ™  s   € Ø�6‰6€Mr   c                ó,   • [        U R                  5      $ r   )r*   rn   r  s    r   rn   rn   �  s   € Ü�—‘‹>Ðr   c                óF   • Uc  U R                  5       $ U R                  U   $ r   )r  rn   )r   rB   s     r   Úsizer  ¡  s!   € Ø�|Ø�w‰w‹yÐà�w‰w�t‰}Ðr   c                óf   • [         R                  " U R                  U5      nU R                  U5      $ r   )r   Úexpand_shapern   rÕ   )r   rB   rn   s      r   Úexpand_dimsr  «  s&   € Ü×Ò˜qŸw™w¨Ó-€EØ�6‰6�%‹=Ðr   c                ó²   • Uc  [        [        U R                  5      5      nO [        R                  " XR                  5      n[
        R                  " X5      $ r   )r*   ÚrangerY   r   Únormalize_axis_tupler'   rû   )rì   rB   s     r   rû   rû   °  s<   € à�|Ü”U˜1Ÿ6™6“]Ó#‰ä×)Ò)¨$·±Ó7ˆÜ�:Š:�aÓÐr   c                ó.   • [         R                  " U 5      $ r   )r'   Úflipud©rì   s    r   r  r  ¹  ó   € Ü�<Š<˜‹?Ðr   c                ó.   • [         R                  " U 5      $ r   )r'   Úfliplrr  s    r   r  r  ½  r  r   c                óp   • [         R                  " X R                  5      n[        R                  " XU5      $ r   )r   r  rY   r'   Úrot90)rì   ÚkÚaxess      r   r  r  Á  s'   € Ü×%Ò% d¯F©FÓ3€DÜ�;Š;�q˜TÓ"Ð"r   c                ó*   • [         R                  " XS9$ )N)r  )r'   Úbroadcast_to)Úarrayrn   r   s      r   r!  r!  É  s   € Ü×Ò˜eÑ0Ð0r   c                 ó(   • [         R                  " U 6 $ r   )r'   Úbroadcast_shapes)Úargss    r   r$  r$  Ï  s   € Ü×!Ò! 4Ð(Ð(r   )r   c                ó(   • [         R                  " U6 $ r   )r'   Úbroadcast_tensors)r   r%  s     r   Úbroadcast_arraysr(  Ó  s   € Ü×"Ò" DÐ)Ð)r   Úxy)r   ÚsparseÚindexingc           
     óô  • [        U5      nUS;  a  [        S5      eSU-  n[        U5       VVs/ s H$  u  pgUR                  US U S-   XVS-   S  -   5      PM&     nnnUS:X  a@  US:”  a:  US   R                  SUS	S  -   5      US'   US   R                  S
US	S  -   5      US'   U(       d  [        R
                  " U6 nU (       a  U Vs/ s H  owR                  5       PM     nn[        U5      $ s  snnf s  snf )N)r)  Úijz.Valid values for `indexing` are 'xy' and 'ij'.rÔ   )rv   r   r)  r   )r   rv   r‡   )rv   r   )rw   r6   Ú	enumeraterÃ   r'   r'  r   r+   )	r   r*  r+  ÚxirY   Ús0Úiry   Úoutputs	            r   Úmeshgridr3  ×  sù   € Üˆr‹7€Dà�|Ó#ÜÐIÓJÐJà	�‰€BÜBKÈBÄ-ÔPÂ-¹$¸!ˆa�i‰i˜˜2˜A˜ ™¨°©E¨G¨Ñ4Ö5Á-€FÑPà�4Ó˜D 1›Hà˜1‘I×%Ñ% g°°1°2°Ñ&6Ó7ˆˆq‰	Ø˜1‘I×%Ñ% g°°1°2°Ñ&6Ó7ˆˆq‰	æä×(Ò(¨&Ð1ˆæÙ%+Ó,¢V —'‘'–)¡VˆÐ,ä�‹<Ðùó Qùò -s   °+C/Ã	C5c                ó2  • [        U 5      n [        U 5      nSU-  nU(       a  SnO[        R                  " U4U -   US9n[	        U 5       HI  u  pg[        R
                  " XqS9R                  US U U4-   XFS-   S  -   5      nU(       a  XX4-   nME  X…U'   MK     U$ )NrÔ   r5   r—   r   )r*   rw   r'   r¸   r.  r¹   rÃ   )	Ú
dimensionsr    r*  r“   rn   r.   r1  ÚdimÚidxs	            r   Úindicesr8  ï  s    € ä�zÓ"€JÜˆJ‹€AØ�1‰H€EÞØ‰ä�kŠk˜1˜$ Ñ+°5Ñ9ˆÜ˜JÖ'‰ˆÜ�lŠl˜3Ñ,×4Ñ4Ø�"�1ˆI˜˜Ñ ¨1¡u w Ñ/ó
ˆö Ø˜‘,ŠCà�‹Fñ (ð €Jr   c                ó.   • [         R                  " X5      $ r   )r'   Útril©rì   r  s     r   r:  r:    r�   r   c                ó.   • [         R                  " X5      $ r   )r'   Útriur;  s     r   r=  r=  
  r�   r   c                ó6   • Uc  U n[         R                  " XUS9$ ©N©Úoffset)r'   Útril_indices©rq   r  rì   s      r   rB  rB    ó   € Ø�yØˆÜ×Ò˜a¨1Ñ-Ð-r   c                ó6   • Uc  U n[         R                  " XUS9$ r?  )r'   Útriu_indicesrC  s      r   rF  rF    rD  r   c                ó˜   • U R                   S:w  a  [        S5      e[        R                  " U R                  S   U R                  S   US9$ ©Nr‡   zinput array must be 2-dr   r   r@  )rY   r6   r'   rB  rn   ©r`   r  s     r   Útril_indices_fromrJ    ó>   € Ø
‡x�x�1ƒ}ÜÐ2Ó3Ð3ä×Ò˜cŸi™i¨™l¨C¯I©I°a©LÀÑCÐCr   c                ó˜   • U R                   S:w  a  [        S5      e[        R                  " U R                  S   U R                  S   US9$ rH  )rY   r6   r'   rF  rn   rI  s     r   Útriu_indices_fromrM  !  rK  r   c               ó`   • Uc  U n[         R                  " X4US9n[         R                  " XRS9$ )Nr—   )Údiagonal)r'   rË   r:  )r“   ÚMr  r    r¨   rh   s         r   ÚtrirQ  (  s/   € ð 	�yØˆÜ�ZŠZ˜˜ eÑ,€FÜ�:Š:�fÑ)Ð)r   c                ó²   • [         R                  " X5      n[        R                  " X5      n [        R                  " X5      n[        R
                  " XX#US9$ ©N)ÚrtolÚatolÚ	equal_nan)r   r=   r   rº   r'   Úisclose©r   r{   rT  rU  rV  r    s         r   rW  rW  9  sE   € Ü×)Ò)¨!Ó/€EÜ×Ò˜QÓ&€AÜ×Ò˜QÓ&€AÜ�=Š=˜ D¸yÑIÐIr   c                ó²   • [         R                  " X5      n[        R                  " X5      n [        R                  " X5      n[        R
                  " XX#US9$ rS  )r   r=   r   rº   r'   ÚallcloserX  s         r   rZ  rZ  @  sE   € Ü×)Ò)¨!Ó/€EÜ×Ò˜QÓ&€AÜ×Ò˜QÓ&€AÜ�>Š>˜! TÀ	ÑJÐJr   c                óê   • U R                   UR                   :w  a  gX:H  nU(       a0  U[        R                  " U 5      [        R                  " U5      -  -  nUR                  5       R	                  5       $ ©NF)rn   r'   ÚisnanÚallÚitem)Úa1Úa2rV  Úconds       r   Ú_tensor_equalrc  G  sQ   € à	‡x�x�2—8‘8ÓØØ‰8€DÞØ”u—{’{ 2“¬¯ª°R«Ñ8Ñ9ˆØ�8‰8‹:�?‰?ÓÐr   c                ó   • [        XUS9$ )N©rV  )rc  )r`  ra  rV  s      r   Úarray_equalrf  Q  s   € Ü˜¨9Ñ5Ð5r   c                ój   •  [         R                  " X5      u  p#[        X#5      $ ! [         a     gf = fr\  )r'   r'  ÚRuntimeErrorrc  )r`  ra  Úa1_tÚa2_ts       r   Úarray_equivrk  U  s:   € ðÜ×,Ò,¨RÓ4‰
ˆô ˜Ó$Ð$øô ó áðús   ‚% ¥
2±2c                óæ   • U R                  5       (       aH  [        R                  " U R                  X#US9n[        R                  " U R                  X#US9nUSU-  -   $ [        R                  " XX4S9$ )N)ÚnanÚposinfÚneginfy              ð?)r¶   r'   Ú
nan_to_numÚrealÚimag)ry   r   rm  rn  ro  ÚreÚims          r   rp  rp  _  s`   € ð 	‡|�|‡~�~Ü×Ò˜aŸf™f¨#ÀVÑLˆÜ×Ò˜aŸf™f¨#ÀVÑLˆØ�B˜‘G‰|Ðä×Ò °6ÑIÐIr   c                ó¦   • [         R                  " XS9u  u  p[         R                  " X R                  5      n[	        S 5      4U-  US4-   nX   nU$ )NrX   .)r   rC   rZ   rY   Úslice)r   r8  rB   r9   rô   r7  rI   s          r   Útakerw  n  sQ   € ô ×(Ò(¨Ñ6�J�D€QÜ×%Ò% d¯F©FÓ3€DÜ�‹;ˆ.˜4Ñ
 7¨C .Ñ
0€CØ‰V€FØ€Mr   c                ó    • [         R                  " XS9u  u  p[         R                  " X R                  5      n[        R
                  " XU5      $ ©NrX   )r   rC   rZ   rY   r'   Útake_along_dim)r`   r8  rB   s      r   Útake_along_axisr{  |  s=   € Ü×*Ò*¨3Ñ:�L�F€SÜ×%Ò% d¯H©HÓ5€DÜ×Ò ¨dÓ3Ð3r   c                óð  • UR                  U R                  5      nUR                  5       UR                  5       :”  ac  UR                  5       UR                  5       -   S-
  UR                  5       -  nUR                  S5      R	                  U4UR
                  -   5      nUR                  5       UR                  5       :  a#  UR                  5       nUS UR                  5        nU R                  X5        g ©Nr   r   )rg   r    r  Ú	unsqueezeÚexpandrn   r_   Úput_)r   r8  ra   rô   ró   Úratios         r   Úputr‚  ‚  s¸   € ð 	�‰�A—G‘GÓ€Að ‡}�}ƒ˜Ÿ™›Ó"Ø—‘“ 1§7¡7£9Ñ,¨qÑ0°Q·W±W³YÑ>ˆØ�K‰K˜‹N×!Ñ! 5 (¨Q¯W©WÑ"4Ó5ˆð ‡}�}ƒ˜Ÿ™›Ó"Ø�I‰I‹KˆØÐ�—‘“Ð ˆØ‡F�Fˆ7ÔØr   c                óf  • [         R                  " XS9u  u  p[         R                  " X0R                  5      n[        R
                  " X5      u  p[         R                  " X R                  5      n[        R                  " XX5      nU R                  UR                  U R                  5      5        g ry  )r   rC   rZ   rY   r'   r'  rº   r    Úscatterr!   rÃ   rn   )r`   r8  ra   rB   rI   s        r   Úput_along_axisr…  —  s|   € Ü×*Ò*¨3Ñ:�L�F€SÜ×%Ò% d¯H©HÓ5€Dä×-Ò-¨gÓ>�O€GÜ×!Ò! &¯)©)Ó4€FÜ�]Š]˜3 gÓ6€FØ‡I�Iˆf�n‰n˜SŸY™YÓ'Ô(Ør   c           
     óp  • [         R                  " [         R                  " U6 5      n[        UR                  5       VVs/ s HG  u  pE[         R
                  " U5      R                  SU-  U4-   SUR                  U-
  S-
  -  -   5      PMI     nnnXS'   U[        U5         R                  S5      $ s  snnf )NrÔ   r   r   )
r'   r[   r'  r.  rn   r¹   rÕ   rY   r*   Úsqueeze)r   Úchoicesr9   rô   r1  r6  Úidx_lists          r   ÚchooserŠ  ¢  s©   € ô �kŠkœ%×1Ò1°7Ð;Ó<€Gô   §¡Ô.ôâ.‰FˆAô 	�Š�SÓ×Ñ˜t a™x¨3¨&Ñ0°4¸7¿<¹<È!Ñ;KÈaÑ;OÑ3PÑPÖQÙ.ð ñ ð
 ˆQ�KØ”5˜“?Ñ#×+Ñ+¨AÓ.Ð.ùós   Á AB2re  c               ó    • [         R                  " XS9u  u  p[         R                  " X@R                  5      n[        R
                  " XX4S9nU$ )NrX   )Úreturn_inverseÚreturn_countsr6  )r   rC   rZ   rY   r'   Úunique)ÚarÚreturn_indexrŒ  r�  rB   rV  rI   s          r   rŽ  rŽ  ¹  sF   € ô ×)Ò)¨"Ñ8�K�E€RÜ×%Ò% d¯G©GÓ4€Dä�\Š\Ø
¸ñ€Fð €Mr   c                ó,   • [         R                  " U SS9$ )NT©Úas_tuple)r'   Únonzeror  s    r   r”  r”  Ì  s   € Ü�=Š=˜ TÑ*Ð*r   c                ó.   • [         R                  " U 5      $ r   )r'   Úargwherer  s    r   r–  r–  Ð  ó   € Ü�>Š>˜!ÓÐr   c                óN   • [         R                  " U 5      R                  SS9S   $ )NTr’  r   )r'   r_   r”  r  s    r   Úflatnonzeror™  Ô  s$   € Ü�=Š=˜Ó×#Ñ#¨TÐ#Ð2°1Ñ5Ð5r   c                ó0   • [         R                  " XU5      $ r   )r'   Úclamp)r   ÚminÚmaxr9   s       r   Úcliprž  Ø  s   € ô �;Š;�q˜sÓ#Ð#r   c                ó0   • [         R                  " XU5      $ r   )r'   Úrepeat_interleave)r   ÚrepeatsrB   s      r   Úrepeatr¢  á  s   € Ü×"Ò" 1¨tÓ4Ð4r   c                ó^   • [        U[        5      (       a  U4n[        R                  " X5      $ r   )r)   rd   r'   Útile)ÚAÚrepss     r   r¤  r¤  å  s%   € Ü�$œ×ÑØˆwˆÜ�:Š:�aÓÐr   c                óp  • Uc  U $ [        U[        5      (       a  U4nU R                  5       n SnU H  nX#-  nUS:  d  M  [        S5      e   U R	                  5       S:X  d  US:X  a  [
        R                  " XR                  S9$ U* U R	                  5       -  * n[        U 4U-  5      S U n [        X5      $ )Nr   r   z0all elements of `new_shape` must be non-negativer—   )
r)   rd   r_   r6   r  r'   rÐ   r    rJ   rÃ   )r   Ú	new_shapeÚnew_sizeÚ
dim_lengthr¡  s        r   Úresizer«  ë  s·   € ð ÑØˆä�)œS×!Ñ!Ø�Lˆ	à	�	‰	‹€Aà€HÛˆ
ØÑˆØ˜�>ÜÐOÓPÐPñ  ð
 	‡w�wƒy�Aƒ~˜ Q›ä�{Š{˜9¯G©GÑ4Ð4à�	˜QŸW™W›YÑ&Ð'€GÜ�Q�D˜7‘NÓ# I XÐ.€Aä�1Ó Ð r   c                ó°   • [         R                  " X R                  5      n[         R                  " X0R                  5      n[        R                  " XX#5      $ r   )r   rZ   rY   r'   rO  )r   rA  Úaxis1Úaxis2s       r   rO  rO  	  s;   € Ü×&Ò& u¯f©fÓ5€EÜ×&Ò& u¯f©fÓ5€EÜ�>Š>˜! UÓ2Ð2r   c                óL   • [         R                  " XX#S9R                  SUS9nU$ )N)Údim1Údim2rv   r—   )r'   rO  Úsum)r   rA  r­  r®  r    r9   rI   s          r   Útracer³    s)   € ô �^Š^˜A¨EÑ>×BÑBÀ2ÈUÐBÐS€FØ€Mr   c               ó¾   • Uc  [         R                  " 5       R                  nUc  U n[        R                  " XUS9nUR                  U5      R                  S5        U$ )Nr—   r   )r   r˜   r™   r'   rÐ   rO  Úfill_)r“   rP  r  r    r   r¨   Úzs          r   Úeyer·    sR   € ð �}Ü×+Ò+Ó-×9Ñ9ˆØ�yØˆÜ�Š�A Ñ&€AØ‡J�JˆqƒM×Ñ˜ÔØ€Hr   c               ó*   • [         R                  " XS9$ r¾   )r'   r·  )rq   r    r¨   s      r   Úidentityr¹  -  s   € Ü�9Š9�QÑ$Ð$r   c                ó.   • [         R                  " X5      $ r   )r'   Údiag©ró   r  s     r   r»  r»  1  r�   r   c                ó.   • [         R                  " X5      $ r   )r'   Údiagflatr¼  s     r   r¾  r¾  5  s   € Ü�>Š>˜!ÓÐr   r‡   c                ó:   • [         R                  " U 5      nU4U-  $ r   )r'   r¹   )rq   rY   r7  s      r   Údiag_indicesrÀ  9  s   € Ü
�,Š,�q‹/€CØˆ6�D‰=Ðr   c                ó°   • U R                   S:¼  d  [        S5      eU R                  nUSS  US S :w  a  [        S5      e[        US   U R                   5      $ )Nr‡   z input array must be at least 2-dr   rv   z/All dimensions of input must be of equal lengthr   )rY   r6   rn   rÀ  )r`   Úss     r   Údiag_indices_fromrÃ  >  sX   € Ø�8‰8�q‹=ÜÐ;Ó<Ð<ð 	�	‰	€AØˆˆ€u��#�2�ƒÜÐJÓKÐKÜ˜˜!™˜cŸh™hÓ'Ð'r   c                ó¨  • U R                   S:  a  [        S5      eUR                  5       S:X  a  U(       d  U R                  U5        U $ UR                   S:X  a  UR	                  S5      nU R                   S:X  a¸  U R
                  S   U R
                  S   :„  nU(       a  U(       d4  U R                  5       nUR                  US UR                  5        5        U $ U R
                  u  pV[        R                  " XUUS-   -  -
  5      nXv-  nXv-  n	US UR                  5        X	US-   -  U-   U4'    U $ [        U 5      nUS U R
                  S    X'   U $ )Nr‡   zarray must be at least 2-dr   r   )rY   r6   r  Úfill_diagonal_r~  rn   rO  r!   r'   r¹   rÃ  )
r   ÚvalÚwrapÚtallr»  Úmax_Úmin_r7  ÚmodÚdivs
             r   Úfill_diagonalrÍ  I  s7  € Ø‡v�v�ƒzÜÐ5Ó6Ð6Ø
‡y�yƒ{�aÓ¦Ø	×Ñ˜ÔØˆà
‡x�x�1ƒ}Ø�m‰m˜AÓˆð 	‡v�v�ƒ{Ø�w‰w�q‰z˜AŸG™G A™JÑ&ˆæž4à—:‘:“<ˆDØ�J‰J�s˜>˜TŸZ™Z›\Ð*Ô+ð €Hð Ÿ™‰JˆDÜ—,’,˜t¨t°a©xÑ&8Ñ8Ó9ˆCØ‘*ˆCØ‘+ˆCØ/2°=°S·Y±Y³[Ð/AˆA�d˜Q‘hÑ #Ñ% sÐ+Ò,ð €Hô	   Ó"ˆà�\�q—w‘w˜q‘zÐ"ˆ‰à€Hr   c               óø  • [         R                  " X5      u  p#UR                  S:”  a  UR                  5       nUR                  S:”  a  UR                  5       n[        R
                  " X#5      nU[         R                  :H  =(       a    UR                  =(       d    UR                  nU[         R                  :H  nU(       a  [         R                  nOU(       a  [         R                  n[        R                  " X$5      n[        R                  " X45      n[         R                  " X#5      nU(       a!  UR                  [         R                  5      nU$ U(       a  UR                  [         R                  5      nU$ ©Nr   )r'   r(   rY   r_   r   r=   rÝ   rÞ   r	  rß   Úuint8r   rº   Úvdotrá   )r   r{   Út_aÚt_br    ræ   Úis_boolrI   s           r   rÑ  rÑ  k  s   € ô ×Ò Ó%�H€CØ
‡x�x�!ƒ|Ø�k‰k‹mˆØ
‡x�x�!ƒ|Ø�k‰k‹mˆä×)Ò)¨#Ó3€EØ”u—}‘}Ñ$×C¨#¯*©*×*B¸¿
¹
€GØ”u—z‘zÑ!€Gö Ü—‘‰Þ	Ü—‘ˆä
×
Ò
˜sÓ
*€CÜ
×
Ò
˜sÓ
*€Cä�ZŠZ˜Ó!€FæØ—‘œ5Ÿ=™=Ó)ˆð €Mö 
Ø—‘œ5Ÿ:™:Ó&ˆà€Mr   c                óD  • [        U[        [        45      (       a*  U Vs/ s H  n[        U[        5      (       a  U/OUPM     nn[        R
                  " X5      n[        R                  " X5      n [        R                  " X5      n[        R                  " XUS9$ s  snf )N)Údims)
r)   r+   r*   rd   r   r=   r   rº   r'   Ú	tensordot)r   r{   r  ÚaxÚtarget_dtypes        r   r×  r×  ‹  s�   € Ü�$œœu˜×&Ñ&Ù>BÓCºd¸œ
 2¤s×+Ñ+�‘°Ò3¹dˆÐCä×0Ò0°Ó6€LÜ×Ò˜QÓ-€AÜ×Ò˜QÓ-€Aä�?Š?˜1 dÑ+Ð+ùò Ds    $Bc                ó   • [         R                  " X5      nU[        R                  :H  nU(       a  [        R                  n[
        R                  " X5      n [
        R                  " X5      nU R                  S:X  d  UR                  S:X  a  X-  nO[        R                  " X5      nU(       a  UR                  [        R                  5      nU$ ©Nr   )
r   r=   r'   r	  rÐ  r   rº   rY   Úmatmulrá   )r   r{   r9   r    rÔ  rI   s         r   ÚdotrÝ  –  s�   € Ü×)Ò)¨!Ó/€EØ”u—z‘zÑ!€GÞÜ—‘ˆä×Ò˜QÓ&€AÜ×Ò˜QÓ&€Aà‡v�v�ƒ{�a—f‘f “kØ‘‰ä—’˜aÓ#ˆæØ—‘œ5Ÿ:™:Ó&ˆà€Mr   c               óH  • [         R                  " X5      nU[        R                  :H  =(       a    U R                  =(       d    UR                  nU[        R
                  :H  nU(       a  [        R                  nOU(       a  [        R                  n[        R                  " X5      n [        R                  " X5      n[        R                  " X5      nU(       a!  UR                  [        R                  5      nU$ U(       a  UR                  [        R
                  5      nU$ r   )r   r=   r'   rÝ   rÞ   r	  rß   rÐ  r   rº   Úinnerrá   )r   r{   r    ræ   rÔ  rI   s         r   rß  rß  ª  s¾   € Ü×)Ò)¨!Ó/€EØ”u—}‘}Ñ$×?¨!¯(©(×*>°a·h±h€GØ”u—z‘zÑ!€Gæä—‘‰Þ	Ü—‘ˆä×Ò˜QÓ&€AÜ×Ò˜QÓ&€Aä�[Š[˜Ó€FæØ—‘œ5Ÿ=™=Ó)ˆð €Mö 
Ø—‘œ5Ÿ:™:Ó&ˆØ€Mr   c                ó.   • [         R                  " X5      $ r   )r'   Úouter)r   r{   r9   s      r   rá  rá  Á  s   € Ü�;Š;�qÓÐr   c                ój  • Ub	  U4S-  u  p#n[         R                  " X R                  5      n[         R                  " X1R                  5      n[        R                  " XS5      n [        R                  " XS5      nSnU R
                  S   S;  d  UR
                  S   S;  a  [        U5      e[        U S   R
                  US   R
                  5      nU R
                  S   S:X  d  UR
                  S   S:X  a%  US-  n[         R                  " U[        U5      5      n[        R                  " X5      n[        R                  " XxS9n	[         R                  " X5      n [         R                  " X5      nU S   n
U S   nU R
                  S   S:X  a  U S	   nUS   nUS   nUR
                  S   S:X  a  US	   nU	R                  S
:w  a"  U	R
                  S   S:X  a  U	S   nU	S   nU	S	   nU R
                  S   S:X  am  UR
                  S   S:X  a  X®-  X½-  -
  U	S'   U	$ UR
                  S   S:w  a  [        SUR
                  S    35      eUW-  WS'   U
* U-  WS'   X®-  X½-  -
  WS'   O²U R
                  S   S:w  a  [        SU R
                  S    35      eUR
                  S   S:X  a'  UW-  WU-  -
  WS'   XÍ-  X¯-  -
  WS'   X®-  X½-  -
  WS'   OJUR
                  S   S:w  a  [        SUR
                  S    35      eW* U-  WS'   XÍ-  WS'   X®-  X½-  -
  WS'   [        R                  " U	SU5      $ )NrŒ   rv   zDincompatible dimensions for cross product
(dimension must be 2 or 3))r‡   rŒ   ).r   )rŒ   r—   ).r   ).r‡   r   r‡   .zb.shape[-1] must be 3, got za.shape[-1] must be 3, got zb.shape[-1] must be 2, got )r   rZ   rY   r'   Úmoveaxisrn   r6   r$  rw   r   r=   r¸   rº   ÚAssertionError)r   r{   ÚaxisaÚaxisbÚaxiscrB   Úmsgrn   r    ÚcpÚa0r`  ra  Úb0Úb1Úb2Úcp0Úcp1Úcp2s                      r   Úcrossrñ  Å  s.  € ð ÑØ#˜g¨™kÑˆ�eô ×&Ò& u¯f©fÓ5€EÜ×&Ò& u¯f©fÓ5€Eô 	�Š�q Ó$€AÜ�Š�q Ó$€AØ
Q€CØ‡w�wˆr�{˜&Ó  A§G¡G¨B¡K°vÓ$=Ü˜‹oÐô ˜Q˜v™YŸ_™_¨a°©i¯o©oÓ>€EØ‡w�wˆr�{�aÓ˜1Ÿ7™7 2™;¨!Ó+Ø�‰ˆä×*Ò*¨5´#°e³*Ó=ˆÜ×)Ò)¨!Ó/€EÜ	�Š�UÑ	(€Bô 	×Ò˜QÓ&€AÜ×Ò˜QÓ&€Að 
ˆ6‰€BØ	
ˆ6‰€BØ‡w�wˆr�{�aÓØˆv‰YˆØ	
ˆ6‰€BØ	
ˆ6‰€BØ‡w�wˆr�{�aÓØˆv‰YˆØ	‡w�w�!ƒ|˜Ÿ™ ™¨Ó)Ø�‰jˆØ�‰jˆØ�‰jˆà‡w�wˆr�{�aÓØ�7‰7�2‰;˜!Óà‘g ¡Ñ'ˆBˆs‰GØˆIà�w‰w�r‰{˜aÓÜ$Ð'BÀ1Ç7Á7È2Á;À-Ð%PÓQÐQð ˜B‘wˆC�‰HØ�s˜R‘xˆC�‰HØ‘w ¡Ñ(ˆC�ŠHà�7‰7�2‰;˜!ÓÜ Ð#>¸q¿w¹wÀr¹{¸mÐ!LÓMÐMØ�7‰7�2‰;˜!ÓØ˜B‘w  b¡Ñ(ˆC�‰HØ‘w ¡Ñ(ˆC�‰HØ‘w ¡Ñ(ˆC�ŠHà�w‰w�r‰{˜aÓÜ$Ð'BÀ1Ç7Á7È2Á;À-Ð%PÓQÐQØ�s˜R‘xˆC�‰HØ‘wˆC�‰HØ‘w ¡Ñ(ˆC�‰Hä�>Š>˜"˜b %Ó(Ð(r   r  )r9   r    r   r   Úoptimizec                óø  • SSK Jn  SSKJnJnJn	Jn
Jn  U
" U5      nU	" U5      nU b  [        X5      (       d  [        S5      eUS:w  a  [        S5      e[        US   [        5      (       + nU(       a  US S S S S	2   nO	US   USS  pÞU Vs/ s H
  oø" U5      PM     nnUc  [        R                  " U6 OUnU[        R                  :H  =(       a    [!        S
 U 5       5      nU(       a  [        R"                  nU[        R$                  [        R&                  [        R(                  [        R*                  4;   nU(       a  [        R,                  n[.        R0                  " UUU5      nSSKJn   UR7                  5       (       a“  [        R8                  R4                  R:                  n[        R8                  R4                  R<                  nUSL a  SnO$USL a  S[        R8                  R4                  l        U[        R8                  R4                  l        U(       aƒ  USS S	2   n[?        U5      S	-  S:H  nU(       a  US   n[A        [B        RD                  RG                  [I        UU5      5      5      nU(       a  URK                  W5        [        RL                  " U6 nO[        RL                  " W/UQ76 nUR7                  5       (       a>  W[        R8                  R4                  l        W[        R8                  R4                  l        U" U U5      nU" U5      $ s  snf ! UR7                  5       (       a?  W[        R8                  R4                  l        W[        R8                  R4                  l        f f = f)Nr   )Úndarray)Úmaybe_copy_toÚnormalize_array_likeÚnormalize_castingÚnormalize_dtypeÚwrap_tensorsz'out' must be an arrayr   z#'order' parameter is not supported.r   rv   r‡   c              3  ó8   #   • U  H  oR                   v •  M     g 7fr   )rÞ   )r­   Úts     r   r®   Úeinsum.<locals>.<genexpr>7  s   é € Ð3NÂgÀ·H¶HÂgùs   ‚)Ú
opt_einsumTÚautoF)'Ú_ndarrayrô  Ú_normalizationsrõ  rö  r÷  rø  rù  r)   r7   rm   Ústrr   r=   r'   rÝ   r^  rß   rÐ  Úint8Úint16Úint32Úint64r   r   Útorch.backendsrý  Úis_availableÚbackendsÚstrategyÚenabledrw   r+   Ú	itertoolsÚchainÚfrom_iterablerx   rb   Úeinsum)r9   r    r   r   rò  Úoperandsrô  rõ  rö  r÷  rø  rù  Úsublist_formatÚarray_operandsÚ
subscriptsÚopr>   rÙ  ræ   Úis_short_intrý  Úold_strategyÚold_enabledÚsublistsÚhas_sublistoutÚ
sublistoutrI   s                              r   r  r    sÃ  € õ "÷õ ñ ˜EÓ"€EÙ Ó(€GØ
�œz¨#×7Ñ7ÜÐ0Ó1Ð1Ø�ƒ|Ü!Ð"GÓHÐHô $ H¨Q¡K´Ó5Ô5€NÞð " # 2˜¡s¨ sÑ+‰ð &.¨a¡[°(¸1¸2°,�Ná2@ÓA².¨BÐ# BÖ'±.€GÐAØ>C¹m”<×0Ò0°'Ñ:ÐQV€Lð œeŸm™mÑ+×N´Ñ3NÁgÓ3NÓ0N€GÞÜ—}‘}ˆà¤E§K¡K´·±¼U¿[¹[Ì%Ï+É+Ð#VÑV€LÞÜ—{‘{ˆä×$Ò$ W¨l¸GÓD€Gå)ð!<à×"Ñ"×$Ñ$Ü Ÿ>™>×4Ñ4×=Ñ=ˆLÜŸ.™.×3Ñ3×;Ñ;ˆKð
 ˜4ÒØ!‘Ø˜UÒ"Ø49”—‘×)Ñ)Ô1à19ŒE�N‰N×%Ñ%Ô.æà   1 ‘~ˆHÜ  ›]¨QÑ.°!Ñ3ˆNÞØ% b™\�
ÜœIŸO™O×9Ñ9¼#¸gÀxÓ:PÓQÓRˆHÞØ—‘ 
Ô+ä—\’\ 8Ð,‰Fä—\’\ *Ð7¨wÒ7ˆFð ×"Ñ"×$Ñ$Ø1=ŒE�N‰N×%Ñ%Ô.Ø0;ŒE�N‰N×%Ñ%Ô-á˜3 Ó'€FÙ˜ÓÐùòi Bøð^ ×"Ñ"×$Ñ$Ø1=ŒE�N‰N×%Ñ%Ô.Ø0;ŒE�N‰N×%Ñ%Õ-ð %ús   ÂLÅ1E	L# Ì#AM9c                óì   • U R                   R                  (       a  [        SU R                    S35      e[        R                  " XS9u  u  p[        R
                  " XR                  5      nUS:H  nXU4$ )Nzsorting z is not supportedrX   Ústable)r    r¶   rm   r   rC   rZ   rY   )rh   rB   Úkindr   r  s        r   Ú_sort_helperr  m  se   € Ø‡|�|××Ü! H¨V¯\©\¨NÐ:KÐ"LÓMÐMÜ×-Ò-¨fÑ@�O�I€VÜ×%Ò% d¯K©KÓ8€Dà�XÑ€Fà˜ÐÐr   c                ób   • [        XX#5      u  pn[        R                  " XUS9nUR                  $ ©N)r6  r  )r  r'   Úsortra   )r   rB   r  r   r  rI   s         r   r   r   x  s,   € ä" 1¨DÓ8�O€AˆVÜ�ZŠZ˜¨FÑ3€FØ�=‰=Ðr   c                óJ   • [        XX#5      u  pn[        R                  " XUS9$ r  )r  r'   Úargsort)r   rB   r  r   r  s        r   r"  r"    s#   € Ü" 1¨DÓ8�O€AˆVÜ�=Š=˜¨VÑ4Ð4r   c                ó’   • U R                   R                  (       a  [        SU R                    35      e[        R                  " XX#S9$ )Nzsearchsorted with dtype=)ÚsideÚsorter)r    r¶   rm   r'   Úsearchsorted)r   ró   r$  r%  s       r   r&  r&  „  s;   € ð 	‡w�w××Ü!Ð$<¸Q¿W¹W¸IÐ"FÓGÐGä×Ò˜a¨Ñ=Ð=r   c                ó´   • [         R                  " XR                  S5      n[         R                  " X R                  S5      n[        R                  " XU5      $ )NÚsourceÚdestination)r   r  rY   r'   rã  )r   r(  r)  s      r   rã  rã  �  s?   € Ü×'Ò'¨·±¸ÓA€FÜ×,Ò,¨[¿&¹&À-ÓP€KÜ�>Š>˜! [Ó1Ð1r   c                ó°   • [         R                  " XR                  5      n[         R                  " X R                  5      n[        R                  " XU5      $ r   )r   rZ   rY   r'   Úswapaxes)r   r­  r®  s      r   r+  r+  –  s;   € Ü×&Ò& u¯f©fÓ5€EÜ×&Ò& u¯f©fÓ5€EÜ�>Š>˜! EÓ*Ð*r   c                óv  • U R                   n[        R                  " X5      nUS:  a  X#-  nSnSUs=::  a	  US-   :  d$  O  [        R                  " USU* SUS-   U4-  5      eX:  a  US-  nX:X  a  U $ [	        [        U5      5      nUR                  U5        UR                  X!5        U R                  U5      $ )Nr   z5'%s' arg requires %d <= %s < %d, but %d was passed inr   r›   )	rY   r   rZ   Ú	AxisErrorr+   r  ÚremoveÚinsertrÕ   )r   rB   r›   rq   rè  r  s         r   Úrollaxisr0  œ  s³   € ð 	
�‰€AÜ×%Ò% dÓ.€DØˆqƒyØ‰
ˆØ
A€CØ�Õ˜˜Q™ÕÜ�oŠo˜c W¨q¨b°'¸1¸q¹5À%Ð$HÑHÓIÐIØƒ|à�‰
ˆØƒ}ð ˆÜ”�a“‹>€DØ‡K�K�ÔØ‡K�K�ÔØ�6‰6�$‹<Ðr   c                ó¼   • UbC  [         R                  " X R                  SS9n[        U[        5      (       d  U4[        U5      -  n[        R                  " XU5      $ )NT)Úallow_duplicate)r   r  rY   r)   r*   rw   r'   Úroll)r   ÚshiftrB   s      r   r3  r3  ·  sL   € ØÑÜ×)Ò)¨$·±ÈÑMˆÜ˜%¤×'Ñ'Ø�Hœs 4›yÑ(ˆEÜ�:Š:�a Ó%Ð%r   c                óÌ   • US:X  a  U nU$ Uc  U R                  5       nU$ [        U[        5      (       a  U nU H  nU R                  U5      nM     U$ U R                  U5      nU$ )Nr5   )r‡  r)   r*   )r   rB   rI   rØ  s       r   r‡  r‡  Â  st   € ØˆrƒzØˆð €Mð 
‰Ø—‘“ˆð €Mô �dœE×"Ñ"ØˆFÛ�ØŸ™ 2›’ñ ð €Mð —Y‘Y˜t“_ˆFØ€Mr   c                óP   • [        U5      S:X  a  US   OUnU R                  U5      $ r}  )rw   rÃ   )r   Únewshaper   s      r   rÃ   rÃ   Ñ  s'   € ä! (›m¨qÓ0ˆx˜Š{°h€HØ�9‰9�XÓÐr   c                ó¨   • US;   a(  [        [        [        U R                  5      5      5      nO[	        U5      S:X  a  US   nU R                  U5      $ )N)r5   Nr   r   r   )r*   Úreversedr  rY   rw   Úpermute)r   r  s     r   Ú	transposer;  Ü  sF   € ð Ð"Ó"Ü”Xœe A§F¡F›mÓ,Ó-‰Ü	ˆT‹�a‹Ø�A‰wˆØ�9‰9�T‹?Ðr   c                ó.   • [         R                  " U 5      $ r   )r'   r_   )r   r   s     r   Úravelr=  æ  s   € Ü�=Š=˜ÓÐr   c                óê  • [         R                  " X R                  5      nUS:  a  [        SU 35      eUS:X  a  U $ UbN  [	        U R
                  5      nUR                  S:”  a  UR
                  U   OSXR'   [        R                  " X55      nUbN  [	        U R
                  5      nUR                  S:”  a  UR
                  U   OSXR'   [        R                  " XE5      n[        R                  " XX#US9$ )Nr   z#order must be non-negative but got r   )rB   Úprependrb   )	r   rZ   rY   r6   r+   rn   r'   r!  Údiff)r   rq   rB   r?  rb   rn   s         r   r@  r@  ê  sÐ   € ô ×%Ò% d¯F©FÓ3€Dàˆ1ƒuÜÐ>¸q¸cÐBÓCÐCàˆAƒvàˆàÑÜ�Q—W‘W“ˆØ-4¯\©\¸AÓ-=�g—m‘m DÒ)À1ˆ‰Ü×$Ò$ WÓ4ˆàÑÜ�Q—W‘W“ˆØ,2¯K©K¸!«O�f—l‘l 4Ò(Àˆ‰Ü×#Ò# FÓ2ˆä�:Š:�a ¸vÑFÐFr   c                ól   • [         R                  " U 5      nU(       a  US[         R                  -  -  nU$ )Né´   )r'   ÚangleÚpi)r¶  ÚdegrI   s      r   rC  rC  
  s)   € Ü�[Š[˜‹^€FÞ
Ø˜3¤§¡™>Ñ*ˆØ€Mr   c                ó.   • [         R                  " U 5      $ r   )r'   Úsinc©ry   s    r   rG  rG    ó   € Ü�:Š:�a‹=Ðr   )rB   Ú
edge_orderc               ó>  • U R                   n[        R                  " U5      nUc  [        [	        U5      5      nO[        R
                  " X5      n[        U5      n[        U5      nUS:X  a  S/U-  nGOYUS:X  a7  [        R                  " US   5      (       d  US   R                   S:X  a  X6-  nGOXv:X  Ga  [        U5      n[        U5       Hð  u  pš[        R                  " U
5      n
U
R                   S:X  a  M-  U
R                   S:w  a  [        S5      e[        U
5      U R                  XY      :w  a  [        S5      eU
R                  R                   (       d+  U
R                  R"                  (       d  U
R%                  5       n
[        R&                  " U
5      nX»S   :H  R)                  5       (       a  US   nX¸U	'   Mò     O[+        S5      eUS:”  a  [        S5      e/ n[-        S 5      /U-  n[-        S 5      /U-  n[-        S 5      /U-  n[-        S 5      /U-  nU R                  n[        R.                  " U5      [0        [2        4;   a   U R%                  5       n [        R4                  n[7        XX5       GH•  u  nnU R                  U   US-   :  a  [        S	5      e[        R8                  " U US
9n[        R                  " U5      =(       d    UR                   S:H  n[-        SS5      XÑ'   [-        S S5      Xá'   [-        SS5      Xñ'   [-        SS 5      UU'   U(       a0  U [        U5         U [        U5         -
  SU-  -  U[        U5      '   O«USS nUSS  nU* UUU-   -  -  nUU-
  UU-  -  nUUUU-   -  -  nS/U-  nSUU'   UR;                  U5      nUR;                  U5      nUR;                  U5      nUU [        U5         -  UU [        U5         -  -   UU [        U5         -  -   U[        U5      '   US:X  aŽ  SXÑ'   SXá'   SXñ'   U(       a  UOUS   nU [        U5         U [        U5         -
  U-  U[        U5      '   SXÑ'   SXá'   SXñ'   U(       a  UOUS   nU [        U5         U [        U5         -
  U-  U[        U5      '   GO7SXÑ'   SXá'   SXñ'   SUU'   U(       a  SU-  nSU-  nSU-  nO3US   nUS   nSU-  U-   * UUU-   -  -  nUU-   UU-  -  nU* UUU-   -  -  nUU [        U5         -  UU [        U5         -  -   UU [        U5         -  -   U[        U5      '   SXÑ'   SXá'   SXñ'   SUU'   U(       a  SU-  nSU-  nSU-  nO2US   nUS   nUUUU-   -  -  nUU-   * UU-  -  nSU-  U-   UUU-   -  -  nUU [        U5         -  UU [        U5         -  -   UU [        U5         -  -   U[        U5      '   UR=                  U5        [-        S 5      XÑ'   [-        S 5      Xá'   [-        S 5      Xñ'   [-        S 5      UU'   GM˜     US:X  a  US   $ U$ )Nr   r    r   z&distances must be either scalars or 1dzGwhen 1d, distances must match the length of the corresponding dimensionzinvalid number of argumentsr‡   z)'edge_order' greater than 2 not supportedzlShape of array too small to calculate a numerical gradient, at least (edge_order + 1) elements are required.r—   rv   éþÿÿÿg       @g      ø¿g      à¿éýÿÿÿg      à?g       Àg      ø?)rY   r   Úndarrays_to_tensorsr*   r  r  rw   r   Ú	is_scalarr+   r.  r'   Ú	as_tensorr6   rn   r    Úis_floating_pointr¶   Údoubler@  r^  r7   rv  Úpython_type_for_torchrd   r	  r·   rx   rÂ   rÃ   rb   )ÚfrB   rJ  Úvarargsr“   r  Úlen_axesrq   Údxr1  Ú	distancesÚdiffxÚoutvalsÚslice1Úslice2Úslice3Úslice4ÚotypeÚax_dxr9   Úuniform_spacingÚdx1Údx2r   r{   Úcrn   Údx_0Údx_ns                                r   Úgradientrg    si  € Ø	�‰€Aä×'Ò'¨Ó0€Gà�|Ü”U˜1“X‹‰ä×)Ò)¨$Ó2ˆä�4‹y€HÜˆG‹€AØˆAƒvàˆU�XÑŠØ	
ˆa‹”\×+Ò+¨G°A©J×7Ñ7¸7À1¹:¿?¹?ÈaÓ;OàÑŠØ	
Œä�'‹]ˆÜ% bžM‰LˆAÜŸš¨	Ó2ˆIØ�~‰~ Ó"ÙØ—‘ 1Ó$Ü Ð!IÓJÐJÜ�9‹~ §¡¨©Ñ!1Ó1Ü ð@óð ð —O‘O×5×5¸¿¹×9S×9SØ%×,Ñ,Ó.�	ä—J’J˜yÓ)ˆEð ˜q™Ñ!×&Ñ&×(Ñ(Ø˜a™�Øˆq‹Eò' *ô* Ð5Ó6Ð6à�Aƒ~ÜÐDÓEÐEð
 €Gô �D‹kˆ]˜QÑ€FÜ�D‹kˆ]˜QÑ€FÜ�D‹kˆ]˜QÑ€FÜ�D‹kˆ]˜QÑ€Fà�G‰G€EÜ×)Ò)¨%Ó0´S¼$°KÓ?ð �H‰H‹JˆÜ—‘ˆä˜4—}‰ˆˆeØ�7‰7�4‰=˜:¨™>Ó)ÜðCóð ô
 ×Ò˜q¨Ñ.ˆô '×0Ò0°Ó7×J¸5¿:¹:È¹?ˆô ˜Q “|ˆ‰Ü˜T 2“ˆ‰Ü˜Q “|ˆ‰Ü˜Q “~ˆˆt‰æØ"#¤E¨&£MÑ"2°Q´u¸V³}Ñ5EÑ"EÈ#ÐPUÉ+Ñ!VˆC”�f“Òà˜˜"�+ˆCØ˜˜�)ˆCØ�˜#  s¡Ñ+Ñ,ˆAØ�s‘˜s S™yÑ)ˆAØ�s˜c C™iÑ(Ñ)ˆAà�C˜!‘GˆEØˆE�$‰KØ—	‘	˜%Ó ˆAØ—	‘	˜%Ó ˆAØ—	‘	˜%Ó ˆAð �A”e˜F“mÑ$Ñ$ q¨1¬U°6«]Ñ+;Ñ';Ñ;¸aÀ!ÄEÈ&ÃMÑBRÑ>RÑRð ”�f“Ñð
 ˜‹?ØˆF‰LØˆF‰LØˆF‰LÞ+‘5°°q±ˆDà"#¤E¨&£MÑ"2°Q´u¸V³}Ñ5EÑ"EÈÑ!MˆC”�f“ÑàˆF‰LØˆF‰LØˆF‰LÞ+‘5°°r±ˆDà"#¤E¨&£MÑ"2°Q´u¸V³}Ñ5EÑ"EÈÑ!MˆC”�f“Óð ˆF‰LØˆF‰LØˆF‰LØˆF�4‰LÞØ˜5‘L�Ø˜%‘K�Ø˜5‘L‘à˜A‘h�Ø˜A‘h�Ø˜C‘i #‘oÐ&¨#°°s±Ñ*;Ñ<�Ø˜3‘Y 3¨¡9Ñ-�Ø�D˜C 3¨¡9Ñ-Ñ.�ð �A”e˜F“mÑ$Ñ$ q¨1¬U°6«]Ñ+;Ñ';Ñ;¸aÀ!ÄEÈ&ÃMÑBRÑ>RÑRð ”�f“Ñð ˆF‰LØˆF‰LØˆF‰LØˆF�4‰LÞØ˜%‘K�Ø˜5‘L�Ø˜%‘K‘à˜B‘i�Ø˜B‘i�Ø˜S C¨#¡IÑ.Ñ/�Ø˜C‘i�L C¨#¡IÑ.�Ø˜3‘Y ‘_¨°°c±	Ñ):Ñ;�ð �A”e˜F“mÑ$Ñ$ q¨1¬U°6«]Ñ+;Ñ';Ñ;¸aÀ!ÄEÈ&ÃMÑBRÑ>RÑRð ”�f“Ñð 	�‰�sÔô ˜T“{ˆ‰Ü˜T“{ˆ‰Ü˜T“{ˆ‰Ü˜T“{ˆˆtŒñG %ðJ �1ƒ}Ø�q‰zÐàˆr   c                ó0  • U R                  5       (       a  [        R                  " XS9nU$ U R                  5       (       aS  [        R                  " [        R                  " U R
                  US9[        R                  " U R                  US95      nU$ U nU$ )N)Údecimals)rQ  r'   Úroundr¶   Úcomplexrq  rr  )r   ri  r9   rI   s       r   rj  rj  Æ  sx   € Ø×Ñ×ÑÜ—’˜QÑ2ˆð €Mð 
�‰�‰ä—’Ü�KŠK˜Ÿ™¨Ñ2Ü�KŠK˜Ÿ™¨Ñ2ó
ˆð €Mð ˆØ€Mr   c                ó.  • [         R                  " U 5      (       d  U $ US:”  a-  U[         R                  " U R                  5      R                  -  n[         R
                  " U R                  5      U:  nUR                  5       (       a  U R                  $ U $ rÏ  )	r'   r¶   Úfinfor    ÚepsÚabsrr  r^  rq  )r   ÚtolÚmasks      r   Úreal_if_closerr  Ù  sn   € Ü×Ò˜A×ÑØˆØ
ˆQƒwð ”E—K’K §¡Ó(×,Ñ,Ñ,ˆä�9Š9�Q—V‘VÓ˜sÑ"€DØ—X‘X—Z‘Zˆ1�6‰6Ð& QÐ&r   c                ó.   • [         R                  " U 5      $ r   )r'   rq  r  s    r   rq  rq  æ  rI  r   c                óp   • U R                  5       (       a  U R                  $ [        R                  " U 5      $ r   )r¶   rr  r'   rÒ   r  s    r   rr  rr  ê  s'   € Ø‡|�|‡~�~Ø�v‰vˆÜ×Ò˜AÓÐr   c                óœ   • [         R                  " U 5      (       a  U R                  S:g  $ [         R                  " U [         R                  S9$ r–   )r'   r¶   rr  rÒ   r	  rH  s    r   Ú	iscomplexrv  ð  s8   € Ü×Ò˜×ÑØ�v‰v˜‰{ÐÜ×Ò˜A¤U§Z¡ZÑ0Ð0r   c                óœ   • [         R                  " U 5      (       a  U R                  S:H  $ [         R                  " U [         R                  S9$ r–   )r'   r¶   rr  rÍ   r	  rH  s    r   Úisrealrx  ö  s6   € Ü×Ò˜×ÑØ�v‰v˜‰{ÐÜ�?Š?˜1¤E§J¡JÑ/Ð/r   c                ó.   • [         R                  " U 5      $ r   ©r'   r¶   rH  s    r   Úiscomplexobjr{  ü  s   € Ü×Ò˜AÓÐr   c                ó8   • [         R                  " U 5      (       + $ r   rz  rH  s    r   Ú	isrealobjr}     s   € Ü×Ò Ó"Ô"Ð"r   c                ó.   • [         R                  " U 5      $ r   )r'   Úisneginf©ry   r9   s     r   r  r    r—  r   c                ó.   • [         R                  " U 5      $ r   )r'   Úisposinfr€  s     r   r‚  r‚    r—  r   c                ó@   • [         R                  R                  U 5      $ r   )r'   ÚspecialÚi0rH  s    r   r…  r…    s   € Ü�=‰=×Ñ˜AÓÐr   c                óf   • SSK Jn   U" U 5      nUR                  5       S:H  $ ! [         a     gf = f)Nr   )rö  F)r   rö  r  Ú	Exception)r   rö  rû  s      r   Úisscalarrˆ    s6   € å5ðÙ  Ó#ˆØ�w‰w‹y˜A‰~ÐøÜó Ùðús   ˆ# £
0¯0c                ól   • [         R                  " 5       R                  n[        R                  " U SUS9$ ©NF)Úperiodicr    )r   r˜   r™   r'   Úhamming_window©rP  r    s     r   ÚhammingrŽ    s+   € Ü×'Ò'Ó)×5Ñ5€EÜ×Ò ¨E¸Ñ?Ð?r   c                ól   • [         R                  " 5       R                  n[        R                  " U SUS9$ rŠ  )r   r˜   r™   r'   Úhann_windowr�  s     r   Úhanningr‘  #  s+   € Ü×'Ò'Ó)×5Ñ5€EÜ×Ò˜Q¨°eÑ<Ð<r   c                ól   • [         R                  " 5       R                  n[        R                  " XSUS9$ )NF)Úbetar‹  r    )r   r˜   r™   r'   Úkaiser_window)rP  r“  r    s      r   Úkaiserr•  (  s+   € Ü×'Ò'Ó)×5Ñ5€EÜ×Ò˜q°eÀ5ÑIÐIr   c                ól   • [         R                  " 5       R                  n[        R                  " U SUS9$ rŠ  )r   r˜   r™   r'   Úblackman_windowr�  s     r   Úblackmanr˜  -  ó+   € Ü×'Ò'Ó)×5Ñ5€EÜ× Ò  ¨U¸%Ñ@Ð@r   c                ól   • [         R                  " 5       R                  n[        R                  " U SUS9$ rŠ  )r   r˜   r™   r'   Úbartlett_windowr�  s     r   Úbartlettrœ  2  r™  r   c                 óR  • SnSnU  H  nUR                   n[        U5      (       a  SnUR                  (       d  UR                  (       d  SnO#[        R                  U5      nUc  [        S5      e[        R                  " X%5      nM�     U(       a  [        S   U   $ [        S   U   $ )NFr   Tr‡   z+can't get common type for non-numeric arrayr   )
r    r{  rQ  r¶   Úarray_precisionÚgetr7   Úbuiltinsr�  Ú
array_type)r>   r¶   Ú	precisionr   rû  Úps         r   Úcommon_typer¤  I  s“   € Ø€JØ€IÛˆØ�G‰GˆÜ˜�?‰?ØˆJØ×#×# q§|§|Ø‰Aä×#Ñ# AÓ&ˆAØ‰yÜÐ MÓNÐNÜ—L’L Ó.Š	ñ ö Ü˜!‰}˜YÑ'Ð'ä˜!‰}˜YÑ'Ð'r   c           	     óh  • Ub  [        S5      eUb&  UR                  R                  (       a  [        S5      eU R                  R                  =(       d    U R                  R                  (       + nUS L =(       d    UR                  R                  (       + nU(       a  U R                  5       n Ub   [        R                  " X@R                  5      n[        U[        R                  5      (       aG  UR                  S:X  a  [        R                  " U5      nO [        R                  " XR                  5      nUc"  [        R                  " XU[        U5      S9u  p‰O![        R                  " XX$[        U5      S9u  p‰U(       d  U(       a  UR!                  5       nU(       a  U	R!                  5       n	X‰4$ )Nú3normed argument is deprecated, use density= insteadzcomplex weights histogram.r   )ÚweightÚdensity)r  r§  r¨  )r6   r    r¶   rm   rQ  rR  r   rº   r)   r'   ÚTensorrY   ÚoperatorÚindexÚ	histogramr	  Úlong)
r   Úbinsr  Únormedr  r¨  Úis_a_intÚis_w_intÚhr{   s
             r   r¬  r¬  `  s7  € ð ÑÜÐNÓOÐOàÑ˜wŸ}™}×7×7Ü!Ð">Ó?Ð?à—G‘G×-Ñ-×C°·±×1CÑ1CÔD€HØ˜$ˆ×E g§m¡m×&EÑ&EÔ"E€HÞØ�H‰H‹JˆàÑÜ×&Ò& w·±Ó8ˆä�$œŸ™×%Ñ%Ø�9‰9˜‹>ä—>’> $Ó'‰Dä×'Ò'¨¯g©gÓ6ˆDà�}Ü�Š˜q¨wÄÀWÃÑN‰ˆˆ1ä�ŠØ˜5¼$¸w»-ñ
‰ˆö –xØ�F‰F‹HˆÞØ�F‰F‹Hˆàˆ4€Kr   c                óØ   • [        U 5      [        U5      :w  a  [        S5      e [        U5      nUS:w  a	  US:w  a  X"/n[        X4X#XEU5      u  p‰X‰S   U	S   4$ ! [         a    Sn N8f = f)Nz"x and y must have the same length.r   r‡   r   )rw   r6   r7   Úhistogramdd)
ry   râ   r®  r  r¯  r  r¨  r“   r²  Úes
             r   Úhistogram2dr¶  Œ  s€   € ô ˆ1ƒv”�Q“ÓÜÐ=Ó>Ð>ðÜ�‹Iˆð 	ˆAƒv�!�q“&Øˆ|ˆä˜�v˜t¨F¸WÓE�D€Aà�‰d�A�a‘Dˆ=Ðøô ó ØŠðús   ¥A ÁA)Á(A)c                óÀ  • Ub  [        S5      eSSKJnJn  [	        U [
        [        45      (       a  U" U 5      R                  n OU" U 5      n [        R                  " U 5      n U R                  R                  (       d+  U R                  R                  (       d  U R                  5       n [	        U[        5      =(       d    [        R                   " S U 5       5      (       + nU(       aS  U" U5      nU V	s/ s H  o™R                  PM     n
n	U V	s/ s H#  n	["        R$                  " X�R                  5      PM%     nn	Ub  UR'                  5       R)                  5       nUb‹  U R+                  SS9n[        R,                  " U5      R/                  SS5      R                  R'                  5       n[        UR)                  5       5      n["        R$                  " X@R                  5      nS	U0nO0 n[        R0                  " XU4S
[3        U5      0UD6u  pÙU(       a4  [5        U	W
5       VVs/ s H  u  pï["        R$                  " Xï5      PM     n	nnXÙ4$ s  sn	f s  sn	f s  snnf )Nr¦  r   )rö  Únormalize_seq_array_likec              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr   )r)   rd   )r­   r{   s     r   r®   Úhistogramdd.<locals>.<genexpr>Á  s   é € Ð-OÊ$ÀQ¬j¸¼C×.@Ð.@Ê$ùs   ‚r   )r6  r‡   rv   r§  r¨  )r6   r   rö  r¸  r)   r+   r*   ÚTr'   r1   r    rQ  r¶   rR  rd   r   r^  r   rº   r_   ÚtolistÚaminmaxrD   rÃ   r´  r	  rx   )Úsampler®  r  r¯  r  r¨  rö  r¸  Úbins_is_arrayr{   Úbins_dtypesÚmmÚw_kwdr²  ÚbbÚdtyps                   r   r´  r´  ¦  s×  € ð ÑÜÐNÓOÐOçOä�&œ4¤˜-×(Ñ(Ù% fÓ-×/Ñ/‰á% fÓ-ˆä×Ò˜fÓ%€Fà�L‰L×*×*¨f¯l©l×.E×.EØ—‘“ˆô 	�4œÓ×O¤§¢Ñ-OÉ$Ó-OÓ!Oô€Mö Ù'¨Ó-ˆÙ(,Ó-ª 1—w”w©ˆÐ-Ù?CÓDºt¸!”×$Ò$ Q¯©Ö5¹tˆÐDàÑØ—‘“×&Ñ&Ó(ˆàÑà�^‰^ ˆ^Ð"ˆÜ—	’	˜"“×%Ñ% a¨Ó,×.Ñ.×6Ñ6Ó8ˆÜ�e—l‘l“nÓ%ˆÜ×&Ò& w·±Ó=ˆØ˜7Ð#‰àˆä×Ò˜V¨5ÑQ¼$¸w»-ÐQÈ5ÑQ�D€AæÜ<?ÀÀ;Ô<OÔPÒ<O±°ŒU×!Ò! "Ö+Ñ<OˆÑPàˆ4€Kùò+ .ùÚDùó$ Qs   Ã5IÄ*IÈ("Ic               ó  • SSK Jn  U R                  5       S:”  a  U" U R                  5      $ U R                  [        R
                  :X  a  [        R
                  nGOU R                  R                  (       aÞ  [        R                  " [        R                  5      nU R                  [        R                  :H  =(       dm    UR                  U R                  s=:*  =(       a    UR                  :*  Os  =(       a3    UR                  U R                  s=:*  =(       a    UR                  :*  Os  nU(       a  [        R                  O[        R                  nGO$U R                  R                  (       av  [        R                   [        R                  [        R"                  4 HB  n[        R                  " U5      nUR                  U s=::  a  UR                  ::  d  M<  O  M@  Un  O–   O“[        R$                  [        R&                  [        R(                  [        R*                  [        R,                  4 HB  n[        R.                  " U5      nUR                  U s=::  a  UR                  ::  d  M<  O  M@  Un  O   U" W5      $ )Nr   )ÚDType)Ú_dtypesrÆ  r  r    r'   r	  r¶   rm  rß   Ú	complex64rœ  rq  r�  rr  Ú
complex128rQ  rÝ   r·   rÐ  r  r  r  r  Úiinfo)r   rÆ  r    ÚfiÚfits_in_singlerõ   Úiis          r   Úmin_scalar_typerÎ  à  s€  € õ à‡w�wƒy�1ƒ}á�Q—W‘W‹~Ðà‡w�w”%—*‘*ÓÜ—
‘
Šà	
�‰×	×	Ü�[Š[œŸ™Ó'ˆØŸ™¤E§O¡OÑ3÷ 
Ø�F‰F�a—f‘f×&Ó& §¡Ô&×E¨2¯6©6°Q·V±V×+EÓ+E¸r¿v¹vÔ+Eð 	ö $2”—’´u×7GÑ7GŠà	
�‰×	"×	"Ü—=‘=¤%§-¡-´·±Ó?ˆBÜ—’˜R“ˆBØ�v‰v˜Õ$˜bŸf™f×$Ñ$Ø�Ùò	 @ô —;‘;¤§
¡
¬E¯K©K¼¿¹ÄeÇkÁkÓRˆBä—’˜R“ˆBØ�v‰v˜Õ$˜bŸf™f×$Ñ$Ø�Ùñ Sñ �‹<Ðr   c                ó€  • US:w  a  [         eUR                  SS5      n[        R                  " U R                  5      nU" U5      n[
        R                  " XR                  S45      n[
        R                  " US5      R                  5       n[
        R                  R                  R                  U [        U5      US9$ )NÚconstantÚconstant_valuesr   r‡   rú   )Úvalue)rm   rŸ  r   rS  r    r'   r!  rY   rû   r_   rð   rñ   Úpadr*   )r"  Ú	pad_widthrô   ÚkwargsrÒ  Útyps         r   rÓ  rÓ    s–   € ØˆzÓÜ!Ð!Ø�J‰JÐ(¨!Ó,€Eä
×
,Ò
,¨U¯[©[Ó
9€CÙ�‹J€Eä×"Ò" 9¯z©z¸1¨oÓ>€IÜ—
’
˜9 dÓ+×3Ñ3Ó5€Iä�8‰8×Ñ×"Ñ" 5¬%°	Ó*:À%Ð"ÐHÐHr   )r   F)r   r
   r   r   r   r   )r   N)r"   r   r#   r
   r   úOptional[CastingModes]r$   r   )r-   r
   )NNr   )r   NNr   )r   r×  )rH   úSequence[ArrayLike]r9   úOptional[OutArray]r    úOptional[DTypeLike]r   r×  )r8   rØ  r    rÚ  r   r×  )r   N)r\   rØ  r9   rÙ  r    rÚ  r   r×  r   )r`   r
   ra   r
   )Frú   )r   r
   )r   r
   r{   r
   r\  )ry   r
   )é2   TFNr   )r›   r
   rœ   r
   r    rÚ  )rÛ  TNr   )rÛ  Tg      $@Nr   )r    rÚ  )NNr   N)
r›   úOptional[ArrayLikeOrScalar]rœ   rÜ  r»   rÜ  r    rÚ  r¨   r   )NÚC)r    rÚ  r   r   r¨   r   )Nr   FN)rÄ   r
   r    rÚ  r   r   r   r   )rÇ   r
   r    rÚ  r   r   r¨   r   )r   r
   r    rÚ  r   r   r   r   )NT)NTNN)ry   r
   râ   úOptional[ArrayLike]r    rÚ  )NTFNNN)
rì   r
   râ   rÞ  rê   rÞ  ré   rÞ  r    rÚ  )rÆ   )r   r
   ró   r
   )ÚvalidrÛ  )r  rÞ  ry   r
   )NN)r
  r
   ry   rÜ  râ   rÜ  )r   r
   )rì   r
   )r   )r   r   )r"  r
   r   r   )r%  r
   r   r   )r/  r
   )r`   r
   )Nr   N)r    rÚ  r¨   r   )gñhãˆµøä>g:Œ0âŽyE>F)r`  r
   ra  r
   )Tg        NN)ry   r
   r   r   )NNÚraise)r   r
   r8  r
   r9   rÙ  rô   r   )r`   r
   r8  r
   )rà  )r   r   r8  r
   ra   r
   rô   r   )r`   r
   r8  r
   ra   r
   )Nrà  )r   r
   rˆ  rØ  r9   rÙ  rô   r   )FFFN)r�  r
   r�  r   rV  r   )NNN)r   r
   rœ  rÞ  r�  rÞ  r9   rÙ  )r   r
   r¡  r   )r¥  r
   )r   r   r   )r   r   r   NN)r   r
   r    rÚ  r9   rÙ  )Nr   NrÝ  )ró   r
   )r‡   )r   r
   rÆ  r
   )r   r
   r{   r
   r9   rÙ  )rv   rv   rv   N)rv   NN)r   r
   r   r   )ÚleftN)r   r
   ró   r
   r%  rÞ  )rÝ  )r   rv   NN)r   r
   r?  rÞ  rb   rÞ  )r¶  r
   )rT  r
   )r   r
   r9   rÙ  )éd   )ry   r
   r9   rÙ  )r>   r
   )é
   NNNN)r   r
   r®  r
   r  rÞ  )r  rÞ  r  rÞ  )rÐ  )r"  r
   rÔ  r
   )­Ú__doc__Ú
__future__r   r   r  rª  Útypingr   r   r'   Ú r   r   Úcollections.abcr	   r   r
   r   r   r   r   r   r   r   r%   r(   r1   r3   r:   r@   rE   rJ   rN   Ú	row_stackrR   rT   rV   r[   rb   rk   re   rf   r€   ro   r…   r‰   r�   r�   r’   rš   r¦   r¤   r¹   r¸   rÂ   rÆ   rÉ   rË   rÍ   rÐ   rÒ   rÛ   rà   rë   rø   rý   r   r  r$   rY   rn   r  r  rû   r  r  r  r!  r$  r(  r3  rd   r8  r:  r=  rB  rF  rJ  rM  rQ  rW  rZ  rc  rf  rk  rp  rw  r{  r‚  r…  rŠ  rŽ  r”  r–  r™  rž  r¢  r¤  r«  rO  r³  r·  r¹  r»  r¾  rÀ  rÃ  rÍ  rÑ  r×  rÝ  rß  rá  rñ  r  r  r   r"  r&  rã  r+  r0  r3  r‡  rÃ   r;  r=  r@  rC  rG  rg  rj  ÚaroundÚround_rr  rq  rr  rv  rx  r{  r}  r  r‚  r…  rˆ  rŽ  r‘  r•  r˜  rœ  rÝ   rß   r·   rÈ  rÉ  r¡  rž  r¤  r¬  r¶  r´  rÎ  rÓ  r5   r   r   Ú<module>rì     sO
  ðñõ #ã Û Û ß *ã ç !ö Ý(÷÷ ñ ð PUðØðØ+ðØ:Lõð '2Ø $ð	Ø	ðà	ðð $ðð õ	ôôôò

ôð  NYð$Ø4Jõ$ð 
Ø"Ø!%Ø&1ð	Ø!ð	ð 
ð	ð ð		ð
 $õ	ð "&Ø&1ñ	!Ø	ð!ð ð!ð $õ	!ð €	ð "&Ø&1ñ	!Ø	ð!ð ð!ð $õ	!ð "&Ø&1ñ	
!Ø	ð
!ð ð
!ð $õ	
!ð  "&Ø&1ñ	'Ø	ð'ð ð'ð $õ	'ð  
Ø"ð+ð
 "&Ø&1ñ+Øð+ð 
ð+ð
 ð+ð $ö+ö 2ôEô*ò6*ö"9öFôFôCôCôö*ð 	ØØØ!%Ø	
ð9Øð9à
ð9ð õ9ð( 	ØØ!%Ø	
ðØðà
ðð
 õð. 	ØØ	Ø!%Ø	
ðDð õDð *.Ø(,Ø()Ø!%ð	&ð  $ñ&Ø&ð&à
%ð&ð &ð&ð ð	&ð ö&ð\ "&Ø #ð	+ð
  $ñ	+àð	+ð ð	+ð
 ö	+ð$ "&Ø #Ø %Ø
ð
Øð
àð
ð ð
ð õ	
ð  "&Ø #ð	6ð  $ñ6àð6ð ð6ð ð	6ð ö6ð( "&Ø #Ø %Ø
ðØðð ðð ð	ð
 õð" "&Ø #ð	*ð
  $ñ	*àð	*ð ð	*ð
 ö	*ð "&Ø #Ø %Ø
ð
Øð
àð
ð ð
ð õ	
ð "&Ø #ð	+ð
  $ñ	+àð	+ð ð	+ð
 ö	+ð "&Ø #Ø %Ø
ð
Øð
àð
ð ð
ð õ	
ô ð6 "ØØ	Ø	ðð "&ñØðàðð öð< "ØØ	Ø	Ø$(Ø$(ðð "&ñØðàðð "ðð "ðð öò<ö.'ö'ö1ð &*Ø%)ðØðà"ðð #õô,ôöôö
ôôö#ö1ò)ð DI÷ *ð #'¨u¸t÷ ð0 69Àö ö.öô.ô.öDöDð ØØ!%ð	*ð  $ñ*ð ð	*ð ö*ö"JöKôö6ô%ð QUð	JØð	JØ*õ	Jð$ 
Ø"Ø&ðØðàðð 
ð	ð
 õô4ð  'ð	Øðàðð ðð õ	ô*ð #Ø&ð	/Øð/à ð/ð 
ð/ð õ	/ð2 (-ØØØ	ðð %)ñØðà$ðð "öô&+ôô6ð  $Ø#Ø"ð	$Øð$à	ð$ð 
ð$ð 
õ	$ö5ôö!ö<3ð Ø
Ø
Ø!%Ø"ð	Øð	ð
 ð	ð 
õ	ð ØØ!%Ø #ðð  $ñð ð	ð
 ðð öð$%ÐQU÷ %ð %öö ôô
(öôDö@,öô(ö.öH)ðV  d°#¸vÐPUõ W òz öö5ð LPð>Øð>Øð>Ø5Hõ>ô2ô+öö6&ööööð Ø	Ø#'Ø"&ðGØðGð !ð	Gð
  õGö@ôð
 +/¸1÷ jö`ð 
€Ø	€ö
'ôôô1ô0ôô#ööôòò@ò
=ò
Jò
Aò
Að ‡]‚]�E—M’M 5§=¢=Ð1Ø	ˆ5�?Š?˜E×,Ò,Ð-ð€
ð
 
‡M‚M�1Ø	‡M‚M�1Ø	‡M‚M�1Ø	‡O‚O�QØ	×Ò�að€õ(ð2 Ø
ØØ#'Øñ)Øð)à
ð)ð
 !ö)ð^ 
Ø!%ØØ#'Øñð ð	ð !öð8 
Ø!%ØØ#'Øñ4ð ð4ð
 !ö4ôt"÷JIñ Ir   