Ë
    ÏÍ:j— ã                   ó|  — d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlmZ d dl	Z	d dl	m
Z d dlZd dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDc mEZF d dlGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW e	j°                  j²                  ZYe	j°                  j´                  ZZegZ[ eTe«       G d„ d«      «       Z\ eTe«       G d„ d«      «       Z] eTe«       G d„ d«      «       Z^d„ Z_d„ Z`d„ Zad„ Zb eTe «       G d„ d«      «       Zc eYdd¬«      e	j°                  jÉ                  d  eUe«       eUe «      g«       G d!„ d"«      «       «       Ze eYdd¬«      e	j°                  jÍ                  d#«      e	j°                  jÉ                  d$ejÎ                  ejÐ                  g«       eTee«      d%„ «       «       «       «       Zi G d&„ d'«      Zj eTejÖ                  «       G d(„ d)«      «       Zlg d*¢Zmeme@z  Zm G d+„ d,«      Zn eTejÞ                  «       G d-„ d.«      «       Zp eTejâ                  «       G d/„ d0«      «       Zr eTe%«       G d1„ d2«      «       Zs G d3„ d4es«      Zt G d5„ d6es«      Zu eYd¬7«       G d8„ d9es«      «       Zv G d:„ d;es«      Zw G d<„ d=es«      Zx eYd¬7«       G d>„ d?es«      «       Zy eTe%«      d@„ «       Zz eTe%«      dA„ «       Z{e	j°                  jÉ                  dBg dC¢«       eZdDdE¬F«       eTe«       G dG„ dH«      «       «       «       Z| eTe«       G dI„ dJ«      «       Z} eTe«      e	j°                  jÉ                  dKg dL¢«      e	j°                  jÉ                  dMddNg«      e	j°                  jÉ                  dOdPdQdRdS e	jü                  dTe	j°                  jþ                  g¬U«       e	jü                  dVe	j°                  jþ                  g¬U«      g«      dW„ «       «       «       «       Z€ eTe«      dX„ «       Z� eTe«      e	j°                  jÉ                  dYdZd[g«       G d\„ d]«      «       «       Z‚ G d^„ d_«      Zƒ eTe&«       G d`„ da«      «       Z„ eTe'e1«       G db„ dc«      «       Z… eTe1e'«       G dd„ dee…«      «       Z†df„ Z‡dƒdg„Zˆ eTe!«      e	j°                  �j                  dh«      di„ «       «       ZŠ eTe!«      dj„ «       Z‹e	j°                  �j                  dh«      dk„ «       ZŒ eTe�j                  «       G dl„ dm«      «       ZŽ eTe#«       G dn„ do«      «       Z� eTe$«       G dp„ dq«      «       Z� eTe"«       G dr„ ds«      «       Z‘ G dt„ du«      Z’ eTe-«       G dv„ dw«      «       Z“ eYd¬x«       eTe0«      e	j°                  jÉ                  dBg dy¢«       G dz„ d{«      «       «       «       Z” eTe�j*                  «       G d|„ d}«      «       Z– eTe5«       G d~„ d«      «       Z— eTe6«       G d€„ d�«      «       Z˜d‚„ Z™y)„é    N)ÚThreadPoolExecutorÚas_completed©Úproduct)Úgcd)Úraises)ÚComplexWarning)Úfft)Úcorrelate1d)ÚfminÚlinear_sum_assignment)Úsignal)Ú	correlateÚcorrelate2dÚcorrelation_lagsÚconvolveÚ
convolve2dÚfftconvolveÚ
oaconvolveÚchoose_conv_methodÚenvelopeÚhilbertÚhilbert2ÚlfilterÚ
lfilter_ziÚfiltfiltÚbutterÚzpk2tfÚzpk2sosÚinvresÚinvreszÚvectorstrengthÚlfilticÚtf2sosÚsosfiltÚsosfiltfiltÚ
sosfilt_ziÚtf2zpkÚBadCoefficientsÚdetrendÚunique_rootsÚresidueÚresiduez)Úhann)Ú_filtfilt_gustÚ_compute_factorsÚ_group_poles)Ú_upfirdn_modes)Ú
_testutils)Úxp_assert_closeÚxp_assert_equalÚis_numpyÚis_torchÚis_jaxÚis_cupyÚassert_array_almost_equalÚassert_almost_equalÚxp_copyÚxp_sizeÚxp_default_dtypeÚarray_namespaceÚmake_xp_test_caseÚmake_xp_pytest_paramÚSCIPY_DEVICEÚ_xp_copy_to_numpyc                   ó  — e Zd Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d„ «       Zd„ Z edd¬«      d	„ «       Z	 ed
d¬«      d„ «       Z
 edd¬«      d„ «       Z edd¬«      d„ «       Z ed«       ed«      d„ «       «       Z ed«       ed«      d„ «       «       Zd„ Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d„ «       Z ed
d¬«      d!d„«       Z edd¬«      d„ «       Z ed
¬«      d„ «       Zy )"ÚTestConvolveú	jax.numpyú2jax returns floats; scipy returns ints; cf gh-6076©Úreasonc                 ó¢   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      }t        ||j                  g d¢«      «       y )N)é   é   é   é   rM   rL   ©é   é   rK   )rK   é
   é   é   é    rU   é   é   ©Úasarrayr   r5   ©ÚselfÚxpÚaÚbÚcs        úx/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/signal/tests/test_signaltools.pyÚ
test_basiczTestConvolve.test_basic-   s@   € ð �J‰JÒ)Ó*ˆØ�J‰J’yÓ!ˆÜ�Q˜‹NˆÜ˜˜2Ÿ:™:Ò&EÓFÕGó    c                 ó¦   — |j                  g d¢«      }|j                  g d¢«      }t        ||d¬«      }t        ||j                  g d¢«      «       y )N©rK   rL   rM   )rP   rQ   rK   rL   Úsame©Úmode)rR   rS   é"   rX   rZ   s        r`   Ú	test_samezTestConvolve.test_same5   sA   € ð �J‰J’yÓ!ˆØ�J‰J’|Ó$ˆÜ�Q˜ Ô'ˆÜ˜˜2Ÿ:™:¢lÓ3Õ4rb   c                 ó¦   — |j                  g d¢«      }|j                  g d¢«      }t        ||d¬«      }t        ||j                  g d¢«      «       y )Nrd   rO   re   rf   )rR   rS   rS   rX   rZ   s        r`   Útest_same_eqzTestConvolve.test_same_eq=   sA   € ð �J‰J’yÓ!ˆØ�J‰J’yÓ!ˆÜ�Q˜ Ô'ˆÜ˜˜2Ÿ:™:¢lÓ3Õ4rb   c                 ó¢   — |j                  g d¢«      }|j                  ddg«      }t        ||«      }t        ||j                  g d¢«      «       y )N)ù      ð?      ð?ù       @      ð?ù      @      ð?rm   rn   )ù               @y       @      @y      @       @y      @      @rX   )r[   r\   ÚxÚyÚzs        r`   Útest_complexzTestConvolve.test_complexE   sC   € Ø�J‰JÒ/Ó0ˆØ�J‰J˜ Ð'Ó(ˆÜ�Q˜‹NˆÜ˜˜2Ÿ:™:Ò&BÓCÕDrb   zwrong output dtypec                 ó~   — |j                  d«      }|j                  d«      }t        ||«      }t        |||z  «       y ©Ni	  i×  rX   rZ   s        r`   Útest_zero_rankzTestConvolve.test_zero_rankK   s7   € à�J‰J�tÓˆØ�J‰J�tÓˆÜ�Q˜‹NˆÜ˜˜1˜q™5Õ!rb   Tzpure python©Únp_onlyrI   c                 ó8   — d}d}t        ||«      }|||z  k(  sJ ‚y rv   )r   rZ   s        r`   Útest_zero_rank_python_scalarsz*TestConvolve.test_zero_rank_python_scalarsR   s'   € àˆØˆÜ�Q˜‹NˆØ�A˜‘EŠzÐ‰zrb   zdisagreement between methodsc           
      óV  — |j                  |j                  d«      d«      }|j                  d«      }t        d«      D ]i  }dgdz  }d||<   t        ||j                  |t	        |«      «      d¬«      }t        ||j                  |t	        |«      «      d¬«      }t        ||d¬	«       Œk y )
Né   ©rK   rK   rK   rK   rP   Údirect©Úmethodr
   ç›+¡†›„=©Úatol)ÚreshapeÚarangeÚranger   Útupler4   )r[   r\   r]   r^   ÚiÚb_shaperq   rr   s           r`   Útest_broadcastablezTestConvolve.test_broadcastableY   s”   € à�J‰J�r—y‘y “} iÓ0ˆØ�I‰I�a‹LˆÜ�q“ò 	.ˆAØ�c˜!‘eˆGØˆG�A‰Jä˜˜BŸJ™J q¬%°«.Ó9À(ÔKˆAÜ˜˜BŸJ™J q¬%°«.Ó9À%ÔHˆAÜ˜A˜q uÖ-ñ	.rb   c                 ó‚   — |j                  dg«      }|j                  dg«      }t        ||«      }t        |||z  «       y ©Nég  éP  rX   rZ   s        r`   Útest_single_elementz TestConvolve.test_single_elemente   s;   € à�J‰J˜�vÓˆØ�J‰J˜�vÓˆÜ�Q˜‹NˆÜ˜˜1˜q™5Õ!rb   Úcupyc                 óÄ   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }t        ||«      }|j                  g d¢g d¢g d¢g«      }t        ||«       y ©NrO   rd   ©rQ   rK   rL   ©rL   rM   rN   )rQ   é   é   é   rW   )rR   é   é>   é:   é&   )rW   é   r›   é1   r™   rX   ©r[   r\   r]   r^   r_   Úds         r`   Útest_2d_arrayszTestConvolve.test_2d_arraysl   s]   € ð �J‰Jš	¢9Ð-Ó.ˆØ�J‰Jš	¢9Ð-Ó.ˆÜ�Q˜‹NˆØ�J‰JÒ*Ú'Ú'ð)ó *ˆô 	˜˜1Õrb   Útorchc           
      ó  — |j                  |j                  d«      d«      }d|j                  |j                  d|j                  ¬«      d«      z  }||j                  |j                  d|j                  ¬«      d d d…   d«      z  }|j                  g d¢g d	¢g d
¢g d¢gg d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢gg«      }t	        t        ||d«      |«       t	        t        ||d«      |«       t	        t        ||d«      |dd…dd…dd…f   «       t	        t        ||d«      |dd…dd…dd…f   «       t	        t        ||d«      |dd…dd…dd…f   «       t	        t        ||d«      |dd…dd…dd…f   «       y )Né   ©rQ   rQ   rQ   ù              ð?r}   ©Údtyper~   éÿÿÿÿ)ù                y      :@        y      9@      ð?y      8@       @)y      J@        y     àb@      @y      b@      &@y     @W@      &@)y      G@      @y      `@      7@y     À_@      =@y     @T@      7@)y      D@      (@y     €X@      @@y     @W@     €B@y      K@      8@)y      Z@        y     àn@      *@y      m@      7@y     à`@      5@)y      q@      >@y     Àƒ@      X@y     à‚@      _@y      t@     €U@)y     Àn@     €P@y      �@     €f@y     @€@      j@y      q@     À`@)y     Àa@     €P@y     0s@      d@y     r@     `f@y      c@     ÀZ@)y      Q@      B@y      c@     ÀY@y     `b@     @\@y     @T@     ÀR@)y     Àe@     @a@y     Àw@     Àu@y      v@     €w@y     @g@     Àl@)y     @a@     Àe@y     €r@      {@y     Àp@     À|@y     @a@     `q@)y     €Q@     @a@y      b@     0t@y     À_@     Pu@y     €O@      h@)y      @@      R@y      Q@     Àd@y     €M@     àe@y      >@      Y@)y      Q@      h@y     `a@     {@y     @]@     p|@y     €L@     ào@)y      C@     Àk@y     @R@     0@y     €I@     H€@y      5@     0r@)y      (@      b@y      4@     às@y      @     °t@y             Àf@Úfullre   rP   rK   r   Úvalid)r…   r†   Ú
complex128rY   r5   r   )r[   r\   ÚsmallÚbigÚ	out_arrays        r`   Útest_input_swappingz TestConvolve.test_input_swappingw   sª  € ð —
‘
˜2Ÿ9™9 Q›<¨Ó3ˆØ�2—:‘:˜bŸi™i¨°"·-±-˜iÓ@À)ÓLÑLˆØˆr�z‰z˜"Ÿ)™) B¨b¯m©m˜)Ó<¹T¸r¸TÑBÀIÓNÑNˆà—J‘JÚ1Ú6Ú7Ú6ð8ò
 :Ú;Ú=Ú=ð?ò
 ;Ú>Ú>Ú<ð>ò
 :Ú<Ú:Ú8ð:ð;ó<ˆ	ô* 	œ ¨¨VÓ4°iÔ@Üœ  e¨VÓ4°iÔ@Üœ ¨¨VÓ4Ø$ Q q S¨!¨A¨#¨q°¨s ]Ñ3ô	5äœ  e¨VÓ4Ø$ Q q S¨!¨A¨#¨q°¨s ]Ñ3ô	5äœ ¨¨WÓ5Ø$ Q q S¨!¨A¨#¨q°¨s ]Ñ3ô	5äœ  e¨WÓ5Ø$ Q q S¨!¨A¨#¨q°¨s ]Ñ3õ	5rb   c                 óH  — |j                  g d¢«      }|j                  g d¢«      }t        t        t        ||d¬«       t        t        t        ||dd¬«       t        t        t        ||dd	¬«       t        t        t        ||d
d¬«       t        t        t        ||dd¬«       y ©Nrd   rO   Úspamrf   Úeggsr
   ©rg   r�   Úhamr   r«   Úbaconre   )rY   Úassert_raisesÚ
ValueErrorr   ©r[   r\   r]   r^   s       r`   Útest_invalid_paramsz TestConvolve.test_invalid_paramsž   sv   € Ø�J‰J’yÓ!ˆØ�J‰J’yÓ!ˆÜ”j¤(¨A¨q°vÕ>Ü”j¤(¨A¨q°vÀeÕLÜ”j¤(¨A¨q°uÀXÕNÜ”j¤(¨A¨q°vÀgÕNÜ”j¤(¨A¨q°vÀgÖNrb   údtypes do not matchc                 ó°  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }t        ||d«      }t        ||«       t        ||d«      }t        ||«       |j                  g d¢«      }|j                  ddg«      }|j                  ddg«      }t        ||d«      }t        ||«       t        ||d«      }t        ||«       y )	N)rP   rQ   rK   rN   rM   rK   )	rQ   rK   rL   rM   rK   rL   rQ   rQ   rP   )éF   éN   éI   éA   r¬   )y      ð?      @ù       @      ð¿y      @        ù       @      Àù      ð?        y       @      $ÀrX   ©r[   r\   r]   r^   ÚexpectedÚouts         r`   Útest_valid_mode2zTestConvolve.test_valid_mode2§   sÆ   € ð �J‰JÒ)Ó*ˆØ�J‰JÒ2Ó3ˆØ—:‘:Ò.Ó/ˆä�q˜!˜WÓ%ˆÜ˜˜XÔ&ä�q˜!˜WÓ%ˆÜ˜˜XÔ&à�J‰JÒ/Ó0ˆØ�J‰J˜ Ð'Ó(ˆØ—:‘:˜v wÐ/Ó0ˆä�q˜!˜WÓ%ˆÜ˜˜XÔ&ä�q˜!˜WÓ%ˆÜ˜˜XÕ&rb   c                 ó¨   — |j                  g d¢«      }|j                  g d¢«      }t        ||d«      }|j                  g d¢«      }t        ||«       y )N)rP   rQ   rK   rK   rP   rQ   )rP   rL   rK   rL   rM   rN   r–   rL   rK   rQ   rP   rP   rK   re   )é9   é=   é?   rË   é-   é$   rX   rŸ   s         r`   Útest_same_modezTestConvolve.test_same_mode¾   sG   € à�J‰JÒ)Ó*ˆØ�J‰JÒ>Ó?ˆÜ�Q˜˜6Ó"ˆØ�J‰JÒ/Ó0ˆÜ˜˜1Õrb   zdifferent exceptionc                 óü   — |j                  |j                  dd«      d«      }|j                  |j                  dd«      d«      }t        t        t        g||f¢­i ddi¤Ž t        t        t        g||f¢­i ddi¤Ž y ©	NrP   r–   ©rQ   rK   éúÿÿÿr   ©rK   rQ   rg   r¬   )r…   r†   r¹   rº   r   r»   s       r`   Útest_invalid_shapesz TestConvolve.test_invalid_shapesÆ   ss   € ð �J‰J�r—y‘y  A“¨Ó/ˆØ�J‰J�r—y‘y  QÓ'¨Ó0ˆä”j¤(ÐI¨a°¨VÒI¸ÀÐ7HÒIÜ”j¤(ÐI¨a°¨VÒI¸ÀÐ7HÓIrb   zTODO: convert this testc                 óZ  — h d£}|D ���cg c]  }|D ]  }dD ]  }|||f‘Œ	 Œ Œ }}}}t         j                  j                  d«      }|j                  ddg|¬«      |j	                  |«      dœ}	|	d   x|	d	<   |	d
<   |	d   d|	d   z  z   |	d<   |D �]  \  }}}|	t        j
                  |«      j                     j                  |«      }
|	t        j
                  |«      j                     j                  |«      }dD �ci c]  }|t        |
|||¬«      “Œ }}|d   j
                  |d   j
                  k(  sJ ‚d|v rd|v rt        |
|«      dk(  sJ ‚ŒÂt        ||fD �cg c]  }|dv ‘Œ c}«      rdddœ}nd||fv rdddœ}ndddœ}t        |d   |d   fi |¤Ž �Œ y c c}}}w c c}w c c}w )N>   ÚboolÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64Ú	complex64r­   )r¬   r«   re   é*   r   rP   ©Úsize)r‰   Úfr‰   r^   Úurè   ù              à?r_   )r
   r   )r�   rg   r
   r   rØ   >   râ   rä   ç-Cëâ6?ç�íµ ÷Æ°>©Úrtolr„   rá   çü©ñÒMbP?çñhãˆµøä>ç:Œ0âŽyE>)ÚnpÚrandomÚRandomStateÚchoiceÚrandnr¨   ÚkindÚastyper   r   Úanyr4   )r[   r\   ÚnÚtypesÚt1Út2rg   ÚargsÚrngÚarray_typesÚx1Úx2ÚkeyÚresultsÚtÚkwargss                   r`   Útest_convolve_methodz!TestConvolve.test_convolve_methodÓ   s  € ò4ˆð */÷ Fð F 2¸ò F°2Ø+DòFØ#'ð �R˜’ð F�ð F�ð Fˆò Fô
 �i‰i×#Ñ# BÓ'ˆØŸJ™J¨¨1 v°A˜JÓ6ØŸI™I a›Lñ*ˆà.9¸#Ñ.>Ð>ˆ�CÑ˜; sÑ+Ø& sÑ+¨d°;¸sÑ3CÑ.CÑCˆ�CÑà ó 	I‰LˆB��DØœRŸX™X b›\×.Ñ.Ñ/×6Ñ6°rÓ:ˆBØœRŸX™X b›\×.Ñ.Ñ/×6Ñ6°rÓ:ˆBð #4ö5Øð œH R¨°C¸dÔCÑCð 5ˆGð 5ð ˜5‘>×'Ñ'¨7°8Ñ+<×+BÑ+BÒBÐBÐBà˜‰| ¨"¡Ü)¨"¨bÓ1°XÒ=Ð=Ð=Øô ¸BÀ¸8ÖD°a�AÐ1Ò1ÒDÔEØ"(°$Ñ7‘Ø˜r 2˜hÑ&à"&°Ñ5‘ð #'°Ñ5�ä˜G E™N¨G°HÑ,=ÑHÀÔHñ1	IùôFùò5ùò Es   ‹FÃ=F#ÅF(
c                 ó  — dD ]…  }|j                  d|z  g|j                  ¬«      }t        ||d¬«      }t        ||d¬«      }|dk  sŒF|j                  dd|z  z  g«      }t        ||«       t        ||d¬	«       t        ||d¬	«       Œ‡ y )
N)	rR   é   é2   é3   é4   é5   é6   é<   rš   rQ   r§   r
   r€   r   r
  F©Úcheck_dtype)rY   rÜ   r   r5   )r[   r\   rú   rs   r
   r   Úvals          r`   Ú test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_input   s�   € ð 6ò 	@ˆAØ—
‘
˜A˜q™D˜6¨¯©�
Ó2ˆAÜ˜1˜a¨Ô.ˆCÜ˜a ¨8Ô4ˆFð
 �2‹vØ—j‘j ! a¨¡c¡( Ó,�Ü  VÔ,Ü  S°eÕ<Ü ¨¸Ö?ñ	@rb   ©ry   c                 ó,  — t        t        t        dgdd¬«       t        t        t        ddgd¬«       t        t        t        dgdd¬«       t        t        t        ddgd¬«       t        t        t        dgdgg«       t        t        t        dgd«       y ©NrP   rQ   r   r€   r
   rK   )r¹   rº   r   ©r[   r\   s     r`   Útest_mismatched_dimsz!TestConvolve.test_mismatched_dims  sp   € ô 	”j¤(¨Q¨C°¸8ÕDÜ”j¤(¨A°¨s¸8ÕDÜ”j¤(¨Q¨C°¸5ÕAÜ”j¤(¨A°¨s¸5ÕAÜ”j¤(¨Q¨C°1°#°Ô7Ü”j¤(¨Q¨C°Õ3rb   N)éd   )Ú__name__Ú
__module__Ú__qualname__Úskip_xp_backendsra   ri   rk   rt   Úxfail_xp_backendsrw   r{   r‹   r�   r¡   r±   r¼   rÉ   rÐ   rÖ   r  r  r  © rb   r`   rE   rE   *   sß  „ ñ �kØCôEñHóEðHñ �kØCôEñ5óEð5ñ �kØCôEñ5óEð5òEñ �{Ð+?Ô@ñ"ó Að"ñ ˜d¨=Ô9ñó :ðñ �{Ð+IÔJñ	.ó Kð	.ñ �{Ð+?Ô@ñ"ó Að"ñ �kÓ#Ù�fÓñó ó $ðñ �gÓÙ�fÓñ#5ó ó ð#5òJOñ �kÐ*?Ô@ñ'ó Að'ñ, �kÐ*?Ô@ñó Aðñ �fÐ%:Ô;ñ
Jó <ð
Jñ ˜dÐ+DÔEò*Ió Fð*IñX �kÐ*?Ô@ñ@ó Að@ñ" ˜dÔ#ñ4ó $ñ4rb   rE   c            	       óÊ  — e Zd Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d	„ «       Zd
„ Zd„ Z	 edd¬«      d„ «       Z
 edd¬«      d„ «       Z edd¬«      ej                  j                  deeg«      ej                  j                  ddg d¢gfdg d¢gfg«      d„ «       «       «       Z edd¬«      d„ «       Z edd¬«      d„ «       Zd„ Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d„ «       Zd„ Zej                  j2                  ej                  j5                  d«       ed d!¬"«      d#„ «       «       «       Zy$)%ÚTestConvolve2drF   r½   rH   c                 óÄ   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }t        ||«      }t        ||«       y r“   ©rY   r   r5   )r[   r\   r]   r^   r    Úes         r`   r¡   zTestConvolve2d.test_2d_arrays   s\   € à�J‰Jš	¢9Ð-Ó.ˆØ�J‰Jš	¢9Ð-Ó.ˆØ�J‰JÒ*Ú'Ú'ð)ó *ˆô �q˜!ÓˆÜ˜˜1Õrb   c                 óì   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }|j                  g d¢g«      }t        ||d«      }t        ||«       t        ||d«      }t        ||«       y )N©rQ   rK   rL   rM   rN   r–   r¤   ©rL   rM   rN   r–   r¤   é	   rR   rO   rd   ©rš   éP   éb   ét   é†   r¬   r#  ©r[   r\   r$  rè   ÚhÚgs         r`   Útest_valid_modezTestConvolve2d.test_valid_mode*  sn   € à�J‰JÒ-Ò/EÐFÓGˆØ�J‰Jš	¢9Ð-Ó.ˆØ�J‰JÒ.Ð/Ó0ˆä�q˜!˜WÓ%ˆÜ˜˜1Ôô �q˜!˜WÓ%ˆÜ˜˜1Õrb   r¢   c                 ó
  — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g|j                  ¬«      dz   }|j                  g d¢g«      }t        ||d«      }t        ||«       t        ||d«      }t	        ||«       y )	Nr&  r'  rO   rd   r§   r¦   )y      O@      8@y      T@      >@y     €X@      B@y      ]@      E@y     À`@      H@r¬   )rY   r­   r   r4   r5   r.  s         r`   Útest_valid_mode_complxz%TestConvolve2d.test_valid_mode_complx7  s{   € à�J‰JÒ-Ò/EÐFÓGˆØ�J‰Jš	¢9Ð-°R·]±]ˆJÓCÀbÑHˆØ�J‰JÒLÐMÓNˆä�q˜!˜WÓ%ˆÜ˜˜1Ôô �q˜!˜WÓ%ˆÜ˜˜1Õrb   zjax only allows fillvalue=0c                 óÎ   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }d}t        ||dd|«      }|j                  g d¢g d	¢g d
¢g«      }t        ||«       y )NrO   rd   r”   r•   rP   r«   Úfill)é   é   r�   rh   rU   )rT   é(   rš   é@   r  )rU   é.   éC   rš   é0   r#  )r[   r\   r]   r^   Úfillvalr_   r    s          r`   Útest_fillvaluezTestConvolve2d.test_fillvalueD  sg   € à�J‰Jš	¢9Ð-Ó.ˆØ�J‰Jš	¢9Ð-Ó.ˆØˆÜ�q˜!˜V V¨WÓ5ˆØ�J‰JÒ,Ú'Ú'ð)ó *ˆô 	˜˜1Õrb   c                 ó|  — d}t        j                  «       5  t        j                  ddt        «       t	        t
        |¬«      5  t        dggddggd¬«       d d d «       d d d «       d	}t	        t
        |¬«      5  t        dggddggddg¬«       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   ŒGxY w# 1 sw Y   y xY w)
Nz2could not cast `fillvalue` directly to the output ÚignorezCasting complex values©ÚmatchrP   rQ   r¦   ©Ú	fillvaluez,`fillvalue` must be scalar or an array with )ÚwarningsÚcatch_warningsÚfilterwarningsr	   r¹   rº   r   )r[   r\   Úmsgs      r`   Útest_fillvalue_errorsz$TestConvolve2d.test_fillvalue_errorsO  sµ   € ØBˆÜ×$Ñ$Ó&ñ 	:Ü×#Ñ# HÐ.FÌÔWÜœz°Ô5ñ :Ü˜Q˜C˜5 A q 6 (°bÕ9÷:÷	:ð
 =ˆÜœ:¨SÔ1ñ 	:Ü˜˜�u  1˜v˜h°1°a°&Õ9÷	:ð 	:÷	:ð :ú÷	:ð 	:ú÷	:ð 	:ús/   —-B&ÁBÁB&Á;B2ÂB#	ÂB&Â&B/Â2B;c                 ó>   — t        t        t        dggddggg ¬«       y )NrP   rQ   rC  ©r¹   rº   r   r  s     r`   Útest_fillvalue_emptyz#TestConvolve2d.test_fillvalue_emptyZ  s   € ä”j¤*°¨s¨e°q¸!°f°XØ "ö	$rb   z!jax only supports boundary='fill'c                 óÈ   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }t        ||dd«      }|j                  g d¢g d¢g d¢g«      }t        ||«       y )	NrO   rd   r”   r•   r«   Úwrap)r*  r*  éJ   r*  r*  )éD   rP  rš   rP  rP  r#  rŸ   s         r`   Útest_wrap_boundaryz!TestConvolve2d.test_wrap_boundary_  s`   € à�J‰Jš	¢9Ð-Ó.ˆØ�J‰Jš	¢9Ð-Ó.ˆÜ�q˜!˜V VÓ,ˆØ�J‰JÒ,Ú'Ú'ð)ó *ˆô 	˜˜1Õrb   c                 óÈ   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }t        ||dd«      }|j                  g d¢g d¢g d	¢g«      }t        ||«       y )
NrO   rd   r”   r•   r«   Úsymm)rh   r™   é,   rš   éB   )r  r<  rš   r*  éT   )éR   rÀ   é\   én   ér   r#  rŸ   s         r`   Útest_sym_boundaryz TestConvolve2d.test_sym_boundaryi  s`   € à�J‰Jš	¢9Ð-Ó.ˆØ�J‰Jš	¢9Ð-Ó.ˆÜ�q˜!˜V VÓ,ˆØ�J‰JÒ,Ú'Ú)ð+ó ,ˆô 	˜˜1Õrb   Úfunczboundary, expectedrS  )g     €B@ç      E@ç      F@g     €F@rN  )ç     €E@r^  r]  ç     €C@c                 óœ   — |j                  g d¢g«      }|j                  d«      } |||d|¬«      }t        ||j                  |«      «       y )N)ç       @ç      ð¿ç      @ç      @)rP   é   re   ©rg   Úboundary)rY   Úonesr5   )r[   r\  rh  rÇ   r\   ÚimageÚkernelÚresults           r`   Útest_same_with_boundaryz&TestConvolve2d.test_same_with_boundarys  sI   € ð —
‘
Ò1Ð2Ó3ˆØ—‘˜Ó!ˆÙ�e˜V¨&¸8ÔDˆô 	˜ §
¡
¨8Ó 4Õ5rb   c           	      ó$  — dd l m} |j                  |j                  dd|j                  ¬«      d«      }|j                  |j                  dd|j                  ¬«      d«      }t        ||dd	¬
«      }t        ||j                  ||d	d¬«      «       y )Nr   rP   r�   r§   )rR   rK   ée   )rR   rR   re   rN  rg  )r©   r©   )rg   Úorigin)Úscipy.ndimageÚndimager…   r†   rã   r   r5   r   )r[   r\   Úndir]   r^   r_   s         r`   Útest_boundary_extension_samez+TestConvolve2d.test_boundary_extension_same…  sx   € õ
 	$Ø�J‰J�r—y‘y  F°"·*±*�yÓ=¸wÓGˆØ�J‰J�r—y‘y  G°2·:±:�yÓ>ÀÓIˆÜ�q˜! &°6Ô:ˆÜ˜˜3Ÿ<™<¨¨1°6À(˜<ÓKÕLrb   c           
      óú  — dd l m} |j                  |j                  dd|j                  ¬«      d«      }|j                  |j                  dd|j                  ¬«      d«      }t        ||dd	¬
«      }t        j                  ddt        ¬«      j                  dd«      }t        j                  |dd	«      }|j                  |«      }t        ||j                  |j                  ||d	¬«      d d…d d…f   «      «       y )Nr   rP   rR   r§   ©rK   rK   é%   )rN   rN   r«   rN  rg  rK   )rv  rv  rf   r©   )rq  rr  r…   r†   rã   r   rò   ÚfloatÚpadrY   r5   r   )	r[   r\   rs  r]   r^   r_   Úa_npÚapad_npÚapads	            r`   Útest_boundary_extension_fullz+TestConvolve2d.test_boundary_extension_full�  sÐ   € õ
 	$Ø�J‰J�r—y‘y  E°·±�yÓ<¸fÓEˆØ�J‰J�r—y‘y  E°·±�yÓ<¸fÓEˆÜ�q˜! &°6Ô:ˆä�y‰y˜˜F¬%Ô0×8Ñ8¸¸AÓ>ˆÜ—&‘&˜Ð/°Ó8ˆØ�z‰z˜'Ó"ˆÜ˜˜2Ÿ:™: c§l¡l°4¸À lÓ&HÈÈ"ÈÈcÈrÈcÈÑ&RÓSÕTrb   c                 óü   — |j                  |j                  dd«      d«      }|j                  |j                  dd«      d«      }t        t        t        g||f¢­i ddi¤Ž t        t        t        g||f¢­i ddi¤Ž y rÒ   )r…   r†   r¹   rº   r   r»   s       r`   rÖ   z"TestConvolve2d.test_invalid_shapesŸ  ss   € ð �J‰J�r—y‘y  A“¨Ó/ˆØ�J‰J�r—y‘y  QÓ'¨Ó0ˆä”j¤*ÐK°°1¨vÒK¸&À'Ð9JÒKÜ”j¤*ÐK°°1¨vÒK¸&À'Ð9JÓKrb   rG   c                 óÀ   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }t        ||d«      }|j                  g d¢g d¢g«      }t        ||«       y )NrO   rd   r&  r'  re   )rS   rT   rh   )r*  r+  r,  r#  )r[   r\   r$  rè   r0  r/  s         r`   rÐ   zTestConvolve2d.test_same_mode«  s\   € ð �J‰Jš	¢9Ð-Ó.ˆØ�J‰JÒ-Ò/EÐFÓGˆÜ�q˜!˜VÓ$ˆØ�J‰JšÚ ð"ó #ˆä˜˜1Õrb   c                 óÔ  — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g«      }|j                  g d¢g«      }t        ||d«      }t        ||«       t        ||d«      }t        ||«       |j                  ddgd	d
gg«      }|j                  g d¢g d¢g«      }|j                  ddgg«      }t        ||d«      }t        ||«       t        ||d«      }t        ||«       y )NrO   rd   r&  r'  r)  r¬   rm   rÄ   ro   ù      @        )rÃ   ù      @       @r�  )r�  y      @      ð?y      @      Ày      ;@      ð¿y      G@       @r#  )r[   r\   r$  rè   rÇ   rÈ   s         r`   rÉ   zTestConvolve2d.test_valid_mode2µ  sè   € ð �J‰Jš	¢9Ð-Ó.ˆØ�J‰JÒ-Ò/EÐFÓGˆØ—:‘:Ò5Ð6Ó7ˆä˜˜A˜wÓ'ˆÜ˜˜XÔ&ä˜˜A˜wÓ'ˆÜ˜˜XÔ&à�J‰J˜ Ð(¨6°6Ð*:Ð;Ó<ˆØ�J‰JÒ0Ò2JÐKÓLˆØ—:‘: ¨Ð2Ð3Ó4ˆä˜˜A˜wÓ'ˆÜ˜˜XÔ&ô ˜˜A˜wÓ'ˆÜ˜˜XÕ&rb   z9only integer tensors of a single element can be convertedc                 óÂ  — |j                  d«      }|j                  g d¢«      }t        |«      }t        |«      }dD ]   }t        |j                  t	        j
                  |||¬«      «      t        j
                  |||¬«      «       t        |j                  t        j                  |d d d …f   |d d d …f   |¬«      d¬«      t        j
                  |||¬«      «       Œ¢ y )NrM   ©gš™™™™™	@gffffffö?rK   ©r«   r¬   re   rf   r   ©Úaxis)	r†   rY   rC   r4   rò   r   r   Úsqueezer   )r[   r\   r]   r^   rz  Úb_nprg   s          r`   Útest_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcsÎ  sÅ   € ð
 �I‰I�a‹LˆØ�J‰J’}Ó%ˆÜ  Ó#ˆÜ  Ó#ˆà-ò 	ˆDÜØ—
‘
œ2Ÿ;™; t¨T¸Ô=Ó>Ü—‘  1¨4Ô0ôô Ø—
‘
Ü×%Ñ% a¨ªa¨¡j°!°Dº!°G±*À4ÔHØð ó ô —‘  1¨4Ô0õñ	rb   c                 ó˜   — t        t        t        dd«       t        t        t        dgdg«       t        t        t        dgggdggg«       y )NrK   rL   rK  r  s     r`   Útest_invalid_dimsz TestConvolve2d.test_invalid_dimså  s<   € Ü”j¤*¨a°Ô3Ü”j¤*¨q¨c°A°3Ô7Ü”j¤*°°¨u¨g¸!¸¸°wÕ?rb   z!Can't create large array for testTÚstride_tricksrx   c                 óô  — dd|j                  «       j                  z  z  }t        j                  d|z  dz  t	        j                   «       j                  z  dz  «       |j                  d|z  |j                   ¬«      }d|d d d…<   t        j                  j                  j                  ||dfd¬	«      }t        j                  |ddgg«      }t	        j                  |dkD  «      }|d
   j                  d
k(  sJ ‚y )Nl        éè  rQ   éé  g    €„.Ar§   rP   )iH  r¤   )ÚshapeÚstridesr   )rÜ   Úitemsizer3   Úcheck_free_memoryrò   ÚzerosÚlibr�  Ú
as_stridedr   r   Úwhererç   )r[   r\   rú   r]   ÚcountÚfailss         r`   Útest_large_arrayzTestConvolve2d.test_large_arrayê  sÙ   € ð
 �d˜RŸX™X›Z×0Ñ0Ñ0Ñ1ˆÜ×$Ñ$ Q¨¡U¨T¡\´B·H±H³J×4GÑ4GÑ%GÈ#Ñ%MÔNð �H‰H�T˜A‘X R§X¡XˆHÓ.ˆØˆ‰#ˆAˆ#‰Ü�F‰F× Ñ ×+Ñ+¨A°a¸°YÈ	Ð+ÓRˆä×!Ñ! ! q¨! f XÓ.ˆÜ—‘˜ ™Ó#ˆØ�Q‰x�}‰} Ò!Ð!Ñ!rb   N)r  r  r  r  r¡   r1  r3  r>  rI  rL  rQ  r[  ÚpytestÚmarkÚparametrizer   r   rm  rt  r}  rÖ   rÐ   rÉ   rŠ  rŒ  ÚslowÚxfail_on_32bitr›  r  rb   r`   r!  r!    s  „ ñ �kÐ*?Ô@ñó Aðñ �kÐ*?Ô@ñ
ó Að
ñ �gÐ&;Ô<ñ
ó =ð
ñ �kÐ*GÔHñó Iðò	:ò$ñ
 �kÐ*MÔNñó Oðñ �kÐ*MÔNñó Oðñ �kÐ*MÔNØ‡[�[×Ñ˜V j°+Ð%>Ó?Ø‡[�[×ÑÐ1Ø%Ò(@Ð'AÐBØ%Ò(@Ð'AÐBðDóEñ6óEó @ó Oð
6ñ �kÐ*MÔNñMó OðMñ �kÐ*MÔNñUó OðUò
Lñ �kØCôEñóEðñ �kØCôEñ'óEð'ñ. �gØJôñóðò(@ð
 ‡[�[×ÑØ‡[�[×ÑÐ CÓDÙ˜d¨?Ô;ñ"ó <ó Eó ñ"rb   r!  c                   ó^  — e Zd Zej                  j                  dddddgddgg«      d„ «       Zej                  j                  dddgddgg«      d„ «       Zej                  j                  dddddgddgg«      d	„ «       Zej                  j                  dddgddgg«      d
„ «       Z	ej                  j                  dddddgddgddgddgddgddgddgddgg
«      d„ «       Z
ej                  j                  dddgddgddgddgddgddgddgddgg«      d„ «       Zej                  j                  dddddgddgddgddgddgddgddgddgg
«      d„ «       Zej                  j                  dddgddgddgddgddgddgddgddgg«      d„ «       Zej                  j                  dddddgddgg«      d„ «       Zej                  j                  ddddgdgg«      d„ «       Zej                  j                  dddddgddgg«      d„ «       Zej                  j                  dddgg«      d„ «       Zej                  j                  dddddgddgg«      d„ «       Zej                  j                  dddgddgg«      d„ «       Z edd¬«      d„ «       Z edd¬«       edd¬«      ej                  j                  dg g fdd gg fg d!gfg«      d"„ «       «       «       Z edd#¬«      d$„ «       Zd%„ Zej                  j                  dddddgddgg«      d&„ «       Zej                  j                  dddgddgg«      d'„ «       Z ed(d)¬*«      ej                  j                  ddd+gd+dgddgddgd,d+gd+d,gd,dgdd,gg«      d-„ «       «       Zej                  j:                  ej                  j                  d. e edd/«      «       e ed0d1«      «      z   e jB                  jE                  d2«      jG                  d3d4d«      jI                  «       z   «      d5„ «       «       Z% ed(¬6«      d7„ «       Z&y)8ÚTestFFTConvolveÚaxesÚ Nr   r©   c                 óâ   — |j                  g d¢«      }|j                  g d¢«      }|dk(  rt        ||«      }n)t        |t        «      rt	        |«      }t        |||¬«      }t        ||d¬«       y )NrO   ©rP   rL   rR   rW   ç      "@r¤  ©r£  çTäqs*¹>rƒ   ©rY   r   Ú
isinstanceÚlistrˆ   r4   ©r[   r£  r\   r]   rÇ   rÈ   s         r`   Ú	test_realzTestFFTConvolve.test_realÿ  s_   € à�J‰J’yÓ!ˆØ—:‘:Ò0Ó1ˆà�2Š:Ü˜a Ó#‰Cä˜$¤Ô%Ü˜T“{�Ü˜a ¨Ô.ˆCä˜˜X¨FÖ3rb   rP   c                 ó  — |j                  g d¢«      }|j                  g d¢«      }|j                  |d«      }|j                  |d«      }t        |t        «      rt	        |«      }t        |||¬«      }t        ||d¬«       y )NrO   r¦  ©rQ   rP   r¨  r©  rƒ   ©rY   Útiler«  r¬  rˆ   r   r4   r­  s         r`   Útest_real_axeszTestFFTConvolve.test_real_axes  sl   € à�J‰J’yÓ!ˆØ—:‘:Ò0Ó1ˆà�G‰G�A�vÓˆØ—7‘7˜8 VÓ,ˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q TÔ*ˆÜ˜˜X¨FÖ3rb   c                 óâ   — |j                  g d¢«      }|j                  g d¢«      }|dk(  rt        ||«      }n)t        |t        «      rt	        |«      }t        |||¬«      }t        ||d¬«       y )N©rm   ù       @       @y      @      @©rp   y               @y              4@y              8@y              2@r¤  r¨  r©  rƒ   rª  r­  s         r`   rt   zTestFFTConvolve.test_complex  s`   € à�J‰JÒ/Ó0ˆØ—:‘:ÒIÓJˆà�2Š:Ü˜a Ó#‰Cä˜$¤Ô%Ü˜T“{�Ü˜a ¨Ô.ˆCÜ˜˜X¨FÖ3rb   c                 ó  — |j                  g d¢«      }|j                  g d¢«      }|j                  |d«      }|j                  |d«      }t        |t        «      rt	        |«      }t        |||¬«      }t        ||d¬«       y )Nrµ  r·  r°  r¨  r©  rƒ   r±  r­  s         r`   Útest_complex_axesz!TestFFTConvolve.test_complex_axes(  sm   € à�J‰JÒ/Ó0ˆØ—:‘:ÒIÓJˆà�G‰G�A�vÓˆØ—7‘7˜8 VÓ,ˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q TÔ*ˆÜ˜˜X¨FÖ3rb   éþÿÿÿc                 óô   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }|dk(  rt        ||«      }n)t        |t        «      rt	        |«      }t        |||¬«      }t        ||«       y )N©ç      ð?rQ   rK   r•   )r½  rL   rR   rW   r(  ©r¤   r7  é8   r  rÏ   ©r—   r8  rÁ   r  rÏ   r¤  r¨  rª  r­  s         r`   Útest_2d_real_samez!TestFFTConvolve.test_2d_real_same6  sx   € ð �J‰JšÚ!ð#ó $ˆà—:‘:Ò2Ú2Ú3ð5ó 6ˆð �2Š:Ü˜a Ó#‰Cä˜$¤Ô%Ü˜T“{�Ü˜a ¨Ô.ˆCÜ˜˜XÕ&rb   rQ   c                 ó  — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }|j                  |d«      }|j                  |d«      }t        |t        «      rt	        |«      }t        |||¬«      }t        ||dd	¬
«       y )NrO   r•   )rP   rL   rR   rW   r(  r¾  rÀ  ©rQ   rP   rP   r¨  r©  F©r„   r  r±  r­  s         r`   Útest_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axesO  s‰   € ð �J‰Jš	Úðó ˆà—:‘:Ò0Ú-Ú.ð0ó 1ˆð �G‰G�A�yÓ!ˆØ—7‘7˜8 YÓ/ˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q TÔ*ˆÜ˜˜X¨FÀÖFrb   c                 óø   — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }|dk(  rt        ||«      }n)t        |t        «      rt	        |«      }t        |||¬«      }t        ||d¬	«       y )
N©ù      ð?       @ù      @      @y      @      @©rn   y      @      @y      @      @©y      À      @y      $À      4@y      5À      L@y      2À      S@y      &À      N@©y              $@y              F@y             €]@y             €c@y             €^@©rÉ  y      $@      4@y      5@      L@y      2@      S@y      &@      N@r¤  r¨  r©  rƒ   rª  r­  s         r`   Útest_2d_complex_samez$TestFFTConvolve.test_2d_complex_sameg  s{   € ð �J‰JÒ0Ú+ð-ó .ˆà—:‘:ÚAÚ(Ú<ðó ˆð �2Š:Ü˜a Ó#‰Cä˜$¤Ô%Ü˜T“{�Ü˜a ¨Ô.ˆCä˜˜X¨FÖ3rb   c                 ó  — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }|j                  |d«      }|j                  |d«      }t        |t        «      rt	        |«      }t        |||¬«      }t        ||d¬	«       y )
NrÇ  rÊ  rË  rÌ  rÍ  rÃ  r¨  r©  rƒ   r±  r­  s         r`   Útest_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axesƒ  sˆ   € ð �J‰JÒ0Ú+ð-ó .ˆà—:‘:ÚAÚ(Ú<ðó ˆð �G‰G�A�yÓ!ˆØ—7‘7˜8 YÓ/ˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q TÔ*ˆÜ˜˜X¨FÖ3rb   c                 óÄ  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|dk(  rt        ||d«      }n*t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||«       |dk(  rt        ||d«      }n*t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬	«       y )
NrO   ©	rK   rK   rM   rN   r¤   r–   r(  r   rP   ©ç     €A@ç     €D@ç     €G@©	r§  ç      4@ç      9@rÔ  rÕ  rÖ  r`  g      <@rb  r¤  re   r¨  r©  rƒ   rª  ©r[   r£  r\   r]   r^   Ú
expected_1Ú
expected_2rÈ   s           r`   Útest_real_same_modez#TestFFTConvolve.test_real_same_mode�  sÂ   € à�J‰J’yÓ!ˆØ�J‰JÒ2Ó3ˆØ—Z‘Z¢Ó0ˆ
Ø—Z‘ZÒ KÓLˆ
à�2Š:Ü˜a  FÓ+‰Cä˜$¤Ô%Ü˜T“{�Ü˜a  F°Ô6ˆCÜ˜˜ZÔ(à�2Š:Ü˜a  FÓ+‰Cä˜$¤Ô%Ü˜T“{�Ü˜a  F°Ô6ˆCÜ˜˜Z¨fÖ5rb   c                 óÖ  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  |d«      }|j                  |d«      }|j                  |d«      }|j                  |d«      }t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬	«       t        ||d|¬«      }t        ||d¬	«       y )
NrO   rÒ  rÓ  r×  r°  re   r¨  r©  rƒ   r±  rÚ  s           r`   Útest_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axes´  sÇ   € à�J‰J’yÓ!ˆØ�J‰JÒ2Ó3ˆØ—Z‘Z¢Ó0ˆ
Ø—Z‘ZÒ KÓLˆ
à�G‰G�A�vÓˆØ�G‰G�A�vÓˆØ—W‘W˜Z¨Ó0ˆ
Ø—W‘W˜Z¨Ó0ˆ
ä�dœDÔ!Ü˜“;ˆDä˜!˜Q ¨TÔ2ˆÜ˜˜Z¨fÕ5ä˜!˜Q ¨TÔ2ˆÜ˜˜Z¨fÖ5rb   c                 ó¢  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|dk(  rt        ||d«      }n*t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬«       |dk(  rt        ||d«      }n*t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬«       y )	N©rK   rQ   rP   rÒ  ©ç      8@g      ?@rÕ  r_  g     €H@rÙ  ç      (@r¤  r¬   r¨  r©  rƒ   rª  ©r[   r£  r\   r]   r^   rÇ   rÈ   s          r`   Útest_valid_mode_realz$TestFFTConvolve.test_valid_mode_realÉ  s¸   € ð �J‰J’yÓ!ˆØ�J‰JÒ2Ó3ˆØ—:‘:ÒAÓBˆà�2Š:Ü˜a  GÓ,‰Cä˜$¤Ô%Ü˜T“{�Ü˜a  G°$Ô7ˆCÜ˜˜X¨FÕ3à�2Š:Ü˜a  GÓ,‰Cä˜$¤Ô%Ü˜T“{�Ü˜a  G°$Ô7ˆCÜ˜˜X¨FÖ3rb   c                 óR  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  |d«      }|j                  |d«      }|j                  |d«      }t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬«       y )	Nrá  rÒ  râ  r°  r¬   r¨  r©  rƒ   r±  rå  s          r`   Útest_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axesà  s�   € ð �J‰J’yÓ!ˆØ�J‰JÒ2Ó3ˆØ—:‘:ÒAÓBˆà�G‰G�A�vÓˆØ�G‰G�A�vÓˆØ—7‘7˜8 VÓ,ˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q ¨dÔ3ˆÜ˜˜X¨FÖ3rb   c                 ó¢  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|dk(  rt        ||d«      }n*t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬«       |dk(  rt        ||d«      }n*t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬«       y )	N©ù      @      ð¿y       @      @rÅ   ©r‚  y      @      Ày      @        y      @      ð¿y       @        ©y     €F@      (@y      >@      7@y      H@      @@r¤  r¬   r¨  r©  rƒ   rª  rå  s          r`   Útest_valid_mode_complexz'TestFFTConvolve.test_valid_mode_complexñ  s·   € à�J‰JÒ/Ó0ˆØ�J‰JÒ?Ó@ˆØ—:‘:ÒAÓBˆà�2Š:Ü˜a  GÓ,‰Cä˜$¤Ô%Ü˜T“{�Ü˜a  G°$Ô7ˆCÜ˜˜X¨FÕ3à�2Š:Ü˜a  GÓ,‰Cä˜$¤Ô%Ü˜T“{�Ü˜a  G°$Ô7ˆCÜ˜˜X¨FÖ3rb   c                 óŒ  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  |d«      }|j                  |d«      }|j                  |d«      }t        |t        «      rt	        |«      }t        ||d|¬«      }t        ||d¬«       t        ||d|¬«      }t        ||d¬«       y )	Nrê  rì  rí  r°  r¬   r¨  r©  rƒ   r±  rå  s          r`   Útest_valid_mode_complex_axesz,TestFFTConvolve.test_valid_mode_complex_axes  sª   € à�J‰JÒ/Ó0ˆØ�J‰JÒ?Ó@ˆØ—:‘:ÒAÓBˆà�G‰G�A�vÓˆØ�G‰G�A�vÓˆØ—7‘7˜8 VÓ,ˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q ¨dÔ3ˆÜ˜˜X¨FÕ3ä˜!˜Q ¨dÔ3ˆÜ˜˜X¨FÖ3rb   rF   z mapped axes must have same shaperH   c                 ó  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  |d«      }|j                  |d«      }|j                  |d«      }t        ||dd¬«      }t        ||d	¬
«       y )Nrá  rÒ  râ  r°  ©rP   rP   r¬   rP   r¨  r©  rƒ   )rY   r²  r   r4   rÆ   s         r`   Útest_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes  s|   € ð �J‰J’yÓ!ˆØ�J‰JÒ2Ó3ˆØ—:‘:ÒAÓBˆà�G‰G�A�vÓˆØ�G‰G�A�vÓˆØ—7‘7˜8 VÓ,ˆä˜!˜Q ¨aÔ0ˆÜ˜˜X¨FÖ3rb   r‘   r½   zassorted error messagesúa,brM   rN   r–   c                 óŠ   — t        t        |j                  |«      |j                  |«      «      |j                  g «      «       y ©N)r5   r   rY   ©r[   r]   r^   r\   s       r`   Ú
test_emptyzTestFFTConvolve.test_empty(  s1   € ô
 	Ü˜Ÿ
™
 1› r§z¡z°!£}Ó5Ø�J‰J�r‹Nõ	
rb   zjnp.pad: pad_width with nd=0c                 ó~   — |j                  d«      }|j                  d«      }t        ||«      }t        |||z  «       y r�   )rY   r   r5   ©r[   r\   r]   r^   rÈ   s        r`   rw   zTestFFTConvolve.test_zero_rank2  s8   € à�J‰J�tÓˆØ�J‰J�tÓˆÜ˜!˜QÓˆÜ˜˜Q ™UÕ#rb   c                 ó¸   — |j                  dg«      }|j                  dg«      }t        ||«      }t        ||j                  ||z  |j                  ¬«      «       y )NrŽ   r�   r§   )rY   r   r5   r¨   rú  s        r`   r�   z#TestFFTConvolve.test_single_element9  sP   € Ø�J‰J˜�vÓˆØ�J‰J˜�vÓˆÜ˜!˜QÓˆÜ˜ØŸ
™
 1 q¡5°·	±	˜
Ó:õ	<rb   c                 ó8  — t         j                  j                  d«      }t         j                  j                  d«      d|j                  d«      z  z   }t         j                  j                  d«      d|j                  d«      z  z   }|j	                  t        j
                  ||d«      «      }|j	                  |«      }|j	                  |«      }|dk(  rt        ||d«      }	n*t        |t        «      rt        |«      }t        ||d|¬«      }	t        |	|d¬	«       y )
NéÒ  éÑ  r¦   é)  r«   r¤  r¨  ç»½×Ùß|Û=©rî   )rò   ró   Údefault_rngÚrandrY   r   r   r«  r¬  rˆ   r4   ©
r[   r£  r\   rÿ   rz  r‰  rÇ   r]   r^   rÈ   s
             r`   Útest_random_dataz TestFFTConvolve.test_random_data@  sÛ   € ä�i‰i×#Ñ# DÓ)ˆÜ�y‰y�~‰~˜dÓ# b¨3¯:©:°dÓ+;Ñ&;Ñ;ˆÜ�y‰y�~‰~˜dÓ# b¨3¯:©:°dÓ+;Ñ&;Ñ;ˆØ—:‘:œbŸk™k¨$°°fÓ=Ó>ˆØ�J‰J�tÓˆØ�J‰J�tÓˆà�2Š:Ü˜a  FÓ+‰Cä˜$¤Ô%Ü˜T“{�Ü˜a  F°Ô6ˆCÜ˜˜X¨EÖ2rb   c                 ó¢  — t         j                  j                  d«      }t         j                  j                  d«      d|j                  d«      z  z   }t         j                  j                  d«      d|j                  d«      z  z   }t        j                  ||d«      }t        j
                  |ddg«      }t        j
                  |ddg«      }|j                  t        j
                  |ddg«      «      }|j                  |«      }|j                  |«      }t        |t        «      rt        |«      }t        ||d|¬«      }	t        |	|d	¬
«       y )Nrý  rþ  r¦   rÿ  r«   rQ   rP   r¨  r   r  )rò   ró   r  r  r   r²  rY   r«  r¬  rˆ   r   r4   r  s
             r`   Útest_random_data_axesz%TestFFTConvolve.test_random_data_axesQ  s  € ä�i‰i×#Ñ# DÓ)ˆÜ�y‰y�~‰~˜dÓ# b¨3¯:©:°dÓ+;Ñ&;Ñ;ˆÜ�y‰y�~‰~˜dÓ# b¨3¯:©:°dÓ+;Ñ&;Ñ;ˆÜ—;‘;˜t T¨6Ó2ˆÜ�w‰w�t˜a ˜VÓ$ˆÜ�w‰w�t˜a ˜VÓ$ˆØ—:‘:œbŸg™g h°°A°Ó7Ó8ˆà�J‰J�tÓˆØ�J‰J�tÓˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q ¨TÔ2ˆÜ˜˜X¨EÖ2rb   TzTODO: swapaxesrx   rL   éüÿÿÿc                 ó4  — d\  }}t         j                  j                  d«      }|j                  t        j                  j                  |Ž d|j                  |«      z  z   «      }|j                  t        j                  j                  |Ž d|j                  |«      z  z   «      }t        ||d«      }|d d …d d …d d d f   }|d d …d d …d d d f   }|d d …d d …d d d f   }|j                  |j                  dd«      dd«      }|j                  |j                  dd«      dd«      }|j                  |j                  dd«      dd«      }|j                  |d	«      }|j                  |d
«      }|j                  |d«      }t        ||d|¬«      }	t        |	|dd¬«       y )N))é{   rS   )é„   é   rý  r¦   r«   r   rQ   rP   rL   )rQ   rP   rK   rP   rP   )rQ   rP   rP   rL   rP   )rQ   rP   rK   rL   rP   r¨  r   rí   )rò   ró   r  rY   r  r   ÚmoveaxisÚswapaxesr²  r   r4   )
r[   r£  r\   Úa_shaperŠ   rÿ   r]   r^   rÇ   rÈ   s
             r`   Útest_random_data_multidim_axesz.TestFFTConvolve.test_random_data_multidim_axesd  st  € ð 0Ñˆ�Ü�i‰i×#Ñ# DÓ)ˆØ�J‰J”r—y‘y—~‘~ wÐ/°"°s·z±zÀ'Ó7JÑ2JÑJÓKˆØ�J‰J”r—y‘y—~‘~ wÐ/°"°s·z±zÀ'Ó7JÑ2JÑJÓKˆÜ˜a  FÓ+ˆàŠa’�D˜$ Ð$Ñ%ˆØŠa’�D˜$ Ð$Ñ%ˆØšAšq $¨¨dÐ2Ñ3ˆà�K‰K˜Ÿ
™
 1 aÓ(¨!¨QÓ/ˆØ�K‰K˜Ÿ
™
 1 aÓ(¨!¨QÓ/ˆØ—;‘;˜x×0Ñ0°°AÓ6¸¸1Ó=ˆð �G‰G�A�Ó'ˆØ�G‰G�A�Ó'ˆØ—7‘7˜8 _Ó5ˆä˜!˜Q ¨TÔ2ˆÜ˜˜X¨E¸Ö>rb   rú   r  r�  iÜ  rý  r�  é'  c                 ó  — t         j                  j                  |«      dt         j                  j                  |«      z  z   }t         j                  j                  |«      dt         j                  j                  |«      z  z   }|j                  t        j                  ||d«      «      }|j                  |«      }|j                  |«      }t        ||d«      }t        ||d¬«       t        ||dd¬«      }t        ||d¬«       y )Nr¦   r«   r   rƒ   )r   r¨  )rò   ró   r  rY   r   r   r4   )	r[   rú   r\   rz  r‰  rÇ   r]   r^   rÈ   s	            r`   Útest_many_sizeszTestFFTConvolve.test_many_sizes„  sÃ   € ô �y‰y�~‰~˜aÓ  2¬¯	©	¯©°qÓ(9Ñ#9Ñ9ˆÜ�y‰y�~‰~˜aÓ  2¬¯	©	¯©°qÓ(9Ñ#9Ñ9ˆØ—:‘:œbŸk™k¨$°°fÓ=Ó>ˆØ�J‰J�tÓˆØ�J‰J�tÓˆä˜!˜Q Ó'ˆÜ˜˜X¨EÕ2ä˜!˜Q ¨TÔ2ˆÜ˜˜X¨EÖ2rb   r  c                 óº  — d}t         j                  j                  d«      }|j                  |j	                  |«      «      }t         j
                  t         j                  fD ]k  }||d<   |j                  t        j                  dd«      «      }d}t        j                  t        |¬«      5  t        j                  ||dd	¬
«       d d d «       Œm y # 1 sw Y   ŒxxY w)Nr�  l   [<zn( r  éÈ   çš™™™™™É?z4Use of fft convolution.*|invalid value encountered.*rA  re   r
   r¶   )rò   ró   r  rY   Ústandard_normalÚnanÚinfr   Úfirwinrœ  ÚwarnsÚRuntimeWarningr   )r[   r\   rú   rÿ   Úsig_nanr  ÚcoeffsrH  s           r`   Útest_fft_nanzTestFFTConvolve.test_fft_nan—  s¸   € àˆÜ�i‰i×#Ñ# KÓ0ˆØ—*‘*˜S×0Ñ0°Ó3Ó4ˆä—F‘FœBŸF™FÐ#ò 	LˆCØˆG�C‰LØ—Z‘Z¤§¡¨c°3Ó 7Ó8ˆFàHˆCÜ—‘œn°CÔ8ñ LÜ—‘ ¨°fÀUÕK÷Lð Lñ	L÷
Lð Lús   Â,CÃC	)'r  r  r  rœ  r�  rž  r®  r³  rt   r¹  rÁ  rÅ  rÎ  rÐ  rÝ  rß  ræ  rè  rî  rð  r  ró  r  rø  rw   r�   r  r  r  rŸ  r¬  r‡   rò   ró   rô   ÚrandintÚtolistr  r  r  rb   r`   r¢  r¢  ü  sº  „ ð ‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ4ó Cð4ð ‡[�[×Ñ˜V a¨!¨¨b°2°$Ð%7Ó8ñ4ó 9ð4ð ‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ
4ó Cð
4ð ‡[�[×Ñ˜V a¨!¨¨b°2°$Ð%7Ó8ñ4ó 9ð4ð ‡[�[×Ñ˜V bØ&*Ø'(¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð	&0ó 	1ñ'ó	1ð'ð ‡[�[×Ñ˜V q¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð&0ó 1ñGó1ðGð  ‡[�[×Ñ˜V bØ&*Ø'(¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð	&0ó 	1ñ4ó	1ð4ð$ ‡[�[×Ñ˜V q¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð&0ó 1ñ4ó1ð4ð$ ‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ6ó Cð6ð, ‡[�[×Ñ˜V a¨¨a¨S°2°$Ð%7Ó8ñ6ó 9ð6ð( ‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ4ó Cð4ð, ‡[�[×Ñ˜V a¨!¨ XÓ.ñ4ó /ð4ð  ‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ4ó Cð4ð* ‡[�[×Ñ˜V a¨!¨¨b°2°$Ð%7Ó8ñ4ó 9ð4ñ$ �kÐ*LÔMñ4ó Nð4ñ �vÐ&;Ô<Ù�{Ð+DÔEØ‡[�[×Ñ˜U b¨" X°°A°¸¨|¸bÀ1À#¸YÐ$GÓHñ
ó Ió Fó =ð
ñ �kÐ*HÔIñ$ó Jð$ò<ð ‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ3ó Cð3ð  ‡[�[×Ñ˜V a¨!¨¨b°2°$Ð%7Ó8ñ3ó 9ð3ñ$ ˜tÐ,<Ô=Ø‡[�[×Ñ˜V q¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð&0ó 1ñ?ó1ó >ð?ð. ‡[�[×ÑØ‡[�[×ÑØÙ‰U�1�c‹]ÓÙ‰U�4˜ÓÓñ	 à
�	‰	×Ñ˜dÓ#×+Ñ+¨D°%¸Ó;×BÑBÓDñ	EóFñ
3óFó ð3ñ ˜dÔ#ñLó $ñLrb   r¢  c                  ó   — t        d«      ‚)NzFell back to fftconvolve)ÚRuntimeError)rþ   r  s     r`   Úfftconvolve_errr$  ¦  s   € Ü
Ð1Ó
2Ð2rb   c                 ót   — t        | d¬«      D ��cg c]  \  }}t        ||z
  «      dkD  r||f‘Œ c}}S c c}}w )NrQ   ©ÚrepeatrK   )r   Úabs©Úsizesr]   r^   s      r`   Úgen_oa_shapesr+  ª  s?   € Ü& u°QÔ7÷ ‘t�q˜!Ü�1�q‘5‹z˜AŠ~ð �ŠFó ð ùó s   ‘4c                 ó8  — t        | «      }t        | «      }t        ||«      D ��cg c]
  \  }}||z   ‘Œ }}}g d¢}t        ||«      D ��cg c]<  \  }}|dk7  s,|d   |d   kD  r|d   |d   kD  s|d   |d   k  r|d   |d   k  r||fz   ‘Œ> c}}S c c}}w c c}}w )Nr…  r¬   r   rP   rQ   rK   )r+  Úzipr   )	r*  Úshapes0Úshapes1Úishapes0Úishapes1ÚshapesÚmodesÚishapesÚimodes	            r`   Úgen_oa_shapes_2dr6  ¯  sÇ   € Ü˜EÓ"€GÜ˜EÓ"€Gä�'˜7Ó#÷%Ñ$6 H¨hˆh�xÓð %€Fñ %ò &€EÜ3:¸6À5Ó3I÷ C¡ ¨%Ø˜ÒØ�Q‰Z˜' !™*Ò$¨°©°g¸a±jÒ)@Ø�Q‰Z˜' !™*Ò$¨°©°g¸a±jÒ)@ð �U�HÓó Cð Cùó	%ùóCs   ¦BÁABc                 ó\   — t        | d¬«      D ��cg c]  \  }}||k\  r||f‘Œ c}}S c c}}w )NrQ   r&  r   r)  s      r`   Úgen_oa_shapes_eqr8  ¼  s7   € Ü& u°QÔ7÷ ‘t�q˜!Ø�AŠvð �ŠFó ð ùó s   ‘(c                   óÌ  — e Zd Zej                  j                  «       ej                  j                  d e e e	ddd«      «       e e	ddd«      «      z   «      «      d„ «       «       Z
ej                  j                  d eg d¢«      «      ej                  j                  dd	d
g«      ej                  j                  dg d¢«      d„ «       «       «       Zej                  j                  dddg«      ej                  j                  d eg d¢«      «      ej                  j                  dddg«      ej                  j                  dddg«      ej                  j                  dd	d
g«      ej                  j                  dg d¢«      d„ «       «       «       «       «       «       Zej                  j                  d eg d¢«      «      ej                  j                  dd	d
g«      d„ «       «       Zej                  j                  dddgddgddgg«      ej                  j                  d eg d¢«      «      ej                  j                  dddg«      ej                  j                  dddg«      ej                  j                  dd	d
g«      d„ «       «       «       «       «       Z edd¬«      ej                  j                  dg g fddgg fg dgfg«      d „ «       «       Zd!„ Zd"„ Zy#)$ÚTestOAConvolvezshape_a_0, shape_b_0rP   r  r�  rV   c                 ó*  — t         j                  j                  |«      }t         j                  j                  |«      }|j                  t	        ||«      «      }|j                  |«      }|j                  |«      }t        ||«      }t        ||«       y rö  )rò   ró   r  rY   r   r   r:   )r[   Ú	shape_a_0Ú	shape_b_0r\   r]   r^   rÇ   rÈ   s           r`   Útest_real_manylensz!TestOAConvolve.test_real_manylensÃ  sm   € ô �I‰I�N‰N˜9Ó%ˆÜ�I‰I�N‰N˜9Ó%ˆØ—:‘:œk¨!¨QÓ/Ó0ˆØ�J‰J�q‹MˆØ�J‰J�q‹Mˆä˜˜AÓˆä! # xÕ0rb   )r
  é/   rN   rL   rP   Ú
is_complexTFrg   r…  c                 ó  — t         j                  j                  |«      }t         j                  j                  |«      }|rJ|dt         j                  j                  |«      z  z   }|dt         j                  j                  |«      z  z   }|j                  t	        |||¬«      «      }	|j                  |«      }|j                  |«      }|j                  t        j                  dt        «       t        |||¬«      }
t        |
|	«       y ©Nr¦   rf   r   ©rò   ró   r  rY   r   Úsetattrr   Ú_signaltoolsr$  r   r:   )r[   r<  r=  r@  rg   Úmonkeypatchr\   r]   r^   rÇ   rÈ   s              r`   Útest_1d_noaxeszTestOAConvolve.test_1d_noaxesÓ  sÇ   € ô �I‰I�N‰N˜9Ó%ˆÜ�I‰I�N‰N˜9Ó%ˆÙØ�B”r—y‘y—~‘~ iÓ0Ñ0Ñ0ˆAØ�B”r—y‘y—~‘~ iÓ0Ñ0Ñ0ˆAØ—:‘:œk¨!¨Q°TÔ:Ó;ˆØ�J‰J�q‹MˆØ�J‰J�q‹Mˆà×ÑœF×/Ñ/°Ü+ô	-ä˜˜A DÔ)ˆä! # xÕ0rb   r£  r   )r
  r?  rN   rL   Úshape_a_extrarK   Úshape_b_extrac
                 ó,  — |gdz  }
|gdz  }||
|<   |||<   t        j                  j                  |
Ž }t        j                  j                  |Ž }|rD|dt        j                  j                  |
Ž z  z   }|dt        j                  j                  |Ž z  z   }|	j                  t	        ||||¬«      «      }|	j                  |«      }|	j                  |«      }|j                  t        j                  dt        «       t        ||||¬«      }t        ||«       y )NrQ   r¦   ©rg   r£  r   rC  )r[   r£  r<  r=  rH  rI  r@  rg   rF  r\   Úax_aÚax_br]   r^   rÇ   rÈ   s                   r`   Útest_1d_axeszTestOAConvolve.test_1d_axesè  sõ   € ð ˆ˜qÑ ˆØˆ˜qÑ ˆØˆˆT‰
ØˆˆT‰
ä�I‰I�N‰N˜DÐ!ˆÜ�I‰I�N‰N˜DÐ!ˆÙØ�B”r—y‘y—~‘~ tÐ,Ñ,Ñ,ˆAØ�B”r—y‘y—~‘~ tÐ,Ñ,Ñ,ˆAà—:‘:œk¨!¨Q°TÀÔEÓFˆØ�J‰J�q‹MˆØ�J‰J�q‹Mˆà×ÑœF×/Ñ/°Ü+ô	-ä˜˜A D¨tÔ4ˆä! # xÕ0rb   z0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec	                 ó  — t         j                  j                  ||«      }	t         j                  j                  ||«      }
|rL|	dt         j                  j                  ||«      z  z   }	|
dt         j                  j                  ||«      z  z   }
|j                  t	        |	|
|¬«      «      }|j                  |	«      }	|j                  |
«      }
|j                  t        j                  dt        «       t        |	|
|¬«      }t        ||«       y rB  rC  )r[   r<  r=  Ú	shape_a_1Ú	shape_b_1rg   r@  rF  r\   r]   r^   rÇ   rÈ   s                r`   Útest_2d_noaxeszTestOAConvolve.test_2d_noaxes  sÏ   € ô �I‰I�N‰N˜9 iÓ0ˆÜ�I‰I�N‰N˜9 iÓ0ˆÙØ�B”r—y‘y—~‘~ i°Ó;Ñ;Ñ;ˆAØ�B”r—y‘y—~‘~ i°Ó;Ñ;Ñ;ˆAà—:‘:œk¨!¨Q°TÔ:Ó;ˆØ�J‰J�q‹MˆØ�J‰J�q‹Mˆà×ÑœF×/Ñ/°Ü+ô	-ä˜˜A DÔ)ˆä! # xÕ0rb   rQ   c                 ón  — |gdz  }|gdz  }|||d   <   |||d   <   |||d   <   |||d   <   t        j                  j                  |Ž }t        j                  j                  |Ž }|	rD|dt        j                  j                  |Ž z  z   }|dt        j                  j                  |Ž z  z   }t        |«      }|j	                  t        ||||¬«      «      }|j	                  |«      }|j	                  |«      }|
j                  t        j                  dt        «       t        ||||¬«      }t        ||«       y )NrK   r   rP   r¦   rK  r   )rò   ró   r  rˆ   rY   r   rD  r   rE  r$  r   r:   )r[   r£  r<  r=  rP  rQ  rg   rH  rI  r@  rF  r\   rL  rM  r]   r^   rÇ   rÈ   s                     r`   Útest_2d_axeszTestOAConvolve.test_2d_axes  s   € ð ˆ˜qÑ ˆØˆ˜qÑ ˆØ!ˆˆT�!‰W‰Ø!ˆˆT�!‰W‰Ø!ˆˆT�!‰W‰Ø!ˆˆT�!‰W‰ä�I‰I�N‰N˜DÐ!ˆÜ�I‰I�N‰N˜DÐ!ˆÙØ�B”r—y‘y—~‘~ tÐ,Ñ,Ñ,ˆAØ�B”r—y‘y—~‘~ tÐ,Ñ,Ñ,ˆAä�T‹{ˆØ—:‘:œk¨!¨Q°TÀÔEÓFˆØ�J‰J�q‹MˆØ�J‰J�q‹Mˆà×ÑœF×/Ñ/°Ü+ô	-ä˜˜A D¨tÔ4ˆä! # xÕ0rb   r¢   z*ValueError: Target length must be positiverH   rô  rM   rN   r–   c                 óŽ   — t        t        |j                  |«      |j                  |«      «      |j                  g «      d¬«       y )NFr  )r5   r   rY   r÷  s       r`   rø  zTestOAConvolve.test_emptyA  s3   € ô 	Ü�r—z‘z !“} b§j¡j°£mÓ4Ø�J‰J�r‹N¨ö	
rb   c                 ó~   — |j                  d«      }|j                  d«      }t        ||«      }t        |||z  «       y r�   ©rY   r   r5   rú  s        r`   rw   zTestOAConvolve.test_zero_rankJ  s8   € Ø�J‰J�tÓˆØ�J‰J�tÓˆÜ˜˜AÓˆÜ˜˜Q ™UÕ#rb   c                 ó‚   — |j                  dg«      }|j                  dg«      }t        ||«      }t        |||z  «       y r�   rW  rú  s        r`   r�   z"TestOAConvolve.test_single_elementP  s<   € Ø�J‰J˜�vÓˆØ�J‰J˜�vÓˆÜ˜˜AÓˆÜ˜˜Q ™UÕ#rb   N)r  r  r  rœ  r�  rŸ  rž  r8  r¬  r‡   r>  r+  rG  rN  r6  rR  rT  r  rø  rw   r�   r  rb   r`   r:  r:  Á  sí  „ à‡[�[×ÑÓØ‡[�[×ÑÐ3Ù-©d±5¸¸CÀÓ3CÓ.DÙ.2±5¸¸dÀBÓ3GÓ.Hñ/Ió Jóñ	1ó	ó ð
	1ð ‡[�[×ÑÐ3Ù*Ò+<Ó=ó?à‡[�[×Ñ˜\¨D°%¨=Ó9Ø‡[�[×Ñ˜VÒ%>Ó?ñ1ó @ó :ó?ð1ð" ‡[�[×Ñ˜V a¨ VÓ,Ø‡[�[×ÑÐ3Ù*ª>Ó:ó<à‡[�[×Ñ˜_¨q°!¨fÓ5Ø‡[�[×Ñ˜_¨q°!¨fÓ5Ø‡[�[×Ñ˜\¨D°%¨=Ó9Ø‡[�[×Ñ˜VÒ%>Ó?ñ1ó @ó :ó 6ó 6ó<ó -ð1ð0 ‡[�[×Ñð :á-ªnÓ=ó?ð ‡[�[×Ñ˜\¨D°%¨=Ó9ñ1ó :ó?ð1ð& ‡[�[×Ñ˜V q¨! f¨q°!¨f°q¸!°fÐ%=Ó>Ø‡[�[×Ñð :á-ªnÓ=ó?ð ‡[�[×Ñ˜_¨q°!¨fÓ5Ø‡[�[×Ñ˜_¨q°!¨fÓ5Ø‡[�[×Ñ˜\¨D°%¨=Ó9ñ1ó :ó 6ó 6ó?ó ?ð1ñ8 �wÐ'SÔTØ‡[�[×Ñ˜U b¨" X°°A°¸¨|¸bÀ1À#¸YÐ$GÓHñ
ó Ió Uð
ò$ó$rb   r:  Tz!assertions may differ on backendsrx   Úconvapproachc                   ó~   — e Zd Zd„ Zd„ Zej                  j                  ddgdfddgfdgdggfg«      d„ «       Zd„ Z	y	)
ÚTestAllFreqConvolvesc                 óú   — t        j                  dd«      j                  d«      }t        j                  dd«      j                  d«      }t        t        d¬«      5   |||d	¬
«       d d d «       y # 1 sw Y   y xY w)NrP   r–   rÓ   rÔ   r   rÕ   zOFor 'valid' mode, one must be at least as large as the other in every dimensionrA  r¬   rf   )rò   r†   r…   r¹   rº   ©r[   rY  r\   r]   r^   s        r`   rÖ   z(TestAllFreqConvolves.test_invalid_shapes]  sk   € Ü�I‰I�a˜‹O×#Ñ# FÓ+ˆÜ�I‰I�b˜!Ó×$Ñ$ VÓ,ˆÜœ:ð"FôGñ 	-ñ ˜˜A GÕ,÷	-÷ 	-ñ 	-ús   ÁA1Á1A:c                 óÆ   — t        j                  g d¢«      }t        j                  g d¢«      }t        t        d¬«      5   |||ddg¬«       d d d «       y # 1 sw Y   y xY w)N)rM   rN   rQ   rP   )rM   rN   rK   rP   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)rA  r   rP   r¨  )rò   r•  r¹   rº   r]  s        r`   Útest_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axese  sT   € Ü�H‰H’\Ó"ˆÜ�H‰H’\Ó"ˆÜœ:ð"6ô7ñ 	,ñ ˜˜A Q¨ FÕ+÷		,÷ 	,ñ 	,ús   Á AÁA rô  rP   rQ   rK   c                 ób   — t        t        d¬«      5   |||«       d d d «       y # 1 sw Y   y xY w)Nz/in1 and in2 should have the same dimensionalityrA  ©r¹   rº   )r[   r]   r^   rY  r\   s        r`   r  z)TestAllFreqConvolves.test_mismatched_dimsn  s4   € ô
 œ:ð"-ô.ñ 	ñ ˜˜AÔ÷	÷ 	ñ 	ús   ’
%¥.c                 óè  — t        t        d¬«      5   |dgdgd¬«       d d d «       t        t        d¬«      5   |dgdgg ¬«       d d d «       t        t        d	¬«      5   |dgdgddgd
dgg¬«       d d d «       t        t        d	¬«      5   |dgdgg d¢¬«       d d d «       t        t        d¬«      5   |dgdgdg¬«       d d d «       t        t        d¬«      5   |dgdgdg¬«       d d d «       t        t        d¬«      5   |dgdgddg¬«       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   ŒæxY w# 1 sw Y   ŒÅxY w# 1 sw Y   Œ¨xY w# 1 sw Y   ŒŒxY w# 1 sw Y   ŒpxY w# 1 sw Y   y xY w)Nz4acceptable mode flags are 'valid', 'same', or 'full'rA  rP   rQ   Úchipsrf   z#when provided, axes cannot be emptyr¨  z-axes must be a scalar or iterable of integersrK   rL   ©r½  rb  rd  re  z$axes exceeds dimensionality of inputrº  zall axes must be uniquer   ra  )r[   rY  r\   s      r`   Útest_invalid_flagsz'TestAllFreqConvolves.test_invalid_flagsx  s’  € Üœ:ð"0ô1ñ 	1ñ ˜!˜˜q˜c¨Õ0÷	1ô
 œ:Ø!FôHñ 	,á˜!˜˜q˜c¨Õ+÷	,ô œ:ð .2ô 3ñ 	:á˜!˜˜q˜c¨!¨Q¨°!°Q°Ð(8Õ9÷	:ô œ:ð .2ô 3ñ 	:á˜!˜˜q˜cÒ(8Õ9÷	:ô œ:Ø!GôIñ 	-á˜!˜˜q˜c¨¨Õ,÷	-ô œ:Ø!GôIñ 	.á˜!˜˜q˜c¨¨Õ-÷	.ô œ:Ø!:ô<ñ 	0á˜!˜˜q˜c¨¨A¨Õ/÷	0ð 	0÷3	1ñ 	1ú÷
	,ð 	,ú÷	:ð 	:ú÷	:ð 	:ú÷	-ð 	-ú÷	.ð 	.ú÷	0ð 	0úsR   ’D¹D,Á D8ÂEÂ6EÃEÄE(ÄD)Ä,D5Ä8EÅEÅEÅE%Å(E1N)
r  r  r  rÖ   r_  rœ  r�  rž  r  re  r  rb   r`   r[  r[  W  sZ   „ ò-ò,ð ‡[�[×Ñ˜UØ !˜s A˜hØ  1 #˜hØ !˜s a S E˜lð,ó-ñó	-ðó0rb   r[  zignore::DeprecationWarningr¨   c                 ón  — t         j                  j                  d«      j                  | «      }t         j                  j                  d«      j                  | «      }t        j                   | «       «      r
|dz  }|dz  }t	        ||«      }t        |t        ||d¬«      «       |j                  | k(  sJ ‚y )N)r}   r}   ©rL   rL   y        š™™™™™¹?r   r€   )rò   ró   rø   Úiscomplexobjr   r4   r   r¨   )r¨   r\   rq   rr   Úress        r`   Útest_convolve_longdtype_inputrj  —  s“   € ô
 	�	‰	×Ñ˜Ó"×)Ñ)¨%Ó0€AÜ
�	‰	×Ñ˜Ó ×'Ñ'¨Ó.€AÜ	‡�‘u“wÔØ	ˆS‰ˆØ	ˆS‰ˆä
�a˜Ó
€CÜ�Cœ ! Q¨xÔ8Ô9Ø�9‰9˜ÒÐÑrb   c                   ó’  — e Zd Zg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g
Zg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
ZddgZ eej                  ej                  «      d„ «       Z
ej                  j                  dg d¢«       eej                  ej                  «      d„ «       «       Z edd¬«      ej                  j                  dej"                  ej$                  ej&                  ej(                  ej*                  ddg«       eej                  ej                  «      d „ «       «       «       Z edd!¬«       eej                  «      d"„ «       «       Z edd#¬«       eej                  «      d$„ «       «       Z ed%d&¬'«      ej                  j                  dg d(¢«       eej                  «      d)„ «       «       «       Zy*)+ÚTestMedFilt)
r
  r
  r
  r
  r
  rX  é   r}   rÂ   r:  )
r
  r
  r
  r
  r
  r   éH   éM   rP  rU  )
r
  r
  r
  r
  r
  r:  r?  é   r9  ro  )
r
  r
  r
  r
  r
  rå   é   é   é_   é#   )
r
  r
  r
  r
  r
  r:  rh   r(  rf  rU  )
r¿   éa   rT   rP  rÀ   ro  rÌ   r›   éG   rå   )
r9  r  rT  rr  rP  rU   rp  rP  r6  rV  )
rK   é!   r  r;  rP   rÀ   rO  é7   rW   éS   )
r–   r  r:  r¿   r  r?  r6  é+   rÌ   r7  )
rU   rÌ   éX   r–   é'   rL   rX  r9  rÎ   rÌ   )
r   r
  r
  r
  rå   rq  rq  rm  r}   r   )
r   r
  r
  r
  r
  rå   rp  rf  rr  r   )
r
  r
  r
  r
  r
  r?  rh   rh   r:  rt  )
r
  r
  r
  r
  r
  r
  rå   r?  r9  rå   )
r
  r
  r
  r
  r
  r
  r:  rx  r9  rt  )
rw  r
  r
  r
  r
  r?  r:  rz  rx  r7  )
rU   r
  r
  r
  r
  r?  r:  rÎ   rx  r7  )
r–   r:  r
  r
  r?  r:  r:  rz  rÎ   rf  )
r   rU   rw  r|  rU   rU   rz  rz  rz  r   )
r   r–   r  r–   rL   rL   rp  rp  r6  r   r–   rK   c                 óh  — |j                  | j                  «      }|j                  | j                  «      }|j                  | j                  «      }t	        j
                  ||«      }t	        j                  |j                  ||j                  ¬«      |«      }t        ||«       t        ||d¬«       y )Nr§   Fr  )	rY   ÚINÚOUTÚKERNEL_SIZEr   ÚmedfiltÚ	medfilt2drã   r5   )r[   r\   Úin_Úout_Úkernel_sizer    r$  s          r`   ra   zTestMedFilt.test_basicÁ  s…   € ð �j‰j˜Ÿ™Ó!ˆØ�z‰z˜$Ÿ(™(Ó#ˆØ—j‘j ×!1Ñ!1Ó2ˆä�N‰N˜3 Ó,ˆÜ×Ñ˜RŸZ™Z¨°2·:±:˜ZÓ>ÀÓLˆÜ˜˜4Ô Ü˜˜1¨%Ö0rb   r¨   ©
rÝ   rÙ   rÞ   rÚ   rß   rÛ   rà   rÜ   râ   rã   c                 ó.  — t        |«      r|dv rt        j                  d«       t        ||«      }|j	                  | j
                  |¬«      }t        j                  |«      j                  |k(  sJ ‚t        j                  |«      j                  |k(  sJ ‚y )N©rÞ   rß   rà   z%torch does not support unisigned intsr§   )
r7   rœ  ÚskipÚgetattrrY   r~  r   r�  r¨   r‚  ©r[   r¨   r\   Úin_typeds       r`   Ú
test_typeszTestMedFilt.test_typesÍ  s~   € ô �BŒ<˜EÐ%CÑCÜ�K‰KÐ?Ô@ä˜˜EÓ"ˆØ—:‘:˜dŸg™g¨U�:Ó3ˆÜ�~‰~˜hÓ'×-Ñ-°Ò6Ð6Ð6Ü×Ñ Ó)×/Ñ/°5Ò8Ð8Ñ8rb   Tzassertions may differrx   Úfloat96Úfloat128c                 óò  — |dv rHt        j                  t         j                  «      j                  |k7  rt	        j
                  d|› �«       t        j                  | j                  |¬«      }t	        j                  t        d¬«      5  t        j                  |«       d d d «       t	        j                  t        d¬«      5  t        j                  |«       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   y xY w)N)rŽ  r�  zPlatform does not support r§   znot supportedrA  )rò   ÚfinfoÚ
longdoubler¨   rœ  r‰  Úarrayr~  r   rº   r   r�  r‚  r‹  s       r`   Útest_invalid_dtypeszTestMedFilt.test_invalid_dtypesÛ  s·   € ð Ð,Ñ,Ü—H‘HœRŸ]™]Ó+×1Ñ1°UÒ:Ü�K‰KÐ4°U°GÐ<Ô=ä—8‘8˜DŸG™G¨5Ô1ˆÜ�]‰]œ:¨_Ô=ñ 	%Ü�N‰N˜8Ô$÷	%ô �]‰]œ:¨_Ô=ñ 	'Ü×Ñ˜XÔ&÷	'ð 	'÷	%ð 	%ú÷	'ð 	'ús   Â	C!ÃC-Ã!C*Ã-C6zobject arraysc                 ó‚   — t        t        t        f«      5  t        j                  d «       d d d «       y # 1 sw Y   y xY wrö  )r¹   rº   Ú	TypeErrorr   r�  r  s     r`   Ú	test_nonezTestMedFilt.test_noneî  s2   € ô œJ¬	Ð2Ó3ñ 	!Ü�N‰N˜4Ô ÷	!÷ 	!ñ 	!ús   –5µ>z#strides are only writeable in NumPyc                 óþ   — |j                  d|j                  ¬«      }|dd }t        j                  j                  j                  |d¬«      }t        t        j                  |d«      |j                  dg«      «       y )	NrR   r§   rM   rN   )r—   )r’  rP   ç      @)
r†   rã   rò   r–  r�  r—  r4   r   r�  rY   )r[   r\   Údummyr]   s       r`   Útest_odd_strideszTestMedFilt.test_odd_stridesõ  sd   € ð —	‘	˜" B§J¡J�	Ó/ˆØ�!�AˆJˆÜ�F‰F× Ñ ×+Ñ+¨A°uÐ+Ó=ˆÜœŸ™ q¨!Ó,¨r¯z©z¸2¸$Ó/?Õ@rb   rF   z6chunk assignment does not work on jax immutable arraysrH   )rÝ   râ   rã   c                 ó¦  ‡ ‡‡‡‡‡— t        ||«      }|j                  ‰ j                  |¬«      Š|j                  ‰ j                  |¬«      }‰j                  |j                  k(  sJ ‚|j                  d   dz  Š|j                  d   dz  Š‰ j
                  d   dz  dz   Š‰ j
                  d   dz  dz   Šˆˆˆˆˆˆ fd„}|j                  |«      }t        d¬«      5 }h d£}|D �ch c]  }|j                  ||«      ’Œ }	}t        |	«      D ]  }
|
j                  «       \  }}}||||f<   Œ 	 d d d «       t        ||«       y c c}w # 1 sw Y   ŒxY w)	Nr§   r   rQ   rP   c                 óÄ  •— | \  }}|dk(  r)t        d‰‰z   «      }t        d‰ «      }t        d‰«      }n't        ‰‰z
  d «      }t        ‰d «      }t        ‰d «      }|dk(  r)t        d‰‰z   «      }t        d‰ «      }t        d‰«      }n't        ‰‰z
  d «      }t        ‰d «      }t        ‰d «      }‰||f   }	t        j                  |	‰j                  «      }
|
||f   ||fS ©Nr   )Úslicer   r‚  r€  )ÚchunkÚMÚNÚMinÚMselÚMoutÚNinÚNselÚNoutÚ
chunk_dataÚmedÚM1ÚN1rŒ  ÚoffMÚoffNr[   s              €€€€€€r`   Úapplyz2TestMedFilt.test_medfilt2d_parallel.<locals>.apply  s÷   ø€ ð ‰DˆAˆqØ�AŠvÜ˜A˜r D™yÓ)�Ü˜Q  “�Ü˜Q “|‘ä˜B ™I tÓ,�Ü˜T 4Ó(�Ü˜R “�Ø�AŠvÜ˜A˜r D™yÓ)�Ü˜Q  “�Ü˜Q “|‘ä˜B ™I tÓ,�Ü˜T 4Ó(�Ü˜R “�ð " # s (Ñ+ˆJÜ×"Ñ" :¨t×/?Ñ/?Ó@ˆCØ�t˜T�z‘? D¨$Ð.Ð.rb   rL   )Úmax_workers>   ©rP   r   ©r   r   ©r   rP   rò  )rŠ  rY   r~  r  r‘  r€  Ú
zeros_liker   Úsubmitr   rl  r5   )r[   r¨   r\   rÇ   r¯  ÚoutputÚpoolÚchunksr   ÚfuturesÚfutureÚdataÚMsliceÚNslicer«  r¬  rŒ  r­  r®  s   `             @@@@@r`   Útest_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallel   sU  ý€ ô ˜˜EÓ"ˆØ—:‘:˜dŸg™g¨U�:Ó3ˆØ—:‘:˜dŸh™h¨e�:Ó4ˆð �~‰~ §¡Ò/Ð/Ð/ð
 �^‰^˜AÑ !Ñ#ˆØ�^‰^˜AÑ !Ñ#ˆØ×Ñ Ñ" aÑ'¨!Ñ+ˆØ×Ñ Ñ" aÑ'¨!Ñ+ˆ÷	/ñ 	/ð8 —‘˜xÓ(ˆÜ¨AÔ.ð 	.°$Ú5ˆFØ>DÖE°U�t—{‘{ 5¨%Õ0ÐEˆGÐEô ' wÓ/ò .�Ø'-§}¡}£Ñ$��f˜fØ)-��v˜v�~Ò&ñ.÷	.ô 	˜ Õ)ùò F÷	.ð 	.ús   Ã	EÃ&EÃ?-EÅEÅEN)r  r  r  r~  r  r€  r@   r   r�  r‚  ra   rœ  r�  rž  r�  r  rò   Úbool_rä   r­   Úclongdoublerá   r”  r—  r›  r¾  r  rb   r`   rl  rl  §  sæ  „ â
2Ú
1Ú
2Ú
2Ú
1Ú
2Ú
2Ú
0Ú
1Ú
0ð	
2€Bò 2Ú1Ú3Ú3Ú3Ú3Ú3Ú2Ú1Ú-ð	/€Cð �Q�%€Ká�v—~‘~ v×'7Ñ'7Ó8ñ	1ó 9ð	1ð ‡[�[×Ñ˜Wò '=ó >ñ �v—~‘~ v×'7Ñ'7Ó8ñ9ó 9ó>ð9ñ ˜dÐ+BÔCØ‡[�[×Ñ˜W r§x¡x°·±¸r¿}¹}Ø')§~¡~°r·z±zØ'0°*ð'>ó ?ñ �v—~‘~ v×'7Ñ'7Ó8ñ'ó 9ó?ó Dð
'ñ ˜d¨?Ô;Ù�v—~‘~Ó&ñ!ó 'ó <ð!ñ
 ˜dÐ+PÔQÙ�v—~‘~Ó&ñAó 'ó RðAñ ØØGôð ‡[�[×Ñ˜WÒ&EÓFÙ�v×'Ñ'Ó(ñ6*ó )ó Gó	ñ6*rb   rl  c                   ó,   — e Zd Z edd¬«      d„ «       Zy)Ú
TestWienerr‘   zXXX: can_cast in cupy <= 13.2rH   c                 ó  — |j                  g d¢g d¢g d¢g d¢g|j                  ¬«      }|j                  g d¢g d¢g d¢g d	¢g«      }t        t        j                  |«      |d
¬«       t        t        j                  |d¬«      |d
¬«       y )N)rM   rN   rL   rK   )rK   rM   rN   rQ   )rQ   rK   rM   rN   )rP   rN   r(  r–   r§   )g‘ÔSXO@gúXÆqÇ	@gƒÓÇq@gõ¬ªªªú?)g]É`UUU@g¬FUUUU@gæÇqÇ@gçcÇq@)gÂy¿qÇ@gúXÆqÇ@gúXÆqÇ@gÚUõßJ4@)g±UUUUõ?gñ2k³6k@gÒ·ÍW÷H@gº“@­_)@rN   ©ÚdecimalrK   )Úmysize)rY   rã   r:   r   Úwiener)r[   r\   r0  r/  s       r`   ra   zTestWiener.test_basicB  s   € à�J‰JšÚ$Ú$Ú$ð&ð .0¯Z©Zð ó 9ˆð �J‰JÒNÚQÚQÚRðTó Uˆô 	"¤&§-¡-°Ó"2°A¸qÕAÜ!¤&§-¡-°¸!Ô"<¸aÈÖKrb   N)r  r  r  r  ra   r  rb   r`   rÂ  rÂ  ?  s!   „ ñ �fÐ%DÔEñ
Ló Fñ
Lrb   rÂ  )ÚmeanÚmedianÚminimumÚmaximumÚlinec                   ó´  — e Zd Z eej
                  ej                  «       edd¬«      d„ «       «       Ze	j                  j                  dd«      e	j                  j                  dd«      e	j                  j                  d	d
«       eej
                  «      d„ «       «       «       «       Z eej
                  «      d„ «       Ze	j                  j                  dd«      e	j                  j                  dd«      e	j                  j                  dd«       eej
                  «      d„ «       «       «       «       Z edd¬«      e	j                  j                  de«       eej                  «      d„ «       «       «       Z edd¬«       eej                  «      e	j                  j                  de«      d„ «       «       «       Ze	j                  j                  de«      e	j                  j                  dddg«       edd¬«       eej                  «      d„ «       «       «       «       Z edd¬«      e	j                  j                  ddg e edgddge«      «      z   «       eej
                  ej                  «      d„ «       «       «       Ze	j                  j                  d d!«      e	j                  j                  d"d#«       eej
                  «      d$„ «       «       «       Ze	j                  j                  d d%«      e	j                  j                  d"d#«       eej
                  «      d&„ «       «       «       Ze	j                  j                  d'd(«      e	j                  j                  d)d(«       eej
                  «      d*„ «       «       «       Ze	j                  j                  d+g d,¢«      e	j                  j                  deej8                  ej:                  eeg«       eej                  «      d-„ «       «       «       Z  eej                  «      d.„ «       Z! eej                  «      e	j                  j                  dd/dg«       edd¬«      d0„ «       «       «       Z"y1)2ÚTestResampler‘   z-does not raise with non-int upsampling factorrH   c           
      óf  — |j                  d|j                  ¬«      }d}t        j                  dd|¬«      }t	        t
        t        j                  |||¬«       t	        t
        t        j                  ||d¬	«       t	        t
        t        j                  |d
d«       t	        t
        t        j                  |dd«       t	        t
        t        j                  |dd«       t	        t
        t        j                  |dd«       t	        t
        t        j                  |ddd¬«       t	        t
        t        j                  |dddd¬«       t	        t
        t        j                  |dd|j                  d«      ¬«       |j                  |j                  d|j                  ¬«      d«      }t        j                  ||d|¬«       |j                  dk(  sJ ‚t        j                  |dd«      }t        j                  |ddd¬«      }t        j                  |dddd¬«      }t        ||«       t        ||«       y )Né€   r§   é   )Úkaiserç       @é    ©r\   ©ÚwindowÚINVALID©ÚdomainÚyorP   r   gÍÌÌÌÌÌô?rQ   r¤  ©ÚpadtyperÈ  rR   )rÝ  Úcvalr°  r©   ©r‡  r×  )rÔ  Úconstant)r†   rã   r   Ú
get_windowr¹   rº   ÚresampleÚresample_polyÚeyer²  r‘  r5   )	r[   r\   ÚsigÚnumÚwinÚsig2Úx_refÚx0r  s	            r`   ra   zTestResample.test_basicV  sª  € ð �i‰i˜ 2§:¡:ˆiÓ.ˆØˆÜ×Ñ °¸Ô<ˆÜ”j¤&§/¡/°3¸ÀCÕHÜ”j¤&§/¡/°3¸ÀIÕNô 	”j¤&×"6Ñ"6¸¸TÀ1ÔEÜ”j¤&×"6Ñ"6¸¸QÀÔBÜ”j¤&×"6Ñ"6¸¸SÀ!ÔDÜ”j¤&×"6Ñ"6¸¸QÀÔDÜ”j¤&×"6Ñ"6¸¸QÀÈ2ÕNÜ”j¤&×"6Ñ"6¸¸QÀØ$¨2õ	/ä”j¤&×"6Ñ"6¸¸QÀÈ"Ï&É&ÐQRË)ÕTð �w‰w�r—y‘y ¨B¯J©J�yÓ7¸Ó@ˆÜ�‰˜˜c¨°3Õ7Ø�y‰y˜FÒ"Ð"Ð"ô ×$Ñ$ S¨!¨QÓ/ˆÜ×!Ñ! # q¨!°ZÔ@ˆÜ×!Ñ! # q¨!°ZÀaÔHˆÜ˜˜EÔ"Ü˜˜EÕ"rb   r×  )NÚhammingr¢  )r	  rp  ræ  )r  ro  rR   r  c                 óÖ  — t        |«      }||j                  k(  r|j                  n|j                  }|j	                  dd|d¬«      }|j                  |dz   dz  «      }t        j                  |j                  ||«      ||¬«      }	t        t        j                  |||¬«      |j                  |	«      «       |j                  |j                  |dz   dz  «      |j                  |dz   dz  «      g«      }|j                  ||«      }
t        j                  |
|d|¬	«      }||j                  k(  rd
nd}t        t        j                  ||d|¬	«      |j                  |«      |¬«       y )Nr   rR   F)ÚendpointrQ   ç      @rÖ  rP   rß  ç•Ö&è.>çvƒôõ!”>rƒ   )r>   râ   rä   r­   ÚlinspaceÚcosr   râ  rø   r4   ÚrealÚstackÚsinrã   )r[   r¢  ræ  r×  r\   Údt_rÚdt_crq   rr   ÚdesiredÚ	y_complexÚ	resampledr„   s                r`   Ú	test_rfftzTestResample.test_rffty  s0  € ô   Ó#ˆØ# r§z¡zÒ1ˆr�|Š|°r·}±}ˆà�K‰K˜˜2˜q¨5ˆKÓ1ˆØ�F‰F�A�q‘D�5˜‘9ÓˆÜ—/‘/ "§)¡)¨A¨tÓ"4°cÀ&ÔIˆÜœŸ™¨¨3°vÔ>ØŸ™ Ó(ô	*ð �H‰H�b—f‘f˜a ™d˜U 3™YÓ'¨¯©°°A±°°c±	Ó):Ð;Ó<ˆØ—I‘I˜a Ó&ˆ	Ü—O‘O I¨s¸À6ÔJˆ	à˜rŸz™zÒ)‰t¨tˆäÜ�O‰O˜A˜s¨°6Ô:Ø�G‰G�IÓØö	rb   c                 óü   — |j                  |j                  d«      |j                  «      }t        j                  |«      }d}t        t        j                  ||d¬«      t        j                  ||d¬«      d¬«       y )NrÑ  ÚfreqrÙ  Útimerï  rƒ   )rø   r†   r­   Úsp_fftr
   r4   r   râ  )r[   r\   ÚtsigÚfsigræ  s        r`   Útest_input_domainzTestResample.test_input_domain”  s^   € ð �y‰y˜Ÿ™ 3›¨¯©Ó7ˆÜ�z‰z˜$ÓˆØˆÜÜ�O‰O˜D #¨fÔ5Ü�O‰O˜D #¨fÔ5Øö	rb   Únx)rP   rQ   rK   rM   r¤   Únyr¨   )rã   r­   c                 óÌ   — t        ||«      }|j                  dg|z  |¬«      }t        j                  ||«      }t	        ||j                  dg|z  |j
                  ¬«      «       y )NrP   r§   )rŠ  rY   r   râ  r4   r¨   )r[   r  r  r¨   r\   rq   rr   s          r`   Útest_dczTestResample.test_dcŸ  sY   € ô
 ˜˜EÓ"ˆØ�J‰J˜�s˜R‘x uˆJÓ-ˆÜ�O‰O˜A˜rÓ"ˆÜ˜˜2Ÿ:™: q c¨B¡h°a·g±g˜:Ó>Õ?rb   z padtype not supported by upfirdnrÝ  c                 ó  — |j                  d«      }|j                  t        j                  j	                  d«      j                  d«      «      }|j                  |d¬«      }t        j                  |dd||¬«       t        ||«       y )	NrK   r   rQ   T©ÚcopyrM   rP   ©r×  rÝ  )	r•  rY   rò   ró   rô   rö   r   rã  r5   )r[   rÝ  r\   Úimpulser×  Úwindow_origs         r`   Útest_mutable_windowz TestResample.test_mutable_window©  sk   € ð
 —(‘(˜1“+ˆØ—‘œBŸI™I×1Ñ1°!Ó4×:Ñ:¸1Ó=Ó>ˆØ—j‘j ¨d�jÓ3ˆÜ×Ñ˜W a¨°6À7ÕKÜ˜ Õ,rb   c                 óæ   — |j                  d|j                  ¬«      }|j                  g d¢|j                  ¬«      }t        j                  |dd||¬«      }|j
                  |j                  k(  sJ ‚y )NrR   r§   ©rP   rP   rP   rP   rQ   r
  )r†   râ   rY   r   rã  r¨   )r[   rÝ  r\   rq   r/  rr   s         r`   Útest_output_float32z TestResample.test_output_float32´  s^   € ð
 �I‰I�b §
¡
ˆIÓ+ˆØ�J‰J’y¨¯
©
ˆJÓ3ˆÜ× Ñ   A q°¸GÔDˆØ�w‰w˜"Ÿ*™*Ò$Ð$Ñ$rb   râ   rã   c                 óª   — t        ||«      }|j                  d|¬«      }t        j                  |dd|¬«      }|j                  |j                  k(  sJ ‚y )NrR   r§   rP   rQ   rÜ  )rŠ  r†   r   rã  r¨   )r[   rÝ  r¨   r\   rq   rr   s         r`   Útest_output_match_dtypez$TestResample.test_output_match_dtype¾  sN   € ô ˜˜EÓ"ˆØ�I‰I�b ˆIÓ&ˆÜ× Ñ   A q°'Ô:ˆØ�w‰w˜!Ÿ'™'Ò!Ð!Ñ!rb   zmethod, ext, padtype)r
   FNÚ	polyphaseFTc                 ó  — d}g d¢}|j                  ||j                  ¬«      t        |«      z  }|j                  d«      d d …|j                  f   }|j                  d|j                  z  |z  |z  «      t        ||¬«      z  }	|D �]¿  }
|j                  |
|j                  ¬«      t        |
«      z  }|j                  d|j                  z  |z  |z  «      t        |
|¬«      z  }|dk(  rt        j                  |	|
d¬	«      }n†|rf|
|k7  rat        |
|«      }|
|z  }||z  }t        ||«      }d
|z  }d|z  }t        j                  d|z  dz   |d¬«      }|j                  |«      }||dœ}nd|i}t        j                  |	|
|fddi|¤Ž}t        |j                  d   «      D ]¢  }||d d …f   }||d d …f   }t        ||df   «      }|d|
z  k\  r3|j!                  |«      }|dv rt#        ||d¬«       ŒQt#        ||d¬«       Œ`|j                  |j                  k(  sJ ‚t%        j&                  ||«      d   }|dkD  rŒšJ |||
f«       ‚ �ŒÂ t$        j(                  j+                  d«      }t        |«      t%        j,                  |j/                  |«      «      z  }	|j                  |	«      }	|D ]Æ  }
|j                  |
|j                  ¬«      t        |
«      z  }t%        j0                  |||	«      }|dk(  rt        j                  |	|
«      }nt        j                  |	|
||¬«      }|j                  |j                  k(  sJ ‚|j                  t%        j&                  ||«      d   «      }|dkD  rŒÁJ |«       ‚ |dk(  r•|j                  ddg«      }t        j                  |d«      }|j                  g d¢«      }t#        ||d¬«       |j                  g d ¢«      }t        j                  |d«      } |j                  d
d!g«      }!t#        | |!d¬«       y y )"Nr  )	rž   r
  r  éc   r  ro  éÇ   r  éÉ   r§   )r½  ç      $@g      D@rQ   rÕ  r
   r©   r†  r½  rR   rP   )rÒ  r™  rÖ  r
  rÝ  r‡  r   ç      à?)rÊ  rË  ç333333Ó?rƒ   rï   r³  g®Gáz®ï?rÜ  rÅ   rª   rL   )rÅ   ù      à?        rª   r  çê-�™—q=)r½  r  ç        r  r  )r†   rã   rx  rY   Únewaxisrõ  Úpir.   r   râ  r   Úmaxr  rã  r‡   r‘  r´  r4   rò   Úcorrcoefró   rô   Úcumsumrö   Úinterp)"r[   r�   ÚextrÝ  r\   ÚrateÚrates_tor  Úfreqsrq   Úrate_toÚt_toÚy_tosÚ	y_resampsr0  ÚupÚdownÚmax_rateÚf_cÚhalf_lenr×  Úpolyargsr‰   Úy_toÚy_resamprý  Úcorrrÿ   r  Úy1_testÚy1_truer  Úy2_testÚy2_trues"                                     r`   Útest_resample_methodsz"TestResample.test_resample_methodsÉ  sÝ  € ð ˆÚ<ˆð �I‰I�d "§*¡*ˆIÓ-´°d³Ñ;ˆØ—
‘
˜>Ó*ª1¨b¯j©j¨=Ñ9ˆØ�F‰F�1�r—u‘u‘9˜uÑ$ qÑ(Ó)¬D°¸"Ô,=Ñ=ˆàó &	>ˆGØ—9‘9˜W¨B¯J©J�9Ó7¼%À».ÑHˆDØ—F‘F˜1˜rŸu™u™9 uÑ,¨tÑ3Ó4´t¸GÈÔ7KÑKˆEØ˜ŠÜ"ŸO™O¨A¨w¸RÔ@‘	á˜7 dš?ä˜G TÓ*�AØ  A™�BØ 1™9�DÜ" 2 t›}�HØ˜x™-�CØ! H™}�HÜ#Ÿ]™]¨1¨x©<¸!Ñ+;¸SØ2AôC�FàŸZ™Z¨Ó/�FØ*0¸WÑE‘Hà )¨7Ð3�Hä"×0Ñ0°°G¸Tñ =Èð =Ø3;ñ=�	ô ˜5Ÿ;™; q™>Ó*ò >�Ø˜Q¢˜T‘{�Ø$ Qª T™?�Ü˜U 1 a 4™[Ó)�Ø˜3 ™=Ò(àŸ=™=¨Ó.�DØÐ"8Ñ8Ü'¨°$¸TÖBä'¨°$¸TÖBàŸ:™:¨¯©Ò7Ð7Ð7ÜŸ;™; t¨XÓ6°tÑ<�DØ $›;Ð=¨¨t°WÐ(=Ó=˜;ò>ð1&	>ôR �i‰i×#Ñ# AÓ&ˆÜ�‹JœŸ™ 3§9¡9¨T£?Ó3Ñ3ˆØ�J‰J�q‹MˆØò 	%ˆGà—9‘9˜W¨B¯J©J�9Ó7¼%À».ÑHˆDÜ—9‘9˜T 1 aÓ(ˆDØ˜ŠÜ!Ÿ?™?¨1¨gÓ6‘ä!×/Ñ/°°7¸DØ8?ôA�à—:‘: §¡Ò/Ð/Ð/Ø—:‘:œbŸk™k¨$°Ó9¸$Ñ?Ó@ˆDØ˜$“;Ð$ Ó$�;ð	%ð �UŠ?Ø—‘˜V VÐ,Ó-ˆBÜ—o‘o b¨!Ó,ˆGà—j‘jÒ!CÓDˆGÜ˜G W°5Õ9Ø—‘Ò.Ó/ˆBÜ—o‘o b¨!Ó,ˆGØ—j‘j " b Ó*ˆGÜ˜G W°5Ö9ð rb   Ún_in)r¤   r(  Ún_out)rK   rL   c                 ó²   — t        j                  |«      }d„ }t        j                  ||«      }t        j                  |||¬«      }t	        d|z  |d¬«       y)zTest callable window function. c                 ó2   — dt        j                  | «      z  S )zScale input by 1/2r  )rò   Ú	ones_like)r'  s    r`   rç  z0TestResample.test_resample_win_func.<locals>.win*  s   € àœŸ™ eÓ,Ñ,Ð,rb   rÖ  rQ   r  rƒ   N)rò   ri  r   râ  r4   )r[   r:  r;  Úx_inrç  Úy0Úy1s          r`   Útest_resample_win_funcz#TestResample.test_resample_win_func#  sJ   € ô
 �w‰w�t‹}ˆò	-ô �_‰_˜T 5Ó)ˆÜ�_‰_˜T 5°Ô5ˆä˜˜"™˜b uÖ-rb   )rN   rW   c                 ó,  — d\  }}t        j                  |«      }t        j                  ||«      }t        j                  |||||z   g¬«      \  }}dt        j                  t        |«      «      |z  |z  |z  z   }	t        ||«       t        ||	d¬«       y)zcVerify behavior for parameter `t`.

        Note that only `t[0]` and `t[1]` are utilized.
        )rR   rQ   )r  rR   r  rƒ   N)rò   ri  r   râ  r†   Úlenr5   r4   )
r[   r:  r;  Út0Údtr?  r@  rA  rü   Út_refs
             r`   Útest__resample_param_tz#TestResample.test__resample_param_t3  s„   € ð ‰ˆˆBÜ�w‰w�t‹}ˆä�_‰_˜T 5Ó)ˆÜ—‘  u°°R¸±U°Ô<‰ˆˆBØ”R—Y‘Yœs 2›wÓ'¨"Ñ,¨tÑ3°eÑ;Ñ;ˆä˜˜BÔÜ˜˜E¨Ö.rb   Ún1)rQ   rK   r–   r¤   Ún0c                 ó   ‡— t        ||«      dz  Šd„ ||fD «       }ˆfd„|D «       \  }}t        j                  ||«      }t        j                  |dz   |«      }t        ||d¬«       t        |j                  |d¬«       y)zDTest behavior at Nyquist frequency to ensure issue #14569 is fixed. rQ   c              3   óL   K  — | ]  }t        j                  |«      |z  –— Œ y ­wrö  )rò   r†   )Ú.0Ún_s     r`   ú	<genexpr>z5TestResample.test_resample_nyquist.<locals>.<genexpr>K  s   è ø€ Ò4 RŒb�i‰i˜‹m˜bÕ Ñ4ùs   ‚"$c              3   óv   •K  — | ]0  }t        j                  d t         j                  z  ‰z  |z  «      –— Œ2 y­w)rQ   N)rò   rò  r  )rM  Út_Úf_nys     €r`   rO  z5TestResample.test_resample_nyquist.<locals>.<genexpr>L  s,   øè ø€ Ò=°B”"—&‘&˜œRŸU™U™ TÑ)¨BÑ.×/Ñ=ùs   ƒ69rª   r  rƒ   N)Úminr   râ  r4   ró  )	r[   rJ  rI  Úttrê  r  Úy1_rÚy1_crR  s	           @r`   Útest_resample_nyquistz"TestResample.test_resample_nyquistE  sq   ø€ ô
 �2�r‹{˜aÑˆÙ4¨B°¨8Ô4ˆÛ=¸"Ô=‰ˆˆBä�‰˜r 2Ó&ˆÜ�‰˜r B™w¨Ó+ˆä˜˜b uÕ-Ü˜Ÿ	™	 2¨EÖ2rb   Údown_factor)rQ   r  éO   c                 óP  — t         j                  j                  d«      }d}|j                  |«      j	                  |«      }|t         j
                  t         j                  fv r|d|j                  |«      z  z  }d|d<   d|d<   t        j                  dd|z  d¬	«      }t        |d|d
¬«      d d |…   }t        |t        j                  |«      «      }	t        |j                  ||	|j                  «       f«      \  }}	}t        j                  |d||	¬	«      }
t!        ||
dd¬«       y )Nr˜   r  r¦   r   r©   r�   r½  rë  rÖ  rà  rÜ  rP   rð  gvƒôõ!¤>©r„   rî   )rò   ró   rô   rö   rø   rä   r­   r   r  r   r   ÚflipÚmaprY   r	  rã  r4   )r[   rX  r¨   r\   Úrandom_staterç   rq   r/  ÚyfÚhcrr   s              r`   Útest_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltT  s
  € ô
 —y‘y×,Ñ,¨RÓ0ˆØˆà×Ñ˜tÓ$×+Ñ+¨EÓ2ˆØ”R—\‘\¤2§=¡=Ð1Ñ1Ø��l×(Ñ(¨Ó.Ñ.Ñ.ˆAð ˆˆ!‰Øˆˆ"‰ä�M‰M˜"˜b ;Ñ.°yÔAˆÜ�a˜˜a¨Ô4±]°{°]ÑCˆô
 �aœŸ™ ›Ó$ˆô ˜Ÿ
™
 Q¨¨B¯G©G«IÐ$6Ó7‰	ˆˆ2ˆrÜ× Ñ   A {¸2Ô>ˆÜ˜˜A D¨tÖ4rb   c           	      ó–  — dD ]Ä  }t        dd|«      D ]²  }dD ]«  }t        j                  j                  |f«      }t        j                  j                  |f«      }t        |t        j                  |«      d¬«      }t        |j                  |||f«      \  }}}t        j                  |d||¬«      }t        |d d |…   |«       Œ­ Œ´ ŒÆ y )N)rQ   rL   rP   r8  )rU   rw  rà  rf   )r,  r-  r×  )
r‡   rò   ró   r   r\  r]  rY   r   rã  r4   )	r[   r\   r-  r  Únweightsrq   ÚweightsÚy_gÚy_ss	            r`   Útest_correlate1dzTestResample.test_correlate1ds  sÃ   € àò 		6ˆDÜ˜A˜r 4Ó(ò 6�Ø (ò 6�HÜŸ	™	×(Ñ(¨"¨Ó/�AÜ Ÿi™i×.Ñ.°¨{Ó;�GÜ% a¬¯©°Ó)9À
ÔK�CÜ&)¨"¯*©*°q¸'À3Ð6GÓ&H‘O�A�w Ü ×.Ñ.Ø˜a d°7ô<�Cä# C©¨$¨¡K°Õ5ñ6ñ6ñ		6rb   rÛ   c                 ó¬   — t        ||«      }|j                  g d¢|¬«      }t        j                  |ddd¬«      }t	        j
                  |«      dkD  sJ ‚y )N)r   rP   rQ   rK   rQ   rP   r   r§   rQ   rP   Úsmooth)r,  r-  rÝ  r   )rŠ  rY   r   rã  rò   Úcount_nonzero)r[   r¨   r\   r»  Úactuals        r`   Útest_gh_15620zTestResample.test_gh_15620€  sY   € ô ˜˜EÓ"ˆØ�z‰zÒ/°uˆzÓ=ˆÜ×%Ñ% dØ)*Ø+,Ø.6ô8ˆô ×Ñ Ó'¨!Ò+Ð+Ñ+rb   N)#r  r  r  r@   r   râ  rã  r  ra   rœ  r�  rž  rû  r  r  r  Úpadtype_optionsr  r  r  r¬  r   r9  rB  rH  rW  Úintrò   râ   rä   rx  Úcomplexra  rg  rl  r  rb   r`   rÎ  rÎ  T  s_  „ á�v—‘¨×(<Ñ(<Ó=Ù�vÐ&UÔVñ#ó Wó >ð#ðB ‡[�[×Ñ˜XÐ'8Ó9Ø‡[�[×Ñ˜S (Ó+Ø‡[�[×Ñ˜UÐ$6Ó7Ù�v—‘Ó'ñó (ó 8ó ,ó :ðñ. �v—‘Ó'ñó (ðð ‡[�[×Ñ˜T ?Ó3Ø‡[�[×Ñ˜T ?Ó3Ø‡[�[×Ñ˜WÐ&?Ó@Ù�v—‘Ó'ñ@ó (ó Aó 4ó 4ð@ñ �fÐ%GÔHØ‡[�[×Ñ˜Y¨Ó8Ù�v×+Ñ+Ó,ñ-ó -ó 9ó Ið-ñ �fÐ%GÔHÙ�v×+Ñ+Ó,Ø‡[�[×Ñ˜Y¨Ó8ñ%ó 9ó -ó Ið%ð ‡[�[×Ñ˜Y¨Ó8Ø‡[�[×Ñ˜W y°)Ð&<Ó=Ù�fÐ%GÔHÙ�v×+Ñ+Ó,ñ"ó -ó Ió >ó 9ð"ñ �fÐ%GÔHØ‡[�[×ÑØØ	ÐÙ
ÙØ�  t˜}¨oóó
ñ	
óñ �v—‘¨×(<Ñ(<Ó=ñM:ó >óó IðM:ð^ ‡[�[×Ñ˜V VÓ,Ø‡[�[×Ñ˜W fÓ-Ù�v—‘Ó'ñ.ó (ó .ó -ð.ð ‡[�[×Ñ˜V WÓ-Ø‡[�[×Ñ˜W fÓ-Ù�v—‘Ó'ñ/ó (ó .ó .ð/ð ‡[�[×Ñ˜T <Ó0Ø‡[�[×Ñ˜T <Ó0Ù�v—‘Ó'ñ
3ó (ó 1ó 1ð
3ð ‡[�[×Ñ˜]ªKÓ8Ø‡[�[×Ñ˜W s¨B¯J©J¸¿¹ÀeÈWÐ&UÓVÙ�v×+Ñ+Ó,ñ5ó -ó Wó 9ð5ñ8 �v×+Ñ+Ó,ñ
6ó -ð
6ñ �v×+Ñ+Ó,Ø‡[�[×Ñ˜W w°	Ð&:Ó;Ù�fÐ%GÔHñ,ó Ió <ó -ñ,rb   rÎ  c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestCSpline1DEvalc                 ó’  — t        j                  g d¢«      }t        j                  |j                  d   «      }|d   |d   z
  }|j                  t	        j
                  |«      «      }|j                  t        |«      dz  «      dz  }t	        j                  ||||d   ¬«      }t        |d d d…   |j                  |«      d¬«       y )	N)	rP   rQ   rK   rL   rK   rQ   rP   rQ   rd  r   rP   r  )Údxrê  rR   rM   rÄ  )	rò   rY   r†   r‘  r   Ú	cspline1drD  Úcspline1d_evalr:   )r[   r\   rr   rq   rs  Úcjr  Úy2s           r`   ra   zTestCSpline1DEval.test_basic�  s¤   € Ü�J‰JÒ4Ó5ˆÜ�I‰I�a—g‘g˜a‘jÓ!ˆØˆq‰T�A�a‘D‰[ˆØ�Z‰Zœ×(Ñ(¨Ó+Ó,ˆØ�Y‰Y”s˜1“v ‘}Ó%¨Ñ,ˆÜ×"Ñ" 2 r¨b°Q°q±TÔ:ˆô 	" "¡T r T¡(¨B¯J©J°q«MÀ1ÖErb   c                 óÞ  — t        j                  d«      }t        j                  |j                  t         j                  ¬«      }d}d|z  }t        j
                  dt         j                  z  |z  |z  «      }|j                  t        j                  |«      «      }|j                  dg«      }t        j                  ||«      }|j                  |j                  |«      j                  k(  sJ ‚y )Nrb  r§   r  r½  rp   r  )rò   r†   r•  r‘  rä   Úexpr  rY   r   rt  ru  r¨   )	r[   r\   rq   rr   ÚTrè   ÚcyÚxnewÚynews	            r`   rt   zTestCSpline1DEval.test_complex›  s´   € ä�I‰I�c‹NˆÜ�H‰H�Q—W‘W¤B§L¡LÔ1ˆØˆØ�!‰GˆÜ�F‰F�4œ"Ÿ%™%‘< !Ñ# aÑ'Ó(ˆð �Z‰Zœ×(Ñ(¨Ó+Ó,ˆð �z‰z˜3˜%Ó ˆÜ×$Ñ$ R¨Ó.ˆà�z‰z˜RŸZ™Z¨›]×0Ñ0Ò0Ð0Ñ0rb   N)r  r  r  ra   rt   r  rb   r`   rq  rq  �  s   „ ò	Fó1rb   rq  c                   ó‚   — e Zd Zd„ Zd„ Z edd¬«       edd¬«       eej                  «      d„ «       «       «       Z	d	„ Z
y
)ÚTestOrderFiltc                 ó´   — t        j                  |j                  g d¢«      |j                  g d¢«      d«      }|j                  g d¢«      }t        ||«       y )NrO   ©rP   r   rP   rP   )rQ   rK   rQ   )r   Úorder_filterrY   r5   )r[   r\   rk  Úexpects       r`   ra   zTestOrderFilt.test_basic°  sA   € Ü×$Ñ$ R§Z¡Z²	Ó%:¸B¿J¹JÂyÓ<QÐSTÓUˆØ—‘šIÓ&ˆÜ˜ Õ'rb   c                 óF  — |j                  |j                  dt        |«      ¬«      d«      }|j                  dt        |«      ¬«      }|j	                  g d¢g d¢g d¢g d¢g d¢gt        |«      ¬«      }t        t        j                  ||d	«      |«       |j	                  g d
¢g d¢g d¢g d¢g d¢g«      }t        t        j                  ||d«      |«       |j	                  g d¢g d¢g d¢g d¢g d¢gt        |«      ¬«      }t        t        j                  ||d«      |«       y )Né   r§   ©rM   rM   rK   )r  r  r  r  r  )r  r  r½  rb  r  )r  r™  rî  ç      @r  )r  r  ç      &@rä  r  r   )rî  r‡  rÓ  r§  re  )rˆ  rä  g      *@ç      ,@r§  )g      0@g      1@g      2@ç      3@r‰  )ç      5@ç      6@ç      7@rã  rŠ  )rØ  r‹  rŒ  r�  rã  rQ   ©r   rP   rQ   rK   r   )rM   rN   r–   r¤   rK   )rR   r  rW   é   r¤   )rq  r—   r˜   rm  r�  ©r   rq  r—   r˜   rm  rP   )r…   r†   r>   rä  rY   r4   r   r‚  ©r[   r\   rq   rÚ  rÇ   s        r`   Útest_doc_examplezTestOrderFilt.test_doc_exampleµ  s  € Ø�J‰J�r—y‘y Ô+;¸BÓ+?�yÓ@À&ÓIˆØ—‘˜Ô!1°"Ó!5�Ó6ˆð —:‘:Ú!Ú!Ú!Ú$Ú!ð	#ô
 # 2Ó&ð ó 
ˆô 	œ×+Ñ+¨A¨v°qÓ9¸8ÔDð —:‘:Ú!Ú%Ú&Ú&Ú&ð	(ó
ˆô 	œ×+Ñ+¨A¨v°qÓ9¸8ÔDð —:‘:ÚÚÚ Ú!Ú ð	"ô
 # 2Ó&ð ó 
ˆô 	œ×+Ñ+¨A¨v°qÓ9¸8ÕDrb   ú
dask.arrayzrepeat requires an axisrH   r¢   zarray-api-compat#292c                 ó&  — |j                  |j                  d«      d«      }|j                  g d¢g d¢g d¢g d¢g d¢g«      }t        t	        j
                  |d«      |«       t        t	        j                  ||j                  d	«      d
«      |«       y )Nr…  r†  rŽ  )rP   rN   r–   r¤   rL   )rN   r  rW   r�  r(  )r  r—   r˜   rm  é   )r   r—   r˜   rm  r   rK   rv  rL   )r…   r†   rY   r4   r   r�  r‚  ri  )r[   r\   rq   rÇ   s       r`   Útest_medfilt_order_filterz'TestOrderFilt.test_medfilt_order_filterÛ  s|   € ð �J‰J�r—y‘y “} fÓ-ˆð —:‘:ÚÚÚÚ!Úð	!ó
ˆô 	œŸ™ q¨!Ó,¨hÔ7äÜ×Ñ  2§7¡7¨6£?°AÓ6Øõ	
rb   c                 ó~  — |j                  |j                  d«      d«      }|j                  g d¢g d¢g d¢g«      }|j                  g d¢g d¢g d¢g d	¢g d
¢g«      }t        t	        j
                  ||d«      |«       |j                  g d¢g d¢g d¢g d¢g d¢g«      }t        t	        j
                  ||d«      |«       y )Nr…  r†  )rP   rP   r   )r   rP   r   ©r   r   r   ©r   r   r   r   r   )r   r   rP   rQ   rK   )r   rM   rN   r–   r¤   )r   rR   r  rW   r�  r�  r   )r   rP   rQ   rK   rL   )rM   rN   r–   r¤   r(  )rR   r  rW   r�  r•  )rq  r—   r˜   rm  rp  rP   )r…   r†   rY   r4   r   r‚  r‘  s        r`   Útest_order_filter_asymmetricz*TestOrderFilt.test_order_filter_asymmetricñ  s²   € Ø�J‰J�r—y‘y “} fÓ-ˆØ—‘ÚÚÚðó
ˆð —:‘:ÚÚÚÚ Ú ð	"ó
ˆô 	œ×+Ñ+¨A¨v°qÓ9¸8ÔDà—:‘:ÚÚÚÚ!Ú!ð	#ó
ˆô 	œ×+Ñ+¨A¨v°qÓ9¸8ÕDrb   N)r  r  r  ra   r’  r  r@   r   r�  r–  rš  r  rb   r`   r  r  ­  sR   „ ò(ò
$EñL �|Ð,EÔFÙ�wÐ'=Ô>Ù�v—~‘~Ó&ñ
ó 'ó ?ó Gð
ó&Erb   r  c                   óÚ  — e Zd Zd„ Zd„ Z edd¬«      d„ «       Zd„ Zd„ Z edd	¬«      d
„ «       Z	 edd	¬«      d„ «       Z
d„ Zd„ Z edd	¬«      d„ «       Z edd	¬«      d„ «       Zd„ Z edd¬«      d„ «       Zd„ Z edd¬«      d„ «       Z edd	¬«      d„ «       Z edd	¬«      d„ «       Z edd	¬«      d„ «       Zd„ Z edd¬«      d„ «       Zd„ Z edd¬«      ej6                  j9                  dddgg d ¢d!d!gg d"¢fe¬#«       ee«      d$„ «       «       «       Z  ee«      d%„ «       Z! ed&d'¬«       edd(¬«       ee«      d)„ «       «       «       Z" edd	¬«      d*„ «       Z# edd	¬«      d+„ «       Z$d,„ Z%d-„ Z& ed.¬/«      ej6                  j9                  dd0d0g e'jP                  d0«      g«      ej6                  j9                  d1d0d0g e'jP                  d0«      g«      d2„ «       «       «       Z)y3)4Ú_TestLinearFilterc                 óä   — t        |t        «      r|nt        j                  |«      }|j	                  d|dz
  |«      }t        |t        «      s|j                  ||«      }| j                  ||«      S )Nr   rP   )r«  rn  ÚmathÚprodrñ  r…   Úconvert_dtype)r[   r‘  r\   Ú	prodshaperq   s        r`   Úgeneratez_TestLinearFilter.generate  s^   € Ü'¨¬sÔ3‘E¼¿¹À5Ó9Iˆ	Ø�K‰K˜˜9 q™=¨)Ó4ˆÜ˜%¤Ô%Ø—
‘
˜1˜eÓ$ˆAØ×!Ñ! ! RÓ(Ð(rb   c                 óæ  — | j                   t        j                   d«      k(  r�t        j                  |«      }t        j                  |j                  | j                   «      }t        j
                  ||gddgdgdgg«      }|D ]  \  }}| j                  |d   «      |d<   Œ |S t        | j                   t        «      rt        || j                   «      n| j                   }|j                  ||¬«      S )	NÚOÚrefs_okÚzerosize_okÚreadonlyÚ	writeonlyr  .r§   )
r¨   rò   rY   Úemptyr‘  ÚnditerÚtyper«  ÚstrrŠ  )r[   Úarrr\   rÈ   Úiterrq   rr   r¨   s           r`   r   z_TestLinearFilter.convert_dtype  sÑ   € Ø�:‰:œŸ™ #›Ò&Ü—*‘*˜S“/ˆCÜ—(‘(˜3Ÿ9™9 d§j¡jÓ1ˆCÜ—9‘9˜c 3˜Z¨)°MÐ)BØ$˜ { mÐ4ó6ˆDàò *‘��1ØŸ™ 1 R¡5Ó)��#’ð*àˆJô # 4§:¡:¬sÔ3ô ˜R §¡Ô,àŸ*™*ð ð —:‘:˜c¨�:Ó/Ð/rb   r‘   z/XXX https://github.com/scipy/scipy/issues/23539rH   c                 ót  ‡— ‰j                  dg«      ‰j                  dg«      ‰j                  ddg«      }}}t        j                  t        d¬«      5  t	        ‰j                  d«      ||«       ddd«       t        j                  t        d¬«      5  t	        ‰j                  g «      ||«       ddd«       t        j                  t        d¬«      5  t	        |‰j                  d«      |«       ddd«       t        j                  t        d¬«      5  t	        |‰j                  g «      |«       ddd«       t        j                  t        d	¬«      5  ˆfd
„|||fD «       \  }}}t	        |||«       ddd«       y# 1 sw Y   �ŒxY w# 1 sw Y   ŒÚxY w# 1 sw Y   Œ¦xY w# 1 sw Y   ŒrxY w# 1 sw Y   yxY w)z"Verify all exceptions are raised. rP   rQ   rK   rL   z^Parameter b is notrA  Nz^Parameter a is notz^Parameter's dtypes produced c              3   óZ   •K  — | ]"  }‰j                  |‰j                  d ¬«      –— Œ$ y­w)Fr  N)rø   rà   ©rM  Úv_r\   s     €r`   rO  z8_TestLinearFilter.test_invalid_params.<locals>.<genexpr>1  s$   øè ø€ ÒPÀ�r—y‘y  R§Y¡Y°U�y×;ÑPùs   ƒ(+)rY   rœ  r   rº   r   rä  ÚNotImplementedError)r[   r\   r^   r]   rq   s    `   r`   r¼   z%_TestLinearFilter.test_invalid_params$  s_  ø€ ð —*‘*˜a˜S“/ 2§:¡:¨q¨c£?°B·J±JÀÀ1¸vÓ4Fˆaˆ1ˆÜ�]‰]œ:Ð-BÔCñ 	%Ü�B—F‘F˜1“I˜q !Ô$÷	%ä�]‰]œ:Ð-BÔCñ 	*Ü�B—J‘J˜r“N A qÔ)÷	*ä�]‰]œ:Ð-BÔCñ 	%Ü�A�r—v‘v˜a“y !Ô$÷	%ä�]‰]œ:Ð-BÔCñ 	*Ü�A�r—z‘z "“~ qÔ)÷	*ä�]‰]Ô.Ð6UÔVñ 	ÛPÀqÈ!ÈQÀiÔP‰GˆAˆq�!Ü�A�q˜!Ô÷	ð 	÷	%ñ 	%ú÷	*ð 	*ú÷	%ð 	%ú÷	*ð 	*ú÷	ð 	ús<   ÁE=ÂF
ÃFÄF"Å F.Å=FÆ
FÆFÆ"F+Æ.F7c                 óÎ   — | j                  d|«      }| j                  ddg|«      }| j                  ddg|«      }| j                  g d¢|«      }t        t        |||«      |«       y )N©rN   rP   r©   r  ç      à¿©r   rQ   rL   rN   r¤   r  ©r¢  r   r:   r   ©r[   r\   rq   r^   r]   Úy_rs         r`   Útest_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIR4  sd   € Ø�M‰M˜$ Ó#ˆØ×Ñ  2˜w¨Ó+ˆØ×Ñ  T˜{¨BÓ/ˆØ× Ñ Ò!5°rÓ:ˆÜ!¤'¨!¨Q°Ó"2°CÕ8rb   c                 óÌ   — | j                  d|«      }| j                  ddg|«      }| j                  dg|«      }| j                  g d¢|«      }t        t        |||«      |«       y )Nrµ  rP   ©r   rP   rK   rM   r–   r§  r¸  r¹  s         r`   Útest_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIR;  sb   € Ø�M‰M˜$ Ó#ˆØ×Ñ  1˜v rÓ*ˆØ×Ñ ˜s BÓ'ˆØ× Ñ Ò!4°bÓ9ˆÜ!¤'¨!¨Q°Ó"2°CÕ8rb   z*XXX https://github.com/cupy/cupy/pull/8677c                 óD  — | j                  d|«      }| j                  g d¢|«      }| j                  ddg|«      }| j                  ddg|«      }| j                  g d¢|«      }| j                  dd	g|«      }t        ||||¬
«      \  }}	t        ||«       t        |	|«       y )Nrµ  ©rP   r   r©   r  r¶  rP   rQ   )rP   rM   r(  r�  r˜   rf  r�  éöÿÿÿ©Úzi©r¢  r   r   r:   ©
r[   r\   rq   r^   r]   rÃ  rº  Úzf_rrr   Úzfs
             r`   Útest_rank_1_IIR_init_condz+_TestLinearFilter.test_rank_1_IIR_init_condB  s¡   € à�M‰M˜$ Ó#ˆØ×Ñšz¨2Ó.ˆØ×Ñ  T˜{¨BÓ/ˆØ×Ñ  A ¨Ó+ˆØ× Ñ Ò!6¸Ó;ˆØ×!Ñ! 2 s )¨RÓ0ˆÜ˜˜1˜a BÔ'‰ˆˆ2Ü! ! SÔ)Ü! " dÕ+rb   c                 óB  — | j                  d|«      }| j                  g d¢|«      }| j                  dg|«      }| j                  ddg|«      }| j                  g d¢|«      }| j                  ddg|«      }t        ||||¬«      \  }}	t        ||«       t        |	|«       y )Nrµ  r  rP   )rP   rQ   rK   rN   r(  rä  r(  rM   rÂ  rÄ  rÅ  s
             r`   Útest_rank_1_FIR_init_condz+_TestLinearFilter.test_rank_1_FIR_init_condN  sŸ   € à�M‰M˜$ Ó#ˆØ×Ñšy¨"Ó-ˆØ×Ñ ˜s BÓ'ˆØ×Ñ  A ¨Ó+ˆØ× Ñ Ò!5°rÓ:ˆØ×!Ñ! 1 a &¨"Ó-ˆÜ˜˜1˜a BÔ'‰ˆˆ2Ü! ! SÔ)Ü! " dÕ+rb   c                 óê   — | j                  d|«      }| j                  ddg|«      }| j                  ddg|«      }| j                  g d¢g d¢g d¢g d¢g|«      }t        |||d¬«      }t        ||«       y )	N©rL   rK   rP   r©   r  ©r   rQ   rL   ©rN   rL   rQ   r   r†  rÄ  )r[   r\   rq   r^   r]   Úy_r2_a0rr   s          r`   Útest_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0Z  sy   € Ø�M‰M˜& "Ó%ˆØ×Ñ  2˜w¨Ó+ˆØ×Ñ  S˜z¨2Ó.ˆØ×$Ñ$¢i²ºIÚ&/ð&1Ø24ó6ˆä�A�q˜! !Ô$ˆÜ! '¨1Õ-rb   c                 óê   — | j                  d|«      }| j                  ddg|«      }| j                  ddg|«      }| j                  g d¢g d¢g d¢g d¢g|«      }t        |||d¬	«      }t        ||«       y )
NrÌ  rP   r©   r  ©r   rQ   r   ©rN   r  rN   ©rW   rÁ  rW   ©rm  iðÿÿÿrm  r†  rÄ  )r[   r\   rq   r^   r]   Úy_r2_a1rr   s          r`   Útest_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1c  sy   € Ø�M‰M˜& "Ó%ˆØ×Ñ  2˜w¨Ó+ˆØ×Ñ  S˜z¨2Ó.ˆØ×$Ñ$¢i²º]Ú)ð&+Ø,.ó0ˆä�A�q˜! !Ô$ˆÜ! '¨1Õ-rb   c                 ó¦  — | j                  d|«      }| j                  ddg|«      }| j                  ddg|«      }| j                  t        j                  d«      |«      }| j                  g d¢g d¢g d¢g d	¢g|«      }| j                  g d
¢|«      d d …t        j                  f   }t        |||d|¬«      \  }}	t        ||«       t        |	|«       y )NrÌ  rP   r©   r  )rL   rP   r  )r–   éûÿÿÿr–   )r�  éõÿÿÿr�  )rp  éïÿÿÿrp  )rÙ  rÛ  iãÿÿÿi×ÿÿÿ©r‡  rÃ  )r¢  r   rò   ri  r  r   r:   )
r[   r\   rq   r^   r]   rÃ  Ú	y_r2_a0_1rÆ  rr   rÇ  s
             r`   Ú test_rank_2_IIR_axis_0_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_0_init_condl  sÃ   € à�M‰M˜& "Ó%ˆØ×Ñ  2˜w¨Ó+ˆØ×Ñ  S˜z¨2Ó.ˆØ×Ñ¤§¡¨£°Ó3ˆà×&Ñ&ª	²:º}Ú+ð(-Ø.0ó2ˆ	à×!Ñ!Ò"5°rÓ:º1¼b¿j¹j¸=ÑIˆÜ˜˜1˜a a¨BÔ/‰ˆˆ2Ü! )¨QÔ/Ü! " dÕ+rb   c                 ó~  — | j                  d|«      }| j                  ddg|«      }| j                  ddg|«      }| j                  t        j                  d«      |«      }| j                  g d¢g d¢g d¢g d¢g|«      }| j                  g d¢g|«      }t	        |||d	|¬
«      \  }}	t        ||«       t        |	|«       y )NrÌ  rP   r©   r  ©rP   rK   )rP   rK   rM   )rM   rK   rP   )ééÿÿÿrá  rá  r   rÜ  )r¢  r   rò   ri  r   r:   )
r[   r\   rq   r^   r]   rÃ  Ú	y_r2_a0_0rÆ  rr   rÇ  s
             r`   Ú test_rank_2_IIR_axis_1_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_1_init_condz  s¹   € à�M‰M˜& "Ó%ˆØ×Ñ  2˜w¨Ó+ˆØ×Ñ  S˜z¨2Ó.ˆØ×Ñ¤§¡¨£°Ó4ˆà×&Ñ&ª	²9Ú(1²9ð(>Ø?AóCˆ	à×!Ñ!¢?Ð"3°RÓ8ˆÜ˜˜1˜a a¨BÔ/‰ˆˆ2Ü! )¨QÔ/Ü! " dÕ+rb   c                 óf  ‡	‡
— | j                  d|«      }| j                  ddg|«      }| j                  ddg|«      }t        t        |||f«      \  Š	Š
}t	        |j
                  «      D ]F  }t        ||||«      }t        j                  ˆ	ˆ
fd„||«      }t        ||j                  |«      «       ŒH y )N©rL   rK   rQ   rP   r©   r  c                 ó   •— t        ‰‰| «      S rö  ©r   ©Úwrz  r‰  s    €€r`   ú<lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>�  ó   ø€ ´¸¸dÀAÓ0F€ rb   ©r¢  r   r]  rC   r‡   Úndimr   rò   Úapply_along_axisr:   rY   ©r[   r\   rq   r^   r]   Úx_npr‡  rr   rº  rz  r‰  s            @@r`   Útest_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIRˆ  s§   ù€ Ø�M‰M˜) RÓ(ˆØ×Ñ  2˜w¨Ó+ˆØ×Ñ  S˜z¨2Ó.ˆÜÔ0°1°a¸°)Ó<Ñˆˆd�DÜ˜!Ÿ&™&“Mò 	:ˆDÜ˜˜1˜a Ó&ˆAÜ×%Ñ%Ô&FÈÈdÓSˆCÜ% a¨¯©°C«Õ9ñ	:rb   Ú
inaccuratec                 ó¨  ‡‡‡— | j                  d|«      }| j                  ddg|«      }| j                  ddg|«      }t        |j                  «      D ]ý  }t	        |j
                  «      }d||<   | j                  |j                  |«      |«      }| j                  dg|«      }t        |||||«      \  }	}
t        t        |||f«      \  ŠŠŠˆˆˆfd„}ˆˆˆfd„}t        j                  ||t        |«      «      }t        j                  ||t        |«      «      }t        |	|j                  |«      «       t        |
|j                  |«      «       Œÿ y )Nrå  rP   r©   r  c                 ó(   •— t        ‰‰| ‰¬«      d   S ©NrÂ  r   rç  ©ré  rz  r‰  Úzi1_nps    €€€r`   Úlf0z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf0Ÿ  ó   ø€ Ü˜t T¨1°Ô8¸Ñ;Ð;rb   c                 ó(   •— t        ‰‰| ‰¬«      d   S ©NrÂ  rP   rç  rö  s    €€€r`   Úlf1z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf1¡  rù  rb   )r¢  r   r‡   rí  r¬  r‘  ri  r   r]  rC   rò   rî  r:   rY   )r[   r\   rq   r^   r]   r‡  Úzi_shaperÃ  Úzi1rr   rÇ  rø  rü  rº  rÆ  rz  r‰  r÷  s                  @@@r`   Útest_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_cond’  s.  ú€ à�M‰M˜) RÓ(ˆØ×Ñ  2˜w¨Ó+ˆØ×Ñ  S˜z¨2Ó.ˆä˜!Ÿ&™&“Mò 	<ˆDÜ˜AŸG™G“}ˆHØˆH�T‰NØ×#Ñ# B§G¡G¨HÓ$5°rÓ:ˆBØ×$Ñ$ a S¨"Ó-ˆCÜ˜A˜q ! T¨2Ó.‰EˆAˆrÜ!$Ô%6¸¸A¸s¸Ó!DÑˆD�$˜ö<ö<ä×%Ñ% c¨4Ô1BÀ1Ó1EÓFˆCÜ×&Ñ& s¨DÔ2CÀAÓ2FÓGˆDÜ% a¨¯©°C«Ô9Ü% b¨"¯*©*°TÓ*:Õ;ñ	<rb   c                 ód  ‡	‡
— | j                  d|«      }| j                  g d¢|«      }| j                  dg|«      }t        t        |||f«      \  Š	Š
}t	        |j
                  «      D ]F  }t        ||||«      }t        j                  ˆ	ˆ
fd„||«      }t        ||j                  |«      «       ŒH y )Nrå  rÀ  rP   c                 ó   •— t        ‰‰| «      S rö  rç  rè  s    €€r`   rê  z3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>°  rë  rb   rì  rï  s            @@r`   Útest_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIR¨  s¡   ù€ Ø�M‰M˜) RÓ(ˆØ×Ñšz¨2Ó.ˆØ×Ñ ˜s BÓ'ˆäÔ0°1°a¸°)Ó<Ñˆˆd�DÜ˜!Ÿ&™&“Mò 	:ˆDÜ˜˜1˜a Ó&ˆAÜ×%Ñ%Ô&FÈÈdÓSˆCÜ% a¨¯©°C«Õ9ñ	:rb   c                 óÈ  ‡‡‡— | j                  d|«      }| j                  g d¢|«      }| j                  dg|«      }t        t        |||f«      \  }ŠŠt	        |j
                  «      D ]÷  }t        |j                  «      }d||<   | j                  |j                  |«      |«      }| j                  ddg|«      }	t        |	«      Št        |||||«      \  }
}t        t        |||	f«      \  ŠŠŠˆˆˆfd„}ˆˆˆfd„}t        j                  |||«      }t        j                  |||«      }t        |
|j                  |«      «       t        ||j                  |«      «       Œù y )Nrå  rÀ  rP   rQ   c                 ó(   •— t        ‰‰| ‰¬«      d   S rõ  rç  rö  s    €€€r`   rø  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0Â  rù  rb   c                 ó(   •— t        ‰‰| ‰¬«      d   S rû  rç  rö  s    €€€r`   rü  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1Ä  rù  rb   )r¢  r   r]  rC   r‡   rí  r¬  r‘  ri  r   rò   rî  r:   rY   )r[   r\   rq   r^   r]   rð  r‡  rý  rÃ  rþ  rr   rÇ  rø  rü  rº  rÆ  rz  r‰  r÷  s                   @@@r`   Útest_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_cond³  sB  ú€ à�M‰M˜) RÓ(ˆØ×Ñšz¨2Ó.ˆØ×Ñ ˜s BÓ'ˆäÔ0°1°a¸°)Ó<Ñˆˆd�DÜ˜!Ÿ&™&“Mò 	<ˆDÜ˜AŸG™G“}ˆHØˆH�T‰NØ×#Ñ# B§G¡G¨HÓ$5°rÓ:ˆBØ×$Ñ$ a¨ V¨RÓ0ˆCÜ& sÓ+ˆFÜ˜A˜q ! T¨2Ó.‰EˆAˆrÜ!$Ô%6¸¸A¸s¸Ó!DÑˆD�$˜ö<ö<ä×%Ñ% c¨4°Ó6ˆCÜ×&Ñ& s¨D°$Ó7ˆDÜ% a¨¯©°C«Ô9Ü% b¨"¯*©*°TÓ*:Õ;ñ	<rb   c                 ó"  — | j                  d|«      }t        j                  ddd¬«      \  }}| j                  ||«      }| j                  ||«      }|j                  d   dz
  }| j                  |j                  dd	|f«      |«      }| j                  |j                  dd|f«      |«      }t        ||||¬
«      \  }}	t        ||||¬
«      \  }
}t        |
|«       t        |	|«       t        t        t        |||d|j                  |«      «       y )N)rL   rM   r	  r¤   r  Úba©r¶  r   rP   rL   rM   rÂ  r©   )
r¢  r   r   r   r‘  ri  r   r:   r¹   rº   )r[   r\   rq   r^   r]   Úzi_sizeÚzi_fullÚzi_singÚy_fullÚzf_fullÚy_singÚzf_sings               r`   Útest_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcastË  sü   € à�M‰M˜* bÓ)ˆÜ�}‰}˜Q ¨DÔ1‰ˆˆ1Ø×Ñ˜q "Ó%ˆØ×Ñ˜q "Ó%ˆØ—'‘'˜!‘*˜q‘.ˆð ×$Ñ$ R§W¡W¨a°°G¨_Ó%=¸rÓBˆØ×$Ñ$ R§W¡W¨a°°G¨_Ó%=¸rÓBˆä! ! Q¨¨gÔ6‰ˆ�Ü! ! Q¨¨gÔ6‰ˆ�ä! &¨&Ô1Ü! '¨7Ô3ô 	”j¤'¨1¨a°°B¸¿¹ÀÓ8HÕIrb   c                 óÖ   — | j                  d|«      }| j                  g d¢|«      }| j                  dg|«      }| j                  g d¢|«      }t        ||d   |«      }t        ||«       y )NrN   rÀ  rP   )r   rP   rQ   rQ   rQ   rQ   r   rÄ  )r[   r\   rq   r^   r]   rº  rr   s          r`   Útest_scalar_az_TestLinearFilter.test_scalar_aá  si   € ð �M‰M˜!˜RÓ ˆØ×Ñšz¨2Ó.ˆØ×Ñ ˜s BÓ'ˆØ× Ñ Ò!3°RÓ8ˆä�A�q˜‘t˜QÓˆÜ! ! SÕ)rb   c                 ó¤  — | j                  |j                  d|j                  ¬«      |«      }| j                  |j                  d|j                  ¬«      |«      }| j                  |j	                  g d¢«      |«      }t        j                  dt
        j                  ¬«      }|dd d …d d …fxx   dz  cc<   |dd d …d d …fxx   dz  cc<   |j	                  |«      }| j                  ||«      }| j                  |j                  d	|j                  ¬«      |«      }t        j                  dt
        j                  ¬«      }dggdggdggg|d d …d d …d d
…f<   |j	                  |«      }| j                  ||«      }t        |||d|«      \  }}	t        ||«       t        |	|«       t        ||d   |d|«      \  }
}t        |
|«       t        ||«       y )N)rK   rQ   rM   r§   rM   )rP   r   r   )rK   rP   rL   rP   rQ   rK   )rK   rQ   rL   rL   r©   r   )r   r•  rÜ   ri  rY   rò   r   r:   )r[   r\   rq   r^   r]   rÃ  Úzf_expectedÚ
y_expectedÚy_iirÚzf_iirÚy_firÚzf_firs               r`   Útest_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dimsì  sš  € ð
 ×Ñ˜rŸx™x¨	¸¿¹˜xÓBÀBÓGˆØ×Ñ˜rŸw™w q°·±˜wÓ9¸2Ó>ˆØ×Ñ˜rŸz™zª)Ó4°bÓ9ˆÜ�W‰W�Y¤b§h¡hÔ/ˆØ
ˆ1Ša’ˆ7‹�qÑ‹Ø
ˆ1Ša’ˆ7‹�qÑ‹Ø�Z‰Z˜‹^ˆØ×Ñ  BÓ'ˆà×(Ñ(¨¯©°)À2Ç8Á8¨Ó)LÈbÓQˆÜ—X‘X˜i¬r¯x©xÔ8ˆ
Ø"#  ¨¨ u°¨s¨eÐ4ˆ
’1’a˜˜!˜�8ÑØ—Z‘Z 
Ó+ˆ
Ø×'Ñ'¨
°BÓ7ˆ
ô    1 a¨¨RÓ0‰ˆˆvÜ! %¨Ô4Ü! &¨+Ô6ô    1 Q¡4¨¨B°Ó3‰ˆˆvÜ! %¨Ô4Ü! &¨+Õ6rb   c           	      óÆ   — | j                  ||«      }| j                  ||«      }| j                  ||«      }| j                  ||«      }t        t        t        |||||«       y rö  )r   r¹   rº   r   )r[   r^   r]   rq   r‡  rÃ  r\   s          r`   Úbase_bad_size_ziz"_TestLinearFilter.base_bad_size_zi
  s^   € Ø×Ñ˜q "Ó%ˆØ×Ñ˜q "Ó%ˆØ×Ñ˜q "Ó%ˆØ×Ñ  BÓ'ˆÜ”j¤'¨1¨a°°D¸"Õ=rb   zcupy does not raisec                 óô  — |j                  d«      }| j                  dgdg|ddg|«       | j                  ddgdg|dddg|«       | j                  ddgdg|ddgg|«       | j                  ddgdg|dg d¢|«       | j                  g d¢dg|ddgg|«       | j                  g d¢dg|dg d¢|«       | j                  dgddg|dddg|«       | j                  dgddg|ddgg|«       | j                  dgddg|dg d¢|«       | j                  g d¢ddg|ddg|«       | j                  g d¢ddg|ddgdgg|«       | j                  g d¢ddg|dg d¢|«       | j                  g d¢ddg|dg d¢|«       | j                  ddgg d¢|ddg|«       | j                  ddgg d¢|ddgdgg|«       | j                  ddgg d¢|dg d¢|«       | j                  ddgg d¢|dg d¢|«       t        j                   d«      j                  d	«      }|j	                  |«      }| j                  dgdg|ddg|«       | j                  ddgdg|dg d¢|«       | j                  ddgdg|dg d¢gg|«       | j                  ddgdg|ddgdgd
gg|«       | j                  ddgdg|dddgg|«       | j                  ddgdg|dg d¢g|«       | j                  g d¢dg|dg d¢|«       | j                  g d¢dg|dg d¢g d¢gg|«       | j                  g d¢dg|dddgd
dgddgg|«       | j                  g d¢dg|dddgd
dgg|«       | j                  g d¢dg|dg d¢g d¢g|«       | j                  dgddg|dg d¢|«       | j                  dgddg|dg d¢gg|«       | j                  dgddg|ddgdgd
gg|«       | j                  dgddg|dddgg|«       | j                  dgddg|dg d¢g|«       | j                  dgg d¢|dg d¢|«       | j                  dgg d¢|dg d¢g d¢gg|«       | j                  dgg d¢|dddgd
dgddgg|«       | j                  dgg d¢|dddgd
dgg|«       | j                  dgg d¢|dg d¢g d¢g|«       | j                  g d¢ddg|dg d¢|«       | j                  g d¢ddg|dg d¢g d¢gg|«       | j                  g d¢ddg|dddgd
dgddgg|«       | j                  g d¢ddg|dddgd
dgg|«       | j                  g d¢ddg|dg d¢g d¢g|«       | j                  dgdg|ddg|«       | j                  ddgdg|dg d¢|«       | j                  ddgdg|ddgdgd
gdggg|«       | j                  ddgdg|dg d¢g|«       | j                  ddgdg|ddgdgd
gg|«       | j                  ddgdg|ddgdgd
gdgdgg|«       | j                  g d¢dg|dg d¢|«       | j                  g d¢dg|dddgd
dgddgddggg|«       | j                  g d¢dg|dg d¢g d¢g|«       | j                  g d¢dg|dddgd
dgddgg|«       | j                  g d¢dg|dddgd
dgddgddgddgg|«       | j                  dgddg|dg d¢|«       | j                  dgddg|ddgdgd
gdggg|«       | j                  dgddg|dg d¢g|«       | j                  dgddg|ddgdgd
gg|«       | j                  dgddg|ddgdgd
gdgdgg|«       | j                  dgg d¢|dg d¢|«       | j                  dgg d¢|dddgd
dgddgddggg|«       | j                  dgg d¢|dg d¢g d¢g|«       | j                  dgg d¢|dddgd
dgddgg|«       | j                  dgg d¢|dddgd
dgddgddgddgg|«       | j                  g d¢ddg|dg d¢|«       | j                  g d¢ddg|dddgd
dgddgddggg|«       | j                  g d¢ddg|dg d¢g d¢g|«       | j                  g d¢ddg|dddgd
dgddgg|«       | j                  g d¢ddg|dddgd
dgddgddgddgg|«       y )NrN   rP   r©   r   ©r   rP   rQ   r  ©r   rP   rQ   rK   rW   rÌ  rQ   )r   rP   rQ   rK   rL   rM   rd   rK   rL   rM   )rL   rM   rN   r–   )r   rP   rQ   rK   rL   rM   rN   r–   r–   r¤   r(  )r†   r  rò   r…   rY   )r[   r\   r  r  s       r`   Útest_bad_size_ziz"_TestLinearFilter.test_bad_size_zi  sQ
  € ð �Y‰Y�q‹\ˆØ×Ñ˜q˜c A 3¨¨B°°°RÔ8Ø×Ñ˜q !˜f q c¨2¨r°A°q°6¸2Ô>Ø×Ñ˜q !˜f q c¨2¨r°Q°C°5¸"Ô=Ø×Ñ˜q !˜f q c¨2¨r²9¸bÔAØ×Ñši¨!¨¨b°"¸°s°e¸RÔ@Ø×Ñši¨!¨¨b°"²iÀÔDØ×Ñ˜q˜c A q 6¨2¨r°A°q°6¸2Ô>Ø×Ñ˜q˜c A q 6¨2¨r°Q°C°5¸"Ô=Ø×Ñ˜q˜c A q 6¨2¨r²9¸bÔAØ×Ñši¨!¨Q¨°°R¸!¸¸bÔAØ×Ñši¨!¨Q¨°°R¸1¸#À¸s¸ÀRÔHØ×Ñši¨!¨Q¨°°RºÀBÔGØ×Ñši¨!¨Q¨°°RºÀrÔJØ×Ñ˜q !˜f¢i°°R¸!¸¸bÔAØ×Ñ˜q !˜f¢i°°R¸1¸#À¸s¸ÀRÔHØ×Ñ˜q !˜f¢i°°RºÀBÔGØ×Ñ˜q !˜f¢i°°RºÀrÔJô �Y‰Y�r‹]×"Ñ" 5Ó)ˆØ�Z‰Z˜‹^ˆà×Ñ˜q˜c A 3¨¨A°¨s°BÔ7ð 	×Ñ˜q !˜f q c¨2¨q²)¸RÔ@Ø×Ñ˜q !˜f q c¨2¨q²I°;°-ÀÔDØ×Ñ˜q !˜f q c¨2¨q°A°3¸¸¸a¸S°/À2ÔFØ×Ñ˜q !˜f q c¨2¨q°A°q°6°(¸BÔ?Ø×Ñ˜q !˜f q c¨2¨q²<°.À"ÔEà×Ñši¨!¨¨b°!Ò5GÈÔLØ×Ñši¨!¨¨b°!²yÂ)Ð6LÐ5MÈrÔRØ×Ñši¨!¨¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÔRØ×Ñši¨!¨¨b°!°q¸!°f¸qÀ!¸fÐ5EÀrÔJØ×Ñši¨!¨¨b°!²lÂLÐ5QÐSUÔVà×Ñ˜q˜c A q 6¨2¨q²)¸RÔ@Ø×Ñ˜q˜c A q 6¨2¨q²I°;°-ÀÔDØ×Ñ˜q˜c A q 6¨2¨q°A°3¸¸¸a¸S°/À2ÔFØ×Ñ˜q˜c A q 6¨2¨q°A°q°6°(¸BÔ?Ø×Ñ˜q˜c A q 6¨2¨q²<°.À"ÔEà×Ñ˜q˜c¢9¨b°!Ò5GÈÔLØ×Ñ˜q˜c¢9¨b°!²yÂ)Ð6LÐ5MÈrÔRØ×Ñ˜q˜c¢9¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÔRØ×Ñ˜q˜c¢9¨b°!°q¸!°f¸qÀ!¸fÐ5EÀrÔJØ×Ñ˜q˜c¢9¨b°!²lÂLÐ5QÐSUÔVà×Ñši¨!¨Q¨°°QÒ8JÈBÔOØ×Ñši¨!¨Q¨°°Qº)ÂYÐ9OÐ8PÐRTÔUØ×Ñši¨!¨Q¨°°Q¸!¸Q¸À!ÀQÀÈ!ÈQÈÐ8PÐRTÔUØ×Ñši¨!¨Q¨°°Q¸!¸Q¸À!ÀQÀÐ8HÈ"ÔMØ×Ñši¨!¨Q¨°°QÚ+ª\Ð:¸Bô	@ð 	×Ñ˜q˜c A 3¨¨A°¨s°BÔ7à×Ñ˜q !˜f q c¨2¨q²,ÀÔCØ×Ñ˜q !˜f q c¨2¨q°Q°C¸!¸¸q¸cÀAÀ3Ð3GÐ2HÈ"ÔMØ×Ñ˜q !˜f q c¨2¨q²<°.À"ÔEØ×Ñ˜q !˜f q c¨2¨q°A°3¸¸¸a¸S°/À2ÔFØ×Ñ˜q !˜f q c¨2¨q°A°3¸¸¸a¸SÀ1À#ÈÀsÐ2KÈRÔPà×Ñši¨!¨¨b°!Ò5MÈrÔRØ×Ñši¨!¨¨b°!Ø!" A ¨¨A¨°°A°¸¸A¸Ð?Ð@À"ô	Fà×Ñši¨!¨¨b°!²lÂLÐ5QÐSUÔVØ×Ñši¨!¨¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÔRØ×Ñši¨!¨¨b°!Ø ! 1˜v¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÐFÈô	Lð 	×Ñ˜q˜c A q 6¨2¨q²,ÀÔCØ×Ñ˜q˜c A q 6¨2¨q°Q°C¸!¸¸q¸cÀAÀ3Ð3GÐ2HÈ"ÔMØ×Ñ˜q˜c A q 6¨2¨q²<°.À"ÔEØ×Ñ˜q˜c A q 6¨2¨q°A°3¸¸¸a¸S°/À2ÔFØ×Ñ˜q˜c A q 6¨2¨q°A°3¸¸¸a¸SÀ1À#ÈÀsÐ2KÈRÔPà×Ñ˜q˜c¢9¨b°!Ò5MÈrÔRØ×Ñ˜q˜c¢9¨b°!Ø!" A ¨¨A¨°°A°¸¸A¸Ð?Ð@À"ô	Fà×Ñ˜q˜c¢9¨b°!²lÂLÐ5QÐSUÔVØ×Ñ˜q˜c¢9¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÔRØ×Ñ˜q˜c¢9¨b°!°q¸!°fØ  !˜f q¨! f¨q°!¨f°q¸!°fð6>Ø?Aô	Cð 	×Ñši¨!¨Q¨°°QÒ8PÐRTÔUØ×Ñši¨!¨Q¨°°QØ!" A ¨¨A¨°°A°¸¸A¸Ð?Ð@À"ô	Fà×Ñši¨!¨Q¨°°QÚ+ª\Ð:¸Bô	@à×Ñši¨!¨Q¨°°Q¸!¸Q¸À!ÀQÀÈ!ÈQÈÐ8PÐRTÔUØ×Ñši¨!¨Q¨°°QØ ! 1˜v¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÐFÈõ	Lrb   c                 óŠ  — | j                  d|«      }| j                  dg|«      }| j                  dg|«      }| j                  g |«      }t        ||||¬«      \  }}t        ||«       |j                  t        | j                  t        «      rt        || j                  «      n| j                  k(  sJ ‚t        |«      dk(  sJ ‚y )N)rM   rP   rÂ  r   )	r¢  r   r   r:   r¨   r«  r¬  rŠ  r=   )r[   r\   rq   r]   r^   rÃ  rr   rÇ  s           r`   Útest_empty_ziz_TestLinearFilter.test_empty_zi{  s¹   € à�M‰M˜$ Ó#ˆØ×Ñ ˜s BÓ'ˆØ×Ñ ˜s BÓ'ˆØ×Ñ  BÓ'ˆÜ˜˜1˜a BÔ'‰ˆˆ2Ü! ! QÔ'Ø�x‰xÜ)¨$¯*©*´cÔ:ô $ B¨¯
©
Ô3à!%§¡ò-ð 	-ð -ô �r‹{˜aÒÐÑrb   rF   z jax does not support inplace opsr]   rP   )rP   r  ç      ø?rQ   )rQ   rP   rK   )Úidsc           	      ó  — t        |«      r,t        |t        t        z  «      rt	        j
                  d«       | j                  d|«      }| j                  g d¢|«      }| j                  ||«      }t        |«      dz
  }t        |«      dz
  }t        |«      r||z   nt        ||«      }t        |||| j                  ||«      ¬«      \  }}	t        |||j                  |«      |j                  |«      «      }
t        |	|
«       y )Nz0cupy does not supoprt scalar filter coefficientsrN   )r  r½  r  rP   rÂ  )r9   r«  rn  rx  rœ  r‰  r¢  r   r=   r   r   r#   r\  r:   )r[   r]   r\   rq   r^   r¢  r¡  ÚKrA  Úzi_1Úzi_2s              r`   Útest_lfilticz_TestLinearFilter.test_lfilticˆ  sÓ   € ô �2Œ;œ: a¬¬u©Ô5Ü�K‰KÐJÔKØ�M‰M˜!˜RÓ ˆØ×Ñš|¨RÓ0ˆØ×Ñ˜q "Ó%ˆÜ�A‹J˜‰NˆÜ�A‹J˜‰NˆÜ˜R”[ˆA�ŠE¤c¨!¨Q£iˆä˜1˜a  t§}¡}°Q¸Ó';Ô<‰ˆˆDä�q˜!˜RŸW™W R›[¨"¯'©'°!«*Ó5ˆä! $¨Õ-rb   c           	      ó  — t        t        t        ddgg ddgddg«       t        t        t        ddgddgddgddg«       t        t        t        ddgdgdggddgddg«       t        t        t        dgdggdgddgddg«       y )NrP   rQ   r   )r¹   rº   r#   rÕ  s    r`   Útest_lfiltic_bad_coeffsz)_TestLinearFilter.test_lfiltic_bad_coeffsž  sŽ   € ô 	”j¤'¨A¨q¨6°2¸¸1°vÀÀ1¸vÔFÜ”j¤'¨A¨q¨6°A°q°6¸A¸q¸6ÀAÀqÀ6ÔJÜ”j¤'¨A¨q¨6°Q°C¸!¸°:ÀÀ1¸vÈÈ1ÀvÔNÜ”j¤'¨Q¨C°!°¨:¸°s¸QÀ¸FÀQÈÀFÕKrb   Úarray_api_strictz-int64 and float64 cannot be promoted togetherzjax dtype defaults differc                 óh  — | j                  dg|«      }| j                  dg|«      }t        |||j                  ddg«      «      }t        |||j                  ddg«      «      }t        |||j                  ddg«      «      }t        ||«       | j                  t
        k(  ri nddi}t        ||fi |¤Ž y )NrP   r½  r   TFr  )r   r#   rY   r5   r¨   Úobject)r[   r\   r]   r^   rÃ  r(  r)  Úcheck_dtype_args           r`   Útest_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zi¦  s­   € ð ×Ñ ˜s BÓ'ˆØ×Ñ ˜s BÓ'ˆä�Q˜˜2Ÿ:™: r¨1 gÓ.Ó/ˆÜ�q˜!˜RŸZ™Z¨¨a¨Ó1Ó2ˆÜ�q˜!˜RŸZ™Z¨¨u¨Ó6Ó7ˆÜ˜˜DÔ!à $§
¡
¬fÒ 4™"¸=È%Ð:PˆÜ˜˜DÑ4 OÓ4rb   c                 óB  — | j                  dg|«      }| j                  g d¢|«      }| j                  ddg|«      }| j                  dg|«      }| j                  dg|«      }| j                  ddg|«      }t        ||||¬«      \  }}	t        ||«       t        |	|«       y )	NrP   rÀ  rQ   r–   rn  rO  é¸ÿÿÿrÂ  ©r   r   r:   ©
r[   r\   r]   r^   rÃ  rq   ÚyeÚzferr   rÇ  s
             r`   Útest_short_x_FIRz"_TestLinearFilter.test_short_x_FIR¸  s¦   € ð ×Ñ ˜s BÓ'ˆØ×Ñšz¨2Ó.ˆØ×Ñ  A ¨Ó+ˆØ×Ñ ˜t RÓ(ˆØ×Ñ   bÓ)ˆØ× Ñ  ! S ¨2Ó.ˆÜ˜˜1˜a BÔ'‰ˆˆ2Ü! ! RÔ(Ü! " cÕ*rb   c                 óD  — | j                  ddg|«      }| j                  g d¢|«      }| j                  ddg|«      }| j                  dg|«      }| j                  dg|«      }| j                  ddg|«      }t        ||||¬	«      \  }}	t        ||«       t        |	|«       y )
NrP   rÀ  rQ   r–   rn  rO  i½ÿÿÿr3  rÂ  r4  r5  s
             r`   Útest_short_x_IIRz"_TestLinearFilter.test_short_x_IIRÆ  s¨   € ð ×Ñ  1˜v rÓ*ˆØ×Ñšz¨2Ó.ˆØ×Ñ  A ¨Ó+ˆØ×Ñ ˜t RÓ(ˆØ×Ñ   bÓ)ˆØ× Ñ  # s ¨RÓ0ˆÜ˜˜1˜a BÔ'‰ˆˆ2Ü! ! RÔ(Ü! " cÕ*rb   c                 ó6  — | j                  d|«      }| j                  ddg|«      }t        ||¬«      }| j                  ddg|«      }t        ||¬«      }| j                  g d¢|«      }t        |||«      }t	        ||«       t        ||«       t        ||«       y )Nrµ  rP   r©   rÕ  r  r¶  r·  ©r¢  r   r<   r   r:   r5   ©	r[   r\   rq   r^   Úb0r]   Úa0rº  Úy_fs	            r`   Útest_do_not_modify_a_b_IIRz,_TestLinearFilter.test_do_not_modify_a_b_IIRÔ  s•   € Ø�M‰M˜$ Ó#ˆØ×Ñ  2˜w¨Ó+ˆÜ�Q˜2ÔˆØ×Ñ  T˜{¨BÓ/ˆÜ�Q˜2ÔˆØ× Ñ Ò!5°rÓ:ˆÜ�a˜˜AÓˆÜ! # sÔ+Ü˜˜2ÔÜ˜˜2Õrb   c                 ó4  — | j                  d|«      }| j                  g d¢|«      }t        ||¬«      }| j                  dg|«      }t        ||¬«      }| j                  g d¢|«      }t        |||«      }t	        ||«       t        ||«       t        ||«       y )Nrµ  r�  rÕ  rQ   )r   r  rP   rQ   rK   re  r<  r=  s	            r`   Útest_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIRà  s�   € Ø�M‰M˜$ Ó#ˆØ×Ñšy¨"Ó-ˆÜ�Q˜2ÔˆØ×Ñ ˜s BÓ'ˆÜ�Q˜2ÔˆØ× Ñ Ò!6¸Ó;ˆÜ�a˜˜AÓˆÜ! # sÔ+Ü˜˜2ÔÜ˜˜2Õrb   Tr  r½  r^   c                 óè   — t         j                  j                  d«      }|j                  |«      }t	        t        |j                  dg«      |j                  dg«      |«      t        |||«      «       y )NrR   r½  )rò   ró   rö   rY   r4   r   )r[   r]   r^   r\   r»  s        r`   Útest_scalar_inputz#_TestLinearFilter.test_scalar_inputì  sZ   € ô �y‰y�‰˜rÓ"ˆØ�z‰z˜$ÓˆÜÜ�B—J‘J ˜uÓ% r§z¡z°3°%Ó'8¸$Ó?Ü�A�q˜$Óõ	
rb   N)*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!  r#  rœ  r�  rž  r¬  r@   r#   r*  r,  r1  r8  r:  rA  rC  rò   r“  rE  r  rb   r`   rœ  rœ    sâ  „ ò)ò0ñ �fÐ%VÔWñó Xðò9ò9ñ �fÐ%QÔRñ	,ó Sð	,ñ �fÐ%QÔRñ	,ó Sð	,ò.ò.ñ �fÐ%QÔRñ,ó Sð,ñ �fÐ%QÔRñ,ó Sð,ò:ñ �v lÔ3ñ<ó 4ð<ò*	:ñ �v lÔ3ñ<ó 4ð<ñ. �fÐ%QÔRñJó SðJñ* �fÐ%QÔRñ*ó Sð*ñ �fÐ%QÔRñ7ó Sð7ò:>ñ �fÐ%:Ô;ñgLó <ðgLòR ñ �kÐ*LÔMØ‡[�[×Ñ˜S 1 q cª<¸¸Q¸CÂÐ"KØ!$ð ó &á�wÓñ.ó  ó&ó Nð.ñ$ �wÓñLó  ðLñ ØÐ#Rôñ �kÐ*EÔFÙ�wÓñ5ó  ó Góð
5ñ �fÐ%QÔRñ+ó Sð+ñ �fÐ%QÔRñ+ó Sð+ò
ò
ñ ˜dÔ#Ø‡[�[×Ñ˜S 3¨¨¨x¨r¯x©x¸«}Ð"=Ó>Ø‡[�[×Ñ˜S 3¨¨¨x¨r¯x©x¸«}Ð"=Ó>ñ
ó ?ó ?ó $ñ
rb   rœ  c                   ó   — e Zd ZdZy)ÚTestLinearFilterFloat32râ   N©r  r  r  r¨   r  rb   r`   rG  rG  ø  ó   „ Ø�Erb   rG  c                   ó   — e Zd ZdZy)ÚTestLinearFilterFloat64rã   NrH  r  rb   r`   rK  rK  ü  rI  rb   rK  r  c                   ó0   — e Zd Z ej                  d«      Zy)ÚTestLinearFilterFloatExtendedr0  N©r  r  r  rò   r¨   r  rb   r`   rM  rM   	  ó   „ àˆB�H‰H�S‹M�Erb   rM  c                   ó   — e Zd ZdZy)ÚTestLinearFilterComplex64rä   NrH  r  rb   r`   rQ  rQ  	  s   „ Ø�Erb   rQ  c                   ó   — e Zd ZdZy)ÚTestLinearFilterComplex128r­   NrH  r  rb   r`   rS  rS  		  s   „ Ø�Erb   rS  c                   ó0   — e Zd Z ej                  d«      Zy)ÚTestLinearFilterComplexExtendedÚGNrN  r  rb   r`   rU  rU  	  rO  rb   rU  c                 ó  — t        t        d«      r'dt        j                  v rt        j                  d«       t        t        t        dgdgg d¢«       t        t        t        dgd gg d¢«       t        t        t        d gdgg d¢«       y )NÚabiflagsr    z'test is flaky when run with python3-dbgr½  )r½  Nrb  ©r½  rb  rd  )ÚhasattrÚsysrX  rœ  r‰  r¹   r–  r   rÕ  s    r`   Útest_lfilter_bad_objectr\  	  sc   € ô Œs�JÔ C¬3¯<©<Ñ$7Ü�‰Ð=Ô>Ü”)œW s e¨c¨UÒ4DÔEÜ”)œW s e¨d¨V²_ÔEÜ”)œW t f¨s¨e²_ÕErb   c                 ó>   — t        t        t        ddgddgg d¢«       y )NrQ   rK   rL   rM   )rP   rQ   rK   rL   rM   )r¹   r³  r   rÕ  s    r`   Ú!test_lfilter_notimplemented_inputr^  	  s   € ô Ô%¤w°°1°¸¸!°uºkÕJrb   rF  r†  rF   zfails all aroundrH   c                   ó¶   — e Zd Zd„ Zd„ Zd„ Z edd¬«      d„ «       Zd„ Zd	„ Z	d
„ Z
d„ Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d„ «       Zy)ÚTestCorrelateRealc                 óŠ   — |j                  ddd|¬«      }|j                  ddd|¬«      }|j                  g d¢|¬«      }|||fS )Nr   rK   rL   r§   rP   rQ   )r   rQ   rM   r¤   rK   )rñ  rY   ©r[   rF  r\   r]   r^   rº  s         r`   Ú_setup_rank1zTestCorrelateReal._setup_rank1,	  sL   € Ø�K‰K˜˜1˜a rˆKÓ*ˆØ�K‰K˜˜1˜a rˆKÓ*ˆà�j‰jš°ˆjÓ3ˆØ�!�SˆyÐrb   c                 óÄ   — d}	 t        j                  |«      }t        |d«      r+t        dt        j                  |j
                  «      z  «      }|S # t        $ r Y |S w xY w)NrN   Ú
resolutionr¶  )rò   r‘  rZ  rn  Úlog10re  Ú	Exception)r[   Úres_dtrÅ  Údt_infos       r`   Úequal_tolerancez!TestCorrelateReal.equal_tolerance3	  sb   € àˆð	Ü—h‘h˜vÓ&ˆGÜ�w Ô-Ü˜d¤2§8¡8¨G×,>Ñ,>Ó#?Ñ?Ó@�ð ˆøô ò 	ØØˆð	ús   „AA Á	AÁAc                 óˆ   — |t         j                  k(  r| j                  t         j                  «      S | j                  |«      S rö  )rò   r’  rj  rã   )r[   rh  s     r`   Úequal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fft>	  s6   € ð ”R—]‘]Ò"Ø×'Ñ'¬¯
©
Ó3Ð3à×'Ñ'¨Ó/Ð/rb   Tz	order='F'rx   c                 ó`  — t        ||«      }| j                  ||«      \  }}}t        ||d¬«      }t        ||d¬«      }t        ||| j	                  |j
                  «      ¬«       t        ||| j                  |j
                  «      ¬«       |j
                  |k(  sJ ‚|j
                  |k(  sJ ‚y )Nr
   r€   r   rÄ  )rŠ  Ú_setup_rank3r   r:   rl  r¨   rj  )r[   rF  r\   r]   r^   rº  Úy_fftÚy_directs           r`   Útest_methodzTestCorrelateReal.test_methodF	  s£   € ä�R˜‹_ˆà×%Ñ% b¨"Ó-‰	ˆˆ1ˆcÜ˜!˜Q uÔ-ˆÜ˜Q ¨(Ô3ˆä! # uØ*.×*BÑ*BÀ5Ç;Á;Ó*Oõ	Rä! # xØ*.×*>Ñ*>¸x¿~¹~Ó*Nõ	Qà�{‰{˜bÒ Ð Ð Ø�~‰~ Ò#Ð#Ñ#rb   c                 ó†  — t        |«      r|dv rt        j                  d«       t        |t        «      rt        ||«      n|}| j                  ||«      \  }}}t        ||d«      }t        ||dd «       |j                  |k(  sJ ‚t        ||d«      }t        ||j                  |dd «      «       |j                  |k(  sJ ‚y )Nrˆ  ú$torch does not support unsigned intsr¬   rP   rL   )r7   rœ  r‰  r«  r¬  rŠ  rc  r   r:   r¨   r\  ©r[   rF  r\   r]   r^   rº  rr   s          r`   Útest_rank1_validz"TestCorrelateReal.test_rank1_validU	  s³   € Ü�BŒ<˜BÐ"@Ñ@Ü�;‰;Ð=Ô>ä *¨2¬sÔ 3ŒW�R˜Œ_¸ˆØ×%Ñ% b¨"Ó-‰	ˆˆ1ˆcÜ�a˜˜GÓ$ˆÜ! ! S¨¨1 XÔ.Ø�w‰w˜"Š}Ðˆ}ô �a˜˜GÓ$ˆÜ! ! R§W¡W¨S°°1¨XÓ%6Ô7Ø�w‰w˜"Š}Ð‰}rb   c                 ó  — t        |«      r|dv rt        j                  d«       t        |t        «      rt        ||«      n|}| j                  ||«      \  }}}t        ||d«      }t        ||d d «       |j                  |k(  sJ ‚y )Nrˆ  rs  re   r©   ©
r7   rœ  r‰  r«  r¬  rŠ  rc  r   r:   r¨   rt  s          r`   Útest_rank1_samez!TestCorrelateReal.test_rank1_samed	  sz   € Ü�BŒ<˜BÐ"@Ñ@Ü�;‰;Ð=Ô>ä *¨2¬sÔ 3ŒW�R˜Œ_¸ˆà×%Ñ% b¨"Ó-‰	ˆˆ1ˆcÜ�a˜˜FÓ#ˆÜ! ! S¨¨" XÔ.Ø�w‰w˜"Š}Ð‰}rb   c                 ó  — t        |«      r|dv rt        j                  d«       t        |t        «      rt        ||«      n|}| j                  ||«      \  }}}t        ||d«      }t        ||«       |j                  |k(  sJ ‚y )Nrˆ  rs  r«   rw  rt  s          r`   Útest_rank1_fullz!TestCorrelateReal.test_rank1_fullo	  st   € Ü�BŒ<˜BÐ"@Ñ@Ü�;‰;Ð=Ô>ä *¨2¬sÔ 3ŒW�R˜Œ_¸ˆà×%Ñ% b¨"Ó-‰	ˆˆ1ˆcÜ�a˜˜FÓ#ˆÜ! ! SÔ)Ø�w‰w˜"Š}Ð‰}rb   c                 óÂ  — t        j                  ddd«      j                  dd¬«      j                  |«      }t        j                  ddd«      j                  d	d¬«      j                  |«      }t        j                  g d
¢g d¢g d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢g d¢g d¢ggt         j
                  ¬«      j                  |«      }|||fS )Nr   r|  r8  )rQ   rL   rM   ÚF)ÚorderrV   r6  r”   )r  g      g@g     €@g     €Œ@ç     @•@g     À‹@g     €}@g      d@)g      G@g      {@g     ˜�@g     Àœ@g     à¤@ç     ˆš@g      ‹@g      p@)ç     À`@g      ‡@g     ø™@g      ¥@ç      ®@g     ä¢@g     @’@g      s@)g     @p@g     À�@g     0ž@g     à§@g     p°@g     (¤@g     `“@g     Àt@)g     @i@g     À„@ç     (”@g      Ÿ@g      ¥@g     Ø˜@g     @†@g     Àb@)g     €\@g     €u@g     „@g      Ž@g      ”@g     °†@g     €r@g      C@)r�  g      y@g     ,�@ç      œ@g     ¥@g     $›@g     @Œ@g     Pr@)r€  g     ÀŒ@g     ì @g     À¬@g      ´@g     Ô©@g      ™@g      }@)g     Pt@g      ˜@g     Rª@g     ˆµ@g     (¾@g     K²@g      ¡@g     ¸€@)g     Ø�@g     °ž@g     f®@g     °·@g     (À@g     }³@g     (¢@g     ¨�@)g      {@r~  g     4¤@r�  g     �´@g     Ü§@g     €”@ç     Àl@)g      n@g     à…@g     ”@g     €�@g     €£@g     œ•@g      €@r`  )rŒ  g     Àj@g     €€@g      Œ@g     Ð”@g     pŠ@g     àz@g     €`@)g     €U@g     @~@g     (‘@rƒ  g     P¤@g     ™@g      ˆ@g     Ài@)g     €g@g     ‰@r  g     X¥@g     ˜­@g      ¡@g     Ð�@g     @k@)g     @s@g     p�@g     xž@g     h§@g     ¨¯@g     À¢@g     Ø�@r„  )r„  g      …@r‚  g      ž@g     ¤@g     È–@g      ‚@g     €S@)g     €_@g      v@g     àƒ@g     àŒ@g     ð’@g     p„@g     @m@r  r§   )rò   rñ  r…   rø   r“  rã   rb  s         r`   rn  zTestCorrelateReal._setup_rank3z	  së   € Ü�K‰K˜˜2˜rÓ"×*Ñ*¨9¸CÐ*Ó@×GÑGØóˆä�K‰K˜˜2˜rÓ"×*Ñ*¨9¸CÐ*Ó@×GÑGØóˆô �h‰hÒHÚIÚKÚKÚJÚFðHò JÚKÚLÚLÚLÚIðKò GÚIÚKÚLÚIÚEðGðHô( Ÿ*™*ô)&÷( '-¡f¨R£jð) 	ð, �!�SˆyÐrb   c           	      ób  — t        |t        «      rt        ||«      n|}| j                  ||«      \  }}}t	        ||d«      }t        ||dd…dd…dd…f   «       |j                  |k(  sJ ‚t	        ||d«      }t        ||dd…dd…dd…f   d d d…d d d…d d d…f   «       |j                  |k(  sJ ‚y )Nr¬   rP   rQ   rL   rK   rM   r©   )r«  r¬  rŠ  rn  r   r:   r¨   rt  s          r`   Útest_rank3_validz"TestCorrelateReal.test_rank3_valid˜	  sÈ   € ä *¨2¬sÔ 3ŒW�R˜Œ_¸ˆØ×%Ñ% b¨"Ó-‰	ˆˆ1ˆcÜ�a˜˜GÓ$ˆÜ! ! S¨¨1¨¨a°¨c°1°Q°3¨Ñ%7Ô8Ø�w‰w˜"Š}Ðˆ}ô �a˜˜GÓ$ˆÜ! ! S¨¨1¨¨a°¨c°1°Q°3¨Ñ%7¹¸"¸¹dÀ¸dÁDÀbÀDÐ8HÑ%IÔJØ�w‰w˜"Š}Ð‰}rb   c                 óØ   — t        |t        «      rt        ||«      n|}| j                  ||«      \  }}}t	        ||d«      }t        ||dd…dd…dd…f   «       |j                  |k(  sJ ‚y )Nre   r   r©   rP   rº  ©r«  r¬  rŠ  rn  r   r4   r¨   rt  s          r`   Útest_rank3_samez!TestCorrelateReal.test_rank3_same¥	  sp   € ä *¨2¬sÔ 3ŒW�R˜Œ_¸ˆØ×%Ñ% b¨"Ó-‰	ˆˆ1ˆcÜ�a˜˜FÓ#ˆÜ˜˜3˜q ˜t Q r T¨1¨R¨4Ð/Ñ0Ô1Ø�w‰w˜"Š}Ð‰}rb   c                 ó¾   — t        |t        «      rt        ||«      n|}| j                  ||«      \  }}}t	        ||«      }t        ||«       |j                  |k(  sJ ‚y rö  rˆ  rt  s          r`   Útest_rank3_allz TestCorrelateReal.test_rank3_all­	  sU   € ä *¨2¬sÔ 3ŒW�R˜Œ_¸ˆØ×%Ñ% b¨"Ó-‰	ˆˆ1ˆcÜ�a˜‹OˆÜ˜˜3ÔØ�w‰w˜"Š}Ð‰}rb   N)r  r  r  rc  rj  rl  r  rq  ru  rx  rz  rn  r†  r‰  r‹  r  rb   r`   r`  r`  #	  s‘   „ òò	ò0ñ ˜d¨;Ô7ñ$ó 8ð$òò	ò	òñ< ˜d¨;Ô7ñ
ó 8ð
ñ ˜d¨;Ô7ñó 8ðñ ˜d¨;Ô7ñó 8ñrb   r`  c                   ó¢   — e Zd Z ed¬«      d„ «       Z ed¬«      d„ «       Z ed¬«      d„ «       Z eddg¬«       edd	¬
«      d„ «       «       Zy)ÚTestCorrelateTr  c                 ó  — t        j                  dd«      j                  d«      }t        j                  dd«      j                  d«      }t        t        t
        g||f¢­i ddi¤Ž t        t        t
        g||f¢­i ddi¤Ž y rÒ   )rò   r†   r…   r¹   rº   r   r»   s       r`   rÖ   z!TestCorrelate.test_invalid_shapesº	  ss   € ô �I‰I�a˜‹O×#Ñ# FÓ+ˆÜ�I‰I�b˜!Ó×$Ñ$ VÓ,ˆä”j¤)ÐJ¨q°!¨fÒJ¸ÀÐ8IÒJÜ”j¤)ÐJ¨q°!¨fÒJ¸ÀÐ8IÓJrb   c                 ó  — g d¢}g d¢}t        t        t        ||d¬«       t        t        t        ||dd¬«       t        t        t        ||dd	¬«       t        t        t        ||d
d¬«       t        t        t        ||dd¬«       y r³   ©r¹   rº   r   r»   s       r`   r¼   z!TestCorrelate.test_invalid_paramsÇ	  sd   € âˆÚˆÜ”j¤)¨Q°¸Õ?Ü”j¤)¨Q°¸ÀuÕMÜ”j¤)¨Q°¸ÀhÕOÜ”j¤)¨Q°¸ÀwÕOÜ”j¤)¨Q°¸ÀwÖOrb   c                 ó,  — t        t        t        dgdd¬«       t        t        t        ddgd¬«       t        t        t        dgdd¬«       t        t        t        ddgd¬«       t        t        t        dgdgg«       t        t        t        dgd«       y r  r�  r  s     r`   r  z"TestCorrelate.test_mismatched_dimsÑ	  sp   € ô 	”j¤)¨a¨S°!¸HÕEÜ”j¤)¨Q°°¸HÕEÜ”j¤)¨a¨S°!¸EÕBÜ”j¤)¨Q°°¸EÕBÜ”j¤)¨a¨S°A°3°%Ô8Ü”j¤)¨a¨S°!Õ4rb   r‘   )Úcpu_onlyÚ
exceptionsrF   zdtype differsrH   c                 óâ  — |j                  g d¢«      }|j                  ddg«      }t        t        ||d¬«      |j                  g d¢«      «       |j                  g d¢«      }|j                  g d¢«      }t        t        ||d¬«      |j                  g d¢«      «       t        t        ||d	¬«      |j                  g d
¢«      «       t        t        ||d¬«      |j                  dg«      «       y )NrO   rL   rM   re   rf   )rM   r•  rV   r•   )r˜   rU   rV   r«   )rN   r˜   rU   rV   rW   r¬   rU   )rY   r4   r   r»   s       r`   Útest_numpy_fastpathz!TestCorrelate.test_numpy_fastpathÛ	  s³   € ð �J‰J’yÓ!ˆØ�J‰J˜˜1�vÓˆÜœ	 ! Q¨VÔ4°b·j±jÂÓ6MÔNà�J‰J’yÓ!ˆØ�J‰J’yÓ!ˆÜœ	 ! Q¨VÔ4°b·j±jÂÓ6NÔOÜœ	 ! Q¨VÔ4°b·j±jÒATÓ6UÔVÜœ	 ! Q¨WÔ5°r·z±zÀ2À$Ó7GÕHrb   N)r  r  r  r  rÖ   r¼   r  r•  r  rb   r`   r�  r�  ¶	  s   „ ñ ˜dÔ#ñ
Kó $ð
Kñ ˜dÔ#ñPó $ðPñ ˜dÔ#ñ5ó $ð5ñ ˜t°°Ô9Ù�k¨/Ô:ñ	Ió ;ó :ñ	Irb   r�  rg   ©r¬   re   r«   ÚbehindFÚ
input_sizer  ro  r�  r�  r  )Úmarksi'  c                 óÄ  — t         j                  j                  d«      }|j                  |«      }t	        |dz  «      }|r*t        j
                  |j                  |«      |g«      }| }n||d  }|}t        ||| ¬«      }	t        |j                  |j                  | ¬«      }
t        j                  |	«      }t        |
|   |«       |
j                  |	j                  k(  sJ ‚y )Nr   rR   rf   )rò   ró   rô   r  rn  Úconcatenater   r   rç   Úargmaxr5   r‘  )rg   r—  r˜  r\   rÿ   Úin1ÚoffsetÚin2rÇ   ÚcorrelationÚlagsÚ	lag_indexs               r`   Útest_correlation_lagsr£  é	  sÈ   € ô �)‰)×
Ñ
 Ó
"€CØ
×
Ñ
˜jÓ
)€CÜ�˜B‘Ó€Fáä�n‰n˜c×1Ñ1°&Ó9¸3Ð?Ó@ˆØ�7‰ð �&�'ˆlˆØˆä˜C ¨4Ô0€KÜ˜CŸH™H c§h¡h°TÔ:€Dä—	‘	˜+Ó&€Iä�D˜‘O XÔ.à�:‰:˜×*Ñ*Ò*Ð*Ñ*rb   c                 ó€   — t        j                  t        d¬«      5  t        ddd¬«       d d d «       y # 1 sw Y   y xY w)NzMode asdfgh is invalidrA  r  Úasdfghrf   )rœ  r   rº   r   rÕ  s    r`   Ú"test_correlation_lags_invalid_moder¦  	
  s2   € ä	�‰”zÐ)AÔ	Bñ 2Ü˜˜c¨Õ1÷2÷ 2ñ 2ús   œ4´=Údt_namerä   r­   c                   ót   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 e
dd	¬
«      d„ «       Z e
d¬«      d„ «       Zy)ÚTestCorrelateComplexc                 óÂ   — t        |«      r#|t        j                  k(  rt        j                  }dddœ|j	                  |«      j
                     }t        d|z  dz  «      S )Nrq  rN   )r9  rU   rQ   rK   )r6   rò   rÀ  Úcdoubler‘  Úbitsrn  )r[   rF  r\   Úprecs       r`   rÅ  zTestCorrelateComplex.decimal
  sN   € Ü�BŒ<˜B¤"§.¡.Ò0Ü—‘ˆBð ˜A‰˜rŸx™x¨›|×0Ñ0Ñ1ˆÜ�1�t‘8˜a‘<Ó Ð rb   c                 ó@  — t         j                  j                  d«      }t         j                  j                  d«      j	                  |«      }|d|j                  d«      j	                  |«      z  z  }t         j                  j                  d«      j	                  |«      }|d|j                  d«      j	                  |«      z  z  }t        |j                  |j                  |¬«      t        |j                  |j                  |¬«      z   j	                  |«      }|dt        |j                  |j                  |¬«       t        |j                  |j                  |¬«      z   z  z  }|j                  |«      |j                  |«      |j                  |«      }}}|||fS )Nr(  rR   r¦   r¤   rf   )
rò   ró   r  rö   rø   r  r   ró  ÚimagrY   )r[   rF  rg   r\   rÿ   r]   r^   rº  s           r`   rc  z!TestCorrelateComplex._setup_rank1!
  sH  € Ü�i‰i×#Ñ# AÓ&ˆÜ�I‰I�O‰O˜BÓ×&Ñ& rÓ*ˆØ	ˆR�#×%Ñ% bÓ)×0Ñ0°Ó4Ñ4Ñ4ˆÜ�I‰I�O‰O˜AÓ×%Ñ% bÓ)ˆØ	ˆR�#×%Ñ% aÓ(×/Ñ/°Ó3Ñ3Ñ3ˆä˜Ÿ™ §¡¨dÔ3Ü˜Ÿ™ §¡¨dÔ3ñ4ß5;±V¸B³Zð 	àˆr”i §¡¨¯©°TÔ:Ð:Ü˜qŸv™v q§v¡v°DÔ9ñ:ñ ;ñ 	;ˆð —J‘J˜q“M 2§:¡:¨a£=°"·*±*¸S³/ˆcˆ1ˆØ�!�SˆyÐrb   c                 óv  — | j                  |d|«      \  }}}t        ||«      }t        ||d«      }t        ||| j	                  ||«      ¬«       |j
                  |k(  sJ ‚t        ||d«      }t        ||j                  |j                  |«      «      | j	                  ||«      ¬«       |j
                  |k(  sJ ‚y )Nr¬   rÄ  )rc  rŠ  r   r:   rÅ  r¨   Úconjr\  ©r[   r§  r\   r]   r^   rº  rF  rr   s           r`   ru  z%TestCorrelateComplex.test_rank1_valid0
  s©   € Ø×%Ñ% g¨w¸Ó;‰	ˆˆ1ˆcÜ�R˜Ó!ˆÜ�a˜˜GÓ$ˆÜ! ! S°$·,±,¸rÀ2Ó2FÕGØ�w‰w˜"Š}Ðˆ}ô �a˜˜GÓ$ˆÜ! ! R§W¡W¨R¯W©W°S«\Ó%:Ø*.¯,©,°r¸2Ó*>õ	@à�w‰w˜"Š}Ð‰}rb   c                 óÂ   — | j                  |d|«      \  }}}t        ||«      }t        ||d«      }t        ||| j	                  ||«      ¬«       |j
                  |k(  sJ ‚y )Nre   rÄ  ©rc  rŠ  r   r:   rÅ  r¨   r²  s           r`   rx  z$TestCorrelateComplex.test_rank1_same=
  s]   € Ø×%Ñ% g¨v°rÓ:‰	ˆˆ1ˆcÜ�R˜Ó!ˆä�a˜˜FÓ#ˆÜ! ! S°$·,±,¸rÀ2Ó2FÕGØ�w‰w˜"Š}Ð‰}rb   c                 óÂ   — | j                  |d|«      \  }}}t        ||«      }t        ||d«      }t        ||| j	                  ||«      ¬«       |j
                  |k(  sJ ‚y )Nr«   rÄ  r´  r²  s           r`   rz  z$TestCorrelateComplex.test_rank1_fullE
  s]   € Ø×%Ñ% g¨v°rÓ:‰	ˆˆ1ˆcÜ�R˜Ó!ˆÜ�a˜˜FÓ#ˆÜ! ! S°$·,±,¸rÀ2Ó2FÕGØ�w‰w˜"Š}Ð‰}rb   c                 óÈ   — t        ||«      }|j                  g d¢|¬«      }|j                  g d¢|¬«      }t        ||«      }t        ||j                  g d¢«      dd¬«       y )N©rª   rm   r¶  r§   ©y      ð?      @y       @      @y      @      @y      @      @)rª   ù      $@       Àù      <@      Àù      6@      Ày      0@      Ày       @      Àrì   FrÄ  )rŠ  rY   r   r4   )r[   r§  r\   rF  r    Úkrr   s          r`   Útest_swap_fullz#TestCorrelateComplex.test_swap_fullL
  s[   € Ü�R˜Ó!ˆØ�J‰JÒ/°rˆJÓ:ˆØ�J‰JÒ7¸rˆJÓBˆÜ�a˜‹OˆÜØˆr�z‰zÒNÓOØ 5ö	
rb   c                 ó¦   — |j                  g d¢«      }|j                  g d¢«      }t        ||d¬«      }t        ||j                  g d¢«      «       y )Nr·  r¸  re   rf   )r¹  rº  r»  )rY   r   r4   )r[   r§  r\   r    r¼  rr   s         r`   Útest_swap_samez#TestCorrelateComplex.test_swap_sameV
  sB   € Ø�J‰JÒ/Ó0ˆØ�J‰JÒ7Ó8ˆÜ�a˜ Ô(ˆÜ˜˜2Ÿ:™:Ò&AÓBÕCrb   r‘   ÚnotimplementederrorrH   c                 ó  — t        |«      rt        dk7  rt        j                  d¬«       t        j
                  j                  ddd«      j                  |«      }|dt        j
                  j                  ddd«      j                  |«      z  z  }t        j
                  j                  ddd«      j                  |«      }|dt        j
                  j                  ddd«      j                  |«      z  z  }t        |j                  |j                  «      t        |j                  |j                  «      z   j                  |«      }|dt        |j                  |j                  «       t        |j                  |j                  «      z   z  z  }|j                  |«      |j                  |«      |j                  |«      }}}t        ||«      }t        ||d	«      }t        ||| j                  ||«      d
z
  ¬«       |j                  |k(  sJ ‚y )NÚcpuz)error tolerances exceeded with JAX on gpurH   rR   r¤   rN   r¦   rL   r«   rP   rÄ  )r8   rB   rœ  Úxfailrò   ró   rö   rø   r   ró  r¯  rY   rŠ  r:   rÅ  r¨   r²  s           r`   Ú
test_rank3zTestCorrelateComplex.test_rank3\
  sŒ  € ä�"Œ:œ,¨%Ò/Ü�L‰LÐ KÕLÜ�I‰I�O‰O˜B  1Ó%×,Ñ,¨WÓ5ˆØ	ˆR”"—)‘)—/‘/ " a¨Ó+×2Ñ2°7Ó;Ñ;Ñ;ˆÜ�I‰I�O‰O˜A˜q !Ó$×+Ñ+¨GÓ4ˆØ	ˆR”"—)‘)—/‘/ ! Q¨Ó*×1Ñ1°'Ó:Ñ:Ñ:ˆä˜Ÿ™ §¡Ó(Ü˜1Ÿ6™6 1§6¡6Ó*ñ+ß,2©F°7«Oð 	àˆr”i §¡¨¯©Ó/Ð/´)¸A¿F¹FÀAÇFÁFÓ2KÑKÑLÑLˆà—J‘J˜q“M 2§:¡:¨a£=°"·*±*¸S³/ˆcˆ1ˆÜ�R˜Ó!ˆä�a˜˜FÓ#ˆÜ! ! S°$·,±,¸rÀ2Ó2FÈÑ2JÕKØ�w‰w˜"Š}Ð‰}rb   Tr  c           	      ó–  — t        j                  t         j                  j                  «       «      j	                  |«      }|dt        j                  t         j                  j                  «       «      j	                  |«      z  z  }t        j                  t         j                  j                  «       «      j	                  |«      }|dt        j                  t         j                  j                  «       «      j	                  |«      z  z  }t        ||«      }t        |j                  |j                  «      t        |j                  |j                  «      z   j	                  |«      }|dt        j                  t        |j                  |j                  «       t        |j                  |j                  «      z   «      z  z  }|j                  |«      |j                  |«      }}t        ||d«      }t        ||| j                  ||«      dz
  ¬«       |j                  |k(  sJ ‚t        t        dgdg«      t        j                  t        dd«      «      d¬«       t        t        dgdg«      t        j                  t        dd«      «      d¬«       t        t        dgd	g«      t        j                  t        dd	«      «      d¬«       y )
Nr¦   r«   rP   rÄ  rp   F)Úcheck_shapeù              @rL   )rò   r“  ró   rö   rø   rŠ  r   ró  r¯  rY   r:   rÅ  r¨   r5   )r[   r§  r\   r]   r^   rF  rº  rr   s           r`   Ú
test_rank0zTestCorrelateComplex.test_rank0p
  s  € ä�H‰H”R—Y‘Y—_‘_Ó&Ó'×.Ñ.¨wÓ7ˆØ	ˆR”"—(‘(œ2Ÿ9™9Ÿ?™?Ó,Ó-×4Ñ4°WÓ=Ñ=Ñ=ˆÜ�H‰H”R—Y‘Y—_‘_Ó&Ó'×.Ñ.¨wÓ7ˆØ	ˆR”"—(‘(œ2Ÿ9™9Ÿ?™?Ó,Ó-×4Ñ4°WÓ=Ñ=Ñ=ˆÜ�R˜Ó!ˆä˜Ÿ™ §¡Ó(Ü˜1Ÿ6™6 1§6¡6Ó*ñ+ß,2©F°2«Jð 	àˆr”B—H‘Hœi¨¯©°·±Ó7Ð7Ü& q§v¡v¨q¯v©vÓ6ñ7ó 8ñ 8ñ 	8ˆð �z‰z˜!‹}˜bŸj™j¨›mˆ1ˆä�a˜˜FÓ#ˆÜ! ! S°$·,±,¸rÀ2Ó2FÈÑ2JÕKØ�w‰w˜"Š}Ðˆ}äœ	 1 #¨ tÓ,¬b¯j©j¼À1ÀbÓ9IÓ.JØ$)õ	+äœ	 2 $¨¨Ó-¬r¯z©z¼)ÀBÈÓ:KÓ/LØ$)õ	+äœ	 2 $¨¨Ó,¬b¯j©j¼À2ÀqÓ9IÓ.JØ$)ö	+rb   N)r  r  r  rÅ  rc  ru  rx  rz  r½  r¿  r  rÄ  rÈ  r  rb   r`   r©  r©  
  s[   „ ò!òòòòò
òDñ �fÐ%:Ô;ñó <ðñ& ˜dÔ#ñ+ó $ñ+rb   r©  c                   óü   — e Zd Z eej
                  «      d„ «       Z ed¬«       eej                  «      d„ «       «       Z	 ed¬«       eej                  «      d„ «       «       Z
 eej                  «      d„ «       Zy)ÚTestCorrelate2dc                 óÞ  — t        j                  d«      }t        j                  g d¢«      }dD ]¼  }|j                  |«      |j                  |«      }}t        j                  |||¬«      }t        t        j                  |||¬«      |j                  |«      «       |dk(  sŒtt        j                  |||¬«      }t        t        j                  |||¬«      |j                  |«      «       Œ¾ y ©NrM   r„  r…  rf   r¬   )rò   r†   r“  rY   r   r;   r   )r[   r\   r]   r^   rg   Úa_xpÚb_xpÚnp_corr_results           r`   Ú test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcsŽ
  sÁ   € ô �I‰I�a‹LˆÜ�H‰H’]Ó#ˆØ-ò 
	@ˆDØŸ™ A›¨¯
©
°1«�$ˆDÜŸ\™\¨!¨Q°TÔ:ˆNÜ¤× 0Ñ 0°°tÀ$Ô GØ "§
¡
¨>Ó :ô<ð �w‹Ü!#§¡¨a°¸Ô!>�Ü#¤F×$4Ñ$4°T¸4ÀdÔ$KØ$&§J¡J¨~Ó$>õ@ñ
	@rb   Tr  c           
      óª  — t        j                  d«      }t        j                  g d¢«      }dD ]¢  }t        t        j                  t        j                  |g|g|¬«      «      t        j                  |||¬«      «       |dk(  sŒVt        t        j                  t        j                  |g|g|¬«      «      t        j                  |||¬«      «       Œ¤ y rÌ  )rò   r†   r“  r;   rˆ  r   r   r   )r[   r\   r]   r^   rg   s        r`   Ú"test_consistency_correlate_funcs_2z2TestCorrelate2d.test_consistency_correlate_funcs_2Ÿ
  s¹   € ô �I‰I�a‹LˆÜ�H‰H’]Ó#ˆØ-ò 		GˆDÜ¤§
¡
¬6×+=Ñ+=¸q¸cÀAÀ3ØCGô,Ió !Jä &× 0Ñ 0°°A¸DÔ AôCð
 �w‹Ü#¤B§J¡J¬v×/AÑ/AÀ1À#ÈÀsØGKô0Mó %Nä$*×$4Ñ$4°Q¸ÀÔ$EõGñ		Grb   c                 ó0  — t        j                  dd«      j                  d«      }t        j                  dd«      j                  d«      }t        t        t
        j                  g||f¢­i ddi¤Ž t        t        t
        j                  g||f¢­i ddi¤Ž y rÒ   )rò   r†   r…   r¹   rº   r   r   r»   s       r`   rÖ   z#TestCorrelate2d.test_invalid_shapes±
  s   € ô �I‰I�a˜‹O×#Ñ# FÓ+ˆÜ�I‰I�b˜!Ó×$Ñ$ VÓ,ˆä”j¤&×"4Ñ"4ÐS¸¸1°vÒSÀ&È'ÐARÒSÜ”j¤&×"4Ñ"4ÐS¸¸1°vÒSÀ&È'ÐARÓSrb   c                 ó  — t        t        j                  |j                  dgg«      |j                  dgg«      «      |j                  dg«      dd¬«       t        t        j                  |j                  dgg«      |j                  dgg«      «      |j                  dg«      dd¬«       t        t        j                  |j                  dgg«      |j                  dgg«      «      |j                  d	g«      dd¬«       y )
NrP   rp   ù       €       ÀF)rÆ  r  rÇ  y      @        rL   y              (@)r5   r   r   rY   r  s     r`   Útest_complex_inputz"TestCorrelate2d.test_complex_input¿
  sÎ   € äœ×*Ñ*¨2¯:©:¸°s°eÓ+<¸b¿j¹jÈ2È$ÈÓ>PÓQØŸ
™
 C 5Ó)°uÈ%õ	Qäœ×*Ñ*¨2¯:©:¸°t°fÓ+=¸r¿z¹zÈBÈ4È&Ó?QÓRØŸ
™
 D 6Ó*¸È5õ	Räœ×*Ñ*¨2¯:©:¸°t°fÓ+=¸r¿z¹zÈAÈ3È%Ó?PÓQØŸ
™
 C 5Ó)°uÈ%ö	Qrb   N)r  r  r  r@   r   r   rÐ  r  r   rÒ  rÖ   rÖ  r  rb   r`   rÊ  rÊ  Œ
  sž   „ á�v×'Ñ'Ó(ñ@ó )ð@ñ  ˜dÔ#Ù�v×)Ñ)Ó*ñGó +ó $ðGñ  ˜dÔ#Ù�v×)Ñ)Ó*ñ
Tó +ó $ð
Tñ �v×)Ñ)Ó*ñQó +ñQrb   rÊ  c            
       ó  — e Zd Zd„ Z edd¬«      d„ «       Z edd¬«      ej                  j                  d	g d
¢g d¢ddgfg d¢dgg d¢fddgg d¢g d¢fg«      d„ «       «       Z	d„ Z
ej                  j                  dddg«      d„ «       Zy)ÚTestLFilterZIc                 ól  — t        j                  t        d¬«      5  t        |j	                  d«      d¬«       ddd«       t        j                  t        d¬«      5  t        d|j	                  d«      ¬«       ddd«       t        j                  t        d¬«      5  t        d|j                  g d¢«      ¬«       ddd«       t        j                  t        d	¬«      5  t        d|j                  g d
¢«      ¬«       ddd«       y# 1 sw Y   ŒÎxY w# 1 sw Y   ŒšxY w# 1 sw Y   ŒdxY w# 1 sw Y   yxY w)z&Raise all exceptions in `lfilter_zi`. z'^Numerator `b` and Denominator `a` mustrA  rK   rP   )r^   r]   Nz$^First coefficient of parameter `a` r˜  z^Filter not stable due to sum)r©   rP   rº  rQ   )rœ  r   rº   r   rä  rY   r  s     r`   Útest_exceptionszTestLFilterZI.test_exceptionsÌ
  sá   € ä�]‰]œ:Ð-VÔWñ 	*Ü˜"Ÿ&™& ›) qÕ)÷	*ä�]‰]œ:Ð-VÔWñ 	*Ü˜!˜rŸv™v a›yÕ)÷	*ä�]‰]œ:Ð-SÔTñ 	5Ü˜˜bŸj™jªÓ3Õ4÷	5ä�]‰]œ:Ð-LÔMñ 	:Ü˜˜bŸj™jªÓ8Õ9÷	:ð 	:÷	*ð 	*ú÷	*ð 	*ú÷	5ð 	5ú÷	:ð 	:ús/   œDÁDÂDÃD*ÄDÄDÄD'Ä*D3Tzlist inputs are numpy specificrx   c                 ób   — |j                  ddg«      }t        g d¢g d¢«      }t        ||«       y )Nr™  rc  ©r½  r  rb  ©r½  rc  r  )rY   r   r:   )r[   r\   Úzi_expectedrÃ  s       r`   Útest_array_likezTestLFilterZI.test_array_like×
  s+   € à—j‘j # t Ó-ˆÜšÒ)9Ó:ˆÜ! " kÕ2rb   r“  zFutureWarning emittedrH   zb, a, zi_expected,rÜ  rÝ  r™  rc  rd  r½  )r§  r‡  re  r§  )r  g      Àg      Àc                 ó2  ‡— ˆfd„|||fD «       \  }}}t        ||«      }t        ||«       t        ||‰j                  d«      |¬«      d   }‰j	                  |«      ‰j	                  |«      z  }‰j                  |t        |«      ¬«      }t        ||«       y )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrö  )rY   r±  s     €r`   rO  z+TestLFilterZI.test_basic.<locals>.<genexpr>ã
  s   øè ø€ ÒJ°˜RŸZ™Z¨Ÿ^ÑJùs   ƒr(  rÂ  r   )Ú
fill_value)r   r:   r   ri  ÚsumÚ	full_likerx  )	r[   r^   r]   rÞ  r\   rÃ  rr   râ  r  s	       `    r`   ra   zTestLFilterZI.test_basicÝ
  sŒ   ø€ ó K°q¸!¸[Ð6IÔJÑˆˆ1ˆkä˜˜1ÓˆÜ! " kÔ2ä�A�q˜"Ÿ'™' !›*¨Ô,¨QÑ/ˆà—V‘V˜A“Y §¡¨£Ñ*ˆ
Ø—\‘\ !´°jÓ0A�\ÓBˆ
Ü! ! ZÕ0rb   c                 ó¨   — |j                  g d¢«      }|j                  g d¢«      }t        ||«      }t        d|z  d|z  «      }t        ||d¬«       y )N)rb  r¤   rM   )r½  rP   r¤   rQ   r  r  )rY   r   r4   )r[   r\   r^   r]   rþ  Úzi2s         r`   Útest_scale_invariancez#TestLFilterZI.test_scale_invarianceî
  sL   € ð �J‰J’{Ó#ˆØ�J‰J’{Ó#ˆÜ˜˜AÓˆÜ˜˜1™˜a ™cÓ"ˆÜ˜˜S uÖ-rb   r¨   râ   rã   c                 ó´   — t        ||«      }|j                  d|¬«      }|j                  dg|¬«      }t        j                  ||«      j
                  |k(  sJ ‚y )Nr¤   r§   rP   )rŠ  r•  rY   r   r   r¨   )r[   r¨   r\   r^   r]   s        r`   r�  zTestLFilterZI.test_types÷
  sU   € ä˜˜EÓ"ˆØ�H‰H�a ˆHÓ&ˆØ�J‰J˜�s %ˆJÓ(ˆÜ× Ñ   AÓ&×,Ñ,°Ò5Ð5Ñ5rb   N)r  r  r  rÚ  r  rß  rœ  r�  rž  ra   rç  r�  r  rb   r`   rØ  rØ  É
  s¸   „ ò	:ñ ˜dÐ+KÔLñ3ó Mð3ñ
 �lÐ+BÔCØ‡[�[×ÑÐ1Ú	š>¨b°#¨YÐ7Ú	˜B˜5ª^Ð<Ø
ˆbˆÒ+ª^Ð<ð3>ó ?ñ
1ó	?ó Dð

1ò.ð ‡[�[×Ñ˜W y°)Ð&<Ó=ñ6ó >ñ6rb   rØ  c                   óÜ   — e Zd ZdZ	 	 dd„Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d	„ «       Z ed
d¬«      d„ «       Z	 ed
d¬«      d„ «       Z
 ed
d¬«      d„ «       Zy)ÚTestFiltFiltÚtfNc	           
      ó  — | j                   dk(  r?t        |Ž \  }	}
|j                  |	«      |j                  |
«      }
}	t        |	|
||||||«      S | j                   dk(  r(t	        |Ž }|j                  |«      }t        |||||«      S y )Nrë  Úsos)Úfiltfilt_kindr   rY   r   r   r&   )r[   Úzpkrq   r‡  rÝ  Úpadlenr�   Úirlenr\   r^   r]   rí  s               r`   r   zTestFiltFilt.filtfilt  s‹   € à×Ñ Ò%Ü˜3�<‰DˆAˆqØ—:‘:˜a“= "§*¡*¨Q£-ˆqˆAÜ˜A˜q ! T¨7°F¸FÀEÓJÐJØ×Ñ 5Ò(Ü˜3�-ˆCØ—*‘*˜S“/ˆCÜ˜s A t¨W°fÓ=Ð=ð )rb   r¢   únegative stridesrH   c                 óv  — t        |«      r%| j                  dk(  rt        j                  d¬«       t	        |j                  g d¢«      |j                  g d¢«      «      }| j                  ||j                  d«      |¬«      }t        |«      rdnd}t        ||j                  d|j                  ¬	«      |¬
«       y )Nrí  úsosfilt works in-placerH   r¼  rW   rÕ  g•Ö&è.1>g6Â‹{ðÍ=r§   rƒ   )r8   rî  rœ  r‰  r(   rY   r   r†   r9   r4   rã   )r[   r\   rï  rÈ   r„   s        r`   ra   zTestFiltFilt.test_basic  s‡   € ä�"Œ:˜$×,Ñ,°Ò5Ü�K‰KÐ7Õ8ä�R—Z‘Z¢
Ó+¨R¯Z©Zº
Ó-CÓDˆØ�m‰m˜C §¡¨2£°2ˆmÓ6ˆÜ˜b”k‰d xˆÜ˜˜RŸY™Y r°·±˜YÓ<À4ÖHrb   c                 óH  — t        |«      r%| j                  dk(  rt        j                  d¬«       d}|j	                  dd|dz   «      }|j                  dt        j                  z  |z  «      }|j                  d	t        j                  z  |z  «      }||z   }t        d
|j                  d«      d¬«      }t        j                  |d   «      j                  «       }d}	t        t        j                  t        j                  |	«      t        j                  |«      z  «      «      }
| j                  |||
|¬«      }t        j                  ||z
  «      j                  «       }|dk  sJ ‚|j                  t        j                   |||z   g«      «      }| j                  |||
d|¬«      }|j"                  |j"                  k(  sJ ‚t        j                  ||z
  «      j                  «       }|dk  sJ ‚| j                  ||j$                  |
d|¬«      }t'        ||j$                  «       y )Nrí  rô  rH   éÐ  r   r½  rP   rR   iô  r¤   ç      À?rï  r	  rð   )rð  r\   rë   ©rð  r‡  r\   )r8   rî  rœ  r‰  rñ  rõ  rò   r  r   rY   r(  r   rn  ÚceilÚlogr   Úvstackr‘  rz  r5   )r[   r\   r%  r  ÚxlowÚxhighrq   rï  ÚrÚepsrú   rr   ÚerrÚx2dÚy2dÚy2dts                   r`   Ú	test_sinezTestFiltFilt.test_sine  s¿  € ä�"Œ:˜$×,Ñ,°Ò5Ü�K‰KÐ7Õ8àˆØ�K‰K˜˜3  q¡Ó)ˆà�v‰v�eœbŸe™e‘m aÑ'Ó(ˆØ—‘�w¤§¡‘¨Ñ*Ó+ˆØ�5‰Lˆä�Q˜Ÿ
™
 5Ó)°%Ô8ˆä�F‰F�3�q‘6‹N×ÑÓ ˆØˆô ”—‘œŸ™˜s›¤b§f¡f¨Q£iÑ/Ó0Ó1ˆð �M‰M˜#˜q¨¨rˆMÓ2ˆä�f‰f�Q˜‘XÓ×"Ñ"Ó$ˆØ�TŠzÐˆzð �j‰jœŸ™ D¨$°©,Ð#7Ó8Ó9ˆØ�m‰m˜C ¨Q°Q¸2ˆmÓ>ˆØ�y‰y˜CŸI™IÒ%Ð%Ð%Ü�f‰f�S˜4‘ZÓ ×$Ñ$Ó&ˆØ�TŠzÐˆzð �}‰}˜S #§%¡%°¸¸bˆ}ÓAˆÜ˜˜TŸV™VÕ$rb   c           
      óà  — t        |«      r%| j                  dk(  rt        j                  d¬«       t	        j
                  d«      j                  ddd«      }|j                  |«      }t        d|j                  d	«      d
¬«      }| j                  ||dd|¬«      }| j                  ||j                  t	        j                  |dd«      «      dd|¬«      }t        ||j                  t	        j                  |dd«      «      «       | j                  ||j                  t	        j                  |dd«      «      dd|¬«      }t        ||j                  t	        j                  |dd«      «      «       y )Nrí  rô  rH   g      ”@rR   r  rW   rK   r÷  rï  r	  r   rø  rP   rQ   )r8   rî  rœ  r‰  rò   r†   r…   rY   r   r   r  r5   )r[   r\   rq   rï  r@  rA  rw  s          r`   Ú	test_axiszTestFiltFilt.test_axis>  s+  € ä�"Œ:˜$×,Ñ,°Ò5Ü�K‰KÐ7Õ8ô �I‰IÐ(Ó)×1Ñ1°"°b¸"Ó=ˆØ�J‰J�q‹MˆÜ�Q˜Ÿ
™
 5Ó)°%Ô8ˆØ�]‰]˜3 ¨!°!¸ˆ]Ó;ˆØ�]‰]Ø�—‘œBŸK™K¨¨1¨aÓ0Ó1¸!À!Èð ó 
ˆô 	˜˜BŸJ™J¤r§{¡{°2°q¸!Ó'<Ó=Ô>Ø�]‰]Ø�—‘œBŸK™K¨¨1¨aÓ0Ó1¸!À!Èð ó 
ˆô 	˜˜BŸJ™J¤r§{¡{°2°q¸!Ó'<Ó=Õ>rb   Tz-python scalars in array_namespace are np-onlyrx   c                 óþ   — | j                   dk7  ry t        j                  |j                  ddg«      d|j	                  d|j
                  ¬«      «      }t        ||j	                  d|j
                  ¬«      dd¬«       y )Nrë  r  rP   rR   r§   r‚   rí   )rî  r   r   rY   r†   rã   r4   )r[   r\   rÈ   s      r`   Útest_acoeffzTestFiltFilt.test_acoeffQ  si   € ð ×Ñ Ò%Øä�o‰oØ�J‰J˜˜B�xÓ  ! R§Y¡Y¨r¸¿¹ YÓ%Dó
ˆô 	˜˜RŸY™Y r°·±˜YÓ<À5ÈuÖUrb   z_filtfilt_gust is np-onlyc           
      ó  — | j                   dk7  rt        j                  d«       |j                  ddg«      }|j                  dg«      }|j                  ddg«      }t	        |||«      \  }}}t        |d   d|d   z  d	|d
   z  z   «       t        |d   d	|d   z  d|d
   z  z   «       t        ||j                  |d   d|d   z  z   d|d   z  z   d|d
   z  z   d|d   z  |d   z   d|d   z  z   d|d
   z  z   g«      «       y )Nrë  ú$gust only implemented for TF systemsr½  rb  r  r¶  r   r  r  rP   ç      Ð?r÷  )rî  rœ  r‰  rY   r/   r4   )r[   r\   rq   r^   r]   rr   Úz1Úz2s           r`   Útest_gust_simplezTestFiltFilt.test_gust_simple\  s%  € à×Ñ Ò%Ü�K‰KÐ>Ô?ð �J‰J˜˜S�zÓ"ˆØ�J‰J˜�uÓˆØ�J‰J˜˜T�{Ó#ˆÜ" 1 a¨Ó+‰	ˆˆ2ˆrÜ˜˜1™˜s 1 Q¡4™x¨#¨a°©d©(Ñ2Ô3Ü˜˜1™˜s 1 Q¡4™x¨#¨a°©d©(Ñ2Ô3Ü˜ØŸ
™
 B q¡E¨D°°A±©JÑ$6¸¸aÀ¹d¹Ñ$BÀUÈ1ÈQÉ4ÁZÑ$OØ$(¨¨A©¡J°°A±Ñ$6¸¸qÀ¹t¹Ñ$CÀdÈ1ÈQÉ4ÁiÑ$Oð$Qó Rõ	
rb   c                 óÂ   — | j                   dk7  rt        j                  d«       |j                  d«      }d}d}t	        |||d¬«      }||z  dz  |z  }t        ||«       y )	Nrë  r
  rW   rd  rb  Úgustr€   rQ   )rî  rœ  r‰  r†   r   r4   )r[   r\   rq   r^   r]   rr   rÇ   s          r`   Útest_gust_scalarszTestFiltFilt.test_gust_scalarsm  sc   € ð ×Ñ Ò%Ü�K‰KÐ>Ô?ð �I‰I�b‹MˆØˆØˆÜ�Q˜˜1 VÔ,ˆØ�a‘C˜!‘8˜a‘<ˆÜ˜˜8Õ$rb   )r©   ÚoddNry  NN)r  r  r  rî  r   r  ra   r  r  r  r  r  r  rb   r`   rê  rê  ÿ
  sÈ   „ à€Mà>BØ.2ó	>ñ �gÐ&8Ô9ñIó :ðIñ �gÐ&8Ô9ñ#%ó :ð#%ñJ �gÐ&8Ô9ñ?ó :ð?ñ$ ˜dØLôNñVóNðVñ ˜dÐ+FÔGñ
ó Hð
ñ  ˜dØLôNñ%óNñ%rb   rê  c                   óJ   — e Zd ZdZ edd¬«       edd¬«      d„ «       «       Zy)	ÚTestSOSFiltFiltrí  rF   rô  rH   r¢   rò  c                 óŠ  — t         j                  j                  d«      j                  d«      }|j	                  |«      }t        dd«      D ]u  }t        j                  |dd¬«      }t        |Ž \  }}t        |Ž }t        |j                  |||f«      \  }}}t        |||«      }t        ||«      }	t        ||	dd	|› �¬
«       Œw y)z1Test equivalence between sosfiltfilt and filtfiltr   r�  rP   rN   çffffffÖ?rï  r	  r  zorder=)r„   Úerr_msgN)rò   ró   rô   rö   rY   r‡   r   r   r   r   r]  r   r&   r4   )
r[   r\   rq   r}  rï  r^   r]   rí  rr   Úy_soss
             r`   Útest_equivalencez TestSOSFiltFilt.test_equivalence�  sº   € ô �I‰I×!Ñ! !Ó$×*Ñ*¨4Ó0ˆØ�J‰J�q‹MˆÜ˜1˜a“[ò 	LˆEÜ—-‘-  t°EÔ:ˆCÜ˜3�<‰DˆAˆqÜ˜3�-ˆCä˜BŸJ™J¨¨A¨s¨Ó4‰IˆAˆq�#Ü˜˜A˜qÓ!ˆAÜ  QÓ'ˆEÜ˜A˜u¨5¸FÀ5À'Ð:JÖKñ	Lrb   N)r  r  r  rî  r  r  r  rb   r`   r  r  }  s4   „ à€Má�kÐ*BÔCÙ�gÐ&8Ô9ñLó :ó DñLrb   r  c                 óÄ  — d„ }t        t        |«      t        | «      «      dz
  }t        | |«      }t        j                  |d| j                  «       |z  || d j                  «       |z  f«      }t        ||| ||fdddddd¬	«	      }|\  }}	}
}}|d
kD  rt        d|› �«      ‚|d| }||d }t        | ||ddd…   |¬«      d
   ddd…   }t        | |||¬«      d
   }|||fS )aQ  
    An alternative implementation of filtfilt with Gustafsson edges.

    This function computes the same result as
    `scipy.signal._signaltools._filtfilt_gust`, but only 1-d arrays
    are accepted.  The problem is solved using `fmin` from `scipy.optimize`.
    `_filtfilt_gust` is significantly faster than this implementation.
    c                 óR  — t        t        |«      t        |«      «      dz
  }| d| }| |d }t        ||||¬«      d   }t        |||ddd…   |¬«      d   ddd…   }t        |||ddd…   |¬«      d   ddd…   }	t        |||	|¬«      d   }
t        j                  ||
z
  dz  «      }|S )z-Objective function used in filtfilt_gust_opt.rP   NrÂ  r   r©   rQ   )r   rD  r   rò   rã  )Úicsr^   r]   rq   ÚmÚz0fÚz0br@  Úy_fbÚy_bÚy_bfÚvalues               r`   Úfiltfilt_gust_opt_funcz1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_func›  sÃ   € ä”�A“œ˜A›Ó !Ñ#ˆØ�"�1ˆgˆØ�!�"ˆgˆÜ�a˜˜A #Ô& qÑ)ˆÜ�q˜!˜S¡ 2 ™Y¨3Ô/°Ñ2±4°R°4Ñ8ˆä�a˜˜A™d ˜d™G¨Ô,¨QÑ/±°"°Ñ5ˆÜ�q˜!˜S SÔ)¨!Ñ,ˆÜ—‘˜˜t™ aÑ'Ó(ˆØˆrb   rP   Nr   r  r  TF)rþ   ÚxtolÚftolÚmaxfunÚmaxiterÚfull_outputÚdispr   z3minimization failed in filtfilt_gust_opt: warnflag=r©   rÂ  )	r   rD  r   rò   r›  rÈ  r   r#  r   )r^   r]   rq   r$  r  rÃ  r  rl  ÚoptÚfoptÚniterÚfuncallsÚwarnflagr  r  r!  rr   s                    r`   Úfiltfilt_gust_optr0  ’  s  € òô 	ŒC�‹F”C˜“FÓ˜aÑ€AÜ	�A�qÓ	€BÜ
�.‰.˜!˜B˜Q˜%Ÿ*™*›, r™/¨1¨a¨R¨S¨6¯;©;«=¸Ñ+;Ð<Ó
=€CÜÐ(¨#°Q¸¸1°IØ 5Ø¨Ø"¨ô0€Fð ,2Ñ(€Cˆˆu�h Ø�!‚|ÜØAÀ(ÀÐLó
ð 	
ð ˆbˆqˆ'€CØ
ˆaˆbˆ'€Cô �!�Q˜™$˜B˜$™ CÔ
(¨Ñ
+©D¨b¨DÑ
1€CÜ��1�c˜cÔ" 1Ñ%€Aàˆc�3ˆ;Ðrb   c                 óX  — t         j                  j                  d«      }|j                  |«      }t	        | |||d|¬«      }t        | ||||¬«      \  }}	}
t        j                  ||d«      }|j                  d d }t        j                  |«      }t        t        |«      t        | «      «      dz
  }t        j                  ||fz   «      }t        j                  ||fz   «      }t        |D �cg c]  }t        |«      ‘Œ c}Ž D ]  }t        | |||   «      \  ||<   ||<   ||<   Œ! t        j                  |d|«      }t        j                  |d|«      }t        j                  |d|«      }t        ||dd¬	«       t        ||dd¬	«       t        |	|dd¬	«       t        |
|dd¬	«       y c c}w )
Nr
  r  )r‡  r�   rñ  )r‡  rñ  r©   rP   rñ   rï  rí   )rò   ró   r  r  r   r/   r  r‘  Ú
empty_liker   rD  r©  r   r‡   r0  r4   )r^   r]   r‘  r‡  rñ  rÿ   rq   rr   ÚygÚzg1Úzg2ÚxxÚ	out_shaperÛ  r  Úzo1Úzo2r    Úindxs                      r`   Úcheck_filtfilt_gustr;  ¿  s‡  € ä
�)‰)×
Ñ
 Ó
$€CØ×Ñ˜EÓ"€Aô 	��A�q˜t¨F¸%Ô@€Aô " ! Q¨°¸EÔB�L€BˆˆSô
 
�‰�Q˜˜bÓ	!€BØ—‘˜˜"�€IÜ	�‰�rÓ	€BÜŒC�‹F”C˜“FÓ˜aÑ€AÜ
�(‰(�9 ˜tÑ#Ó
$€CÜ
�(‰(�9 ˜tÑ#Ó
$€CÜ¨IÖ6 qœ% �(Ò6Ð7ò KˆÜ):¸1¸aÀÀDÁÓ)JÑ&ˆˆ4‰�#�d‘)˜S šYðKä	�‰�R˜˜TÓ	"€BÜ
�+‰+�c˜2˜tÓ
$€CÜ
�+‰+�c˜2˜tÓ
$€Cä�A�r ¨4Õ0Ü�B˜ ¨DÕ1Ü�C˜ 4¨dÕ3Ü�C˜ 4¨dÖ3ùò 7s   Ã-F'rR   c                 ó´  — dD �]R  }dD ]­  }d\  }}}t        j                  j                  |f|z  Ž }t        j                  j                  |f|z  Ž }t        |||¬«      }||k(  sJ ‚t        |||d¬«      \  }	}
|	dv sJ ‚t	        |
t
        «      sJ ‚d|
j                  «       v rd	|
j                  «       v rŒ­J ‚ d
}dD ]M  }t        t         |«      sŒt        j                  ||¬«      }|j                  «       }t        |||¬«      d	k(  rŒMJ ‚ t        j                  dgt         j                  ¬«      }|j                  «       }t        |||¬«      d	k(  r�ŒSJ ‚ y )Nr–  )rP   rQ   )r¤   rN   r   rf   T)rg   Úmeasure>   r
   r   r
   r   rR   ©Ú
complex256Ú
complex192r§   l         @ )rò   ró   rö   r   r«  ÚdictÚkeysrZ  ri  r	  r“  rÜ   )r\   rg   rí  rú   r¼  Útrue_methodrq   r/  r�   Ú
method_tryÚtimesÚnot_fft_conv_supps               r`   Útest_choose_conv_methodrG  ß  sb  € ð *ó ?ˆØò 	FˆDØ .ÑˆAˆq�+Ü—	‘	—‘ 1 $¨¡+Ð/ˆAÜ—	‘	—‘ 1 $¨¡+Ð/ˆAä'¨¨1°4Ô8ˆFØ˜[Ò(Ð(Ð(ä 2°1°a¸dÈDÔ QÑˆJ˜ØÐ!2Ñ2Ð2Ð2Ü˜e¤TÔ*Ð*Ð*Ø˜EŸJ™J›LÑ(¨X¸¿¹»Ò-EÐEÐEð	Fð ˆØ!=ò 	GÐÜ”rÐ,Õ-Ü—G‘G˜AÐ%6Ô7�Ø—F‘F“H�Ü)¨!¨Q°TÔ:¸hÓFÐFÐFð		Gô �H‰H�e�W¤B§H¡HÔ-ˆØ�F‰F‹HˆÜ! ! Q¨TÔ2°hÔ>Ð>Ð>ñ/?rb   c                 óº   — dD ]V  }d}dD ]M  }t        t        |«      sŒt        j                  ||¬«      }|j                  «       }t	        |||¬«      dk(  rŒMJ ‚ ŒX y )Nr–  rR   r>  r§   rf   r   )rZ  rò   ri  r	  r   )r\   rg   rú   rF  rq   r/  s         r`   Útest_choose_conv_method_2rI  ü  sh   € à)ò GˆØˆØ!=ò 	GÐÜ”rÐ,Õ-Ü—G‘G˜AÐ%6Ô7�Ø—F‘F“H�Ü)¨!¨Q°TÔ:¸hÓFÐFÐFñ		GñGrb   c            	      óþ  — t        j                  ddddd¬«      \  } }}d}t        j                  t        j                  |«      «      }t        t        j                  t        j                  |«      t        j                  |«      z  «      «      }t        | ||«      \  }}d |fD ]?  }d|z  }	t        |||	fd	|«       t        d«      D ]  }
g d
¢}|	||
<   t        ||||
|«       Œ ŒA d|z  dz
  }t        |||fd	|«       y )NrK   ç{®Gáz„?éx   gffffff¶?rï  r	  r   rM   r   r¥   rQ   r
  )r   Úelliprò   r   r(  rn  rù  rú  r   r;  r‡   )rs   Úpr¼  rÿ  rþ  Úapprox_impulse_lenr^   r]   rñ  Ú
signal_lenr‡  r‘  Úlengths                r`   Útest_filtfilt_gustrR    s  € ô �l‰l˜1˜d C¨¸Ô>�G€A€qˆ!ð €CÜ
�‰Œr�v‰v�a‹yÓ€AÜœRŸW™W¤R§V¡V¨C£[´2·6±6¸!³9Ñ%<Ó=Ó>Ðä�!�Q˜‹?�D€A€qØÐ*Ð+ò 
:ˆØÐ+Ñ+ˆ
ô 	˜A˜q : -°°EÔ:ô ˜!“Hò 	:ˆDÚˆEØ$ˆE�$‰KÜ  1 e¨T°5Õ9ñ	:ð
:ð Ð!Ñ! BÑ&€FÜ˜˜1˜v˜i¨Ð,>Õ?rb   c                   óü   — e Zd Zd„ Zd„ Zd„ Zd„ Z edd¬«      d„ «       Z edd¬«      d	„ «       Z	 edd¬«      d
„ «       Z
 edd¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Z edd¬«      d„ «       Z edd¬«      d„ «       Zy)ÚTestDecimatec                 ó®   — |j                  d«      }t        t        t        j                  |dd¬«       t        t        t        j                  |dd¬«       y )NrW   r  rP   )Úqrú   rQ   )r†   r¹   r–  r   Údecimate©r[   r\   rq   s      r`   Útest_bad_argszTestDecimate.test_bad_args'  s7   € Ø�I‰I�b‹MˆÜ”i¤§¡°!°s¸aÕ@Ü”i¤§¡°!°q¸CÖ@rb   c                 óÀ   — |j                  d«      }t        j                  |dddd¬«      j                  «       }t	        ||d d d…   j                  t        «      «       y )NrW   rQ   rP   ÚiirF©rú   ÚftypeÚ
zero_phase©r†   r   rW  Úroundr5   rø   rx  ©r[   r\   rq   rr   s       r`   Útest_basic_IIRzTestDecimate.test_basic_IIR,  óI   € Ø�I‰I�b‹MˆÜ�O‰O˜A˜q A¨U¸uÔE×KÑKÓMˆÜ˜˜1™S˜q˜S™6Ÿ=™=¬Ó/Õ0rb   c                 óÀ   — |j                  d«      }t        j                  |dddd¬«      j                  «       }t	        ||d d d…   j                  t        «      «       y )NrW   rQ   rP   ÚfirFr\  r_  ra  s       r`   Útest_basic_FIRzTestDecimate.test_basic_FIR1  rc  rb   c                 óÎ   — |j                  d«      }t        j                  |ddd¬«      }|j                  dk(  sJ ‚t        j                  |ddd¬«      }|j                  dk(  sJ ‚y )	N)r™   r™   rQ   r   F)r‡  r^  )rq  r™   rP   )r™   rq  )r•  r   rW  r‘  )r[   r\   rs   Úd0Úd1s        r`   Ú
test_shapezTestDecimate.test_shape6  s\   € à�H‰H�XÓˆÜ�_‰_˜Q ¨°eÔ<ˆØ�x‰x˜8Ò#Ð#Ð#Ü�_‰_˜Q ¨°eÔ<ˆØ�x‰x˜8Ò#Ð#Ñ#rb   Tztest code is NumPy specificrx   c                 ó²   — t        j                  «       5  t        j                  ddt        «       | j	                  dd¬«       d d d «       y # 1 sw Y   y xY w)Nr@  úBadly conditioned filterre  F©r�   r^  ©rE  rF  rG  r)   Ú_test_phaseshiftr  s     r`   Útest_phaseshift_FIRz TestDecimate.test_phaseshift_FIR>  sQ   € ä×$Ñ$Ó&ñ 	BÜ×#Ñ#ØÐ4´oôGà×!Ñ!¨¸5Ð!ÔA÷	B÷ 	Bñ 	Búó   •/AÁAc                 ó²   — t        j                  «       5  t        j                  ddt        «       | j	                  dd¬«       d d d «       y # 1 sw Y   y xY w)Nr@  rl  re  Trm  rn  r  s     r`   Útest_zero_phase_FIRz TestDecimate.test_zero_phase_FIRE  sQ   € ä×$Ñ$Ó&ñ 	AÜ×#Ñ#ØÐ4´oôGà×!Ñ!¨¸4Ð!Ô@÷	A÷ 	Añ 	Aúrq  c                 ó*   — | j                  dd¬«       y )Nr[  Frm  ©ro  r  s     r`   Útest_phaseshift_IIRz TestDecimate.test_phaseshift_IIRL  s   € à×Ñ U°uÐÕ=rb   c                 ó*   — | j                  dd¬«       y )Nr[  Trm  ru  r  s     r`   Útest_zero_phase_IIRz TestDecimate.test_zero_phase_IIRP  s   € à×Ñ U°tÐÕ<rb   c           	      ó,  — d}g d¢}d}t        j                  ||z  dz   «      t        |«      z  }t        j                  |«      dz  dz  }t        j                  dt         j
                  z  |d d …t         j                  f   z  |z  «      t        j                  j                  |j                  d«      z  }|D �]X  }	||	z  }
t        j                  |	|z  dz   «      t        |	«      z  }t        j                  dt         j
                  z  |d d …t         j                  f   z  |z  «      t        j                  j                  |j                  d«      z  }|d	k(  r5d
}t        j                  t        j                  |dz   d|
z  d¬«      d«      }nU|dk(  rPd}dt         j
                  z  |
z  }t        j                  t        j                  |d|t         j
                  z  «      Ž }|du r^t        j                  j                  |j                   ||z  dz  t         j
                  z  «      \  }}|t        j"                  |«      z  }nt        j$                  |«      }t        j&                  |j(                  |
|¬«      }t        j*                  |j-                  «       |z  d¬«      }|t        j"                  |«      z  }|d|	z  k  }t        j.                  |j-                  «       |z  «      |   }t1        |t        j2                  |«      dd¬«       �Œ[ y )NrL  )rq  r	  r™   r8  r  rP   çš™™™™™é?rQ   rp   çš™™™™™¹?re  r™   r½  rë  rÖ  r[  r¤   gš™™™™™©?F©r]  r^  r©   r†  r  rï   r[  )rò   r†   rx  r“  ry  r  r  r   ÚwindowsÚtukeyrç   Údltir  Úcheby1Úfreqzræ  Údenr(  r>  rW  ró  rã  r±  Úangler4   r´  )r[   r�   r^  r%  r&  Út_totr  r'  r    r(  rV  r)  Úd_tosrú   ÚsystemÚwcÚ_Úh_respsr+  Ú	h_resampsÚsubnyqrl  s                         r`   ro  zTestDecimate._test_phaseshiftT  s„  € àˆÚ#ˆàˆÜ�I‰I�d˜5‘j ‘lÓ#¤e¨D£kÑ1ˆô —‘˜Ó" SÑ(¨1Ñ,ˆÜ�V‰V�FœRŸU™U‘N Uª1¬b¯j©j¨=Ñ%9Ñ9¸AÑ=Ó>Ü�~‰~×#Ñ# A§F¡F¨CÓ0ñ1ˆð  ó #	2ˆGØ˜‘ˆAÜ—9‘9˜W U™]¨1™_Ó-´°g³Ñ>ˆDÜ—V‘V˜F¤R§U¡U™N¨U²1´b·j±j°=Ñ-AÑAÀDÑHÓIÜ—~‘~×+Ñ+¨D¯I©I°sÓ;ñ<ˆEð ˜ŠØ�ÜŸ™¤V§]¡]°1°q±5¸"¸q¹&Ø:Cô&EØFHóJ‘à˜5’Ø�ØœŸ™‘Y˜q‘[�ÜŸ™¤f§m¡m°A°t¸RÄÇÁ¹XÓ&FÐG�ð ˜UÑ"Ü#Ÿ\™\¨&¯*©*°f·j±jØ*/°©*°Q©,´r·u±uÑ*<ó>‘
��7àœ2Ÿ6™6 '›?Ñ*‘äŸ,™, uÓ-�äŸ™¨¯©°°1¸FØ3=ô?ˆIô Ÿ™˜uŸz™z›|¨iÑ7¸bÔAˆIØœŸ™ 	Ó*Ñ*ˆIØ˜S ™[Ñ(ˆFô —X‘X˜gŸl™l›n¨YÑ6Ó7¸Ñ?ˆFÜ˜F¤B§M¡M°&Ó$9Ø!%¨D÷2ñE#	2rb   c                 ó¼  — d}d}|j                  |«      |z  }|j                  |j                  d|z  «      |j                  d|j                  z  |dz  z  |z  «      z  «      }t        |j                  |j                  |«      «      |j                  d«      dd¬	«       t        j                  |d
d¬«      }|j                  |j                  |«      «      dk  sJ ‚y )Ng      Y@r�  rb  rQ   g      >@r½  rï   F)rî   Úcheck_0dr™   re  )r]  rK  )	r†   rY   Úsqrtrõ  r  r4   Údotr   rW  )r[   r\   Úsfreqrú   r  rq   Úx_outs          r`   Útest_auto_nzTestDecimate.test_auto_n†  s¹   € ð ˆØˆØ�I‰I�a‹L˜5Ñ ˆà�J‰J�r—w‘w˜r A™v“¨¯©°°B·E±E±	¸UÀS¹[Ñ0IÈAÑ0MÓ)NÑNÓOˆô 	˜Ÿ™ §¡ a£Ó)¨2¯:©:°b«>ÀÈuÕUÜ—‘  2¨UÔ3ˆØ�w‰w�u—y‘y Ó'Ó(¨4Ò/Ð/Ñ/rb   c                 óž   — t        j                  |j                  d|j                  ¬«      d«      }t	        |j                  |«      «      rJ ‚y )Nr  r§   rR   )r   rW  ri  râ   rù   ÚisnanrX  s      r`   Útest_long_float32zTestDecimate.test_long_float32”  s>   € ô �O‰O˜BŸG™G F°"·*±*˜GÓ=¸rÓBˆÜ�r—x‘x “{Ô#Ð#Ð#Ð#rb   c                 óÈ   — t        j                  t        j                  dt        j                  ¬«      d«      }|j
                  j                  t        j                  k(  sJ ‚y )Nr  r§   rR   )r   rW  rò   ri  rá   r¨   r«  rã   )r[   rq   s     r`   Útest_float16_upcastz TestDecimate.test_float16_upcastš  s;   € ä�O‰OœBŸG™G C¬r¯z©zÔ:¸BÓ?ˆØ�w‰w�|‰|œrŸz™zÒ)Ð)Ñ)rb   r  c                 ó  — d}d}d}t        j                  d|j                  d|j                  z  |z  dz  «      d|¬«      \  }}}|j	                  t
        «      |j                  |j                  d|j                  z  |z  |z  «      «      z  }|j	                  t
        «      |j                  |j                  d|j                  z  |z  |z  «      «      z  }t        j                  |||«      }|j                  d«      |z  }	|j                  d|j                  z  |z  |	z  «      d	|j                  d
|j                  z  |z  |	z  «      z  z   }
t        j                  |
d|d¬«      }t        j                  g t        j                  |||«      ¢|
‘­Ž d d d…   }t        ||«       t        j                  |
d|d¬«      }t        j                  g t        j                  |||«      ¢|
‘­Ž d d d…   }t        ||dd¬«       y )Nr
  rM   ç     @�@rQ   rï  )r¶  Úfsrp   r  r  rÕ  Fr|  Tr   ç‚vIhÂ%<=rí   )r   r   rY   r  rø   ro  ry  r  r†   rW  r   r   r5   r   r4   )r[   r\   ÚfcentreÚfwidthrš  rs   rN  r¼  r†  r  ré   ÚynzpÚynzprefÚyzpÚyzprefs                  r`   Útest_complex_iir_dltiz"TestDecimate.test_complex_iir_dltiŸ  sØ  € ð ˆàˆàˆä—-‘-  2§:¡:¨a°·±©g°f©n¸QÑ.>Ó#?Ø',°ô5‰ˆˆ1ˆaà�H‰H”WÓ §¡ r§z¡z°"°r·u±u±*¸wÑ2FÀrÑ2IÓ'JÓ KÑKˆØ�H‰H”WÓ §¡ r§z¡z°"°r·u±u±*¸wÑ2FÀrÑ2IÓ'JÓ KÑKˆÜ—‘˜Q  1Ó%ˆà�I‰I�c‹N˜RÑˆð �V‰V�B˜Ÿ™‘J Ñ(¨1Ñ,Ó-Ø�R—V‘V˜C "§%¡%™K¨'Ñ1°AÑ5Ó6Ñ6ñ7ˆô �‰˜q !¨6¸eÔDˆÜ—.‘.ð $¤&§-¡-°°1°aÓ"8ð $Ø!"ò$Ù$' a Cñ)ˆô 	˜˜gÔ&ä�o‰o˜a ¨&¸TÔBˆÜ—‘ð $¤&§-¡-°°1°aÓ"8ð $Ø!"ò$Ù$' a Cñ)ˆô 	˜˜V¨%°eÖ<rb   c                 ó  — d}d}d}d}t        j                  ||dz  |¬«      }t        j                  |«      }|t        j                  dt        j
                  z  |z  |z  «      z  }|d   t        j                  |«      z  }	t        j                  |	d	«      }
t        j                  d
«      |z  }t        j                  dt        j
                  z  |z  |z  «      dt        j                  dt        j
                  z  |z  |z  «      z  z   }t        j                  |d|
d¬«      }t        j                  |	|d	d¬«      d d }t        ||«       t        j                  |d|
d¬«      }t        j                  |d	d|	¬«      }t        ||«       y )Nr
  rM   r™  r	  rQ   )rš  rp   r   rP   r  r  rÕ  Fr|  )r,  r-  r  TrÖ  )r   r  rò   Úrootsry  r  Úpolyr  r†   rW  Úupfirdnr5   rã  )r[   r\   rœ  r�  rš  ÚnumtapsÚbbaseÚzbaseÚzrotÚbzr†  r  ré   rž  rŸ  r   r¡  s                    r`   Útest_complex_fir_dltiz"TestDecimate.test_complex_fir_dltiÁ  sU  € ð ˆàˆàˆØˆô —‘˜g v¨a¡x°BÔ7ˆô —‘˜“ˆØ”r—v‘v˜b¤2§5¡5™j¨7Ñ2°2Ñ5Ó6Ñ6ˆà�1‰XœŸ™ ›Ñ%ˆä—‘˜R Ó#ˆä�I‰I�c‹N˜RÑˆô �V‰V�BœŸ™‘J Ñ(¨1Ñ,Ó-Ø”R—V‘V˜C¤"§%¡%™K¨'Ñ1°AÑ5Ó6Ñ6ñ7ˆô �‰˜q !¨6¸eÔDˆÜ—.‘.  Q¨1°1Ô5°d°sÐ;ˆä˜˜gÔ&ä�o‰o˜a ¨&¸TÔBˆÜ×%Ñ% a¨¨A°bÔ9ˆä˜˜VÕ$rb   N)r  r  r  rY  rb  rf  rj  r  rp  rs  rv  rx  ro  r’  r•  r—  r¢  r¬  r  rb   r`   rT  rT  %  sÛ   „ òAò
1ò
1ò
$ñ ˜dÐ+HÔIñBó JðBñ ˜dÐ+HÔIñAó JðAñ ˜dÐ+HÔIñ>ó Jð>ñ ˜dÐ+HÔIñ=ó Jð=ò02òd0ò$ò*ñ
 ˜d¨6Ô2ñ=ó 3ð=ñB ˜d¨6Ô2ñ"%ó 3ñ"%rb   rT  c                   ól   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  dddg«      d„ «       Z
y	)
ÚTestHilbertc                 ó¢   — |j                  dg«      }t        t        t        |«       |j	                  d«      }t        t        t        |d¬«       y )NrÅ   rÓ  r   ©r¢  )rY   r¹   rº   r   r†   rX  s      r`   rY  zTestHilbert.test_bad_argsé  s9   € Ø�J‰J˜
�|Ó$ˆÜ”j¤'¨1Ô-Ø�I‰I�c‹NˆÜ”j¤'¨1°Ö2rb   c           	      óJ  — d}|j                   }|j                  dd|z  |dz  |j                  ¬«      }|j                  |«      }|j	                  |«      }|j                  d|z  «      }|j	                  d|z  «      }|j                  ||||g«      }	t        |	«      }
|j                  |
«      }|j                  |j                  |
«      |j                  |
«      «      }|j                  |
«      }t        ||	|«       t        ||j                  |	j                  «      |«       t        |dd d…f   |j                  | dz  |dz  |dz  |j                  ¬«      |«       t        |dd d…f   |j                  d||dz  |j                  ¬«      |«       t        |dd d…f   |j                  | dz  |dz  |dz  |j                  ¬«      |«       t        |dd d…f   |j                  d||dz  |j                  ¬«      |«       t        |j                  |
dd d …f   «      ||«       y )	Nr•  r   rQ   rÑ  r§   rP   rÐ  rK   )r  r†   rã   rõ  rò  rô  r   r(  Úatan2r¯  ró  r;   ri  r‘  )r[   r\   rÅ  r  r  r?  Úa1Úa2Úa3r]   r/  Úh_absÚh_angleÚh_reals                 r`   Útest_hilbert_theoreticalz$TestHilbert.test_hilbert_theoreticalï  s  € àˆà�U‰UˆØ�I‰I�a˜˜R™  c¡°·±ˆIÓ<ˆØ�V‰V�A‹YˆØ�V‰V�A‹YˆØ�V‰V�A˜‘E‹]ˆØ�V‰V�A˜‘E‹]ˆØ�H‰H�b˜"˜b "Ð%Ó&ˆä�A‹JˆØ—‘�q“	ˆà—(‘(˜2Ÿ7™7 1›: r§w¡w¨q£zÓ2ˆØ—‘˜“ˆô 	˜F A wÔ/ä˜E 2§7¡7¨1¯7©7Ó#3°WÔ=ô 	˜G A t¨ t GÑ,ØŸI™I r c¨A¡g¨r°A©v°r¸C±xÀrÇzÁz˜IÓRØ#ô	%ô
 	Ø�A�t˜�t�GÑ˜bŸi™i¨¨2¨r°C©x¸r¿z¹z˜iÓJÈGô	Uô 	˜G A t¨ t GÑ,ØŸI™I r c¨A¡g¨r°A©v°r¸C±xÀrÇzÁz˜IÓRØ#ô	%ô 	Ø�A�t˜�t�GÑ˜bŸi™i¨¨2¨r°C©x¸r¿z¹z˜iÓJÈGô	Uô 	˜BŸG™G A aª d¡GÓ,¨b°'Õ:rb   c                 ó  — |j                  |j                  d|j                  ¬«      d«      }t        |d¬«      }t	        t        |j
                  d¬«      |j
                  «       t        t        |dd d …f   «      |dd d …f   d«       t        |dd¬	«      }|j                  d
k(  sJ ‚t        |j
                  dd¬	«      j                  dk(  sJ ‚t        j                  g d¢«      }|j                  |«      }t        |dd d …f   |dd¬«       y )Nrm  r§   )rK   rN   r©   r†  r   r•  r	  )r¢  r‡  )rK   r	  )r	  rK   )y        Bm}¶Ä…û¿y      ð?ðãâa Àyûÿÿÿÿÿÿ?¥®0fÓóÀy      @Wëa©94ô¿y      @"nÈWñ¿y      @‡hûIX@yš™™™™™™<ÃnmÑèÃ@yåFˆ8›¼ûO2k{…ï?yœ™™™™™©¼Ú‰o�íPõ?yÎÌÌÌÌÌ¼¼ùYC›à?y433333£<c4¸Qõeå?yðÈ’40¡¼òŒ³p$Î?yœ™™™™™©¼E¥SÐUÒ?yffffff¶<‚?Žüó7 ?y433333£<wE¶oÿ¼“¿y�!5P±¼àÐ{Ø3'Å¿y        _úN@Õ¿yš™™™™™¹<Ú}§ØÙ¿yš™™™™™™<§‚-cè¿yåFˆ8›<“Á2OW\é¿zN regression)r  )r…   r†   rã   r   r5   rz  r;   r‘  rò   r“  rY   )r[   r\   r]   ÚaaÚaanÚa0hilbs         r`   Útest_hilbert_axisNzTestHilbert.test_hilbert_axisN  sé   € à�J‰J�r—y‘y ¨2¯:©:�yÓ6¸Ó?ˆä�Q˜RÔ ˆÜœ §¡¨!Ô,¨b¯d©dÔ3äœG A aª d¡GÓ,¨b°²A°©h¸Ô;ô �a˜2 BÔ'ˆØ�y‰y˜GÒ#Ð#Ð#Ü�q—s‘s˜b qÔ)×/Ñ/°7Ò:Ð:Ð:ô —‘ò Fó Gˆð( —‘˜FÓ#ˆÜ˜C ¢1 ™I v¨r¸>ÖJrb   c                 ó   — |j                  |j                  d|j                  ¬«      d«      }t        |d¬«      }dD ]?  }t        |j	                  |d|«      |¬«      }|j	                  ||d«      }t        ||«       ŒA y )Néi   r§   )rK   rM   r–   r©   r†  r³  )r…   r†   rã   r   r  r5   )r[   r\   r]   r»  r‡  Úaaps         r`   Útest_hilbert_axis_3dz TestHilbert.test_hilbert_axis_3d?  ss   € Ø�J‰J�r—y‘y °"·*±*�yÓ=¸yÓIˆä�Q˜RÔ ˆØò 	%ˆDÜ˜"Ÿ+™+ a¨¨TÓ2¸Ô>ˆCØ—+‘+˜c 4¨Ó,ˆCÜ˜B Õ$ñ	%rb   r¨   râ   rã   c                 ó”   — t        ||«      }|j                  d|¬«      }|j                  t        |«      «      j                  |k(  sJ ‚y )Nr¤   r§   )rŠ  r•  ró  r   r¨   r‹  s       r`   Útest_hilbert_typeszTestHilbert.test_hilbert_typesH  sB   € ä˜˜EÓ"ˆØ—8‘8˜A U�8Ó+ˆØ�w‰w”w˜xÓ(Ó)×/Ñ/°5Ò8Ð8Ñ8rb   N)r  r  r  rY  r¹  r¾  rÂ  rœ  r�  rž  rÄ  r  rb   r`   r®  r®  æ  sC   „ ò3ò(;òT$KòL%ð ‡[�[×Ñ˜W y°)Ð&<Ó=ñ9ó >ñ9rb   r®  c                   óœ  — e Zd ZdZ edd¬«      d„ «       Zd„ Z edd¬	«      d
„ «       Zej                  j                  dddg«      d„ «       Zd„ Zd„ Zej                  j                  dg d¢«       edd¬	«      d„ «       «       Zej                  j                  dg d¢«      d„ «       Zej                  j                  dddg«      ej                  j                  dddg«      ej                  j                  dddg«      ej                  j                  dg d ¢«       edd!¬	«      d"„ «       «       «       «       «       Z edd!¬	«      d#„ «       Zy$)%ÚTestHilbert2z!Test function `signal.hilbert2`. Túlist inputs are numpy-specificrx   c                 ó&   — t        g d¢g d¢g«       y )NrO   r•   )r   r  s     r`   rß  zTestHilbert2.test_array_likeS  s   € ä’)šYÐ'Õ(rb   c                 óL  — |j                  |j                  d«      d«      }t        j                  t        d¬«      5  t        |j                  dgg«      «       ddd«       t        j                  t        d¬«      5  t        |d¬	«       ddd«       t        j                  t        d
¬«      5  t        |d¬	«       ddd«       t        j                  t        d
¬«      5  t        |d¬	«       ddd«       y# 1 sw Y   Œ�xY w# 1 sw Y   ŒxxY w# 1 sw Y   ŒSxY w# 1 sw Y   yxY w)z$Raise all exceptions in `hilbert2`. r—   rg  z^x must be real.rA  rÅ   Nz^N must be positive.r©   r°  z#^When given as a tuple, N must holdr  r³  )r…   r†   rœ  r   rº   r   rY   rX  s      r`   rY  zTestHilbert2.test_bad_argsW  sâ   € à�J‰J�r—y‘y “} fÓ-ˆÜ�]‰]œ:Ð-?Ô@ñ 	1Ü�R—Z‘Z *  Ó/Ô0÷	1ä�]‰]œ:Ð-CÔDñ 	Ü�Q˜"Õ÷	ä�]‰]œ:Ð-RÔSñ 	%Ü�Q˜)Õ$÷	%ä�]‰]œ:Ð-RÔSñ 	"Ü�Q˜&Õ!÷	"ð 	"÷	1ð 	1ú÷	ð 	ú÷	%ð 	%ú÷	"ð 	"ús/   ½C6Á=DÂ.DÃDÃ6C?ÄDÄDÄD#r‘   z,CuPy's hilbert2 does not have axes= argumentrH   c                 ó:  — |j                  |j                  d«      d«      }t        j                  t        d¬«      5  t        |d¬«       d d d «       t        j                  t        d¬«      5  t        |d¬«       d d d «       y # 1 sw Y   Œ;xY w# 1 sw Y   y xY w)	Nr—   rg  z!^axes must be a tuple of length 2rA  r  r¨  z"^axes must contain 2 distinct axesr²  )r…   r†   rœ  r   rº   r   rX  s      r`   Útest_bad_args2zTestHilbert2.test_bad_args2c  s{   € à�J‰J�r—y‘y “} fÓ-ˆÜ�]‰]œ:Ð-PÔQñ 	(Ü�Q˜YÕ'÷	(ä�]‰]œ:Ð-QÔRñ 	%Ü�Q˜VÕ$÷	%ð 	%÷	(ð 	(ú÷	%ð 	%ús   ½BÁ.BÂBÂBr¨   râ   rã   c                 ó¬   — t        ||«      }|j                  d|¬«      }|j                  t        j                  |«      «      }|j
                  |k(  sJ ‚y )N)rQ   rU   r§   )rŠ  r•  ró  r   r   r¨   )r[   r¨   r\   rŒ  rÈ   s        r`   Útest_hilbert2_typesz TestHilbert2.test_hilbert2_typesk  sI   € ä˜˜EÓ"ˆØ—8‘8˜G¨5�8Ó1ˆØ�g‰g”f—o‘o hÓ/Ó0ˆØ�y‰y˜EÒ!Ð!Ñ!rb   c                 óê   — |j                  g d¢«      }t        j                  |j                  |d«      «      }t        j                  |j                  |d«      «      }t	        ||j
                  «       y)zNeeded for 100% coverage )r  r½  r½  r  rc  rc  )rN   rP   ©rP   rN   N)rY   r   r   r…   r4   rz  )r[   r\   rq   Úx0aÚx1as        r`   Útest_1d_inputzTestHilbert2.test_1d_inputr  sQ   € à�J‰JÒ1Ó2ˆÜ�o‰o˜bŸj™j¨¨FÓ3Ó4ˆÜ�o‰o˜bŸj™j¨¨FÓ3Ó4ˆÜ˜˜SŸU™UÕ#rb   c                 ór   — |j                  d«      }t        |d¬«      }t        |d¬«      }t        ||«       y)z%Compare passing tuple to single int. r†  rL   r°  rg  N)r•  r   r5   )r[   r\   rq   Úx0_aÚx1_as        r`   Útest_parameter_NzTestHilbert2.test_parameter_Ny  s2   € à�H‰H�VÓˆÜ˜˜QÔˆÜ˜˜VÔ$ˆÜ˜˜dÕ#rb   r‘  ))rL   rM   )rM   rL   rg  r†  z)Bug in cupy implementation, see cupy#9396c                 óÒ  — |j                  ||j                  ¬«      }t        j                  |«      d   j	                  d«      }|j                  t        j                  |«      «      }t        |«      }t        j                  |«      }t        d|d   dz   dz  «      t        |d   dz   dz  d«      }}t        d|d   dz   dz  «      t        |d   dz   dz  d«      }
}	d}t        |||	f   |||	f   d	z  |¬
«       t        |d|	f   |d|	f   dz  |¬
«       t        ||df   ||df   dz  |¬
«       t        |d   |d   |¬
«       |||
f   }t        ||j                  |«      |¬
«       y)z8Compare desired and calculated values in Fourier space. r§   r²  r–   rP   r   rQ   Nr  rL   rƒ   )ri  r­   ÚxpxÚatÚaddró  rÿ  Úifft2r   Úfft2rŸ  r4   r´  )r[   r‘  r\   Úx_frq   Úx_asÚx_as_fÚf0_posÚf0_negÚf1_posÚf1_negr„   Úzz_as_fs                r`   Útest_quadrant_valuesz!TestHilbert2.test_quadrant_values€  sp  € ð �g‰g�e 2§=¡=ˆgÓ1ˆÜ�f‰f�S‹k˜$Ñ×#Ñ# AÓ&ˆØ�G‰G”F—L‘L Ó%Ó&ˆä˜‹{ˆÜ—‘˜TÓ"ˆô ˜q 5¨¡8¨a¡<°AÑ"5Ó6¼¸uÀQ¹xÈ!¹|ÐPQÑ>QÐSWÓ8X�ˆÜ˜q 5¨¡8¨a¡<°AÑ"5Ó6¼¸uÀQ¹xÈ!¹|ÐPQÑ>QÐSWÓ8X�ˆàˆÜ˜˜v v˜~Ñ.°°F¸F°NÑ0CÀaÑ0GÈdÕSÜ˜˜q &˜yÑ)¨3¨q°&¨y©>¸AÑ+=ÀDÕIÜ˜˜v q˜yÑ)¨3¨v°q¨y©>¸AÑ+=ÀDÕIÜ˜˜t™ c¨$¡i°dÕ;Ø˜ ˜Ñ(ˆÜ˜ §¡¨wÓ!7¸dÖCrb   c                 óN  — |d   dz  }|d   dz  }|j                  |«      }t        j                  |«      |dz
  |dz   f   j                  d«      }t        j                  |«      |dz   |dz
  f   j                  d«      }t	        j
                  |«      }|j                  t	        j                  |«      «      }|j                  t        |«      «      dkD  sJ ‚t        |«      }t        ||j                  |«      |j                  |j                  «      j                  dz  ¬«       y)	zaTest that a real signal with Z[-p,-q] == np.conj(Z[p,q])
        produces a zero analytic signal.r   rQ   rP   r½  r  r—   rƒ   N)r•  rØ  rÙ  Úsetrÿ  Ú	ifftshiftró  rÛ  rã  r(  r   r4   r´  r‘  r¨   rÿ  )r[   r‘  r\   Úc0Úc1rÝ  rq   rÞ  s           r`   Útest_zero_analytic_signalz&TestHilbert2.test_zero_analytic_signal˜  sõ   € ð �1‰X˜‰]ˆØ�1‰X˜‰]ˆØ�h‰h�u‹oˆÜ�f‰f�S‹k˜"˜q™& " q¡&˜.Ñ)×-Ñ-¨cÓ2ˆÜ�f‰f�S‹k˜"˜q™& " q¡&˜.Ñ)×-Ñ-¨cÓ2ˆÜ×Ñ˜sÓ#ˆØ�G‰G”F—L‘L Ó%Ó&ˆØ�v‰v”c˜!“f‹~ Ò#Ð#Ð#Ü˜‹{ˆÜ˜˜bŸm™m¨DÓ1¸¿¹ÀÇÁÓ8L×8PÑ8PÐQSÑ8SÖTrb   Úsh0rL   rM   Úsh1rN   r–   Úsh2r¤   r(  Únot_axisr  z,cupy implementation does not have axes kwargc                 óR  — |j                  |j                  ||z  |z  |j                  ¬«      |||f«      }g d¢}|j                  |«       t	        ||¬«      }|j                  ||¬«      }	|	D �
cg c]  }
t	        |
«      ‘Œ }}
|j                  ||¬«      }t        ||«       yc c}
w )z?2d transform on 3d array is equal to 2d transform on 2d slices.r§   r  r¨  r†  N)r…   r†   rã   Úpopr   Úunstackrô  r4   )r[   rì  rí  rî  rï  r\   rq   Útransform_axesÚx_as_3dÚpartsrN  Úx_as_2ds               r`   Útest_3d_vs_slicezTestHilbert2.test_3d_vs_slice§  s�   € ð �J‰J�r—y‘y  s¡¨S¡¸¿
¹
�yÓCÀcÈ3ÐPSÀ_ÓUˆÚ"ˆØ×Ñ˜8Ô$Ü˜1 >Ô2ˆØ—
‘
˜1 8�
Ó,ˆØ(-Ö. 1”8˜A•;Ð.ˆÐ.Ø—(‘(˜7¨�(Ó2ˆÜ˜ Õ)ùò /s   Á0B$c                 óp  — |j                  |j                  d|j                  ¬«      d«      }t        |«      }|j	                  |dd«      }t        |d¬«      }|j	                  |dd«      }t        ||«       |j	                  |dd«      }t        |d	¬«      }|j	                  |dd«      }t        ||«       y
)z72d transform on equal arrays with moved axis are equal.i;  r§   )rM   r–   r(  r   rP   )r   rQ   r¨  rQ   r³  N)r…   r†   rã   r   r  r4   )r[   r\   rê  Úx0_asr  Úx1_asr  Úx2_ass           r`   Útest_3d_axis_orderzTestHilbert2.test_3d_axis_order·  s¢   € ð �Z‰Z˜Ÿ	™	 )°2·:±:˜	Ó>À	ÓJˆÜ˜“ˆà�[‰[˜˜Q Ó"ˆÜ˜ &Ô)ˆØ—‘˜E 1 aÓ(ˆÜ˜˜uÔ%à�[‰[˜˜Q Ó"ˆÜ˜ &Ô)ˆØ—‘˜E 1 aÓ(ˆÜ˜˜uÕ%rb   N)r  r  r  Ú__doc__r  rß  rY  rË  rœ  r�  rž  rÍ  rÒ  rÖ  rå  rë  r÷  rü  r  rb   r`   rÆ  rÆ  O  sƒ  „ á+á˜dÐ+KÔLñ)ó Mð)ò
"ñ �fÐ%SÔTñ%ó Uð%ð ‡[�[×Ñ˜W y°)Ð&<Ó=ñ"ó >ð"ò$ò$ð ‡[�[×Ñ˜WÒ&FÓGÙ�fÐ%PÔQñDó Ró HðDð, ‡[�[×Ñ˜WÒ&FÓGñUó HðUð ‡[�[×Ñ˜U Q¨ FÓ+Ø‡[�[×Ñ˜U Q¨ FÓ+Ø‡[�[×Ñ˜U Q¨ FÓ+Ø‡[�[×Ñ˜ZªÓ3Ù�fÐ%SÔTñ	*ó Uó 4ó ,ó ,ó ,ð
	*ñ �fÐ%SÔTñ&ó Uñ&rb   rÆ  c                   óŽ  — e Zd ZdZed„ «       Zd„ Z edd¬«      d„ «       Z edd¬«      e	j                  j                  dg d	¢d
g d¢g d¢fg d¢dg d¢g d¢fg d¢dg d¢g d¢fg d¢dg d¢g d¢fg d¢dg d¢g d¢fg d¢dg d¢g d¢fg d¢dg d¢g d¢fg«      d„ «       «       Z edd¬«      e	j                  j                  dg d¢dg d¢g d¢fg d ¢d!g d¢g d"¢fg d#¢d!g d$¢g d%¢fg«      d&„ «       «       Z edd¬«      d'„ «       Z edd¬«      d(„ «       Z edd¬«      e	j                  j                  d)g d*¢g d+¢g«      d,„ «       «       Zd-„ Zy.)/ÚTestEnvelopez4Unit tests for function `._signaltools.envelope()`. c                 ól   — t        |«      |j                  k(  rdddœndddœ}	 t        | |fi |¤d|i¤Ž y )Nr  r[  rð   r  )r>   rã   r4   )rk  rø  rH  r\   Úa_r_tols        r`   Úassert_closezTestEnvelope.assert_closeÌ  sF   € ô ' rÓ*¨b¯j©jÒ8ð "¨5Ò1à!%¨tÑ4ð 	ð
 	HÜ˜ Ñ@¨7Ñ@¸CÔ@rb   c                 ó  — t        j                  t        d¬«      5  t        t	        j
                  d«      d¬«       ddd«       t        j                  t        d¬«      5  t        |j                  d«      d	¬«       ddd«       d
D ]e  }dj                  t        t        |«      «      }t        j                  t        d|› d�¬«      5  t        |j                  d«      |¬«       ddd«       Œg t        j                  t        d¬«      5  t        |j                  d«      d¬«       ddd«       dD ]B  }t        j                  t        d¬«      5  t        |j                  d«      |¬«       ddd«       ŒD t        j                  t        d¬«      5  t        |j                  d«      d¬«       ddd«       y# 1 sw Y   �Œ|xY w# 1 sw Y   �ŒIxY w# 1 sw Y   �ŒTxY w# 1 sw Y   Œ¸xY w# 1 sw Y   ŒÂxY w# 1 sw Y   yxY w)z[For `envelope()` Raise all exceptions that are used to verify function
        parameters. z'Invalid parameter axis=2 for z.shape=.*rA  rK   rQ   r†  Nz&z.shape\[axis\] not > 0 for z.shape=.*)rK   r   rP   )r  )r   rb  )Nrb  z, zbp_in=\(z\) isn't a 2-tuple of.*rL   )Úbp_inz)n_out=10.0 is not a positive integer or.*r  )r;  ))r©   rK   rò  )r   rR   z&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .*Ú	undefined©Úresidual)	rœ  r   rº   r   rò   ri  Újoinr]  r¬  )r[   r\   r  Útss       r`   Ú test_envelope_invalid_parametersz-TestEnvelope.test_envelope_invalid_parametersÖ  s°  € ô �]‰]œ:Ø!KôMñ 	)ä”R—W‘W˜Q“Z aÕ(÷	)ô �]‰]œ:Ø!JôLñ 	.ä�R—W‘W˜V“_¨1Õ-÷	.ð 6ò 	2ˆEØ—‘œ3œs E›?Ó+ˆBÜ—‘œzØ(0°°Ð4KÐ%LôNñ 2ô ˜Ÿ™ ›¨5Õ1÷2ð 2ð	2ô �]‰]œ:Ø!LôNñ 	,ô �R—W‘W˜Q“Z sÕ+÷	,ð 0ò 	2ˆEÜ—‘œzØ%NôPñ 2ä˜Ÿ™ ›¨5Õ1÷2ð 2ð	2ô �]‰]œ:Ð-MÔNñ 	7ä�R—W‘W˜Q“Z¨+Õ6÷	7ð 	7÷)	)ñ 	)ú÷	.ñ 	.ú÷
2ñ 2ú÷	,ð 	,ú÷
2ð 2ú÷	7ð 	7úsG   œ!F7Á GÃGÄ
GÅG*ÆG6Æ7GÇGÇG	ÇG'Ç*G3	Ç6G?rF   zXXX: immutable arraysrH   c           
      ód  — t        |«      }||j                  k(  r|j                  n|j                  }|j	                  g d¢|¬«      }|j	                  g d¢|¬«      }t        j                  |«      }|j                  d   }|j                  t        |ddd¬«      «      \  }}	| j                  t        j                  |«      |j	                  g d	¢|¬«      d
|¬«       | j                  t        j                  |	«      |j	                  g d¢|¬«      d|¬«       |j                  t        |ddd¬«      «      \  }
}| j                  |
dz  |d|¬«       | j                  ||	d|¬«       |j                  t        |dddd|z  ¬«      «      \  }}| j                  |ddd…   |d|¬«       | j                  |ddd…   |	d|¬«       |j                  t        |ddd¬«      «      \  }}| j                  ||d|¬«       | j                  t        j                  |«      |j	                  g d¢|¬«      d|¬«       t        |ddd¬«      }| j                  ||d|¬«       |j	                  |d¬«      }|ddxxx dz  ccc t        j                  ||¬«      }| j                  |j                  |«      |d|¬«       |j                  t        |ddd¬«      «      \  }}| j                  ||j                  ||«      d |¬«       | j                  t        j                  |«      |j	                  ||¬«      d!|¬«       y)"zEEnsure that the various parametrizations produce compatible results. )re  rQ   rQ   rK   r   r§   )re  r   r   rN   r   r   r   r   r   rà  ÚallT©r  Úsquared©rL   rQ   r   r   r   úEnvelope calculation error©rH  r\   )rL   r   r   rK   r   úResidual calculation errorFrQ   z3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrK   )r  r  r;  Nz(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorÚlowpassz/`residual='lowpass'` envelope calculation error)rL   r   r   r   r   z/`residual='lowpass'` residual calculation errorz*`residual=None` envelope calculation errorr  rP   )rú   zReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)r>   râ   rä   r­   rY   rÿ  Úirfftr‘  rò  r   r  ÚrfftÚifftró  rø   r
   )r[   r\   rö  r÷  ÚZÚZr_ars   rú   Úze2_0Úzr_0Úze_1Úzr_1Úze2_2Úzr_2Úze2_3Úzr_3Úze2_4ÚZ_aÚz_aÚze2_aÚzr_as                        r`   Útest_envelope_verify_parametersz,TestEnvelope.test_envelope_verify_parametersñ  s6  € ô   Ó#ˆØ# r§z¡zÒ1ˆr�|Š|°r·}±}ˆà�J‰JÒ(°ˆJÓ5ˆØ�z‰zÒ4¸DˆzÓAˆÜ�L‰L˜‹OˆØ�G‰G�A‰Jˆð —j‘j¤¨!¨V¸eÈTÔ!RÓS‰ˆˆtØ×Ñœ&Ÿ+™+ eÓ,ØŸ*™*¢_¸D˜*ÓAØ:¸rð 	ô 	Cð 	×Ñœ&Ÿ+™+ dÓ+ØŸ*™*¢_¸D˜*ÓAØ:¸rð 	ô 	Cð —Z‘Z¤¨¨F¸UÈEÔ RÓS‰
ˆˆdØ×Ñ˜$ ™' 5ØSØð 	ô 	!ð 	×Ñ˜$ ØSØð 	ô 	!ð —j‘jÜ�Q˜¨¸ÀAÀaÁCÔHó
‰ˆˆtð 	×Ñ˜%¡ ! ™* eØHÈRð 	ô 	Qà×Ñ˜$™s ˜s™) TØHÈRð 	ô 	Qð —j‘j¤¨!¨V¸iÐQUÔ!VÓW‰ˆˆtØ×Ñ˜% ØOÐTVð 	ô 	Xà×Ñœ&Ÿ+™+ dÓ+ØŸ*™*¢_¸D˜*ÓAØOÐTVð 	ô 	Xô ˜˜F¨T¸4Ô@ˆØ×Ñ˜% ØJÈrð 	ô 	Sð �j‰j˜ ˆjÓ&ˆØˆAˆB‹�1‰‹Ü�k‰k˜# Ô#ˆØ×Ñ˜"Ÿ'™' #›,¨Ø?ÀBð 	ô 	Hà—j‘j¤¨#¨vÀÈtÔ!TÓU‰ˆˆtØ×Ñ˜% §¡¨5°$Ó!7ØBÀrð 	ô 	Kà×Ñœ&Ÿ*™* TÓ*¨B¯J©J°tÀ4¨JÓ,HØBÀrð 	õ 	Krb   z@               Z,        bp_in,     Ze2_desired,      Zr_desired)rP   r   rQ   rQ   r   )rP   Nr  ©rP   r   r   r   r   )rL   r   rQ   r   r   )r   Nr™  )rL   r   r   rQ   r   ©NN)r   r   rQ   rQ   r   rà  )rQ   r   r   r   r   )r   r   r   rQ   r   )rL   r   rQ   rQ   r   )éýÿÿÿrK   )rL   r   rK   rL   r   )NrP   )r   r   rK   rL   r   rž  c                 óº  — |j                  ||j                  ¬«      }|j                  ||j                  ¬«      }|j                  ||j                  ¬«      }t        j                  |«      }|j	                  t        ||dd¬«      «      \  }}|j	                  t        ||dd¬«      «      \  }	}
d„ |||	|
fD «       \  }}}}|j                  ||j                  ¬«      }|j                  ||j                  ¬«      }| j                  ||d|¬«       | j                  ||d	|¬«       |d
   �d||d
   d | j                  ||d|¬«       | j                  ||d|¬«       y)a  Test envelope calculation with real-valued test signals.

        The comparisons are performed in the Fourier space, since it makes evaluating
        the bandpass filter behavior straightforward. Note that also the squared
        envelope can be easily calculated by hand, if one recalls that coefficients of
        a complex-valued Fourier series representing the signal can be directly
        determined by an FFT and that the absolute square of a Fourier series is again
        a Fourier series.
        r§   r  Tr  r  c              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­wrö  ©rÿ  r  ©rM  Úz_s     r`   rO  z:TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>G  s   è ø€ Ò!U°b¤&§+¡+¨b§/Ñ!Uùó   ‚!z+Envelope calculation error (residual='all')r  z+Residual calculation error (residual='all')rP   Nr   z/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))rY   rã   rÿ  r  rò  r   r­   r  )r[   r  r  ÚZe2_desiredÚ
Zr_desiredr\   rs   Úze2ÚzrÚze2_lpÚzr_lpÚZe2ÚZrÚZe2_lpÚZr_lps                  r`   Útest_envelope_real_signalsz'TestEnvelope.test_envelope_real_signals,  sj  € ð( �J‰J�q §
¡
ˆJÓ+ˆØ—j‘j °B·J±J�jÓ?ˆØ—Z‘Z 
°"·*±*�ZÓ=ˆ
ä�L‰L˜‹OˆØ—*‘*œX a¨¸ÈÔMÓN‰ˆˆRØŸ
™
¤8¨A¨u¸yÐRVÔ#WÓX‰ˆ�Ù!U¸SÀ"ÀfÈeÐ<TÔ!UÑˆˆR�˜à—j‘j °B·M±M�jÓBˆØ—Z‘Z 
°"·-±-�ZÓ@ˆ
Ø×Ñ˜#˜{ØKÐPRð 	ô 	Tà×Ñ˜"˜jØKÐPRð 	ô 	Tð �‰8ÐØ$%ˆJ�u˜Q‘x�yÐ!Ø×Ñ˜& +ØOÐTVð 	ô 	Xà×Ñ˜% ØOÐTVð 	õ 	Xrb   zG               Z,        bp_in,         Ze2_desired,         Zr_desired)r   rM   r   rM   r   ©rM   r   rR   r   rM   )rP   rM   r   rM   rQ   ©r©   rQ   ©rP   r   r   r   rQ   )rP   rQ   rN   r   rN   rK   )r   rN   r   rW   r   rN   )rP   rQ   r   r   r   rK   c                 ó´  — |j                  ||j                  ¬«      }|j                  ||j                  ¬«      }|j                  ||j                  ¬«      }t        j                  t        j
                  |«      «      }|j                  t        ||dd¬«      «      \  }}d„ ||fD «       \  }	}
| j                  |	|d|¬«       | j                  |
|d|¬«       y	)
zßTest envelope calculation with complex-valued test signals.

        We only need to test for the complex envelope here, since the ``Nones``s in the
        bandpass filter were already tested in the previous test.
        r§   r  Tr  c              3   ól   K  — | ],  }t        j                  t        j                  |«      «      –— Œ. y ­wrö  ©rÿ  Úfftshiftr
   r-  s     r`   rO  z=TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>j  s!   è ø€ ÒG°r”6—?‘?¤6§:¡:¨b£>×2ÑGùs   ‚24r  r  r  N)	rY   rã   r­   rÿ  r  rè  rò  r   r  )r[   r  r  r0  r1  r\   rs   r2  r3  r6  r7  s              r`   Útest_envelope_complex_signalsz*TestEnvelope.test_envelope_complex_signalsW  sÈ   € ð �J‰J�q §
¡
ˆJÓ+ˆØ—j‘j °B·M±M�jÓBˆØ—Z‘Z 
°"·-±-�ZÓ@ˆ
ä�K‰Kœ×(Ñ(¨Ó+Ó,ˆØ—*‘*œX a¨¸ÈÔMÓN‰ˆˆRÙG¸cÀ2¸YÔG‰ˆˆRà×Ñ˜#˜{Ø:¸rð 	ô 	Cà×Ñ˜"˜jØ:¸rð 	õ 	Crb   c                 ó¬  — t        |«      }||j                  k(  r|j                  n|j                  }t	        j
                  |j                  g d¢g d¢g|¬«      «      }|j                  g d¢g d¢g|¬«      }|j                  g d¢g d¢g|¬«      }|j                  t        |dd	¬
«      «      \  }}|j                  t        |j                  dd¬
«      «      \  }	}
d„ ||	j                  ||
j                  fD «       \  }}}}| j                  ||d|¬«       | j                  ||d|¬«       | j                  ||d|¬«       | j                  ||d|¬«       y)z.Test for multi-channel envelope calculations. )r½  r   rQ   rQ   r   )r–   r   rL   rL   r   r§   r  )r—   r¤   r   r   r   r'  )r–   r   r   r   r   TrP   )r  r‡  r   c              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­wrö  r,  r-  s     r`   rO  zCTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>~  s   è ø€ ÒO°œFŸK™K¨ŸOÑOùr/  ú2d envelope calculation errorr  ú2d residual calculation errorú"Transposed 2d envelope calc. errorú"Transposed 2d residual calc. errorN)r>   râ   rä   r­   rÿ  r  rY   rò  r   rz  r  )r[   r\   rö  r÷  rs   r0  r1  r2  r3  Úye2TÚyrTr6  ÚYe2r7  ÚYrs                  r`   Ú#test_envelope_verify_axis_parameterz0TestEnvelope.test_envelope_verify_axis_parameterq  sK  € ô   Ó#ˆØ# r§z¡zÒ1ˆr�|Š|°r·}±}ˆä�L‰L˜Ÿ™Ò%6ºÐ$HÐPT˜ÓUÓVˆØ—j‘j¢/Ò3CÐ!DØ'+ð !ó -ˆà—Z‘Z¢²/Ð BÈ$�ZÓOˆ
à—*‘*œX a°¸AÔ>Ó?‰ˆˆRØ—J‘Jœx¨¯©°TÀÔBÓC‰	ˆˆcÙO°s¸D¿F¹FÀBÈÏÉÐ6NÔOÑˆˆS�"�bà×Ñ˜#˜{Ð0OÐTVÐÔWØ×Ñ˜"˜jÐ/NÐSUÐÔVØ×ÑØ�Ð"FÈ2ð 	ô 	
ð 	×ÑØ�
Ð DÈð 	õ 	
rb   c                 óö  — t        |«      }||j                  k(  r|j                  n|j                  }|j	                  g d¢g d¢g|¬«      }t        j                  t        j                  |d¬«      «      }|j	                  g d¢g d¢g|¬«      }|j	                  g d¢g d¢g|¬«      }t        d	d
d¬«      }|j                  t        |fddi|¤Ž«      \  }	}
|j                  t        |j                  fddi|¤Ž«      \  }}d„ |	|j                  |
|j                  fD «       \  }}}}| j                  ||d|¬«       | j                  ||d|¬«       | j                  ||d|¬«       | j                  ||d|¬«       y)zBTest for multi-channel envelope calculations with complex values. )r½  rM   r   rM   rQ   )rP   rR   r   rR   rQ   r§   rP   r¨  r;  )r	  r   r8  r   r	  r=  r<  r  T)r  r  r  r‡  r   c              3   óp   K  — | ].  }t        j                  t        j                  |«      d ¬«      –— Œ0 y­w)rP   r¨  Nr@  r-  s     r`   rO  zKTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>–  s0   è ø€ ò @Ø "ô #ŸO™O¬F¯J©J°r«NÀ×CÐCñ @ùs   ‚46rE  r  rF  rG  rH  N)r>   râ   rä   r­   rY   rÿ  r  rè  rA  rò  r   rz  r  )r[   r\   rö  r÷  Úinprs   ÚZe2_desÚZr_desÚkwr2  r3  rI  rJ  r6  rK  r7  rL  s                    r`   Ú+test_envelope_verify_axis_parameter_complexz8TestEnvelope.test_envelope_verify_axis_parameter_complex‰  sv  € ô   Ó#ˆØ# r§z¡zÒ1ˆr�|Š|°r·}±}ˆØ�j‰jÒ+Ò->Ð?ÀtˆjÓLˆÜ�K‰Kœ×(Ñ(¨°1Ô5Ó6ˆØ—*‘*Ò.Ò0BÐDÈD�*ÓQˆØ—‘š_ªoÐ>Àd�ÓKˆä˜¨%¸Ô>ˆØ—*‘*œX aÑ6¨aÐ6°2Ñ6Ó7‰ˆˆRØ—J‘Jœx¨¯©Ñ:°!Ð:°rÑ:Ó;‰	ˆˆcñ@Ø'*¨D¯F©F°B¸¿¹Ð&>ô@ÑˆˆS�"�bð 	×Ñ˜#˜wÐ,KÐPRÐÔSØ×Ñ˜"˜fÐ*IÈbÐÔQØ×ÑØ�ÐCÈð 	ô 	
ð 	×Ñ˜"˜fÐ+OÐTVÐÕWrb   ÚX)rL   r   r   rP   rQ   )rL   r   r   rQ   rP   rQ   c                 óâ   — |j                  ||j                  ¬«      }t        j                  |«      }|j	                  t        |«      «      }t        |dd¬«      }| j                  ||d|¬«       y)z0Compare output of `envelope()` and `hilbert()`. r§   r(  Nr  z!Hilbert-Envelope comparison errorr  )rY   rã   rÿ  r  r(  r   r   r  )r[   rU  r\   rq   Úe_hilÚe_envs         r`   Útest_compare_envelope_hilbertz*TestEnvelope.test_compare_envelope_hilbert   s`   € ð �J‰J�q §
¡
ˆJÓ+ˆÜ�L‰L˜‹OˆØ—‘”w˜q“zÓ"ˆÜ˜˜L°4Ô8ˆØ×Ñ˜% Ð,OÐTVÐÕWrb   c                 ó°  — t        j                  g d¢«      }t        j                  |d¬«      }t	        |dd¬«      \  }}t	        |dz   dd¬«      \  }}t        |t        j                  d«      d¬«       t        ||d¬«       t        |t        j                  d|j                  ¬	«      d¬«       t        ||j                  |j                  «      d¬«       y
)al  Test behavior when input is a cosine at the Nyquist frequency.

        Resampling even length signals, requires accounting for unpaired bins at the
        Nyquist frequency (consults the source code of `resample`).

        Since `envelope` excludes the Nyquist frequency from the envelope calculation,
        only the residues need to be investigated.
        )r   r   r¤   rN   )ræ  r  )r;  r  rª   r  rƒ   r§   N)
rÿ  r  r   râ  r   r4   rò   r•  r¨   rø   )r[   Úx4Úx6Úy6Úy6_resÚz6Úz6_ress          r`   Útest_nyquistzTestEnvelope.test_nyquistª  sž   € ô �\‰\š)Ó$ˆÜ�_‰_˜R QÔ'ˆÜ˜b¨°EÔ:‰
ˆˆFÜ˜b 2™g¨Q¸Ô?‰
ˆˆFä˜œBŸH™H Q›K¨eÕ4Ü˜ ¨Õ/ä˜œBŸH™H Q¨b¯h©hÔ7¸eÕDÜ˜ §	¡	¨"¯(©(Ó 3¸%Ö@rb   N)r  r  r  rý  Ústaticmethodr  r
  r  r&  rœ  r�  rž  r:  rB  rM  rT  rY  ra  r  rb   r`   rÿ  rÿ  È  s»  „ á>àñAó ðAò7ñ6 �kÐ*AÔBñ8Kó Cð8Kñt �kÐ*AÔBØ‡[�[×ÑØJÚ
˜iªº/Ð	JÚ
˜iªº/Ð	JÚ
˜<ªº/Ð	JÚ
 ªº/Ð	JÚ
 ªº/Ð	JÚ
˜iªº/Ð	JÚ
˜iªº/Ð	Jð	LóMñXóMó CðXñB �kÐ*AÔBØ‡[�[×ÑØQÚ
˜<Ò,<ÂÐ	QÚ
 Ò,<ÂÐ	QÚ
 Ò)<Ò>PÐ	Qð	óñCóó CðCñ& �kÐ*AÔBñ
ó Cð
ñ. �kÐ*AÔBñXó CðXñ, �kÐ*AÔBØ‡[�[×Ñ˜S¢?Ò4FÐ"GÓHñXó Ió CðXóArb   rÿ  c                   ó¶  — e Zd Zedd„«       Zd„ Zd„ Z ee«      d„ «       Z	 ee«      d„ «       Z
 ee«      d„ «       Z ee«      d„ «       Z ee«      d„ «       Z ee«      d	„ «       Z eee«      d
„ «       Z eee«      d„ «       Z eee«      d„ «       Z ee«      d„ «       Z ee«      d„ «       Z ee«      d„ «       Z ed¬«       eee«      d„ «       «       Zy)ÚTestPartialFractionExpansionc                 óN  — t        | |«      }|j                  |«      }|j                  |«      }|j                  t        |d d …d f   |z
  «      t        | d d …d f   |z
  «      «      }t	        t        |«      «      \  }}t        ||   ||   |¬«       t        | |   ||   |¬«       y )NrÄ  )r?   rY   Úhypotr(  r   rC   r;   )	rþ  rN  Úr_trueÚp_truerÅ  r\   ÚdistanceÚrowsÚcolss	            r`   Úassert_rp_almost_equalz3TestPartialFractionExpansion.assert_rp_almost_equalÀ  sŸ   € ä˜Q Ó"ˆØ—‘˜FÓ#ˆØ—‘˜FÓ#ˆà—8‘8œC ¢! T '¡
¨VÑ 3Ó4Ü ¢! T '¡
¨VÑ 3Ó4ó6ˆô +Ô+<¸XÓ+FÓG‰
ˆˆdÜ˜A˜d™G V¨D¡\¸7ÕCÜ˜A˜d™G V¨D¡\¸7ÖCrb   c                 ó   — t        g d¢g d¢«      \  }}t        |«      dk(  sJ ‚t        |d   t        j                  g d¢«      «       t        |d   t        j                  g d¢«      «       t        |d   t        j                  g d	¢«      «       t        |t        j                  g d
¢«      «       t        g d¢g d¢d¬«      \  }}t        |«      dk(  sJ ‚t        |d   t        j                  g d¢«      «       t        |d   t        j                  g d¢«      «       t        |d   t        j                  g d¢«      «       t        |d   t        j                  g d¢«      «       t        |d   t        j                  g d¢«      «       t        |d   t        j                  g d	¢«      «       t        |t        j                  g d
¢«      «       y )NrO   rá  rK   r   )rQ   rQ   rK   rP   )rP   rP   rP   rK   rQ   )rP   rP   rP   rQ   rQ   )rP   rP   rP   rQ   rQ   rK   T)Úinclude_powersrN   )rP   rP   rQ   rQ   rK   )rP   rQ   rQ   rK   )rP   rP   rP   rQ   rK   rL   rM   )r0   rD  r;   rò   r¥  )r[   Úfactorsr¥  s      r`   Útest_compute_factorsz1TestPartialFractionExpansion.test_compute_factorsÍ  sB  € Ü(ª²IÓ>‰ˆ�Ü�7‹|˜qÒ Ð Ð Ü˜G A™J¬¯©²	Ó(:Ô;Ü˜G A™J¬¯©²Ó(=Ô>Ü˜G A™J¬¯©²Ó(@ÔAÜ˜D¤"§'¡'Ò*<Ó"=Ô>ä(ª²IØ8<ô>‰ˆ�ä�7‹|˜qÒ Ð Ð Ü˜G A™J¬¯©²Ó(@ÔAÜ˜G A™J¬¯©²Ó(=Ô>Ü˜G A™J¬¯©²	Ó(:Ô;Ü˜G A™J¬¯©²Ó(@ÔAÜ˜G A™J¬¯©²Ó(=Ô>Ü˜G A™J¬¯©²Ó(@ÔAÜ˜D¤"§'¡'Ò*<Ó"=Õ>rb   c                 ó`   — t        g d¢dd«      \  }}t        |g d¢«       t        |g d¢«       y )N)r½  gj¼t“ð?g?5^ºIð?rb  g /Ý$ @rd  r{  rS  rY  rá  )r1   r4   )r[   ÚuniqueÚmultiplicitys      r`   Útest_group_polesz-TestPartialFractionExpansion.test_group_polesà  s,   € Ü+Ú0°#°uó >Ñˆ�ä˜¢Ô0Ü˜¢iÕ0rb   c                 óÈ  — t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        ||j                  g d¢«      d¬«       t        ||j                  g d¢«      d¬«       t        ||j                  dg«      d¬«       t        |j                  dd	g«      |j                  g d
¢«      «      \  }}}t        ||j                  d	dg«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  ddg«      |j                  g d¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  ddg«      |j                  g d¢«      «      \  }}}| j	                  ||g d¢g d¢«       |j                  dk(  sJ ‚t        |j                  ddg«      |j                  g d¢«      «      \  }}}| j	                  ||g d¢g d¢«       |j                  dk(  sJ ‚t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       t        ||j                  ddg«      «       t        |j                  dg«      |j                  g d¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  dd g«      «       |j                  dk(  sJ ‚t        |j                  g d!¢«      |j                  g d"¢«      «      \  }}}| j	                  ||g d#¢g d$¢«       |j                  dk(  sJ ‚t        |j                  g d%¢«      |j                  g d&¢«      «      \  }}}| j	                  ||g d'¢g d(¢«       |j                  dk(  sJ ‚t        |j                  ddg«      |j                  g d)¢«      «      \  }}}t        ||j                  dd*g«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  g d+¢«      |j                  g d)¢«      «      \  }}}t        ||j                  dd,g«      «       t        ||j                  ddg«      «       t        ||j                  dg«      «       t        |j                  g d-¢«      |j                  g d)¢«      «      \  }}}t        ||j                  d.d/g«      «       t        ||j                  ddg«      «       t        ||j                  d0d1g«      «       t        |j                  g d+¢«      |j                  g d2¢«      «      \  }}}| j	                  ||g d3¢g d4¢«       |j                  dk(  sJ ‚y )5N©rM   rK   rº  r–   ©r  r   r¤   rK   )gZd;ßOõ?gîëÀ9#Jå¿g&äƒžÍªö¿rL   rÄ  )gà-� ø1Ú¿gþe÷äa¡ò¿gvqà-ù?g      ô¿r  r¤   ©rP   rN   r¤   iôÿÿÿrº  r   rP   )rP   r©   rº  rK   r©   rQ   )rQ   g333333Àg®Gáz®ÿ?g–C‹lçûÙ¿)y      2À     @*Ày      2À     @*@g      B@)y      à?š™™™™™É¿y      à?š™™™™™É?gffffffæ?)rP   rM   r¤   rL   )r©   rP   rK   )r©   rº  rº  )rK   gš™™™™™ñ¿g)\�Âõ(ì?g^ºI+ÀgÅ °rh‘õ?)rP   gffffffæ¿gìQ¸…ëÁ¿gú~j¼t“¨?)r)  rL   rP   )r  g333333Ó¿rz  )rP   rQ   r)  r  ç      Ð¿r)  )rP   r   rÙ  )rP   r   r   r   r©   )rP   y              ø?y       €      ø¿r©   )r©   ù       €      ð¿r¦   rP   )rK   r¤   rN   ©rP   rK   rK   rP   rO   ©r©   r©   r©   )rP   r)  rQ   rM   )rQ   rK   r©   r�  )r–   rQ   rK   r©   rÚ  éE   r–   rV   )rP   r)  rL   rº  )rL   y      ð¿      @y      ð¿      À)rP   ù      ð?      ð¿rm   )r,   rY   r;   rç   rl  ©r[   r\   rþ  rN  r¼  s        r`   Útest_residue_generalz1TestPartialFractionExpansion.test_residue_generalæ  sÂ  € ô ˜"Ÿ*™*¢]Ó3°R·Z±ZÂÓ5NÓO‰ˆˆ1ˆaÜ˜A˜rŸz™zÒ*DÓEÈqÕQÜ˜A˜rŸz™zÒ*DÓEÈqÕQÜ˜A˜rŸz™z¨7¨)Ó4¸aÕ@ä˜"Ÿ*™* b¨! WÓ-¨r¯z©zº)Ó/DÓE‰ˆˆ1ˆaÜ˜A˜rŸz™z¨1¨c¨(Ó3Ô4Ü˜A˜rŸz™z¨2¨r¨(Ó3Ô4Ø�v‰v˜Š{Ðˆ{ä˜"Ÿ*™* a¨ VÓ,¨b¯j©jºÓ.EÓF‰ˆˆ1ˆaÜ˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨2¨q¨'Ó2Ô3Ø�v‰v˜Š{Ðˆ{ä˜"Ÿ*™* a¨ VÓ,ØŸ*™*Ò%<Ó=ó?‰ˆˆ1ˆaà×#Ñ#ØˆqÒ?Ú)ô	+ð �v‰v˜Š{Ðˆ{ä˜"Ÿ*™* a¨ VÓ,¨b¯j©jºÓ.FÓG‰ˆˆ1ˆaØ×#Ñ# A qª*Ú$0ô	2à�v‰v˜Š{Ðˆ{ä˜"Ÿ*™*Ò%CÓDØŸ*™*Ò%<Ó=ó?‰ˆˆ1ˆaä˜A˜rŸz™zª*Ó5Ô6Ü˜A˜rŸz™zÒ*:Ó;Ô<Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2ä˜"Ÿ*™* a S›/¨2¯:©:²jÓ+AÓB‰ˆˆ1ˆaÜ˜A˜rŸz™z¨4°¨-Ó8Ô9Ü˜A˜rŸz™z¨1¨b¨'Ó2Ô3Ø�v‰v˜Š{Ðˆ{ä˜"Ÿ*™*¢ZÓ0°"·*±*Ò=MÓ2NÓO‰ˆˆ1ˆaØ×#Ñ# A qÚ$8Ú$4ô	6ð �v‰v˜Š{Ðˆ{ä˜"Ÿ*™*¢YÓ/°·±ºLÓ1IÓJ‰ˆˆ1ˆaØ×#Ñ# A qª)Ú$0ô	2à�v‰v˜Š{Ðˆ{ä˜"Ÿ*™* a¨ WÓ-¨r¯z©zº*Ó/EÓF‰ˆˆ1ˆaÜ˜A˜rŸz™z¨2¨q¨'Ó2Ô3Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ø�v‰v˜Š{Ðˆ{ä˜"Ÿ*™*¢ZÓ0°"·*±*ºZÓ2HÓI‰ˆˆ1ˆaÜ˜A˜rŸz™z¨2¨r¨(Ó3Ô4Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨1¨#›Ô/ä˜"Ÿ*™*¢]Ó3°R·Z±ZÂ
Ó5KÓL‰ˆˆ1ˆaÜ˜A˜rŸz™z¨3°¨)Ó4Ô5Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨1¨b¨'Ó2Ô3ä˜"Ÿ*™*¢ZÓ0°"·*±*º^Ó2LÓM‰ˆˆ1ˆaØ×#Ñ# A qÒ*CÚ$7ô	9à�v‰v˜Š{Ð‰{rb   c                 ól  — t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        |j                  g d¢«      |j                  g d¢«      «      \  }}	}
t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        ||«       t        ||«       t        ||«       t        ||«       t        ||	«       t        ||«       t        ||«       t        ||
«       t        ||«       y )Nrv  rw  )r   rM   rK   rº  r–   )r   r  r   r¤   rK   )r   r   rM   rK   rº  r–   )r   r   r   r  r   r¤   rK   )r,   rY   r;   ©r[   r\   Úr0Úp0Úk0Úr1Úp1Úk1Úr2Úp2Úk2Úr3Úp3Úk3s                 r`   Útest_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zeros/  sö   € ô ˜RŸZ™ZªÓ6¸¿
¹
Â=Ó8QÓR‰
ˆˆB�Ü˜RŸZ™ZÒ(8Ó9¸2¿:¹:ÂmÓ;TÓU‰
ˆˆB�Ü˜RŸZ™ZªÓ6¸¿
¹
ÒCSÓ8TÓU‰
ˆˆB�Ü˜RŸZ™ZÒ(;Ó<ØŸZ™ZÒ(>Ó?óA‰
ˆˆB�ä˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Õ#rb   c                 ó8  — t        |j                  ddg«      |j                  g d¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  d«      |j                  d«      «      \  }}}|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t	        j
                  t        d¬«      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Nr   rx  rº  r  rP   úDenominator `a` is zero.rA  )r,   rY   r;   rç   rœ  r   rº   r  s        r`   Útest_residue_degeneratez4TestPartialFractionExpansion.test_residue_degenerateA  sé   € ô ˜"Ÿ*™* a¨ VÓ,¨b¯j©jºÓ.CÓD‰ˆˆ1ˆaÜ˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨2¨r¨(Ó3Ô4Ø�v‰v˜Š{Ðˆ{ä˜"Ÿ*™* Q›-¨¯©°A«Ó7‰ˆˆ1ˆaØ�v‰v˜Š{Ðˆ{Ø�v‰v˜Š{Ðˆ{Ø�v‰v˜Š{Ðˆ{ä�]‰]œ:Ð-GÔHñ 	Ü�A�qŒM÷	÷ 	ñ 	ús   Ã:DÄDc           
      ó  — t        |j                  g d¢«      |j                  g d¢«      «      \  }}}| j                  ||g d¢g d¢«       t        ||j                  dg«      «       t        |j                  g d¢«      |j                  g d¢«      «      \  }}}| j                  ||dd	gd
dgd¬«       t        ||j                  dg«      d¬«       t        |j                  ddg«      |j                  g d¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  g d¢«      |j                  g d¢«      «      \  }}}| j                  ||g d¢g d¢«       |j                  dk(  sJ ‚t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  ddg«      «       t        ||j                  ddg«      «       t        |j                  dg«      |j                  g d¢«      «      \  }}}| j                  ||g d ¢g d!¢«       |j                  dk(  sJ ‚t        |j                  ddg«      |j                  t        j                  dd"gdd#g«      «      «      \  }}}t        ||j                  d$d%g«      «       t        ||j                  d&dg«      «       |j                  dk(  sJ ‚t        |j                  g d'¢«      |j                  ddg«      «      \  }}}t        ||j                  dg«      «       t        ||j                  dg«      «       t        ||j                  ddg«      «       t        |j                  d«      |j                  dd(g«      «      \  }}}t        ||j                  dg«      «       t        ||j                  d)g«      «       |j                  dk(  sJ ‚t        |j                  d«      |j                  g d*¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  d«      |j                  g d+¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  d#dg«      «       |j                  dk(  sJ ‚t        |j                  g d,¢«      |j                  g d'¢«      «      \  }}}t        ||j                  d-d.g«      «       t        ||j                  ddg«      «       t        ||j                  dg«      «       t        |j                  d/dg«      |j                  g d'¢«      «      \  }}}t        ||j                  d0d1g«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  g d¢«      |j                  g d'¢«      «      \  }}}t        ||j                  d2d3g«      «       t        ||j                  ddg«      «       t        ||j                  d4dg«      «       t        |j                  g d5¢«      |j                  g d6¢«      «      \  }}}| j                  ||g d7¢g d8¢d¬«       |j                  dk(  sJ ‚y )9N)rP   rN   rN   rQ   )rP   y       À      ð¿rÈ  rz  )y       À      @y      @      @y      À      (À)r¦   rP   rP   rp   )rP   rQ   rP   )rP   r©   g'Â†§WÊÖ?y	Šcîì¿à-� øÀy	Šcîì¿à-� ø@y      à?*©ÐDØÔ?y      à?*©ÐDØÔ¿rL   rÄ  g�Å�1w@rP   r©   )rP   rÙ  rN   rQ   rK   r   r”   r{  )rL   rÙ  rK   r|  )rP   rÁ  r  rL   )rQ   rº  r  r  g      ø¿r$  rm  )rm  rK   r  r©   )g
×£p=
×?g¸…ëQ¸Î?çš™™™™™Ù?)r  çUUUUUUÕ¿r•  r¶  r  g«ªªªªª
ÀgUUUUUU@ry  ©rP   rº  rP   rz  r¦   )rP   r©   r  )rP   g      è¿r÷  )rP   rN   rQ   rÁ  r(  rN   rº  r¤   ièÿÿÿrq  rR   r�  )rP   r   r   r   r   r©   )yoð…ÉTÁÐ?cÙ=yXÈ?yoð…ÉTÁÐ?cÙ=yXÈ¿r”  yjMóŽ£?%uš¾¿yjMóŽ£?%uš¾?)yÙÎ÷Sãé¿s×òAÏâ?yÙÎ÷Sãé¿s×òAÏâ¿r½  y-²�ï§ÆÓ?8gDioî?y-²�ï§ÆÓ?8gDioî¿)r-   rY   rl  r;   rç   rò   Úpolymulr  s        r`   Útest_residuez_generalz2TestPartialFractionExpansion.test_residuez_generalQ  s¿  € ä˜2Ÿ:™:¢lÓ3ØŸ:™:Ò&CÓDóF‰ˆˆ1ˆaà×#Ñ# A qÒ*GÚ$.ô	0ä˜A˜rŸz™z¨2¨$Ó/Ô0ä˜2Ÿ:™:¢iÓ0°"·*±*º_Ó2MÓN‰ˆˆ1ˆaØ×#Ñ# A qØ%6Ð8IÐ$JØ%2°MÐ$BØ,-ð 	$ô 	/ô 	˜A˜rŸz™z¨6¨(Ó3¸QÕ?ä˜2Ÿ:™: q¨" gÓ.°·
±
º:Ó0FÓG‰ˆˆ1ˆaÜ˜A˜rŸz™z¨2¨q¨'Ó2Ô3Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ø�v‰v˜Š{Ðˆ{ä˜2Ÿ:™:¢iÓ0°"·*±*º\Ó2JÓK‰ˆˆ1ˆaØ×#Ñ# A qª*²lÔCØ�v‰v˜Š{Ðˆ{ä˜2Ÿ:™:¢oÓ6¸¿
¹
Â;Ó8OÓP‰ˆˆ1ˆaÜ˜A˜rŸz™z¨3°¨+Ó6Ô7Ü˜A˜rŸz™z¨2¨q¨'Ó2Ô3Ü˜A˜rŸz™z¨3°¨)Ó4Ô5ä˜2Ÿ:™: r dÓ+¨R¯Z©ZºÓ-HÓI‰ˆˆ1ˆaØ×#Ñ# A qÚ$5Ò7Hô	Jà�v‰v˜Š{Ðˆ{ä˜2Ÿ:™: q¨! fÓ-ØŸ:™:¤b§j¡j°!°T°¸QÀ¸HÓ&EÓFóH‰ˆˆ1ˆaä˜A˜rŸz™z¨5°$¨-Ó8Ô9Ü˜A˜rŸz™z¨5°#¨,Ó7Ô8Ø�v‰v˜Š{Ðˆ{ä˜2Ÿ:™:¢jÓ1°2·:±:¸qÀ"¸gÓ3FÓG‰ˆˆ1ˆaÜ˜A˜rŸz™z¨1¨#›Ô/Ü˜A˜rŸz™z¨1¨#›Ô/Ü˜A˜rŸz™z¨1¨b¨'Ó2Ô3ä˜2Ÿ:™: a›=¨"¯*©*°a¸°XÓ*>Ó?‰ˆˆ1ˆaÜ˜A˜rŸz™z¨1¨#›Ô/Ü˜A˜rŸz™z¨2¨$Ó/Ô0Ø�v‰v˜Š{Ðˆ{ä˜2Ÿ:™: a›=¨"¯*©*²]Ó*CÓD‰ˆˆ1ˆaÜ˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨3°¨*Ó5Ô6Ø�v‰v˜Š{Ðˆ{ä˜2Ÿ:™: a›=¨"¯*©*Ò5EÓ*FÓG‰ˆˆ1ˆaÜ˜A˜rŸz™z¨2¨q¨'Ó2Ô3Ü˜A˜rŸz™z¨4°¨+Ó6Ô7Ø�v‰v˜Š{Ðˆ{ä˜2Ÿ:™:¢iÓ0°"·*±*ºZÓ2HÓI‰ˆˆ1ˆaÜ˜A˜rŸz™z¨3°¨(Ó3Ô4Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨1¨#›Ô/ä˜2Ÿ:™: q¨! fÓ-¨r¯z©zº*Ó/EÓF‰ˆˆ1ˆaÜ˜A˜rŸz™z¨2¨q¨'Ó2Ô3Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ø�v‰v˜Š{Ðˆ{ä˜2Ÿ:™:¢lÓ3°R·Z±ZÂ
Ó5KÓL‰ˆˆ1ˆaÜ˜A˜rŸz™z¨3°¨)Ó4Ô5Ü˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨2¨q¨'Ó2Ô3ä˜2Ÿ:™:¢iÓ0°"·*±*Ò=PÓ2QÓR‰ˆˆ1ˆaØ×#Ñ# A qò%Nò%Nà,-ð 	$ô 	/ð �v‰v˜Š{Ð‰{rb   c                 ól  — t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        |j                  g d¢«      |j                  g d¢«      «      \  }}	}
t        |j                  g d¢«      |j                  g d¢«      «      \  }}}t        ||«       t        ||«       t        ||«       t        ||«       t        ||	«       t        ||«       t        ||«       t        ||
«       t        ||«       y )Nrv  rw  )rM   rK   rº  r–   r   )r  r   r¤   rK   r   )rM   rK   rº  r–   r   r   )r  r   r¤   rK   r   r   r   )r-   rY   r;   r‚  s                 r`   Útest_residuez_trailing_zerosz9TestPartialFractionExpansion.test_residuez_trailing_zeros¥  sÿ   € ô ˜bŸj™jªÓ7Ø Ÿj™jªÓ7ó9‰
ˆˆB�ä˜bŸj™jÒ)9Ó:Ø Ÿj™jªÓ7ó9‰
ˆˆB�ä˜bŸj™jªÓ7Ø Ÿj™jÒ)9Ó:ó<‰
ˆˆB�ä˜bŸj™jÒ)<Ó=Ø Ÿj™jÒ)?Ó@óB‰
ˆˆB�ä˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Ô#Ü˜B Õ#rb   c                 ó,  — t        |j                  ddg«      |j                  g d¢«      «      \  }}}t        ||j                  ddg«      «       t        ||j                  ddg«      «       |j                  dk(  sJ ‚t        |j                  d«      |j                  d«      «      \  }}}|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t	        j
                  t        d¬«      5  t        |j                  d«      |j                  d«      «       d d d «       t	        j
                  t        d¬«      5  t        |j                  d«      |j                  g d	¢«      «       d d d «       y # 1 sw Y   ŒZxY w# 1 sw Y   y xY w)
Nr   rx  rº  r  rP   r‘  rA  z6First coefficient of determinant `a` must be non-zero.r   )r-   rY   r;   rç   rœ  r   rº   r  s        r`   Útest_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate»  sD  € ä˜2Ÿ:™: q¨! fÓ-¨r¯z©zº)Ó/DÓE‰ˆˆ1ˆaÜ˜A˜rŸz™z¨1¨a¨&Ó1Ô2Ü˜A˜rŸz™z¨2¨r¨(Ó3Ô4Ø�v‰v˜Š{Ðˆ{ä˜2Ÿ:™: a›=¨"¯*©*°Q«-Ó8‰ˆˆ1ˆaØ�v‰v˜Š{Ðˆ{Ø�v‰v˜Š{Ðˆ{Ø�v‰v˜Š{Ðˆ{ä�]‰]œ:Ð-GÔHñ 	3Ü�R—Z‘Z “] B§J¡J¨q£MÔ2÷	3ô �]‰]œ:ð"0ô1ñ 	>ô �R—Z‘Z “] B§J¡Jª|Ó$<Ô=÷	>ð 	>÷	3ð 	3ú÷	>ð 	>ús   Ã:+E>Å-F
Å>FÆ
Fc                 óˆ  — |j                  g d¢«      }|j                  g d¢«      }|j                  g «      }|j                  g d¢«      }|j                  g d¢«      }dD ]`  }t        ||||¬«      \  }}	t        ||d¬«       t        |	|d	d¬
«       t        ||||¬«      \  }}	t        ||d¬«       t        |	|d	d¬
«       Œb y )N)r  çUUUUUUÅ¿gÁ¿)r   rº  rÙ  )r  rP   rK   )rP   r–   rR   r   ©ÚavgrÈ  rS  rÊ  r   rË  ©ÚrtypegVçž¯Â<rƒ   F)r  r„   ©rY   r    r4   r!   )
r[   r\   rþ  rN  r¼  Ú
b_expectedÚ
a_expectedr¢  r^   r]   s
             r`   Ú*test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypesÏ  sº   € ð �J‰JÒ0Ó1ˆØ�J‰J’{Ó#ˆØ�J‰J�r‹NˆØ—Z‘Z¢Ó,ˆ
Ø—Z‘Z¢Ó.ˆ
ð Iò 	JˆEÜ˜!˜Q ¨Ô/‰DˆAˆqÜ˜A˜z°Õ6Ü˜A˜z°uÀ5ÕIä˜1˜a ¨%Ô0‰DˆAˆqÜ˜A˜z°Õ6Ü˜A˜z°uÀ5ÖIñ	Jrb   c                 óª  — |j                  g d¢«      }|j                  g d¢«      }|j                  g «      }|j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }dD ]^  }t        ||||¬«      \  }	}
t        |	|d¬	«       t        |
|d
¬«       t        ||||¬«      \  }	}
t        |	|d¬	«       t        |
|d
¬«       Œ` y )N©g333333Ã?g9Žã8ŽãÈ¿rž  glÁlÁ¦?©r   rº  rº  rÙ  )r  r   rP   rK   )rž  gUUUUUUå¿gUUUUUUý?rK   )rP   r(  r6  r	  r   rŸ  r¡  r‚   rƒ   Fr  r£  )r[   r\   rþ  rN  r¼  r¤  Úb_expected_zr¥  r¢  r^   r]   s              r`   Ú,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypesã  s¿   € à�J‰JÒ8Ó9ˆØ�J‰J’Ó'ˆØ�J‰J�r‹NˆØ—Z‘Z¢Ó/ˆ
Ø—z‘zÒ"7Ó8ˆØ—Z‘ZÒ 1Ó2ˆ
àHò 	>ˆEÜ˜!˜Q ¨Ô/‰DˆAˆqÜ˜A˜z°Õ6Ü˜A˜z°uÕ=ä˜1˜a ¨%Ô0‰DˆAˆqÜ˜A˜|°%Õ8Ü˜A˜z°uÖ=ñ	>rb   c                 ón  — |j                  g d¢«      }|j                  g d¢«      }|j                  g «      }t        j                  t        d¬«      5  t	        |||d¬«       d d d «       t        j                  t        d¬«      5  t        |||d¬«       d d d «       y # 1 sw Y   Œ=xY w# 1 sw Y   y xY w)Nr¨  r©  z`rtype` must be one ofrA  rÉ  r¡  )rY   rœ  r   rº   r    r!   r  s        r`   Útest_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtypeõ  s•   € à�J‰JÒ8Ó9ˆØ�J‰J’Ó'ˆØ�J‰J�r‹NˆÜ�]‰]œ:Ð-EÔFñ 	,Ü�1�a˜ (Õ+÷	,ä�]‰]œ:Ð-EÔFñ 	-Ü�A�q˜! 8Õ,÷	-ð 	-÷	,ð 	,ú÷	-ð 	-ús   ÁBÂB+ÂB(Â+B4c                 ó  — |j                  dg«      }|j                  dg«      }|j                  dg«      }t        |||«      \  }}t        ||j                  dg«      «       t        ||j                  ddg«      «       y )NrP   rQ   r   r½  g       À)rY   r!   r4   )r[   r\   rþ  rN  r¼  r^   r]   s          r`   Ú test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bugÿ  sn   € ð �J‰J˜�s‹OˆØ�J‰J˜�s‹OˆØ�J‰J˜�s‹OˆÜ�q˜!˜QÓ‰ˆˆ1Ü˜˜2Ÿ:™: q c›?Ô+Ü˜˜2Ÿ:™: s¨D kÓ2Õ3rb   c                 óÔ  — t        |j                  dg«      |j                  dg«      |j                  g «      «      \  }}t        ||j                  dg«      «       t        ||j                  ddg«      «       t        |j                  g d¢«      |j                  g d¢«      |j                  g «      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       t        |j                  ddg«      |j                  dd	g«      |j                  g d
¢«      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       t        |j                  g d¢«      |j                  g d¢«      |j                  g «      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       t        |j                  ddg«      |j                  ddg«      |j                  ddg«      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       y )NrP   r©   ©r~  rQ   ù      à?      À©rP   rê   rm   ©y      @      Ày      !À      Ð?y      @      
@©rP   y       À      ø¿y      à?       @y      à?      à¿r  r~  r¶  rO   )rP   ù      ð¿      ð¿ù      ð?       Àr²  rR   ©rP   ù      À      ð¿rL   ©r©   rQ   r¦   rë  rL   rº  ©r©   rÃ   rÃ   rK   rK   rK   )y      @      ð¿y      <À      0@y      D@      OÀy      Y@      8@y     @rÀ     `k@y      h@     ÀpÀ©rP   y      (À       @y     €J@      4Ày      XÀ      Q@y      ;@      RÀy      [@      KÀy     @TÀ      [@r¦   rQ   )rP   r   r  ro   r–  )r    rY   r;   ©r[   r\   r^   r]   s       r`   Útest_invresz(TestPartialFractionExpansion.test_invres	  sæ  € ä�b—j‘j ! “o r§z¡z°1°#£¸¿
¹
À2»ÓG‰ˆˆ1Ü˜A˜rŸz™z¨1¨#›Ô/Ü˜A˜rŸz™z¨1¨b¨'Ó2Ô3ä�b—j‘jÒ!6Ó7Ø—j‘jÒ!2Ó3°R·Z±ZÀ³^óE‰ˆˆ1ä˜A˜rŸz™zÒ*OÓPÔQÜ˜A˜rŸz™zÒ*NÓOÔPä�b—j‘j # q Ó*¨B¯J©J¸ÀÐ7GÓ,HØ—j‘j¢Ó+ó-‰ˆˆ1ä˜A˜rŸz™zÒ*LÓMÔNÜ˜A˜rŸz™zª/Ó:Ô;ä�b—j‘jÒ!;Ó<Ø—j‘jÒ!>Ó?ÀÇÁÈBÃóQ‰ˆˆ1ä˜AØŸJ™Jò (Aó Bô	Cô 	˜AØŸJ™Jò (?ó @ô	Aô �b—j‘j " b Ó*¨B¯J©J¸¸1°vÓ,>ÀÇ
Á
ÈAÈqÈ6Ó@RÓS‰ˆˆ1Ü˜A˜rŸz™zÒ*<Ó=Ô>Ü˜A˜rŸz™zª*Ó5Õ6rb   c                 óÔ  — t        |j                  dg«      |j                  dg«      |j                  g «      «      \  }}t        ||j                  dg«      «       t        ||j                  ddg«      «       t        |j                  g d¢«      |j                  g d¢«      |j                  g «      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       t        |j                  ddg«      |j                  dd	g«      |j                  g d
¢«      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       t        |j                  g d¢«      |j                  g d¢«      |j                  g «      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       t        |j                  ddg«      |j                  ddg«      |j                  ddg«      «      \  }}t        ||j                  g d¢«      «       t        ||j                  g d¢«      «       y )NrP   r©   r±  r³  r´  rµ  r  r~  r¶  rO   )g      @r¹  r·  y      ð¿      ÀrW   r¸  rº  r»  )rN   y      IÀ      &@y      Y@      RÀy      T@      M@y      vÀ     €l@y     @m@     �rÀr¼  r¦   rQ   )r¦   rP   r)  rQ   r–  )r!   rY   r;   r½  s       r`   Útest_invreszz)TestPartialFractionExpansion.test_invresz&  sð  € ä�r—z‘z 1 #“¨¯
©
°A°3«¸¿¹ÀB»ÓH‰ˆˆ1Ü˜A˜rŸz™z¨1¨#›Ô/Ü˜A˜rŸz™z¨1¨b¨'Ó2Ô3ä�r—z‘zÒ"7Ó8Ø—z‘zÒ"3Ó4°b·j±jÀ³nóF‰ˆˆ1ä˜A˜rŸz™zÒ*OÓPÔQÜ˜A˜rŸz™zÒ*NÓOÔPä�r—z‘z 3¨ (Ó+Ø—z‘z 6¨6Ð"2Ó3Ø—z‘z¢)Ó,ó.‰ˆˆ1ô 	˜A˜rŸz™zÒ*MÓNÔOÜ˜A˜rŸz™zª/Ó:Ô;ä�r—z‘zÒ"<Ó=Ø—z‘zÒ"?Ó@Ø—z‘z "“~ó'‰ˆˆ1ô 	˜AØŸJ™Jò (Aó Bô	Cô 	˜AØŸJ™Jò (?ó @ô	Aô �r—z‘z 2 r (Ó+Ø—z‘z 1 a &Ó)Ø—z‘z 1 a &Ó)ó+‰ˆˆ1ô 	˜A˜rŸz™zª.Ó9Ô:Ü˜A˜rŸz™zª*Ó5Õ6rb   Tr  c                 ó´   — t        ddd«      \  }}t        |ddg«       t        |ddg«       t        ddd«      \  }}t        |ddg«       t        |ddg«       y )NrP   r   r©   rQ   )r    r;   r!   r½  s       r`   Útest_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_argumentsG  s_   € ô �a˜˜A‹‰ˆˆ1Ü˜A  1˜vÔ&Ü˜A  2˜wÔ'ä�q˜!˜QÓ‰ˆˆ1Ü˜A  2˜wÔ'Ü˜A  2˜wÕ'rb   N)r–   )r  r  r  rb  rl  rp  rt  r@   r,   r€  r�  r’  r-   r˜  rš  rœ  r    r!   r¦  r«  r­  r¯  r¾  rÀ  r  rÂ  r  rb   r`   rd  rd  ¿  sƒ  „ Øò
Dó ð
Dò?ò&1ñ �wÓñFó  ðFñP �wÓñ$ó  ð$ñ" �wÓñó  ðñ �xÓ ñQó !ðQñf �xÓ ñ$ó !ð$ñ* �xÓ ñ>ó !ð>ñ& �v˜wÓ'ñJó (ðJñ& �v˜wÓ'ñ>ó (ð>ñ" �v˜wÓ'ñ-ó (ð-ñ �wÓñ4ó  ð4ñ �vÓñ7ó ð7ñ8 �wÓñ7ó  ð7ñ@ ˜dÔ#Ù�v˜wÓ'ñ(ó (ó $ñ(rb   rd  c                   ó”   — e Zd Zd„ Z edd¬«      d„ «       Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
 edd¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestVectorstrengthc                 ó&  — |j                  dg«      }d}d}d}t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        j                  ||d¬«      sJ ‚t        j                  |dt        j
                  z  |z  d¬«      sJ ‚y )	Nr  r™  r½  r{  r   çvƒôõ!„>©Úabs_tolrQ   ©rY   r"   rí  rž  Úiscloser  ©r[   r\   ÚeventsÚperiodÚtarg_strengthÚ
targ_phaseÚstrengthÚphases           r`   Útest_single_1dperiodz'TestVectorstrength.test_single_1dperiodV  sŒ   € Ø—‘˜R˜DÓ!ˆØˆØˆØˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆä�|‰|˜H m¸VÕDÐDÐDÜ�|‰|˜E 1¤t§w¡w¡;°Ñ#;ÀVÕLÐLÑLrb   r¢   zphase modulo 2*pirH   c                 óP  — |j                  dg«      }|j                  g d¢«      }|j                  dgdz  «      }|j                  g d¢«      }t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        ||«       t	        |d|j
                  z  |z  «       y )Nr  )rP   rQ   r™  r½  rK   )r  r  r{  rP   rQ   )rY   r"   rí  r:   r;   r  rË  s           r`   Útest_single_2dperiodz'TestVectorstrength.test_single_2dperiodd  s•   € à—‘˜R˜DÓ!ˆØ—‘šJÓ'ˆØŸ
™
 B 4¨!¡8Ó,ˆØ—Z‘Z¢Ó.ˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆÜ! (¨MÔ:Ü˜E 1 r§u¡u¡9¨zÑ#9Õ:rb   c                 ó(  — |j                  g d¢«      }d}d}d}t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        j                  ||d¬«      sJ ‚t        j                  |dt        j
                  z  |z  d¬«      sJ ‚y )N©r  r  r  r  r  r  rQ   r½  r÷  r   rÆ  rÇ  rÉ  rË  s           r`   Útest_equal_1dperiodz&TestVectorstrength.test_equal_1dperiodr  s‹   € Ø—‘Ò:Ó;ˆØˆØˆØˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆä�|‰|˜H m¸VÕDÐDÐDÜ�|‰|˜E 1¤t§w¡w¡;°Ñ#;ÀVÕLÐLÑLrb   c                 óR  — |j                  g d¢«      }|j                  ddg«      }|j                  dgdz  «      }|j                  ddg«      }t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        ||«       t        |d|j                  z  |z  «       y )NrÖ  rP   rQ   r½  r  r÷  ©rY   r"   rí  r;   r  rË  s           r`   Útest_equal_2dperiodz&TestVectorstrength.test_equal_2dperiod€  sœ   € Ø—‘Ò:Ó;ˆØ—‘˜Q ˜HÓ%ˆØŸ
™
 B 4¨!¡8Ó,ˆØ—Z‘Z  d Ó,ˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆÜ˜H mÔ4Ü˜E 1 r§u¡u¡9¨zÑ#9Õ:rb   c                 ó(  — |j                  g d¢«      }d}d}d}t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        j                  ||d¬«      sJ ‚t        j                  |dt        j
                  z  |z  d	¬«      sJ ‚y )
N©r{  gš™™™™™ñ?gÍÌÌÌÌÌ @gffffff@g333333$@rP   r½  r{  r   rÆ  rÇ  rQ   r©  rÉ  rË  s           r`   Útest_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiod�  s‹   € Ø—‘Ò5Ó6ˆØˆØˆØˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆä�|‰|˜H m¸VÕDÐDÐDÜ�|‰|˜E 1¤t§w¡w¡;°Ñ#;ÀVÕLÐLÑLrb   c                 ó�  — |j                  g d¢«      }|j                  ddg«      }|j                  dgdz  «      }|j                  ddg«      }t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        ||«       t	        |«      |j
                  k(  rdd	ini }t        |d|j                  z  |z  fi |¤Ž y )
NrÜ  rP   r  r½  rQ   r{  r  rî   g�íµ ÷ÆÀ>)rY   r"   rí  r;   r>   râ   r4   r  )	r[   r\   rÌ  rÍ  rÎ  rÏ  rÐ  rÑ  Úrtol_kws	            r`   Útest_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod›  s¼   € Ø—‘Ò5Ó6ˆØ—‘˜Q ˜GÓ$ˆØŸ
™
 B 4¨!¡8Ó,ˆØ—Z‘Z  R Ó)ˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆÜ˜H mÔ4Ü$4°RÓ$8¸B¿J¹JÒ$F�6˜4‘.ÈBˆÜ˜˜q 2§5¡5™y¨:Ñ5ÑA¸ÓArb   c                 ó   — |j                  g d¢«      }d}d}d}t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        j                  ||«      sJ ‚t        j                  |dt        j
                  z  |z  «      sJ ‚y )N©r  r  ç      è?rP   çUUUUUUÕ?r  r   rQ   rÉ  rË  s           r`   Útest_partial_1dperiodz(TestVectorstrength.test_partial_1dperiod©  s†   € Ø—‘šNÓ+ˆØˆØˆØˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆä�|‰|˜H mÔ4Ð4Ð4Ü�|‰|˜E 1¤t§w¡w¡;°Ñ#;Ô<Ð<Ñ<rb   c                 óR  — |j                  g d¢«      }|j                  g d¢«      }|j                  dgdz  «      }|j                  g d¢«      }t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        ||«       t        |d|j                  z  |z  «       y )Nrâ  )r½  r½  r½  r½  rä  rL   )r  r  r  r  rP   rQ   rÙ  rË  s           r`   Útest_partial_2dperiodz(TestVectorstrength.test_partial_2dperiod¸  s•   € à—‘šNÓ+ˆØ—‘Ò,Ó-ˆØŸ
™
 G 9¨q¡=Ó1ˆØ—Z‘ZÒ 0Ó1ˆ
ä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆÜ˜H mÔ4Ü˜E 1 r§u¡u¡9¨zÑ#9Õ:rb   c                 óÈ   — |j                  g d¢«      }d}d}t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        j                  ||d¬«      sJ ‚y )N©r   r  r  rã  r½  r   rÆ  rÇ  )rY   r"   rí  rž  rÊ  ©r[   r\   rÌ  rÍ  rÎ  rÐ  rÑ  s          r`   Útest_opposite_1dperiodz)TestVectorstrength.test_opposite_1dperiodÆ  sc   € Ø—‘Ò-Ó.ˆØˆØˆä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆÜ�|‰|˜H m¸VÕDÐDÑDrb   c                 óø   — |j                  g d¢«      }|j                  dgdz  «      }|j                  dgdz  «      }t        ||«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        ||«       y )Nré  r½  rR   r  rP   )rY   r"   rí  r;   rê  s          r`   Útest_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiodÑ  su   € Ø—‘Ò-Ó.ˆØ—‘˜R˜D 2™IÓ&ˆØŸ
™
 B 4¨"¡9Ó-ˆä(¨°Ó8‰ˆ�%à�}‰} Ò!Ð!Ð!Ø�z‰z˜QŠÐˆÜ˜H mÕ4rb   c                 ó\   — |j                  ddgg«      }d}t        t        t        ||«       y )NrP   rQ   r½  ©rY   r¹   rº   r"   ©r[   r\   rÌ  rÍ  s       r`   Útest_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueErrorÜ  s)   € Ø—‘˜a ˜V˜HÓ%ˆØˆÜ”j¤.°&¸&ÕArb   c                 óZ   — d}|j                  dgg«      }t        t        t        ||«       y )Nr½  rP   rï  rð  s       r`   Útest_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueErrorá  s'   € ØˆØ—‘˜a˜S˜EÓ"ˆÜ”j¤.°&¸&ÕArb   c                 ó8   — d}d}t        t        t        ||«       y )Nr½  r   ©r¹   rº   r"   rð  s       r`   Útest_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueErroræ  s   € ØˆØˆÜ”j¤.°&¸&ÕArb   c                 ó8   — d}d}t        t        t        ||«       y )Nr½  r©   rõ  rð  s       r`   Útest_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueErrorë  s   € ØˆØˆÜ”j¤.°&¸&ÕArb   N)r  r  r  rÒ  r  rÔ  r×  rÚ  rÝ  rà  rå  rç  rë  rí  rñ  ró  rö  rø  r  rb   r`   rÄ  rÄ  S  s   „ òMñ �wÐ':Ô;ñ;ó <ð;òMò;òMòBò=ñ �wÐ':Ô;ñ;ó <ð;ò	Eò	5òBò
Bò
Bó
Brb   rÄ  )r’  )râ   rã   rä   r­   c                   óÒ  — e Zd Z edd¬«      d„ «       Z edd¬«      d„ «       Z edd¬«      d„ «       Zd„ Z edd¬«       ee	«      d	„ «       «       Z
 edd¬«       ed
d¬«       ee	«      d„ «       «       «       Z edd¬«       ee	«      d„ «       «       Z edd¬«       edd¬«      d„ «       «       Z edd¬«       ee	«      d„ «       «       Z ed¬«       ee	«      d„ «       «       Zy)ÚTestSOSFiltrF   zbuffer array is read-onlyrH   c                 ó”  — t        ||«      }|j                  ddd|¬«      }|j                  ddg|¬«      }|j                  ddg|¬«      }|j                  g d	¢|¬«      }t        t        j                  ||f«      \  }}t        ||«      }	|j                  |	«      }	t        t        |	|«      |«       |j                  ddg|¬«      }|j                  ddg|¬«      }|j                  g d
¢|¬«      }t        t        j                  ||f«      \  }}t        ||«      }	|j                  |	«      }	t        t        |	|«      |«       |j                  g d¢«      }|j                  g d¢«      }|j                  d«      }|j                  ||f«      }	|j                  |	d«      }	t        |	|«      }
t        |
|j                  g d¢«      «       y )Nr   rM   rN   r§   rP   r©   r  r¶  r·  r½  )r½  rP   r   )r½  r   r   r¤   rÏ  )r½  rQ   rQ   rQ   rQ   rQ   rQ   rQ   )rŠ  rñ  rY   r]  rò   r$   r:   r%   ri  Úconcatr…   r4   )r[   rF  r\   rq   r^   r]   rº  Úbbr»  rí  rr   s              r`   Ú
test_rank1zTestSOSFilt.test_rank1ý  s�  € ä�R˜‹_ˆØ�K‰K˜˜1˜a rˆKÓ*ˆØ�J‰J˜˜2�w bˆJÓ)ˆØ�J‰J˜˜T�{¨"ˆJÓ-ˆð �j‰jÒ-°RˆjÓ8ˆÜ”R—Z‘Z ! Q Ó(‰ˆˆBÜ�R˜‹nˆØ�j‰j˜‹oˆÜ!¤'¨#¨q£/°3Ô7ð �J‰J˜˜1�v RˆJÓ(ˆà�J‰J˜˜1�v RˆJÓ(ˆØ�j‰jÒ,°BˆjÓ7ˆÜ”R—Z‘Z ! Q Ó(‰ˆˆBÜ�R˜‹nˆØ�j‰j˜‹oˆÜ!¤'¨#¨q£/°3Ô7à�J‰J’{Ó#ˆØ�J‰J’{Ó#ˆØ�G‰G�A‹Jˆà�i‰i˜˜A˜ÓˆØ�j‰j˜˜fÓ%ˆÜ�C˜‹OˆÜ˜˜2Ÿ:™:Ò&@ÓAÕBrb   c                 óˆ  — t        ||«      }d}t        j                  |«      }|j                  d|dz
  ||¬«      }|j	                  ||«      }|j                  ddg|¬«      }|j                  ddg|¬«      }|j                  g d¢g d¢g d¢g d¢g|¬«      }|j                  g d	¢g d
¢g d¢g d¢g|¬«      }	t        t        j
                  ||f«      \  }
}t        |
|«      }|j                  |«      }t        ||d¬«      }t        ||«       t        |
|«      }|j                  |«      }t        ||d¬«      }t        |	|«       y )NrÌ  r   rP   r§   r©   r  rÍ  rÎ  rÒ  rÓ  rÔ  rÕ  r†  )rŠ  rž  rŸ  rñ  r…   rY   r]  rò   r$   r%   r:   )r[   rF  r\   r‘  r¡  rq   r^   r]   rÏ  rÖ  rý  r»  rí  rr   s                 r`   Ú
test_rank2zTestSOSFilt.test_rank2  s7  € ä�R˜‹_ˆØˆÜ—I‘I˜eÓ$ˆ	Ø�K‰K˜˜9 q™=¨)¸2ˆKÓ>ˆØ�J‰J�q˜%Ó ˆà�J‰J˜˜2�w bˆJÓ)ˆØ�J‰J˜˜S�z¨ˆJÓ,ˆà—*‘*šiª²IºyÐIØ!#ð ó %ˆð —*‘*šiª²]Ú)ð+Ø24ð ó 6ˆô ”R—Z‘Z ! Q Ó(‰ˆˆBÜ�R˜‹nˆØ�j‰j˜‹oˆÜ�C˜ Ô#ˆÜ! '¨1Ô-ä�R˜‹nˆØ�j‰j˜‹oˆÜ�C˜ Ô#ˆÜ! '¨1Õ-rb   c                 ó8  — t        ||«      }d}t        j                  |«      }|j                  d|dz
  |«      }|j	                  ||«      }|j                  ddg|¬«      }|j                  ddg|¬«      }t        t        j
                  ||f«      \  }}	t        ||	«      }
|j                  |
«      }
t        |
|«      }t        |j                  d   «      D ]B  }t        |j                  d   «      D ]%  }t        |||df   t        |||||df   «      «       Œ' ŒD y )Nrå  r   rP   r©   r§   r  .)rŠ  rž  rŸ  rñ  r…   rY   r]  rò   r$   r%   r‡   r‘  r:   r   )r[   rF  r\   r‘  r¡  rq   r^   r]   rý  r»  rí  rr   r‰   Újs                 r`   rÄ  zTestSOSFilt.test_rank3:  s  € ä�R˜‹_ˆØˆÜ—I‘I˜eÓ$ˆ	Ø�K‰K˜˜9 q™=¨)Ó4ˆØ�J‰J�q˜%Ó ˆà�J‰J˜˜2�w bˆJÓ)ˆØ�J‰J˜˜S�z¨ˆJÓ,ˆô ”R—Z‘Z ! Q Ó(‰ˆˆBÜ�R˜‹nˆØ�j‰j˜‹oˆÜ�C˜‹OˆÜ�q—w‘w˜q‘zÓ"ò 	UˆAÜ˜1Ÿ7™7 1™:Ó&ò U�Ü)¨!¨A¨q°#¨I©,¼ÀÀ1ÀaÈÈ1ÈcÈ	ÁlÓ8SÕTñUñ	Urb   c                 ó,  — t        j                  ddd«      \  }}t        j                  ddd«      \  }}t        j                  ddd«      \  }}t        j                  t        j                  ||«      |«      }t        j                  t        j                  ||«      |«      }	t        j                  t        j
                  ||f   t        j
                  ||f   t        j
                  ||f   f«      }
t        |j                  |	||
f«      \  }	}}
|	||
fS )NrQ   r  Úlowrã  )r   r   rò   r   r“  Úr_r]  rY   )r[   r\   Úb1r³  Úb2r´  Úb3rµ  r^   r]   rí  s              r`   Ú_get_ab_soszTestSOSFilt._get_ab_sosN  sÛ   € Ü—‘˜q $¨Ó.‰ˆˆBÜ—‘˜q $¨Ó.‰ˆˆBÜ—‘˜q $¨Ó.‰ˆˆBÜ�K‰KœŸ™ B¨Ó+¨RÓ0ˆÜ�K‰KœŸ™ B¨Ó+¨RÓ0ˆÜ�h‰hœŸ™˜b "˜f™¤r§u¡u¨R°¨V¡}´b·e±e¸BÀ¸F±mÐDÓEˆä˜Ÿ
™
 Q¨¨3 KÓ0‰	ˆˆ1ˆcØ�!�SˆyÐrb   zitem assignmentc           
      óâ  — | j                  |«      \  }}}t        j                  j                  d«      j	                  |«      }|j                  |«      }t        ||«      }t        |||d d |j                  d«      ¬«      \  }}|j                  |t        |||dd  |¬«      d   f«      }t        |t        |||«      «       t        ||d d |j                  d«      ¬«      \  }	}|j                  |	t        ||dd  |¬«      d   f«      }	t        ||	«       t        |«      }|j                  d|¬«      }t        |||¬«      \  }
}t        |
|j                  d«      d	¬
«       t        ||d	¬
«       y )Nr
  r	  rN   rÂ  r   rÕ   r¤   r§   Fr  )r	  rò   ró   r  rø   rY   rŠ  r   r•  rü  r4   r%   r'   ri  )r[   rF  r\   r]   r^   rí  rq   Úy_truerÃ  r  rr   rÇ  s               r`   Útest_initial_conditionsz#TestSOSFilt.test_initial_conditionsY  sP  € ð ×$Ñ$ RÓ(‰	ˆˆ1ˆcä�I‰I�N‰N˜2Ó×%Ñ% bÓ)ˆØ�J‰J�q‹Mˆä�R˜‹_ˆô ˜Q  1 S b 6¨b¯h©h°q«kÔ:‰
ˆ�Ø—‘˜F¤G¨A¨q°!°B°C°&¸RÔ$@ÀÑ$CÐDÓEˆÜ˜¤¨¨1¨aÓ 0Ô1ä˜C  3 B ¨B¯H©H°VÓ,<Ô=‰	ˆˆrØ—	‘	˜5¤'¨#¨q°°¨v¸"Ô"=¸aÑ"@ÐAÓBˆÜ˜ Ô&ô ˜‹_ˆØ�G‰G�A˜RˆGÓ ˆÜ˜˜Q 2Ô&‰ˆˆ2ä˜˜2Ÿ7™7 1›:°5Õ9Ü˜˜B¨EÖ2rb   r-  zfancy indexing not supportedc                 óÜ  — t        ||«      }|j                  d|¬«      }| j                  |«      \  }}}t        |«      }|j	                  |d|j
                  z   «      }t        j                  t        «      5  t        |||¬«       d d d «       t        ||¬«      }|j	                  ||j
                  d   dd|j
                  d   f«      }t        j                  t        «      5  t        |||d d …d d …d d …g d	¢f   ¬«       d d d «       t        |||¬«      \  }}	t        |d
   |j                  d«      d¬«       t        |	d d …ddd d …f   |d¬«       y # 1 sw Y   ŒÐxY w# 1 sw Y   Œ`xY w)Nr¤   r§   rò  rÂ  rÕ  r   rP   r©   )r   rP   rP   r²  Fr  )rŠ  ri  r	  r'   r…   r‘  rœ  r   rº   r%   r<   r4   )
r[   rF  r\   rq   rˆ  rí  rÃ  Úzi_ndrr   rÇ  s
             r`   Útest_initial_conditions_2z%TestSOSFilt.test_initial_conditions_2t  s>  € ô �R˜‹_ˆØ�G‰G�A˜RˆGÓ ˆà×$Ñ$ RÓ(‰	ˆˆ1ˆcÜ˜‹_ˆð �J‰J�q˜& 1§7¡7Ñ*Ó+ˆÜ�]‰]œ:Ó&ñ 	#Ü�C˜˜rÕ"÷	#ô ˜˜rÔ"ˆØ—
‘
˜5 2§8¡8¨A¡;°°1°b·h±h¸r±lÐ"CÓDˆä�]‰]œ:Ó&ñ 	:Ü�C˜˜u¢Qªª1ªiÐ%7Ñ8Õ9÷	:ô ˜˜Q 5Ô)‰ˆˆ2Ü˜˜$™ §¡¨£¸Õ?Ü˜š1˜a ¢A˜:™¨¸Ö>÷	#ð 	#ú÷	:ð 	:ús   Á8EÃ%E"ÅEÅ"E+c                 ó@  — t         j                  j                  d«      j                  ddd¬«      }|j	                  |«      }|j                  |«      }t        j                  ddd¬	«      }t        |Ž }|j                  |«      }|j                  d   }d
}t        |j                  «      }d||<   t        |g|z   «      }|j                  |«      }	t        ||||	¬«      \  }
}t        ||d d …d d…d d …f   ||	¬«      \  }}t        ||d d …dd …d d …f   ||¬«      \  }}|j                  ||f|¬«      }t        ||
dd¬«       t        ||dd¬«       t!        |«      }|j#                  ||d
dd
f«      }||d d …dd
…d d …f   z  }t        ||||¬«      d   }t%        |Ž \  }}|j                  |«      |j                  |«      }}t'        ||«      }|j#                  |d
t)        |«      d
f«      }||d d …dd
…d d …f   z  }t+        |||||¬«      d   }t        ||dd¬«       y )NéŸ   r   rM   )rQ   rq  rK   ræ   rN   r  rï  r	  rP   rQ   rÜ  r†  r   r›  rí   )rò   ró   rô   r   rø   rY   r   r   r   r‘  r¬  rˆ   r•  r%   rü  r4   r'   r…   r   r   r=   r   )r[   rF  r\   rq   rï  rí  Ú	nsectionsr‡  ÚshpÚz0r_  rÇ  rA  r  rw  r  rr   rÃ  r^   r]   Úy_tfs                        r`   Ú test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1�  s!  € ô �I‰I×!Ñ! #Ó&×.Ñ.¨q°!¸*Ð.ÓEˆØ�H‰H�R‹LˆØ�J‰J�q‹Mˆô �m‰m˜A˜t¨EÔ2ˆÜ�sˆmˆØ�j‰j˜‹oˆà—I‘I˜a‘Lˆ	ð ˆô �1—7‘7‹mˆØˆˆD‰	Ü�Y�K #Ñ%Ó&ˆØ�X‰X�c‹]ˆô ˜˜a d¨rÔ2‰ˆˆBô ˜˜a¢ 2 A 2¢q ™k°¸Ô<‰ˆˆBÜ˜˜a¢ 1¡2¢q ™k°¸Ô<‰ˆˆBð �I‰I�r˜2�h TˆIÓ*ˆÜ˜˜2 E°Õ6Ü˜˜B U°Õ7ô ˜‹_ˆØ�Z‰Z˜˜Y¨¨1¨aÐ0Ó1ˆØ�!’A�q˜�sšA�I‘,ÑˆÜ�C˜ ¨"Ô-¨aÑ0ˆä�sˆ|‰ˆˆ1Ø�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆä˜˜1ÓˆØ�Z‰Z˜˜Q¤¨£¨QÐ/Ó0ˆØ�!’A�q˜�sšA�I‘,ÑˆÜ�q˜!˜Q T¨bÔ1°!Ñ4ˆÜ˜˜4 e°%Ö8rb   r¢   zissues a RuntimeWarningc                 ó”  — t        ||«      }|j                  d|¬«      }|j                  d«      }|j                  d«      }t        j                  t
        d¬«      5  t        |||d¬«       d d d «       d	|d d …d
f<   t        j                  t
        d¬«      5  t        |||d¬«       d d d «       y # 1 sw Y   ŒFxY w# 1 sw Y   y xY w)N)rK   rq  rK   r§   )rL   rN   )rL   rK   rK   rQ   zshould be all onesrA  rP   )rÃ  r‡  r½  rK   zInvalid zi shape)rŠ  r©  r•  rœ  r   rº   r%   )r[   rF  r\   rq   rí  rÃ  s         r`   Útest_bad_zi_shapezTestSOSFilt.test_bad_zi_shapeÂ  sµ   € ô �R˜‹_ˆð �H‰H�Z rˆHÓ*ˆØ�h‰h�vÓˆØ�X‰X�lÓ#ˆÜ�]‰]œ:Ð-AÔBñ 	+Ü�C˜˜r¨Õ*÷	+àˆŠAˆqˆD‰	Ü�]‰]œ:Ð-?Ô@ñ 	+Ü�C˜˜r¨Õ*÷	+ð 	+÷	+ð 	+ú÷	+ð 	+ús   ÁB2ÂB>Â2B;Â>Cc           	      ó¶  — t        ||«      }t        j                  ddd¬«      }|j                  |«      }t	        |«      }t        ||j                  d|¬«      |¬«      \  }}t        ||dd	¬
«       |j                  |j                  |d d …d d…f   d¬«      |j                  |d d …dd …f   d¬«      z  «      }t        |||j                  |«      z  d¬«       y )NrN   r  rí  r	  r8  r§   rÂ  r›  F©rî   r  rK   r©   r†  r  )rŠ  r   r   rY   r'   r%   ri  r4   rŸ  rã  r>  )r[   rF  r\   rí  rÃ  rr   rÇ  Ússs           r`   Útest_sosfilt_zizTestSOSFilt.test_sosfilt_ziÑ  sÂ   € ô �R˜‹_ˆÜ�m‰m˜A˜s¨5Ô1ˆØ�j‰j˜‹oˆÜ˜‹_ˆä˜˜RŸW™W R¨r˜WÓ2°rÔ:‰ˆˆ2Ü˜˜B U¸Õ>ð �W‰W�R—V‘V˜C¢ 2 A 2 ™J¨R�VÓ0°2·6±6¸#ºaÀÁ¸e¹*È2°6Ó3NÑNÓOˆÜ˜˜2 §¡¨Q£Ñ/°eÖ<rb   Tr  c                 ó  — t        ||«      }t        j                  ddd¬«      }|j                  |«      }t	        |«      }t        ||j                  d|¬«      |j                  «       ¬«      \  }}t        ||dd	¬
«       y )NrN   r  rí  r	  r8  r§   rÂ  r›  Fr  )	rŠ  r   r   rY   r'   r%   ri  r!  r4   )r[   rF  r\   rí  rÃ  rˆ  rÇ  s          r`   Útest_sosfilt_zi_2zTestSOSFilt.test_sosfilt_zi_2à  sj   € ô �R˜‹_ˆÜ�m‰m˜A˜s¨5Ô1ˆØ�j‰j˜‹oˆÜ˜‹_ˆä˜˜RŸW™W R¨r˜WÓ2°r·y±y³{ÔC‰ˆˆ2Ü˜˜B U¸Ö>rb   N)r  r  r  r  rþ  r   rÄ  r	  r@   r'   r  r  r  r  r  r  r  rb   r`   rú  rú  ÷  sm  „ ñ �kÐ*EÔFñCó GðCñ@ �kÐ*EÔFñ.ó Gð.ñ6 �kÐ*EÔFñUó GðUò&	ñ �kÐ*;Ô<Ù�zÓ"ñ3ó #ó =ð3ñ2 �kÐ*;Ô<ÙÐ(Ð1OÔPÙ�zÓ"ñ?ó #ó Qó =ð?ñ, �kÐ*;Ô<Ù�zÓ"ñ19ó #ó =ð19ñf �gÐ&?Ô@Ù�kÐ*;Ô<ñ+ó =ó Að+ñ �kÐ*;Ô<Ù�zÓ"ñ=ó #ó =ð=ñ ˜dÔ#Ù�zÓ"ñ?ó #ó $ñ?rb   rú  c                   óx   — e Zd Z edd¬«      d„ «       Zd„ Z edd¬«      d	„ «       Z edd¬«      d
„ «       Zd„ Z	y)ÚTestDeconvolveTrÇ  rx   c                 ó„   — g d¢}ddg}|j                  g d¢«      }t        j                  ||«      \  }}t        ||«       y )N©r  rP   r   r   rP   rP   r   r   rQ   rP   ©	r  rQ   rP   r   rQ   rK   rP   r   r   )rY   r   Ú
deconvolver4   ©r[   r\   ÚoriginalÚimpulse_responseÚrecordedÚ	recoveredÚ	remainders          r`   rß  zTestDeconvolve.test_array_likeð  sD   € ò .ˆØ˜q˜6ÐØ—:‘:Ò;Ó<ˆÜ%×0Ñ0°Ð;KÓLÑˆ	�9Ü˜	 8Õ,rb   c                 óØ   — |j                  g d¢|j                  ¬«      }|j                  ddg«      }|j                  g d¢«      }t        j                  ||«      \  }}t	        ||«       y )Nr"  r§   rQ   rP   r#  )rY   rã   r   r$  r4   r%  s          r`   ra   zTestDeconvolve.test_basicù  s]   € à—:‘:Ò8ÀÇ
Á
�:ÓKˆØŸ:™: q¨! fÓ-ÐØ—:‘:Ò;Ó<ˆÜ%×0Ñ0°Ð;KÓLÑˆ	�9Ü˜	 8Õ,rb   r‘   zdifferent error messagerH   c                 óê   — |j                  ddgddgg«      }|j                  ddg«      }t        j                  t        d¬«      5  t	        j
                  ||«      \  }}d d d «       y # 1 sw Y   y xY w)Nr   z#^Parameter signal must be non-emptyrA  ©rY   rœ  r   rº   r   r$  ©r[   r\   r(  r'  Úquotientr*  s         r`   Útest_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signal  sp   € à—:‘:  1˜v¨¨1 vÐ.Ó/ˆØŸ:™: q¨! fÓ-ÐÜ�]‰]œ:Ð-RÔSñ 	PÜ"(×"3Ñ"3°HÐ>NÓ"OÑˆH�i÷	P÷ 	Pñ 	Púó   ÁA)Á)A2c                 óê   — |j                  ddg«      }|j                  ddgddgg«      }t        j                  t        d¬«      5  t	        j
                  ||«      \  }}d d d «       y # 1 sw Y   y xY w)Nr   z$^Parameter divisor must be non-emptyrA  r-  r.  s         r`   Útest_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisor  sp   € à—:‘:˜q !˜fÓ%ˆØŸ:™:¨¨1 v°°1¨vÐ&6Ó7ÐÜ�]‰]œ:Ð-SÔTñ 	PÜ"(×"3Ñ"3°HÐ>NÓ"OÑˆH�i÷	P÷ 	Pñ 	Púr1  c                 óØ   — |j                  g d¢«      |j                  g d¢«      }}t        j                  ||«      \  }}t        ||«       t	        |j                  |«      «      dk(  sJ ‚y)zCReturn signal as `remainder` when ``len(divisior) > len(signal)``. r  )r   rP   rQ   rL   rM   r   N)rY   r   r$  r5   r=   )r[   r\   rå  Údivr/  r*  s         r`   Útest_divisor_greater_signalz*TestDeconvolve.test_divisor_greater_signal  sZ   € à—:‘:šiÓ(¨"¯*©*²_Ó*EˆSˆÜ$×/Ñ/°°SÓ9Ñˆ�)Ü˜	 3Ô'Ü�r—z‘z (Ó+Ó,°Ò1Ð1Ñ1rb   N)
r  r  r  r  rß  ra   r  r0  r3  r6  r  rb   r`   r   r   í  sg   „ ñ ˜dÐ+KÔLñ-ó Mð-ò-ñ �vÐ&?Ô@ñPó AðPñ �vÐ&?Ô@ñPó AðPó2rb   r   c                   ó2  — e Zd Zd„ Z edd¬«      d„ «       Zej                  j                  dddg«      ej                  j                  d	g d
¢«      d„ «       «       Z	d„ Z
ej                  j                  d ej                  ddg«      ddgg«      d„ «       Zy)ÚTestDetrendc                 óz   — t        |j                  g d¢«      «      }|j                  g d¢«      }t        ||«       y )NrO   r˜  )r*   rY   r:   )r[   r\   Ú	detrendedÚdetrended_exacts       r`   ra   zTestDetrend.test_basic  s-   € Ü˜BŸJ™J¢yÓ1Ó2ˆ	ØŸ*™*¢YÓ/ˆÜ! )¨_Õ=rb   rF   zoverwrite_data not implementedrH   c                 óv   — |j                  g d¢«      }t        |d¬«      }t        |d¬«      }t        ||«       y )N)rP   ç333333ó?r$  gš™™™™™ù?g333333@F)Úoverwrite_dataT)rY   r*   r:   )r[   r\   rq   Ú
copy_arrayÚinplaces        r`   Ú	test_copyzTestDetrend.test_copy  s3   € à�J‰JÒ.Ó/ˆÜ˜Q¨uÔ5ˆ
Ü˜!¨DÔ1ˆÜ! *¨gÕ6rb   r÷   Úlinearrà  r‡  r  c                 ó˜   — |j                  |j                  d«      d«      }t        |||¬«      }|j                  |j                  k(  sJ ‚y )NéÒ   )rM   rN   r–   )r«  r‡  )r…   r†   r*   r‘  )r[   r‡  r÷   r\   r»  r:  s         r`   r  zTestDetrend.test_axis&  sA   € ð �z‰z˜"Ÿ)™) EÓ*¨IÓ6ˆÜ˜D t°$Ô7ˆ	Ø�‰ $§*¡*Ò,Ð,Ñ,rb   c                 ó|  — g d¢g d¢z   }|j                  |«      }t        |dd¬«      }t        ||j                  |«      d¬«       |j                  |«      d d d …d f   }t        |ddd¬	«      }t        ||j                  |«      d¬«       t	        t
        «      5  t        |dd¬«       d d d «       y # 1 sw Y   y xY w)
Nr  )rM   r   rÙ  rÁ  rB  rK   )r«  Úbpr‚   rƒ   rP   )r«  rF  r‡  )rY   r*   r4   r´  r¹   rº   )r[   r\   r»  r:  s       r`   Útest_bpzTestDetrend.test_bp-  s¨   € Úš?Ñ*ˆØ�z‰z˜$ÓˆÜ˜D x°AÔ6ˆ	Ü˜	 2§=¡=°Ó#;À%ÕHð �z‰z˜$Ó ¢a¨ Ñ.ˆä˜D x°A¸AÔ>ˆ	Ü˜	 2§=¡=°Ó#;À%ÕHô œ:Ó&ñ 	/Ü�D˜x¨AÕ.÷	/÷ 	/ñ 	/ús   ÂB2Â2B;rF  r   rQ   c                 óô  — t         j                  j                  d«      }|j                  d«      }|j	                  |t        |«      ¬«      }t        |t         j                  «      rt        |«      s|j	                  |«      }n+t        |«      s t        |«      st        j                  d«       t        ||¬«      }|j	                  g d¢«      }t        |«      |j                  k(  rdnd}t        |||¬	«       y )
Ni90  rR   r§   z'list bp is currently numpy and jax only)rF  )
g¢3   À¼g¢3   °¼gÿ_ìòêr¼¿g�b	6±Å¿gq üç­]½?g=~¹›D°?g@âzI Ö?gØñòƒÙÕ¢¿gˆ»Ý?Ô…”¿g1ï
ÛàÈ¿rð  r‚   rƒ   )rò   ró   rô   r  rY   r>   r«  Úndarrayr8   r6   rœ  r‰  r*   râ   r4   )r[   rF  r\   rÿ   rq   ri  Úres_scipy_191r„   s           r`   Útest_detrend_array_bpz!TestDetrend.test_detrend_array_bp=  sÀ   € ô �i‰i×#Ñ# EÓ*ˆØ�H‰H�R‹LˆØ�J‰J�qÔ 0°Ó 4ˆJÓ5ˆÜ�bœ"Ÿ*™*Ô%¬f°R¬jð —‘˜B“‰Bä˜R”L¤F¨2¤JÜ—‘ÐEÔFä�a˜BÔˆØŸ
™
ò $Oó Pˆô (¨Ó+¨r¯z©zÒ9‰t¸uˆÜ˜˜]°Ö6rb   N)r  r  r  ra   r  rA  rœ  r�  rž  r  rG  rò   r“  rK  r  rb   r`   r8  r8    s©   „ ò>ñ
 �kÐ*JÔKñ7ó Lð7ð ‡[�[×Ñ˜V h°
Ð%;Ó<Ø‡[�[×Ñ˜V¢YÓ/ñ-ó 0ó =ð-ò
/ð  ‡[�[×Ñ˜T H B§H¡H¨a°¨VÓ$4°q¸!°fÐ#=Ó>ñ7ó ?ñ7rb   r8  c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestUniqueRootsc                 ó¶   — |j                  g d¢«      }t        |«      \  }}t        ||d¬«       t        ||j	                  t        |«      t        ¬«      «       y )N)rc  r¶  r  r=  r  rq  rÄ  r§   ©rY   r+   r;   r5   ri  rD  rn  ©r[   r\   rN  rr  rs  s        r`   Útest_real_no_repeatz#TestUniqueRoots.test_real_no_repeatV  sF   € Ø�J‰JÒ3Ó4ˆÜ+¨A›Ñˆ�Ü˜F A¨rÕ2Ü˜ b§g¡g¬c°!«f¼C gÓ&@ÕArb   c                 óø  — |j                  g d¢«      }t        |dd¬«      \  }}t        ||j                  g d¢«      d¬«       t        ||j                  g d¢«      «       t        |dd	¬«      \  }}t        ||j                  g d
¢«      d¬«       t        ||j                  g d¢«      «       t        |dd¬«      \  }}t        ||j                  g d¢«      d¬«       t        ||j                  g d¢«      «       y )N)rc  çffffffî¿ç{®Gázì¿çš™™™™™é¿r  r½  çÍÌÌÌÌÌð?r{  rS  ©Útolr¢  )rc  rT  r  r½  rq  rÄ  ©rQ   rQ   rP   rQ   r   )rS  rU  r  rV  r   )g333333ï¿g
×£p=
ë¿r  gffffffð?©rY   r+   r;   r5   rP  s        r`   Útest_real_repeatz TestUniqueRoots.test_real_repeat\  sÊ   € Ø�J‰JÒAÓBˆä+¨A°4¸uÔEÑˆ�Ü˜F B§J¡JÒ/FÓ$GÐQSÕTÜ˜ b§j¡j²Ó&>Ô?ä+¨A°4¸uÔEÑˆ�Ü˜F B§J¡JÒ/GÓ$HÐRTÕUÜ˜ b§j¡j²Ó&>Ô?ä+¨A°4¸uÔEÑˆ�Ü˜F B§J¡JÒ/KÓ$LØ$&õ	(ä˜ b§j¡j²Ó&>Õ?rb   c                 ó¶   — |j                  g d¢«      }t        |«      \  }}t        ||d¬«       t        ||j	                  t        |«      t        ¬«      «       y )N)rc  r¦   ù      à?      à?r¶  r‚  rq  rÄ  r§   rO  rP  s        r`   Útest_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeatl  sF   € Ø�J‰JÒHÓIˆÜ+¨A›Ñˆ�Ü˜F A¨rÕ2Ü˜ b§g¡g¬c°!«f¼C gÓ&@ÕArb   c                 óø  — |j                  g d¢«      }t        |dd¬«      \  }}t        ||j                  g d¢«      d¬«       t        ||j                  g d¢«      «       t        |dd	¬«      \  }}t        ||j                  g d
¢«      d¬«       t        ||j                  g d¢«      «       t        |dd¬«      \  }}t        ||j                  g d¢«      d¬«       t        ||j                  g d¢«      «       y )N)rc  ù      ð¿š™™™™™©?ùffffffî¿333333Ã?ùÍÌÌÌÌÌì¿333333Ã?r  r]  ùÍÌÌÌÌÌÜ?š™™™™™á?r{  rS  rW  )rc  ra  r  rc  rq  rÄ  rY  r   )r`  rb  r  r]  r   )y      ð¿š™™™™™™?yš™™™™™í¿333333Ã?r  yffffffÞ?ÍÌÌÌÌÌà?rZ  rP  s        r`   Útest_complex_repeatz#TestUniqueRoots.test_complex_repeatr  sã   € Ø�J‰Jò 'ó (ˆô  ,¨A°4¸uÔEÑˆ�Ü˜FØŸJ™JÒ'OÓPØ$&õ	(ô 	˜ b§j¡j²Ó&>Ô?ä+¨A°4¸uÔEÑˆ�ÜØØ�J‰JÚ>óð õ	
ô 	˜ b§j¡j²Ó&>Ô?ä+¨A°4¸uÔEÑˆ�ÜØØ�J‰JÒKÓLØõ	
ô
 	˜ b§j¡j²Ó&>Õ?rb   c           
      ó˜  — |j                  t        j                  t        j                  t        j                  d«      t        j                  d«      «      «      «      }|j                  g d¢«      }t        |«      \  }}|j                  |«      }t        |j                  |«      |d¬«       t        ||j                  g d¢«      «       y )NrM   )y¨ô—›wãé¿^Zu#Ïâ¿y§ô—›wãé¿_Zu#Ïâ?yNé/7ïÆÓ? UDoî¿yPé/7ïÆÓ?ÿTDoî?r–   rÄ  )rQ   rQ   rQ   rQ   )	rY   rò   r¤  r   ri  r+   Úsortr;   r5   )r[   r\   rN  Ú
true_rootsrr  rs  s         r`   Útest_gh_4915zTestUniqueRoots.test_gh_4915Ž  s‰   € Ø�J‰J”r—x‘x¤§¡¬B¯G©G°A«J¼¿¹À»
Ó CÓDÓEˆØ—Z‘ZÚBó
ˆ
ô  ,¨A›Ñˆ�Ø—‘˜“ˆä˜BŸG™G F›O¨ZÀÕCÜ˜ b§j¡j²Ó&>Õ?rb   c                 ót  — t        |j                  g d¢«      «      \  }}t        ||j                  ddg«      d¬«       t        ||j                  ddg«      «       t        |j                  g d¢«      d	¬
«      \  }}t        ||j                  ddg«      d¬«       t        ||j                  ddg«      «       y )N)r½  r¦   r½  r½  r¦   rq  rÄ  rQ   rP   )rP   g_p‰   ð?ù•Ö&è.>      ð?r{  )rX  rj  )r+   rY   r;   r5   )r[   r\   rr  rs  s       r`   Útest_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extraš  sœ   € Ü+¨B¯J©JÒ7GÓ,HÓIÑˆ�Ü˜F B§J¡J°°T¨{Ó$;ÀRÕHÜ˜ b§j¡j°!°Q°Ó&8Ô9ä+Ø�J‰JÒ/Ó0°cô 
Ñˆ�ô 	˜F B§J¡J°°[Ð/AÓ$BÈBÕOÜ˜ b§j¡j°!°Q°Ó&8Õ9rb   c                 ó^  — |j                  t        j                  j                  d«      dt        j                  j                  d«      z  z   «      }t	        |d«      \  }}t        ||j                  t        j                  |«      g«      d¬«       t        ||j                  dg«      «       y )Nr  r¦   rQ   rq  rÄ  )rY   rò   ró   r  r+   r;   rS  r5   rP  s        r`   Útest_single_unique_rootz'TestUniqueRoots.test_single_unique_root¥  sy   € Ø�J‰J”r—y‘y—~‘~ cÓ*¨R´"·)±)·.±.ÀÓ2EÑ-EÑEÓFˆÜ+¨A¨qÓ1Ñˆ�Ü˜F B§J¡J´·±°q³	¨{Ó$;ÀRÕHÜ˜ b§j¡j°#°Ó&7Õ8rb   N)
r  r  r  rQ  r[  r^  rd  rh  rk  rm  r  rb   r`   rM  rM  T  s*   „ òBò@ò Bò@ò8
@ò	:ó9rb   rM  c                  ó¶   — t        j                  t        j                  dt        j                  ¬«      dd«      } | j
                  t        j                  k(  sJ ‚y )Nrö  r§   rN   rL   )r   rã  rò   r†   rä   r¨   )rk  s    r`   Útest_gh_22684ro  ¬  s;   € Ü×!Ñ!¤"§)¡)¨D¼¿¹Ô"EÀqÈ!ÓL€FØ�<‰<œ2Ÿ<™<Ò'Ð'Ñ'rb   rö  )šr[  rž  rE  Úconcurrent.futuresr   r   Ú	itertoolsr   r   rœ  r   r¹   Únumpyrò   Únumpy.exceptionsr	   Úscipyr
   rÿ  rq  r   Úscipy.optimizer   r   r   Úscipy.signalr   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(   r)   r*   r+   r,   r-   Úscipy.signal.windowsr.   Úscipy.signal._signaltoolsr/   r0   r1   Úscipy.signal._upfirdnr2   Ú
scipy._libr3   Úscipy._external.array_api_extraÚ	_externalÚarray_api_extrarØ  Úscipy._lib._array_apir4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r�  r  r  Úlazy_xp_modulesrE   r!  r¢  r$  r+  r6  r8  r:  rž  r[  rG  r’  rÀ  rj  rl  rÇ  rÂ  rm  rÎ  ru  rq  r‚  r  rœ  rG  rK  rM  rQ  rS  rU  r\  r^  r`  r�  ÚparamrŸ  r£  r¦  r©  rÊ  rØ  rê  r  r0  r;  Ú	fail_slowrG  rI  rR  rW  rT  r®  rÆ  rÿ  rd  rÄ  rú  r$  r   r8  rM  ro  r  rb   r`   ú<module>r‚     si  ðÛ 
Û Û ç ?Ý Ý ã Ý *Û Ý +å Ý %ß 6Ý ÷÷ ÷ ÷ ÷ ÷ ÷ ÷ ñ õ &ß TÑ TÝ 0Ý !ß -Ð -÷÷ ÷ ÷ ó ð —;‘;×/Ñ/Ð Ø—K‘K×1Ñ1Ð à�(€ñ �8Ó÷o4ð o4ó ðo4ñd �:Ó÷["ð ["ó ð["ñ| �;Ó÷fLð fLó  ðfLòR3òò

Còñ
 �:Ó÷R$ð R$ó ðR$ñj ˜$Ð'JÔKØ‡�×Ñ˜Ù.¨{Ó;Ù.¨zÓ:ð<ó=÷90ð 90ó=ó Lð90ñx ˜$Ð'JÔKØ‡�×ÑÐ8Ó9Ø‡�×Ñ˜ 2§=¡=°"·.±.Ð"AÓBÙ�8˜[Ó)ñ	ó *ó Có :ó Lð	÷U*ñ U*ñp �6—=‘=Ó!÷Lð Ló "ðLò  C€Ø �>Ñ !€÷v,ñ v,ñr	 �6×(Ñ(Ó)÷1ð 1ó *ð1ñ> �6×&Ñ&Ó'÷[Eð [Eó (ð[Eñ| �7Ó÷h
ð h
ó ðh
ôVÐ/ô ôÐ/ô ñ ˜$ÔôÐ$5ó ó  ðôÐ 1ô ôÐ!2ô ñ ˜$ÔôÐ&7ó ó  ðñ �7ÓñFó ðFñ �7ÓñKó ðKð
 ‡�×Ñ˜ò  !ó "ñ �;Ð'9Ô:Ù�9Ó÷Hð Hó ó ;ó"ðHñV �9Ó÷/Ið /Ió ð/Iñd Ð#Ó$Ø‡�×Ñ˜Ò!:Ó;Ø‡�×Ñ˜ D¨% =Ó1Ø‡�×Ñ˜¨¨S°$¸Ø(4¨¯©°UÀ6Ç;Á;×CSÑCSÐBTÔ(UØ(4¨¯©°UÀ6Ç;Á;×CSÑCSÐBTÔ(Uð(Wó ñ+ó	ó 2ó <ó %ð+ñ2 Ð#Ó$ñ2ó %ð2ñ
 �9ÓØ‡�×Ñ˜ [°,Ð$?Ó@÷w+ð w+ó Aó ðw+÷v:Qñ :Qñz �:Ó÷26ð 26ó ð26ñj �8˜[Ó)÷z%ð z%ó *ðz%ñz �; Ó)ôL�ló Ló *ðLò(*óZ4ñ@ Ð%Ó&Ø‡�×Ò�rÓñ?ó ó 'ð?ñ6 Ð%Ó&ñGó 'ðGð ‡�×Ò�rÓñ@ó ð@ñ: �6—?’?Ó#÷~%ð ~%ó $ð~%ñ@ �7Ó÷e9ð e9ó ðe9ñP �8Ó÷u&ð u&ó ðu&ñp �8Ó÷sAð sAó ðsA÷lQ(ñ Q(ñh �>Ó"÷ZBð ZBó #ðZBñF ˜4Ô Ù�7ÓØ‡�×Ñ˜ÒPÓQ÷p?ð p?ó Ró ó !ðp?ñf �6×$Ò$Ó%÷&2ð &2ó &ð&2ñR �7Ó÷97ð 97ó ð97ñx �<Ó ÷T9ð T9ó !ðT9ón(rb   