Ë
    çÿæi"  ã                   ó‚  — 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lCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS e	j¨                  jª                  ZUe	j¨                  j¬                  ZVegZW ePe«       G d„ d«      «       ZX ePe«       G d„ d«      «       ZY ePe«       G d„ d«      «       ZZd„ Z[d„ Z\d„ Z]d„ Z^ ePe «       G d„ d«      «       Z_ eUdd¬«      e	j¨                  jÁ                  d  eQe«       eQe «      g«       G d!„ d"«      «       «       Za eUdd¬«      e	j¨                  jÅ                  d#«      e	j¨                  jÁ                  d$ejÆ                  ejÈ                  g«       ePee«      d%„ «       «       «       «       Ze G d&„ d'«      Zf ePejÎ                  «       G d(„ d)«      «       Zhg d*¢Zieie@z  Zi G d+„ d,«      Zj ePejÖ                  «       G d-„ d.«      «       Zl ePejÚ                  «       G d/„ d0«      «       Zn ePe%«       G d1„ d2«      «       Zo G d3„ d4eo«      Zp G d5„ d6eo«      Zq eUd¬7«       G d8„ d9eo«      «       Zr G d:„ d;eo«      Zs G d<„ d=eo«      Zt eUd¬7«       G d>„ d?eo«      «       Zu ePe%«      d@„ «       Zv ePe%«      dA„ «       Zwe	j¨                  jÁ                  dBg dC¢«       eVdDdE¬F«       ePe«       G dG„ dH«      «       «       «       Zx ePe«       G dI„ dJ«      «       Zy ePe«      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| ePe«      dX„ «       Z} ePe«      e	j¨                  jÁ                  dYdZd[g«       G d\„ d]«      «       «       Z~ G d^„ d_«      Z ePe&«       G d`„ da«      «       Z€ ePe'e1«       G db„ dc«      «       Z� ePe1e'«       G dd„ dee�«      «       Z‚df„ Zƒdƒdg„Z„ ePe!«      e	j¨                  �j                  dh«      di„ «       «       Z† ePe!«      dj„ «       Z‡ eUd¬7«      e	j¨                  �j                  dh«      dk„ «       «       Zˆ ePe�j                  «       G dl„ dm«      «       ZŠ ePe#«       G dn„ do«      «       Z‹ ePe$«       G dp„ dq«      «       ZŒ ePe"«       G dr„ ds«      «       Z� G dt„ du«      ZŽ ePe-«       G dv„ dw«      «       Z� eUd¬x«       ePe0«      e	j¨                  jÁ                  dBg dy¢«       G dz„ d{«      «       «       «       Z� ePe�j"                  «       G d|„ d}«      «       Z’ ePe5«       G d~„ d«      «       Z“ ePe6«       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/Volumes/fast/ai/experiments/voice-extract-mac/.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© 2»°2Û+D 4ð �R˜’Ø+Dð ¸�¨ˆò 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Ñä ‰LˆB��DØœRŸX™X b›\×.Ñ.Ñ/×6Ñ6°rÓ:ˆBØœRŸX™X b›\×.Ñ.Ñ/×6Ñ6°rÓ:ˆBñ #4ó5Ù"3˜3ð œH R¨°C¸dÔCÑCØ"3ð ð 5ð ˜5‘>×'Ñ'¨7°8Ñ+<×+BÑ+BÒBÐBÐBà˜‰| ¨"¡Ü)¨"¨bÓ1°XÒ=Ð=Ð=Øô ¸BÀ¹8ÓD¹8°a�AÐ1Ò1¸8ÑDÔEØ"(°$Ñ7‘Ø˜r 2˜hÑ&à"&°Ñ5‘ð #'°Ñ5�ä˜G E™N¨G°HÑ,=ÑHÀÔHñ1 !ùô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Õ<Ü ¨¸Ö?ñ 6rb   ©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÷ 6÷ 'ð
 =ˆÜœ:¨SÖ1Ü˜˜�u  1˜v˜h°1°a°&Õ9÷ 2Ð1÷	 6Ð5ú÷ 'Ð&ú÷ 2Ð1ú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dd¬«      ej
                  j                  dddddgddgg«      d	„ «       «       Z edd¬«      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dd¬«      ej
                  j                  dddddgddgg«      d„ «       «       Z edd¬«      ej
                  j                  dd
dd
gdgg«      d„ «       «       Z edd¬«      ej
                  j                  dddddgddgg«      d„ «       «       Z edd¬«      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¬«       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
d0«      «       e ed1d2«      «      z   e jB                  jE                  d3«      jG                  d4d5d «      jI                  «       z   «      d6„ «       «       Z% ed)¬7«      d8„ «       Z&y)9ÚTestFFTConvolver¢   r½   rH   Ú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ÿ  sa   € ð �J‰J’yÓ!ˆØ—:‘:Ò0Ó1ˆà�2Š:Ü˜a Ó#‰Cä˜$¤Ô%Ü˜T“{�Ü˜a ¨Ô.ˆCä˜˜X¨FÖ3rb   rP   c                 óZ  — |j                  g d¢«      }|j                  g d¢«      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }t        |t        «      rt        |«      }t        |||¬«      }t        ||d¬«       y )NrO   r¦  rQ   rP   r¨  r©  rƒ   ©rY   rò   Útiler«  r¬  rˆ   r   r4   r­  s         r`   Útest_real_axeszTestFFTConvolve.test_real_axes  sˆ   € ð �J‰J’yÓ!ˆØ—:‘:Ò0Ó1ˆà�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ—:‘:œbŸg™g h°°A°Ó7Ó8ˆä�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                 óZ  — |j                  g d¢«      }|j                  g d¢«      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }t        |t        «      rt        |«      }t        |||¬«      }t        ||d¬«       y )Nr´  r¶  rQ   rP   r¨  r©  rƒ   r°  r­  s         r`   Útest_complex_axesz!TestFFTConvolve.test_complex_axes*  s‡   € à�J‰JÒ/Ó0ˆØ—:‘:ÒIÓJˆà�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ—:‘:œbŸg™g h°°A°Ó7Ó8ˆä�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_same8  sx   € ð �J‰JšÚ!ð#ó $ˆà—:‘:Ò2Ú2Ú3ð5ó 6ˆð �2Š:Ü˜a Ó#‰Cä˜$¤Ô%Ü˜T“{�Ü˜a ¨Ô.ˆCÜ˜˜XÕ&rb   rQ   c                 ór  — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }|j                  t        j                  |g d¢«      «      }|j                  t        j                  |g 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_axesQ  s›   € ð �J‰Jš	Úðó ˆà—:‘:Ò0Ú-Ú.ð0ó 1ˆð �J‰J”r—w‘w˜q¢)Ó,Ó-ˆØ—:‘:œbŸg™g h²	Ó:Ó;ˆä�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_samei  s{   € ð �J‰JÒ0Ú+ð-ó .ˆà—:‘:ÚAÚ(Ú<ðó ˆð �2Š:Ü˜a Ó#‰Cä˜$¤Ô%Ü˜T“{�Ü˜a ¨Ô.ˆCä˜˜X¨FÖ3rb   c                 óp  — |j                  g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }|j                  t        j                  |g d¢«      «      }|j                  t        j                  |g 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Ú(Ú<ðó ˆð �J‰J”r—w‘w˜q¢)Ó,Ó-ˆØ—:‘:œbŸg™g h²	Ó:Ó;ˆä�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                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }t        |t        «      rt        |«      }t        ||d|¬«      }t        ||d	¬
«       t        ||d|¬«      }t        ||d	¬
«       y )NrO   rÑ  rÒ  rÖ  rQ   rP   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ˆ
à�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ—Z‘Z¤§¡¨
°Q¸°FÓ ;Ó<ˆ
Ø—Z‘Z¤§¡¨
°Q¸°FÓ ;Ó<ˆ
ä�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                 óÐ  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }t        |t        «      rt        |«      }t        ||d|¬«      }t        ||d¬	«       y ©
Nrà  rÑ  rá  rQ   rP   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ˆà�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ—:‘:œbŸg™g h°°A°Ó7Ó8ˆä�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                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }t        |t        «      rt        |«      }t        ||d|¬«      }t        ||d¬	«       t        ||d|¬«      }t        ||d¬	«       y )
Nrê  rì  rí  rQ   rP   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ˆà�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ—:‘:œbŸg™g h°°A°Ó7Ó8ˆä�dœDÔ!Ü˜“;ˆDä˜!˜Q ¨dÔ3ˆÜ˜˜X¨FÕ3ä˜!˜Q ¨dÔ3ˆÜ˜˜X¨FÖ3rb   rF   z mapped axes must have same shapec                 óš  — |j                  g d¢«      }|j                  g d¢«      }|j                  g d¢«      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }|j                  t        j                  |ddg«      «      }t        ||dd¬«      }t	        ||d¬	«       y rç  )rY   rò   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ˆà�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ�J‰J”r—w‘w˜q 1 a &Ó)Ó*ˆØ—:‘:œbŸg™g h°°A°Ó7Ó8ˆä˜!˜Q ¨aÔ0ˆÜ˜˜X¨FÖ3rb   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_rank9  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_element@  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_dataG  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_axesX  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                 ó²  — 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                  t        j                  |g d	¢«      «      }|j                  t        j                  |g d
¢«      «      }|j                  t        j                  |g 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_axesk  s�  € ð 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Ó=ˆð �J‰J”r—w‘w˜q¢/Ó2Ó3ˆØ�J‰J”r—w‘w˜q¢/Ó2Ó3ˆØ—:‘:œbŸg™g h²Ó@ÓAˆä˜!˜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Ó#ˆCØˆG�C‰LØ—Z‘Z¤§¡¨c°3Ó 7Ó8ˆFàHˆCÜ—‘œn°CÖ8Ü—‘ ¨°fÀUÕK÷ 9Ð8ñ $÷
 9Ð8ús   Â,CÃC	)'r  r  r  r  rœ  r�  rž  r®  r²  rt   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*  „ ñ �gÐ&;Ô<Ø‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ4ó Có =ð4ñ �gÐ&;Ô<Ø‡[�[×Ñ˜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ñ$ �gÐ&;Ô<Ø‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ6ó Có =ð6ñ, �gÐ&;Ô<Ø‡[�[×Ñ˜V a¨¨a¨S°2°$Ð%7Ó8ñ6ó 9ó =ð6ñ( �gÐ&;Ô<Ø‡[�[×Ñ˜V b¨$°°A°3¸¸R¸DÐ%AÓBñ4ó Có =ð4ñ, �gÐ&;Ô<Ø‡[�[×Ñ˜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Ù�gÐ&;Ô<ñ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*  ±  sE   € Ü& u°QÕ7ô Ñ7‘t�q˜!Ü�1�q‘5‹z˜AŠ~ð �ŠFÐ7ò ð ùó 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_2dr5  ¶  sÓ   € Ü˜EÓ"€GÜ˜EÓ"€Gä�'˜7Ô#ô%Ù#ñ %7 H¨hˆh�xÓØ#ð ñ %ò &€EÜ3:¸6À5Ô3Iô CÑ3I¡ ¨%Ø˜ÒØ�Q‰Z˜' !™*Ò$¨°©°g¸a±jÒ)@Ø�Q‰Z˜' !™*Ò$¨°©°g¸a±jÒ)@ð �U�HÓÐ3Iò 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_eqr7  Ã  s=   € Ü& u°QÕ7ô Ñ7‘t�q˜!Ø�AŠvð �ŠFÐ7ò ð ùó 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   rB  )r[   r£  r;  r<  rG  rH  r?  rg   rE  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 rA  rB  )r[   r;  r<  Ú	shape_a_1Ú	shape_b_1rg   r?  rE  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¦   rJ  r   )rò   ró   r  rˆ   rY   r   rC  r   rD  r#  r   r:   )r[   r£  r;  r<  rO  rP  rg   rG  rH  r?  rE  r\   rK  rL  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_emptyH  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_rankQ  s8   € Ø�J‰J�tÓˆØ�J‰J�tÓˆÜ˜˜AÓˆÜ˜˜Q ™UÕ#rb   c                 ó‚   — |j                  dg«      }|j                  dg«      }t        ||«      }t        |||z  «       y r�   rV  rù  s        r`   r�   z"TestOAConvolve.test_single_elementW  s<   € Ø�J‰J˜�vÓˆØ�J‰J˜�vÓˆÜ˜˜AÓˆÜ˜˜Q ™UÕ#rb   N)r  r  r  rœ  r�  rŸ  rž  r7  r¬  r‡   r=  r*  rF  rM  r5  rQ  rS  r  r÷  rw   r�   r  rb   r`   r9  r9  È  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   r9  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[   rX  r\   r]   r^   s        r`   rÖ   z(TestAllFreqConvolves.test_invalid_shapesd  si   € Ü�I‰I�a˜‹O×#Ñ# FÓ+ˆÜ�I‰I�b˜!Ó×$Ñ$ VÓ,ˆÜœ:ð"FöGñ ˜˜A GÕ,÷G÷ Gñ 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_axesl  sO   € Ü�H‰H’\Ó"ˆÜ�H‰H’\Ó"ˆÜœ:ð"6ö7ñ ˜˜A Q¨ FÕ+÷	7÷ 7ñ 7ú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^   rX  r\   s        r`   r  z)TestAllFreqConvolves.test_mismatched_dimsu  s/   € ô
 œ:ð"-ö.ñ ˜˜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   r`  )r[   rX  r\   s      r`   Útest_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags  sx  € Üœ:ð"0ö1ñ ˜!˜˜q˜c¨Õ0÷1ô
 œ:Ø!FöHá˜!˜˜q˜c¨Õ+÷Hô œ:ð .2ö 3á˜!˜˜q˜c¨!¨Q¨°!°Q°Ð(8Õ9÷3ô œ:ð .2ö 3á˜!˜˜q˜cÒ(8Õ9÷3ô œ:Ø!GöIá˜!˜˜q˜c¨¨Õ,÷Iô œ:Ø!GöIá˜!˜˜q˜c¨¨Õ-÷Iô œ:Ø!:ö<á˜!˜˜q˜c¨¨A¨Õ/÷<ð <÷31ñ 1ú÷
Hð Hú÷3ð 3ú÷3ð 3ú÷Ið Iú÷Ið Iú÷<ð <ú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  rc  r  rb   r`   rZ  rZ  ^  sZ   „ ò-ò,ð ‡[�[×Ñ˜UØ !˜s A˜hØ  1 #˜hØ !˜s a S E˜lð,ó-ñó	-ðó0rb   rZ  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_inputrh  ž  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  rm  )
r
  r
  r
  r
  r
  rå   é   é   é_   é#   )
r
  r
  r
  r
  r
  r:  rh   r(  rf  rU  )
r¿   éa   rT   rP  rÀ   rm  rÌ   r›   éG   rå   )
r9  r  rT  rp  rP  rU   rn  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å   ro  ro  rk  r}   r   )
r   r
  r
  r
  r
  rå   rn  rf  rp  r   )
r
  r
  r
  r
  r
  r>  rh   rh   r:  rr  )
r
  r
  r
  r
  r
  r
  rå   r>  r9  rå   )
r
  r
  r
  r
  r
  r
  r:  rv  r9  rr  )
ru  r
  r
  r
  r
  r>  r:  rx  rv  r7  )
rU   r
  r
  r
  r
  r>  r:  rÎ   rv  r7  )
r–   r:  r
  r
  r>  r:  r:  rx  rÎ   rf  )
r   rU   ru  rz  rU   rU   rx  rx  rx  r   )
r   r–   r  r–   rL   rL   rn  rn  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õ  s)   € ô œJ¬	Ð2Õ3Ü�N‰N˜4Ô ÷ 4×3Ñ3ú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   ©rP   rP   )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  sJ  ý€ ô ˜˜EÓ"ˆØ—:‘:˜dŸg™g¨U�:Ó3ˆØ—:‘:˜dŸh™h¨e�:Ó4ˆð �~‰~ §¡Ò/Ð/Ð/ð
 �^‰^˜AÑ !Ñ#ˆØ�^‰^˜AÑ !Ñ#ˆØ×Ñ Ñ" aÑ'¨!Ñ+ˆØ×Ñ Ñ" aÑ'¨!Ñ+ˆ÷	/ñ 	/ð8 —‘˜xÓ(ˆÜ¨AÕ.°$Ú5ˆFÙ>DÓE¹f°U�t—{‘{ 5¨%Õ0¸fˆGÐEô ' wÖ/�Ø'-§}¡}£Ñ$��f˜fØ)-��v˜v�~Ò&ñ 0÷ /ô 	˜ Õ)ùò 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`   rj  rj  ®  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   rj  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_basicI  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Á  F  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Ü  Úcval)rQ   rP   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_basic]  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	  rn  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_rfft€  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>.win1  s   € àœŸ™ eÓ,Ñ,Ð,rb   rÕ  rQ   r  rƒ   N)rò   ri  r   rá  r4   )r[   r9  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[   r9  r:  Út0Údtr>  r?  r@  rü   Út_refs
             r`   Útest__resample_param_tz#TestResample.test__resample_param_t:  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>R  s   è ø€ Ð4©8 RŒb�i‰i˜‹m˜bÕ ©8ùs   ‚"$c              3   óv   •K  — | ]0  }t        j                  d t         j                  z  ‰z  |z  «      –— Œ2 y­w)rQ   N)rò   rñ  r  )rL  Út_Úf_nys     €r`   rN  z5TestResample.test_resample_nyquist.<locals>.<genexpr>S  s-   øè ø€ Ð=¹"°B”"—&‘&˜œRŸU™U™ TÑ)¨BÑ.×/¹"ùs   ƒ69rª   r  rƒ   N)Úminr   rá  r4   rò  )	r[   rI  rH  Úttré  r  Úy1_rÚy1_crQ  s	           @r`   Útest_resample_nyquistz"TestResample.test_resample_nyquistL  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[   rW  r¨   r\   Úrandom_staterç   rq   r/  ÚyfÚhcrr   s              r`   Útest_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfilt[  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   ru  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_correlate1dz  s´   € ãˆDÜ˜A˜r 4Ö(�Û (�HÜŸ	™	×(Ñ(¨"¨Ó/�AÜ Ÿi™i×.Ñ.°¨{Ó;�GÜ% a¬¯©°Ó)9À
ÔK�CÜ&)¨"¯*©*°q¸'À3Ð6GÓ&H‘O�A�w Ü ×.Ñ.Ø˜a d°7ô<�Cä# C©¨$¨¡K°Õ5ñ !)ñ )ñ rb   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   r8  rA  rG  rV  Úintrò   râ   rä   rx  Úcomplexr`  rf  rk  r  rb   r`   rÍ  rÍ  [  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   Ú	cspline1drC  Úcspline1d_evalr:   )r[   r\   rr   rq   rr  Ú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   rs  rt  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`   rp  rp  ”  s   „ ò	Fó1rb   rp  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\   rj  Ú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¤   )ro  r—   r˜   rk  rŽ  ©r   ro  r—   r˜   rk  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   z
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˜   rk  é   )r   r—   r˜   rk  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“  )ro  r—   r˜   rk  rn  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«  rm  Ú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à   )rL  Úv_r\   s     €r`   rN  z8_TestLinearFilter.test_invalid_params.<locals>.<genexpr>8  s%   øè ø€ ÐPÁiÀ�r—y‘y  R§Y¡Y°U�y×;Áiùs   ƒ(+)rY   rœ  r   rº   r   rã  ÚNotImplementedError)r[   r\   r^   r]   rq   s    `   r`   r¼   z%_TestLinearFilter.test_invalid_params+  s8  ø€ ð —*‘*˜a˜S“/ 2§:¡:¨q¨c£?°B·J±JÀÀ1¸vÓ4Fˆaˆ1ˆÜ�]‰]œ:Ð-BÖCÜ�B—F‘F˜1“I˜q !Ô$÷ Dä�]‰]œ:Ð-BÖCÜ�B—J‘J˜r“N A qÔ)÷ Dä�]‰]œ:Ð-BÖCÜ�A�r—v‘v˜a“y !Ô$÷ Dä�]‰]œ:Ð-BÖCÜ�A�r—z‘z "“~ qÔ)÷ Dä�]‰]Ô.Ð6UÖVÛPÀqÈ!ÈQÁiÓP‰GˆAˆq�!Ü�A�q˜!Ô÷ WÐV÷ DÑCúçCÐCúçCÐCúçCÐCúçVÐVú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_IIR;  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_FIRB  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_condI  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_condU  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_0a  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   ©rk  iðÿÿÿrk  r†  rÁ  )r[   r\   rq   r^   r]   Úy_r2_a1rr   s          r`   Útest_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1j  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Ž  )rn  éïÿÿÿrn  )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_conds  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_cond�  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Ô0Frb   ©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º  s=  ú€ à�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«  rm  rx  rœ  r‡  r   rž  r=   r  r   r#   r[  r:   )r[   r]   r\   rq   r^   r   rŸ  ÚKr@  Ú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–   rl  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–   rl  rO  i½ÿÿÿr0  r¿  r1  r2  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  r9  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)  r.  r5  r7  r>  r@  rò   r‘  rB  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`   rD  rD  ÿ  ó   „ Ø�Erb   rD  c                   ó   — e Zd ZdZy)ÚTestLinearFilterFloat64rã   NrE  r  rb   r`   rH  rH  	  rF  rb   rH  r  c                   ó0   — e Zd Z ej                  d«      Zy)ÚTestLinearFilterFloatExtendedr0  N©r  r  r  rò   r¨   r  rb   r`   rJ  rJ  	  ó   „ àˆB�H‰H�S‹M�Erb   rJ  c                   ó   — e Zd ZdZy)ÚTestLinearFilterComplex64rä   NrE  r  rb   r`   rN  rN  	  s   „ Ø�Erb   rN  c                   ó   — e Zd ZdZy)ÚTestLinearFilterComplex128r­   NrE  r  rb   r`   rP  rP  	  s   „ Ø�Erb   rP  c                   ó0   — e Zd Z ej                  d«      Zy)ÚTestLinearFilterComplexExtendedÚGNrK  r  rb   r`   rR  rR  	  rL  rb   rR  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ÚsysrU  rœ  r‡  r¹   r”  r   rÔ  s    r`   Útest_lfilter_bad_objectrY  	  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   rE  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[   rE  r\   r]   r^   r·  s         r`   Ú_setup_rank1zTestCorrelateReal._setup_rank13	  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�  rW  rm  Úlog10rb  Ú	Exception)r[   Úres_dtrÄ  Údt_infos       r`   Úequal_tolerancez!TestCorrelateReal.equal_tolerance:	  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�  rg  rã   )r[   re  s     r`   Úequal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fftE	  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:   ri  r¨   rg  )r[   rE  r\   r]   r^   r·  Úy_fftÚy_directs           r`   Útest_methodzTestCorrelateReal.test_methodM	  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ˆ  r`  r   r:   r¨   r[  ©r[   rE  r\   r]   r^   r·  rr   s          r`   Útest_rank1_validz"TestCorrelateReal.test_rank1_valid\	  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†  rp  re   r©   ©
r7   rœ  r‡  r«  rª  rˆ  r`  r   r:   r¨   rq  s          r`   Útest_rank1_samez!TestCorrelateReal.test_rank1_samek	  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†  rp  r«   rt  rq  s          r`   Útest_rank1_fullz!TestCorrelateReal.test_rank1_fullv	  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   rz  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ã   r_  s         r`   rk  zTestCorrelateReal._setup_rank3�	  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ˆ  rk  r   r:   r¨   rq  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ˆ  rk  r   r4   r¨   rq  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…  rq  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  r`  rg  ri  r  rn  rr  ru  rw  rk  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  rm  Ú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£  
  s*   € ä	�‰”zÐ)AÖ	BÜ˜˜c¨Õ1÷ 
C×	BÑ	Bú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 )Nro  rN   )r9  rU   rQ   rK   )r6   rò   r¿  Úcdoubler�  Úbitsrm  )r[   rE  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[   rE  rg   r\   rÿ   r]   r^   r·  s           r`   r`  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Ã  )r`  rˆ  r   r:   rÄ  r¨   Úconjr[  ©r[   r¤  r\   r]   r^   r·  rE  rr   s           r`   rr  z%TestCorrelateComplex.test_rank1_valid7
  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Ã  ©r`  rˆ  r   r:   rÄ  r¨   r¯  s           r`   ru  z$TestCorrelateComplex.test_rank1_sameD
  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`   rw  z$TestCorrelateComplex.test_rank1_fullL
  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\   rE  r    Úkrr   s          r`   Útest_swap_fullz#TestCorrelateComplex.test_swap_fullS
  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_same]
  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_rank3c
  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^   rE  r·  rr   s           r`   Ú
test_rank0zTestCorrelateComplex.test_rank0w
  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Ä  r`  rr  ru  rw  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’]Ó#ˆÛ-ˆ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ñ .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 edd¬«      d„ «       Zd„ Zd„ Zej                  j                  ddd	g«      d
„ «       Z
y)ÚTestLFilterZITz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   c                 ó¦   — |j                  g d¢«      }|j                  g d¢«      }|j                  ddg«      }t        ||«      }t        ||«       y )NrØ  r×  r—  rc  rÙ  )r[   r\   r]   r^   rÚ  rÀ  s         r`   ra   zTestLFilterZI.test_basicÙ
  sG   € Ø�J‰JÒ'Ó(ˆØ�J‰J’Ó'ˆØ—j‘j # t Ó-ˆÜ˜˜1ÓˆÜ! " kÕ2rb   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Û  ra   rß  rœ  r�  rž  r‹  r  rb   r`   rÕ  rÕ  Ð
  sS   „ ñ ˜dÐ+KÔLñ3ó Mð3ò
3ò.ð ‡[�[×Ñ˜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  rm  ÚceilÚlogr   Úvstackr‘  ry  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?  r@  rv  s          r`   Ú	test_axiszTestFiltFilt.test_axis0  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_acoeffC  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_simpleN  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_scalars_  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   rz  rç  r^   r]   rå  rr   Úy_soss
             r`   Útest_equivalencez TestSOSFiltFilt.test_equivalences  s³   € ô �I‰I×!Ñ! !Ó$×*Ñ*¨4Ó0ˆØ�J‰J�q‹MˆÜ˜1˜a–[ˆ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ñ !rb   N)r  r  r  ræ  r  r  r  rb   r`   r  r  o  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  rC  r   rò   Úsum)Ú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  rC  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_optr)  „  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  rC  r§  r   r‡   r)  r4   )r^   r]   r‘  r‡  ré  rÿ   rq   rr   ÚygÚzg1Úzg2ÚxxÚ	out_shaperÚ  r  Úzo1Úzo2r    Úindxs                      r`   Úcheck_filtfilt_gustr4  ±  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©I qœ% �(¨IÑ6Ó7ˆÜ):¸1¸aÀÀDÁÓ)JÑ&ˆˆ4‰�#�d‘)˜S šYð 8ä	�‰�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ÚkeysrW  ri  r  r‘  rÜ   )r\   rg   rê  rú   r¹  Útrue_methodrq   r/  r�   Ú
method_tryÚtimesÚnot_fft_conv_supps               r`   Útest_choose_conv_methodr@  Ñ  sO  € ô *ˆÛˆ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ð ð ˆÛ!=ÐÜ”rÐ,Õ-Ü—G‘G˜AÐ%6Ô7�Ø—F‘F“H�Ü)¨!¨Q°TÔ:¸hÓFÐFÐFð	 ">ô �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   r7  r§   rf   r   )rW  rò   ri  r  r   )r\   rg   rú   r?  rq   r/  s         r`   Útest_choose_conv_method_2rB  î  sZ   € ã)ˆØˆÛ!=ÐÜ”rÐ,Õ-Ü—G‘G˜AÐ%6Ô7�Ø—F‘F“H�Ü)¨!¨Q°TÔ:¸hÓFÐFÐFñ	 ">ñ *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'  rm  rñ  rò  r   r4  r‡   )r\   rs   Úpr¹  r÷  rö  Úapprox_impulse_lenr^   r]   ré  Ú
signal_lenr‡  r‘  Úlengths                 r`   Útest_filtfilt_gustrK  ù  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   rP  Ú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   ÚfirFrU  rX  rZ  s       r`   Útest_basic_FIRzTestDecimate.test_basic_FIR$  r\  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‡  rW  )ro  r™   rP   )r™   ro  )r•  r   rP  r‘  )r[   r\   rs   Úd0Úd1s        r`   Ú
test_shapezTestDecimate.test_shape)  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 filterr^  F©r�   rW  ©rE  rF  rG  r)   Ú_test_phaseshiftr  s     r`   Útest_phaseshift_FIRz TestDecimate.test_phaseshift_FIR1  sD   € ä×$Ñ$Õ&Ü×#Ñ#ØÐ4´oôGà×!Ñ!¨¸5Ð!ÔA÷ '×&Ñ&úó   •/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@  re  r^  Trf  rg  r  s     r`   Útest_zero_phase_FIRz TestDecimate.test_zero_phase_FIR8  sD   € ä×$Ñ$Õ&Ü×#Ñ#ØÐ4´oôGà×!Ñ!¨¸4Ð!Ô@÷ '×&Ñ&úrj  c                 ó*   — | j                  dd¬«       y )NrT  Frf  ©rh  r  s     r`   Útest_phaseshift_IIRz TestDecimate.test_phaseshift_IIR?  s   € à×Ñ U°uÐÕ=rb   c                 ó*   — | j                  dd¬«       y )NrT  Trf  rn  r  s     r`   Útest_zero_phase_IIRz TestDecimate.test_zero_phase_IIRC  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 )NrE  )ro  r	  r™   r8  r  rP   çš™™™™™é?rQ   rp   çš™™™™™¹?r^  r™   r¼  rê  rÕ  rT  r¤   gš™™™™™©?F©rV  rW  r©   r†  r  rï   rZ  )rò   r†   rx  r‘  rx  r  r  r   ÚwindowsÚtukeyrç   Údltir  Úcheby1Úfreqzrå  Údenr'  r=  rP  rò  r  r®  Úangler4   r³  )r[   r�   rW  r$  r%  Út_totr  r&  r    r'  rO  r(  Úd_tosrú   ÚsystemÚwcÚ_Úh_respsr*  Ú	h_resampsÚsubnyqrl  s                         r`   rh  zTestDecimate._test_phaseshiftG  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ˆô  ˆ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  rb   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™   r^  )rV  rD  )	r†   rY   Úsqrtrô  r  r4   Údotr   rP  )r[   r\   Úsfreqrú   r  rq   Úx_outs          r`   Útest_auto_nzTestDecimate.test_auto_ny  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   rP  ri  râ   rù   ÚisnanrQ  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   rP  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   rx  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Ò  Fru  Trÿ  ç‚vIhÂ%<=rí   )r   r   rY   r  rø   rn  rx  rx  r†   rP  r   r   r5   r   r4   )r[   r\   ÚfcentreÚfwidthr“  rs   rG  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Ò  Fru  )r+  r,  r  TrÕ  )r   r  rò   Úrootsrx  r  Úpolyrx  r†   rP  Ú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  rR  r[  r_  rc  r  ri  rl  ro  rq  rh  r‹  rŽ  r�  r›  r¥  r  rb   r`   rM  rM    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   rM  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†   rQ  s      r`   rR  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 )Nrk  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   ry  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_3d2  sn   € Ø�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_types;  sB   € ä˜˜EÓ"ˆØ—8‘8˜A U�8Ó+ˆØ�w‰w”w˜xÓ(Ó)×/Ñ/°5Ò8Ð8Ñ8rb   N)r  r  r  rR  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_likeF  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—   re  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   rQ  s      r`   rR  zTestHilbert2.test_bad_argsJ  sÃ   € à�J‰J�r—y‘y “} fÓ-ˆÜ�]‰]œ:Ð-?Ö@Ü�R—Z‘Z *  Ó/Ô0÷ Aä�]‰]œ:Ð-CÖDÜ�Q˜"Õ÷ Eä�]‰]œ:Ð-RÖSÜ�Q˜)Õ$÷ Tä�]‰]œ:Ð-RÖSÜ�Q˜&Õ!÷ TÐS÷ AÐ@úçDÐDúçSÐSúçSÐSú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—   re  z!^axes must be a tuple of length 2rA  r  r¨  z"^axes must contain 2 distinct axesr°  )r…   r†   rœ  r   rº   r   rQ  s      r`   Útest_bad_args2zTestHilbert2.test_bad_args2V  sl   € à�J‰J�r—y‘y “} fÓ-ˆÜ�]‰]œ:Ð-PÖQÜ�Q˜YÕ'÷ Rä�]‰]œ:Ð-QÖRÜ�Q˜VÕ$÷ SÐR÷ RÐQúçRÐRú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_types^  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   ry  )r[   r\   rq   Úx0aÚx1as        r`   Útest_1d_inputzTestHilbert2.test_1d_inpute  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©  re  N)r•  r   r5   )r[   r\   rq   Úx0_aÚx1_as        r`   Útest_parameter_NzTestHilbert2.test_parameter_Nl  s2   € à�H‰H�VÓˆÜ˜˜QÔˆÜ˜˜VÔ$ˆÜ˜˜dÕ#rb   r‘  ))rL   rM   )rM   rL   re  r…  z)Bug in cupy implementation, see cupy#9396c                 óž  — |j                  ||j                  ¬«      }|dxx   dz  cc<   |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­   rò  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_valuess  s`  € ð �g‰g�e 2§=¡=ˆgÓ1ˆØˆE‹
�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                 óÆ  — |d   dz  }|d   dz  }|j                  |«      }d||dz
  |dz   f<   d||dz   |dz
  f<   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þ  Ú	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ˆØ!ˆˆB�‰F�B˜‘FˆNÑØ!ˆˆB�‰F�B˜‘FˆNÑÜ×Ñ˜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ÚpartsrG  Ú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Û  rR  rÄ  rœ  r�  rž  rÆ  rË  rÏ  rÛ  rà  rì  rñ  r  rb   r`   r¿  r¿  B  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  rZ  rð   r  )r>   rã   r4   )rj  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Õ(÷Mô �]‰]œ:Ø!JöLä�R—W‘W˜V“_¨1Õ-÷Ló 6ˆEØ—‘œ3œs E›?Ó+ˆBÜ—‘œzØ(0°°Ð4KÐ%LöNô ˜Ÿ™ ›¨5Õ1÷Nð Nð 6ô �]‰]œ:Ø!LöNô �R—W‘W˜Q“Z sÕ+÷Nó 0ˆEÜ—‘œzØ%NöPä˜Ÿ™ ›¨5Õ1÷Pð Pð 0ô �]‰]œ:Ð-MÖNä�R—W‘W˜Q“Z¨+Õ6÷ OÐN÷)Mñ Mú÷Lñ Lú÷
Nñ Nú÷Nð Nú÷
Pð Pú÷ OÐNú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
  ©rL  Úz_s     r`   rN  z:TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>:  s   è ø€ Ð!UÑ<T°b¤&§+¡+¨b§/Ñ<Tùó   ‚!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`   rN  z=TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>]  s"   è ø€ ÐG¹Y°r”6—?‘?¤6§:¡:¨b£>×2¹Yùs   ‚24r  r  r  N)	rY   rã   r­   rþ  r  rÝ  rç  r   r÷  )r[   r  rù  r%  r&  r\   rs   r'  r(  r+  r,  s              r`   Útest_envelope_complex_signalsz*TestEnvelope.test_envelope_complex_signalsJ  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`   rN  zCTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>q  s   è ø€ ÐOÑ6N°œFŸK™K¨ŸOÑ6Nù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   ry  r÷  )r[   r\   rõ  rö  rs   r%  r&  r'  r(  Úye2TÚyrTr+  ÚYe2r,  ÚYrs                  r`   Ú#test_envelope_verify_axis_parameterz0TestEnvelope.test_envelope_verify_axis_parameterd  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¨  r0  )r	  r   r8  r   r	  r2  r1  r  T)rù  rü  r  r‡  r   c              3   óp   K  — | ].  }t        j                  t        j                  |«      d ¬«      –— Œ0 y­w)rP   r¨  Nr5  r"  s     r`   rN  zKTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>‰  s/   è ø€ ð @Ù&> ô #ŸO™O¬F¯J©J°r«NÀ×CÐCÙ&>ùs   ‚46r:  r  r;  r<  r=  N)r>   râ   rä   r­   rY   rþ  r  rÝ  r:  rç  r   ry  r÷  )r[   r\   rõ  rö  Úinprs   ÚZe2_desÚZr_desÚkwr'  r(  r>  r?  r+  r@  r,  rA  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[   rJ  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/  r7  rB  rI  rN  rV  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 ed¬«      d„ «       Z ed¬«      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ö  rG  Ú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   Tr  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   rC  r;   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  rt  rR  rV  rà  )r1   r4   ©r[   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Ó¿rs  )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ç   ra  ©r[   r\   rö  rG  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 )Nrl  rm  )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   rn  r¹  r  rP   úDenominator `a` is zero.rA  )r,   rY   r;   rç   rœ  r   rº   ru  s        r`   Útest_residue_degeneratez4TestPartialFractionExpansion.test_residue_degenerate6  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÷ I×HÑHú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Ç  rp  )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”   rq  )rL   rÖ  rK   rr  )rP   r¾  r  rL   )rQ   r¹  r  r  g      ø¿r!  rk  )rk  rK   r  r©   )g
×£p=
×?g¸…ëQ¸Î?çš™™™™™Ù?)r  çUUUUUUÕ¿r‹  r³  r  g«ªªªªª
ÀgUUUUUU@ro  ©rP   r¹  rP   rp  r¦   )rP   r©   r  )rP   g      è¿rï  )rP   rN   rQ   r¾  r(  rN   r¹  r¤   ièÿÿÿro  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   ra  r;   rç   rò   Úpolymulru  s        r`   Útest_residuez_generalz2TestPartialFractionExpansion.test_residuez_generalF  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 )Nrl  rm  )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;   rx  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   rn  r¹  r  rP   r‡  rA  z6First coefficient of determinant `a` must be non-zero.r  )r-   rY   r;   rç   rœ  r   rº   ru  s        r`   Útest_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate°  s:  € ä˜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Ü�R—Z‘Z “] B§J¡J¨q£MÔ2÷ Iô �]‰]œ:ð"0ö1ô �R—Z‘Z “] B§J¡Jª|Ó$<Ô=÷1ð 1÷ IÐHú÷1ð 1ú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Ç  rR  rÉ  r  rÊ  ©ÚrtypegVçž¯Â<rƒ   F)r  r„   ©rY   r    r4   r!   )
r[   r\   rö  rG  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ˆ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ñ I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ö  rG  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Ö=ñ I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!   ru  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˜ (Õ+÷ Gä�]‰]œ:Ð-EÖFÜ�A�q˜! 8Õ,÷ GÐF÷ GÐFúçFÐFú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ö  rG  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©   ©rt  rQ   ù      à?      À©rP   rê   rm   ©y      @      Ày      !À      Ð?y      @      
@©rP   y       À      ø¿y      à?       @y      à?      à¿r  rt  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  rt  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   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_arguments<  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  rW  ra  r  re  rj  r@   r,   rv  r…  rˆ  r-   rŽ  r�  r’  r    r!   rœ  r¡  r£  r¥  r´  r¶  r¸  r  rb   r`   rY  rY  ²  s«  „ Øò
Dó ð
Dñ ˜dÔ#ñ?ó $ð?ñ& ˜dÔ#ñ1ó $ð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   rY  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¼  rt  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_1dperiodK  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  rt  rP   rQ   )rY   r"   rê  r:   r;   r  rÁ  s           r`   Útest_single_2dperiodz'TestVectorstrength.test_single_2dperiodY  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_1dperiodg  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_2dperiodu  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©rt  gš™™™™™ñ?gÍÌÌÌÌÌ @gffffff@g333333$@rP   r¼  rt  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   rt  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º  H  s   „ òMñ �wÐ':Ô;ñ;ó <ð;òMò;òMòBò=ñ �wÐ':Ô;ñ;ó <ð;ò	Eò	5òBò
Bò
Bó
Brb   rº  )r�  )râ   rã   rä   r­   c                   ód  — 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¬«       ed
d¬«      d„ «       «       Z	 edd¬«      d„ «       Z
 edd¬«       edd¬«      d„ «       «       Z edd¬«      d„ «       Z ed¬«      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[   rE  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[   rE  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[   rE  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Ö"ˆAÜ˜1Ÿ7™7 1™:Ö&�Ü)¨!¨A¨q°#¨I©,¼ÀÀ1ÀaÈÈ1ÈcÈ	ÁlÓ8SÕTñ 'ñ #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_sosC  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[   rE  r\   r]   r^   rå  rq   Úy_truerÀ  r  rr   rÄ  s               r`   Útest_initial_conditionsz#TestSOSFilt.test_initial_conditionsN  sN  € à×$Ñ$ 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[   rE  r\   rq   r�  rå  rÀ  Úzi_ndrr   rÄ  s
             r`   Útest_initial_conditions_2z%TestSOSFilt.test_initial_conditions_2h  s0  € ô �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   ro  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[   rE  r\   rq   rç  rå  Ú	nsectionsr‡  ÚshpÚz0r^  rÄ  r@  r  rv  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   ro  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[   rE  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¨Õ*÷ CàˆŠAˆqˆD‰	Ü�]‰]œ:Ð-?Ö@Ü�C˜˜r¨Õ*÷ AÐ@÷ CÐBú÷ AÐ@ú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[   rE  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[   rE  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  rb   r`   rð  rð  ì  s,  „ ñ �kÐ*EÔFñCó GðCñ@ �kÐ*EÔFñ.ó Gð.ñ6 �kÐ*EÔFñUó GðUò&	ñ �kÐ*;Ô<ñ3ó =ð3ñ2 �kÐ*;Ô<ÙÐ(Ð1OÔPñ?ó Qó =ð?ñ, �kÐ*;Ô<ñ19ó =ð19ñf �gÐ&?Ô@Ù�kÐ*;Ô<ñ+ó =ó Að+ñ �kÐ*;Ô<ñ=ó =ð=ñ ˜dÔ#ñ?ó $ñ?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ñ  sd   € à—:‘:  1˜v¨¨1 vÐ.Ó/ˆØŸ:™: q¨! fÓ-ÐÜ�]‰]œ:Ð-RÖSÜ"(×"3Ñ"3°HÐ>NÓ"OÑˆH�i÷ T×SÑSúó   Á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ø  sd   € à—:‘:˜q !˜fÓ%ˆØŸ:™:¨¨1 v°°1¨vÐ&6Ó7ÐÜ�]‰]œ:Ð-SÖTÜ"(×"3Ñ"3°HÐ>NÓ"OÑˆH�i÷ U×TÑTúr'  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  r&  r)  r,  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º  r0  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¾  r8  rK   )r©  Úbpr‚   rƒ   rP   )r©  r<  r‡  )rY   r*   r4   r³  r¹   rº   )r[   r\   rº  r0  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;r<  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)r<  )
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[   r<  r\   rÿ   rq   rg  Ú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  r7  rœ  r�  rž  rþ  r=  rò   r‘  rA  r  rb   r`   r.  r.    s©   „ ò>ñ
 �kÐ*JÔKñ7ó Lð7ð ‡[�[×Ñ˜V h°
Ð%;Ó<Ø‡[�[×Ñ˜V¢YÓ/ñ-ó 0ó =ð-ò
/ð  ‡[�[×Ñ˜T H B§H¡H¨a°¨VÓ$4°q¸!°fÐ#=Ó>ñ7ó ?ñ7rb   r.  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  r3  r  ro  rÃ  r§   ©rY   r+   r;   r5   ri  rC  rm  ©r[   r\   rG  rh  ri  s        r`   Útest_real_no_repeatz#TestUniqueRoots.test_real_no_repeatF  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¼  çÍÌÌÌÌÌð?rt  rR  ©Útolr˜  )rc  rJ  r  r¼  ro  rÃ  ©rQ   rQ   rP   rQ   r  )rI  rK  r  rL  r–  )g333333ï¿g
×£p=
ë¿r  gffffffð?©rY   r+   r;   r5   rF  s        r`   Útest_real_repeatz TestUniqueRoots.test_real_repeatL  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‚  ro  rÃ  r§   rE  rF  s        r`   Útest_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeat\  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  rS  ùÍÌÌÌÌÌÜ?š™™™™™á?rt  rR  rM  )rc  rW  r  rY  ro  rÃ  rO  r  )rV  rX  r  rS  r–  )y      ð¿š™™™™™™?yš™™™™™í¿333333Ã?r  yffffffÞ?ÍÌÌÌÌÌà?rP  rF  s        r`   Útest_complex_repeatz#TestUniqueRoots.test_complex_repeatb  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\   rG  Ú
true_rootsrh  ri  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¦   ro  rÃ  rQ   rP   )rP   g_p‰   ð?ù•Ö&è.>      ð?rt  )rN  r`  )r+   rY   r;   r5   rg  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   ro  rÃ  )rY   rò   ró   r  r+   r;   rR  r5   rF  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  rG  rQ  rT  rZ  r^  ra  rc  r  rb   r`   rC  rC  D  s*   „ òBò@ò Bò@ò8
@ò	:ó9rb   rC  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¨   )rj  s    r`   Útest_gh_22684re  œ  s;   € Ü×!Ñ!¤"§)¡)¨D¼¿¹Ô"EÀqÈ!ÓL€FØ�<‰<œ2Ÿ<™<Ò'Ð'Ñ'rb   rõ  )–rX  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._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*  r5  r7  r9  rž  rZ  rG  r�  r¿  rh  rj  rÆ  rÁ  rl  rÍ  rt  rp  r�  r~  rš  rD  rH  rJ  rN  rP  rR  rY  r[  r]  rŠ  ÚparamrŸ  r   r£  r¦  rÇ  rÕ  râ  r  r)  r4  Ú	fail_slowr@  rB  rK  rP  rM  r§  r¿  rô  rY  rº  rð  r  r  r.  rC  re  r  rb   r`   Ú<module>ru     sp  ðÛ 
Û Û ç ?Ý Ý ã Ý *Û Ý +å Ý %ß 6Ý ÷÷ ÷ ÷ ÷ ÷ ÷ ÷ ñ õ &ß TÑ TÝ 0Ý !÷÷ ÷ ÷ ó ð —;‘;×/Ñ/Ð Ø—K‘K×1Ñ1Ð à�(€ñ �8Ó÷o4ð o4ó ðo4ñd �:Ó÷["ð ["ó ð["ñ| �;Ó÷mLð mLó  ðmLò`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 �:Ó÷6ð 6ó ð6ñ@ �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S(ñ S(ñl �>Ó"÷ZBð ZBó #ðZBñF ˜4Ô Ù�7ÓØ‡�×Ñ˜ÒPÓQ÷k?ð k?ó Ró ó !ðk?ñ\ �6×$Ò$Ó%÷&2ð &2ó &ð&2ñR �7Ó÷97ð 97ó ð97ñx �<Ó ÷T9ð T9ó !ðT9ón(rb   