§
    fŠtj"  ã                   óž  — 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	jT        jU        ZUe	jT        jV        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	jT         `                    d  eQe¦  «         eQe ¦  «        g¦  «         G d!„ d"¦  «        ¦   «         ¦   «         Za eUdd¬¦  «        e	jT         b                    d#¦  «        e	jT         `                    d$ejc        ejd        g¦  «         ePee¦  «        d%„ ¦   «         ¦   «         ¦   «         ¦   «         Ze G d&„ d'¦  «        Zf ePejg        ¦  «         G d(„ d)¦  «        ¦   «         Zhg d*¢Zieie@z  Zi G d+„ d,¦  «        Zj ePejk        ¦  «         G d-„ d.¦  «        ¦   «         Zl ePejm        ¦  «         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	jT         `                    dBg dC¢¦  «         eVdDdE¬F¦  «         ePe¦  «         G dG„ dH¦  «        ¦   «         ¦   «         ¦   «         Zx ePe¦  «         G dI„ dJ¦  «        ¦   «         Zy ePe¦  «        e	jT         `                    dKg dL¢¦  «        e	jT         `                    dMddNg¦  «        e	jT         `                    dOdPdQdRdS e	jz        dTe	jT        j{        g¬U¦  «         e	jz        dVe	jT        j{        g¬U¦  «        g¦  «        dW„ ¦   «         ¦   «         ¦   «         ¦   «         Z| ePe¦  «        dX„ ¦   «         Z} ePe¦  «        e	jT         `                    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	jT         …                    dh¦  «        di„ ¦   «         ¦   «         Z† ePe!¦  «        dj„ ¦   «         Z‡ eUd¬7¦  «        e	jT         …                    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	jT         `                    dBg dy¢¦  «         G dz„ d{¦  «        ¦   «         ¦   «         ¦   «         Z� ePej‘        ¦  «         G d|„ d}¦  «        ¦   «         Z’ ePe5¦  «         G d~„ d¦  «        ¦   «         Z“ ePe6¦  «         G d€„ d�¦  «        ¦   «         Z”d‚„ Z•dS )„é    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d!S )#ÚTestConvolveú	jax.numpyú2jax returns floats; scipy returns ints; cf gh-6076©Úreasonc                 óÌ   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )N)é   é   é   é   rM   rL   ©é   é   rK   )rK   é
   é   é   é    rU   é   é   ©Úasarrayr   r5   ©ÚselfÚxpÚaÚbÚcs        úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/signal/tests/test_signaltools.pyÚ
test_basiczTestConvolve.test_basic-   sg   € ð �JŠJÐ)Ð)Ð)Ñ*Ô*ˆØ�JŠJ�y�y�yÑ!Ô!ˆÝ�Q˜‰NŒNˆÝ˜˜2Ÿ:š:Ð&EÐ&EÐ&EÑFÔFÑGÔGÐGÐGÐGó    c                 óÐ   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||d¬¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )N©rK   rL   rM   )rP   rQ   rK   rL   Úsame©Úmode)rR   rS   é"   rX   rZ   s        r`   Ú	test_samezTestConvolve.test_same5   sh   € ð �JŠJ�y�y�yÑ!Ô!ˆØ�JŠJ�|�|�|Ñ$Ô$ˆÝ�Q˜ Ð'Ñ'Ô'ˆÝ˜˜2Ÿ:š: l l lÑ3Ô3Ñ4Ô4Ð4Ð4Ð4rb   c                 óÐ   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||d¬¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )Nrd   rO   re   rf   )rR   rS   rS   rX   rZ   s        r`   Útest_same_eqzTestConvolve.test_same_eq=   sh   € ð �JŠJ�y�y�yÑ!Ô!ˆØ�JŠJ�y�y�yÑ!Ô!ˆÝ�Q˜ Ð'Ñ'Ô'ˆÝ˜˜2Ÿ:š: l l lÑ3Ô3Ñ4Ô4Ð4Ð4Ð4rb   c                 óÌ   — |                      g d¢¦  «        }|                      ddg¦  «        }t          ||¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )N)ù      ð?      ð?ù       @      ð?ù      @      ð?rm   rn   )ù               @y       @      @y      @       @y      @      @rX   )r[   r\   ÚxÚyÚzs        r`   Útest_complexzTestConvolve.test_complexE   sf   € Ø�JŠJÐ/Ð/Ð/Ñ0Ô0ˆØ�JŠJ˜ Ð'Ñ(Ô(ˆÝ�Q˜‰NŒNˆÝ˜˜2Ÿ:š:Ð&BÐ&BÐ&BÑCÔCÑDÔDÐDÐDÐDrb   zwrong output dtypec                 ó    — |                      d¦  «        }|                      d¦  «        }t          ||¦  «        }t          |||z  ¦  «         d S ©Ni	  i×  rX   rZ   s        r`   Útest_zero_rankzTestConvolve.test_zero_rankK   sK   € à�JŠJ�tÑÔˆØ�JŠJ�tÑÔˆÝ�Q˜‰NŒNˆÝ˜˜1˜q™5Ñ!Ô!Ð!Ð!Ð!rb   Tzpure python©Únp_onlyrI   c                 óD   — d}d}t          ||¦  «        }|||z  k    sJ ‚d S rv   ©r   rZ   s        r`   Útest_zero_rank_python_scalarsz*TestConvolve.test_zero_rank_python_scalarsR   s.   € àˆØˆÝ�Q˜‰NŒNˆØ�A˜‘EŠzˆzˆzˆzˆzˆzrb   zdisagreement between methodsc           
      ó¬  — |                      |                     d¦  «        d¦  «        }|                     d¦  «        }t          d¦  «        D ]…}dgdz  }d||<   t          ||                      |t	          |¦  «        ¦  «        d¬¦  «        }t          ||                      |t	          |¦  «        ¦  «        d¬¦  «        }t          ||d¬	¦  «         Œ†d S )
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Ô0ˆØ�IŠI�a‰LŒLˆÝ�q‘”ð 	.ð 	.ˆAØ�c˜!‘eˆGØˆG�A‰Jå˜˜BŸJšJ q­%°©.¬.Ñ9Ô9À(ÐKÑKÔKˆAÝ˜˜BŸJšJ q­%°©.¬.Ñ9Ô9À%ÐHÑHÔHˆAÝ˜A˜q uÐ-Ñ-Ô-Ð-Ð-ð	.ð 	.rb   c                 ó¤   — |                      dg¦  «        }|                      dg¦  «        }t          ||¦  «        }t          |||z  ¦  «         d S ©Nég  éP  rX   rZ   s        r`   Útest_single_elementz TestConvolve.test_single_elemente   sO   € à�JŠJ˜�vÑÔˆØ�JŠJ˜�vÑÔˆÝ�Q˜‰NŒNˆÝ˜˜1˜q™5Ñ!Ô!Ð!Ð!Ð!rb   Úcupyc                 óî   — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }t          ||¦  «        }|                      g d¢g d¢g d¢g¦  «        }t          ||¦  «         d S ©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 9 9Ð-Ñ.Ô.ˆØ�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆÝ�Q˜‰NŒNˆØ�JŠJÐ*Ð*Ð*Ø'Ð'Ð'Ø'Ð'Ð'ð)ñ *ô *ˆõ 	˜˜1ÑÔÐÐÐrb   Útorchc           
      ó´  — |                      |                     d¦  «        d¦  «        }d|                      |                     d|j        ¬¦  «        d¦  «        z  }||                      |                     d|j        ¬¦  «        d d d…         d¦  «        z  }|                     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         ¦  «         d S )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   sn  € ð —
’
˜2Ÿ9š9 Q™<œ<¨Ñ3Ô3ˆØ�2—:’:˜bŸiši¨°"´-˜iÑ@Ô@À)ÑLÔLÑLˆØˆr�zŠz˜"Ÿ)š) B¨b¬m˜)Ñ<Ô<¸T¸T¸r¸TÔBÀIÑNÔNÑNˆà—J’JØ1Ð1Ð1Ø6Ð6Ð6Ø7Ð7Ð7Ø6Ð6Ð6ð8ð
 :Ð9Ð9Ø;Ð;Ð;Ø=Ð=Ð=Ø=Ð=Ð=ð?ð
 ;Ð:Ð:Ø>Ð>Ð>Ø>Ð>Ð>Ø<Ð<Ð<ð>ð
 :Ð9Ð9Ø<Ð<Ð<Ø:Ð:Ð:Ø8Ð8Ð8ð:ð;ñ<ô <ˆ	õ* 	� ¨¨VÑ4Ô4°iÑ@Ô@Ð@Ý�  e¨VÑ4Ô4°iÑ@Ô@Ð@Ý� ¨¨VÑ4Ô4Ø$ Q q S¨!¨A¨#¨q°¨s ]Ô3ñ	5ô 	5ð 	5å�  e¨VÑ4Ô4Ø$ Q q S¨!¨A¨#¨q°¨s ]Ô3ñ	5ô 	5ð 	5å� ¨¨WÑ5Ô5Ø$ Q q S¨!¨A¨#¨q°¨s ]Ô3ñ	5ô 	5ð 	5å�  e¨WÑ5Ô5Ø$ Q q S¨!¨A¨#¨q°¨s ]Ô3ñ	5ô 	5ð 	5ð 	5ð 	5rb   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¬¦  «         d S ©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ž   s·   € Ø�JŠJ�y�y�yÑ!Ô!ˆØ�JŠJ�y�y�yÑ!Ô!ˆÝ•j¥(¨A¨q°vÐ>Ñ>Ô>Ð>Ý•j¥(¨A¨q°vÀeÐLÑLÔLÐLÝ•j¥(¨A¨q°uÀXÐNÑNÔNÐNÝ•j¥(¨A¨q°vÀgÐNÑNÔNÐNÝ•j¥(¨A¨q°vÀgÐNÑNÔNÐNÐNÐNrb   údtypes do not matchc                 ó"  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }t          ||d¦  «        }t          ||¦  «         t          ||d¦  «        }t          ||¦  «         |                      g d¢¦  «        }|                      ddg¦  «        }|                      ddg¦  «        }t          ||d¦  «        }t          ||¦  «         t          ||d¦  «        }t          ||¦  «         d S )	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Ð2Ð2Ñ3Ô3ˆØ—:’:Ð.Ð.Ð.Ñ/Ô/ˆå�q˜!˜WÑ%Ô%ˆÝ˜˜XÑ&Ô&Ð&å�q˜!˜WÑ%Ô%ˆÝ˜˜XÑ&Ô&Ð&à�JŠJÐ/Ð/Ð/Ñ0Ô0ˆØ�JŠJ˜ Ð'Ñ(Ô(ˆØ—:’:˜v wÐ/Ñ0Ô0ˆå�q˜!˜WÑ%Ô%ˆÝ˜˜XÑ&Ô&Ð&å�q˜!˜WÑ%Ô%ˆÝ˜˜XÑ&Ô&Ð&Ð&Ð&rb   c                 óÒ   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||d¦  «        }|                      g d¢¦  «        }t          ||¦  «         d S )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¾   sq   € à�JŠJÐ)Ð)Ð)Ñ*Ô*ˆØ�JŠJÐ>Ð>Ð>Ñ?Ô?ˆÝ�Q˜˜6Ñ"Ô"ˆØ�JŠJÐ/Ð/Ð/Ñ0Ô0ˆÝ˜˜1ÑÔÐÐÐrb   zdifferent exceptionc                 ó*  — |                      |                     dd¦  «        d¦  «        }|                      |                     dd¦  «        d¦  «        }t          t          t          g||f¢R i ddi¤Ž t          t          t          g||f¢R i ddi¤Ž d S ©	NrP   r—   ©rQ   rK   éúÿÿÿr   ©rK   rQ   rg   r­   )r†   r‡   rº   r»   r   r¼   s       r`   Útest_invalid_shapesz TestConvolve.test_invalid_shapesÆ   sœ   € ð �JŠJ�r—y’y  A‘”¨Ñ/Ô/ˆØ�JŠJ�r—y’y  QÑ'Ô'¨Ñ0Ô0ˆå•j¥(ÐI¨a°¨VÐIÐIÐI¸ÀÐ7HÐIÐIÐIÝ•j¥(ÐI¨a°¨VÐIÐIÐI¸ÀÐ7HÐIÐIÐIÐIÐIrb   zTODO: convert this testéd   c                 ó,  ‡
‡‡‡— h d£Šˆfd„‰D ¦   «         }t           j                             d¦  «        }|                     ddg|¬¦  «        |                     |¦  «        dœ}|d         x|d	<   |d
<   |d         d|d         z  z   |d<   |D �]\  }}Š
|t          j        |¦  «        j                                      |¦  «        Š|t          j        |¦  «        j                                      |¦  «        Šˆ
ˆˆfd„dD ¦   «         }|d         j        |d         j        k    sJ ‚d|v rd|v rt          ‰‰¦  «        dk    sJ ‚Œ¸t          d„ ||fD ¦   «         ¦  «        rdddœ}	nd||fv rdddœ}	ndddœ}	t          |d         |d         fi |	¤Ž �Œd S )N>   ÚboolÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat16Úfloat32Úfloat64Ú	complex64r®   c                 ó.   •— g | ]}‰D ]}d D ]}|||f‘ŒŒŒS ))r­   r¬   re   © )Ú.0Út1Út2rg   Útypess       €r`   ú
<listcomp>z5TestConvolve.test_convolve_method.<locals>.<listcomp>Û   sb   ø€ ð Fð Fð F 2¸ð Fð F°2Ø+DðFð FØ#'ð �R˜�ð Fð Fð Fð Fð Frb   é*   r   rP   ©Úsize)rŠ   ÚfrŠ   r^   Úurñ   ù              à?r_   c           	      ó8   •— i | ]}|t          ‰‰|‰¬ ¦  «        “ŒS ))r‚   rg   r{   )ré   Úkeyrg   Úx1Úx2s     €€€r`   ú
<dictcomp>z5TestConvolve.test_convolve_method.<locals>.<dictcomp>ê   s<   ø€ ð 5ð 5ð 5Øð �H R¨°C¸dÐCÑCÔCð 5ð 5ð 5rb   )r
   r€   r
   r€   rÚ   c                 ó   — g | ]}|d v ‘ŒS )>   rä   ræ   rè   )ré   Úts     r`   rí   z5TestConvolve.test_convolve_method.<locals>.<listcomp>õ   s   € ÐDÐDÐD°a�AÐ1Ð1ÐDÐDÐDrb   ç-Cëâ6?ç�íµ ÷Æ°>©Úrtolr…   rã   çü©ñÒMbP?çñhãˆµøä>ç:Œ0âŽyE>)ÚnpÚrandomÚRandomStateÚchoiceÚrandnr©   ÚkindÚastyper   Úanyr4   )r[   r\   ÚnÚargsÚrngÚarray_typesrê   rë   ÚresultsÚkwargsrg   rì   rö   r÷   s             @@@@r`   Útest_convolve_methodz!TestConvolve.test_convolve_methodÓ   s4  øøøø€ ð4ð 4ð 4ˆðFð Fð Fð F¨ð Fñ Fô Fˆõ
 Œi×#Ò# BÑ'Ô'ˆØŸJšJ¨¨1 v°A˜JÑ6Ô6ØŸIšI a™LœLð*ð *ˆà.9¸#Ô.>Ð>ˆ�CÑ˜; sÑ+Ø& sÔ+¨d°;¸sÔ3CÑ.CÑCˆ�CÑà ð 	Iñ 	I‰LˆB��DØ�RœX b™\œ\Ô.Ô/×6Ò6°rÑ:Ô:ˆBØ�RœX b™\œ\Ô.Ô/×6Ò6°rÑ:Ô:ˆBð5ð 5ð 5ð 5ð 5ð 5Ø"3ð5ñ 5ô 5ˆGð ˜5”>Ô'¨7°8Ô+<Ô+BÒBÐBÐBÐBà˜ˆ|ˆ| ¨"  Ý)¨"¨bÑ1Ô1°XÒ=Ð=Ð=Ð=Øõ ÐDÐD¸BÀ¸8ÐDÑDÔDÑEÔEð 6Ø"(°$Ð7Ð7��Ø˜r 2˜hÐ&Ð&à"&°Ð5Ð5��ð #'°Ð5Ð5�å˜G EœN¨G°HÔ,=ÐHÐHÀÐHÐHÐHÑHð1	Ið 	Irb   c                 óD  — dD ]œ}|                      d|z  g|j        ¬¦  «        }t          ||d¬¦  «        }t          ||d¬¦  «        }|dk     rP|                      dd|z  z  g¦  «        }t          ||¦  «         t          ||d¬	¦  «         t          ||d¬	¦  «         Œ�d S )
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Ô2ˆAÝ˜1˜a¨Ð.Ñ.Ô.ˆCÝ˜a ¨8Ð4Ñ4Ô4ˆFð
 �2ŠvˆvØ—j’j ! a¨¡c¡( Ñ,Ô,�Ý  VÑ,Ô,Ð,Ý  S°eÐ<Ñ<Ô<Ð<Ý ¨¸Ð?Ñ?Ô?Ð?øð	@ð 	@rb   ©ry   c                 óv  — 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¦  «         d S ©NrP   rQ   r€   r�   r
   rK   )rº   r»   r   ©r[   r\   s     r`   Útest_mismatched_dimsz!TestConvolve.test_mismatched_dims  s¦   € õ 	•j¥(¨Q¨C°¸8ÐDÑDÔDÐDÝ•j¥(¨A°¨s¸8ÐDÑDÔDÐDÝ•j¥(¨Q¨C°¸5ÐAÑAÔAÐAÝ•j¥(¨A°¨s¸5ÐAÑAÔAÐAÝ•j¥(¨Q¨C°1°#°Ñ7Ô7Ð7Ý•j¥(¨Q¨C°Ñ3Ô3Ð3Ð3Ð3rb   N)rØ   )Ú__name__Ú
__module__Ú__qualname__Úskip_xp_backendsra   ri   rk   rt   Úxfail_xp_backendsrw   r|   rŒ   r‘   r¢   r²   r½   rÊ   rÑ   r×   r  r  r!  rè   rb   r`   rE   rE   *   s9  € € € € € ð Ð�kØCðEñ Eô EðHð HñEô EðHð Ð�kØCðEñ Eô Eð5ð 5ñEô Eð5ð Ð�kØCðEñ Eô Eð5ð 5ñEô Eð5ðEð Eð Eð Ð�{Ð+?Ð@Ñ@Ô@ð"ð "ñ AÔ@ð"ð Ð˜d¨=Ð9Ñ9Ô9ðð ñ :Ô9ðð Ð�{Ð+IÐJÑJÔJð	.ð 	.ñ KÔJð	.ð Ð�{Ð+?Ð@Ñ@Ô@ð"ð "ñ AÔ@ð"ð Ð�kÑ#Ô#ØÐ�fÑÔðð ñ Ôñ $Ô#ðð Ð�gÑÔØÐ�fÑÔð#5ð #5ñ Ôñ Ôð#5ðJOð Oð Oð Ð�kÐ*?Ð@Ñ@Ô@ð'ð 'ñ AÔ@ð'ð, Ð�kÐ*?Ð@Ñ@Ô@ðð ñ AÔ@ðð Ð�fÐ%:Ð;Ñ;Ô;ð
Jð 
Jñ <Ô;ð
Jð Ð˜dÐ+DÐEÑEÔEð*Ið *Ið *Iñ FÔEð*IðX Ð�kÐ*?Ð@Ñ@Ô@ð@ð @ñ AÔ@ð@ð" Ð˜dÐ#Ñ#Ô#ð4ð 4ñ $Ô#ð4ð 4ð 4rb   rE   c            	       óf  — 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                             deeg¦  «        e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        j        ej                             d¦  «         ed d!¬"¦  «        d#„ ¦   «         ¦   «         ¦   «         Zd$S )%ÚTestConvolve2drF   r¾   rH   c                 óî   — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }|                      g d¢g d¢g d¢g¦  «        }t          ||¦  «        }t          ||¦  «         d S r”   ©rY   r   r5   )r[   r\   r]   r^   r¡   Úes         r`   r¢   zTestConvolve2d.test_2d_arrays   s˜   € à�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJÐ*Ð*Ð*Ø'Ð'Ð'Ø'Ð'Ð'ð)ñ *ô *ˆõ �q˜!ÑÔˆÝ˜˜1ÑÔÐÐÐrb   c                 ó&  — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }|                      g d¢g¦  «        }t          ||d¦  «        }t          ||¦  «         t          ||d¦  «        }t          ||¦  «         d S )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*  s©   € à�JŠJÐ-Ð-Ð-Ð/EÐ/EÐ/EÐFÑGÔGˆØ�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJÐ.Ð.Ð.Ð/Ñ0Ô0ˆå�q˜!˜WÑ%Ô%ˆÝ˜˜1ÑÔÐõ �q˜!˜WÑ%Ô%ˆÝ˜˜1ÑÔÐÐÐrb   r£   c                 ó:  — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g|j        ¬¦  «        dz   }|                      g d¢g¦  «        }t          ||d¦  «        }t          ||¦  «         t          ||d¦  «        }t	          ||¦  «         d S )	Nr-  r.  rO   rd   r¨   r§   )y      O@      8@y      T@      >@y     €X@      B@y      ]@      E@y     À`@      H@r­   )rY   r®   r   r4   r5   r5  s         r`   Útest_valid_mode_complxz%TestConvolve2d.test_valid_mode_complx7  s´   € à�JŠJÐ-Ð-Ð-Ð/EÐ/EÐ/EÐFÑGÔGˆØ�JŠJ˜	˜	˜	 9 9 9Ð-°R´]ˆJÑCÔCÀbÑHˆØ�JŠJÐLÐLÐLÐMÑNÔNˆå�q˜!˜WÑ%Ô%ˆÝ˜˜1ÑÔÐõ �q˜!˜WÑ%Ô%ˆÝ˜˜1ÑÔÐÐÐrb   zjax only allows fillvalue=0c                 óø   — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }d}t          ||dd|¦  «        }|                      g d¢g d	¢g d
¢g¦  «        }t          ||¦  «         d S )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  s£   € à�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØˆÝ�q˜!˜V V¨WÑ5Ô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 ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d	}t	          t
          |¬¦  «        5  t          dggddggddg¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
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ÔWÐWÝ�z°Ð5Ñ5Ô5ð :ð :Ý˜Q˜C˜5 A q 6 (°bÐ9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð
 =ˆÝ�:¨SÐ1Ñ1Ô1ð 	:ð 	:Ý˜˜�u  1˜v˜h°1°a°&Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:sG   –2BÁA,Á BÁ,A0	Á0BÁ3A0	Á4BÂBÂ
BÂ&CÃCÃCc                 óL   — t          t          t          dggddggg ¬¦  «         d S )NrP   rQ   rJ  ©rº   r»   r   r   s     r`   Útest_fillvalue_emptyz#TestConvolve2d.test_fillvalue_emptyZ  s8   € å•j¥*°¨s¨e°q¸!°f°XØ "ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rb   z!jax only supports boundary='fill'c                 óò   — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }t          ||dd¦  «        }|                      g d¢g d¢g d¢g¦  «        }t          ||¦  «         d S )	NrO   rd   r•   r–   r¬   Úwrap)r1  r1  éJ   r1  r1  )éD   rW  r›   rW  rW  r*  r    s         r`   Útest_wrap_boundaryz!TestConvolve2d.test_wrap_boundary_  sœ   € à�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆÝ�q˜!˜V VÑ,Ô,ˆØ�JŠJÐ,Ð,Ð,Ø'Ð'Ð'Ø'Ð'Ð'ð)ñ *ô *ˆõ 	˜˜1ÑÔÐÐÐrb   c                 óò   — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }t          ||dd¦  «        }|                      g d¢g d¢g d	¢g¦  «        }t          ||¦  «         d S )
NrO   rd   r•   r–   r¬   Úsymm)rh   rš   é,   r›   éB   )r  rC  r›   r1  éT   )éR   rÁ   é\   én   ér   r*  r    s         r`   Útest_sym_boundaryz TestConvolve2d.test_sym_boundaryi  sœ   € à�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆÝ�q˜!˜V VÑ,Ô,ˆØ�JŠJÐ,Ð,Ð,Ø'Ð'Ð'Ø)Ð)Ð)ð+ñ ,ô ,ˆõ 	˜˜1ÑÔÐÐÐrb   Úfunczboundary, expectedrZ  )g     €B@ç      E@ç      F@g     €F@rU  )ç     €E@re  rd  ç     €C@c                 óÄ   — |                      g d¢g¦  «        }|                     d¦  «        } |||d|¬¦  «        }t          ||                      |¦  «        ¦  «         d S )N)ç       @ç      ð¿ç      @ç      @)rP   é   re   ©rg   Úboundary)rY   Úonesr5   )r[   rc  ro  rÈ   r\   ÚimageÚkernelÚresults           r`   Útest_same_with_boundaryz&TestConvolve2d.test_same_with_boundarys  sl   € ð —
’
Ð1Ð1Ð1Ð2Ñ3Ô3ˆØ—’˜Ñ!Ô!ˆØ��e˜V¨&¸8ÐDÑDÔDˆõ 	˜ §
¢
¨8Ñ 4Ô 4Ñ5Ô5Ð5Ð5Ð5rb   c           	      óJ  — dd l m} |                     |                     dd|j        ¬¦  «        d¦  «        }|                     |                     dd|j        ¬¦  «        d¦  «        }t          ||dd	¬
¦  «        }t          ||                     ||d	d¬¦  «        ¦  «         d S )Nr   rP   rž   r¨   )rR   rK   ée   )rR   rR   re   rU  rn  )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…  s¤   € ð
 	$Ð#Ð#Ð#Ð#Ð#Ø�JŠJ�r—y’y  F°"´*�yÑ=Ô=¸wÑGÔGˆØ�JŠJ�r—y’y  G°2´:�yÑ>Ô>ÀÑIÔIˆÝ�q˜! &°6Ð:Ñ:Ô:ˆÝ˜˜3Ÿ<š<¨¨1°6À(˜<ÑKÔKÑLÔLÐLÐLÐLrb   c           
      ó<  — dd l m} |                     |                     dd|j        ¬¦  «        d¦  «        }|                     |                     dd|j        ¬¦  «        d¦  «        }t          ||dd	¬
¦  «        }t          j        ddt          ¬¦  «                             dd¦  «        }t          j        |dd	¦  «        }| 	                    |¦  «        }t          || 	                    |                     ||d	¬¦  «        d d…d d…f         ¦  «        ¦  «         d S )Nr   rP   rR   r¨   ©rK   rK   é%   )rN   rN   r¬   rU  rn  rK   )r}  r}  rf   rª   )rx  ry  r†   r‡   rå   r   r  ÚfloatÚpadrY   r5   r   )	r[   r\   rz  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ÔEˆØ�JŠJ�r—y’y  E°´�yÑ<Ô<¸fÑEÔEˆÝ�q˜! &°6Ð:Ñ:Ô:ˆåŒy˜˜F­%Ð0Ñ0Ô0×8Ò8¸¸AÑ>Ô>ˆÝ”&˜Ð/°Ñ8Ô8ˆØ�zŠz˜'Ñ"Ô"ˆÝ˜˜2Ÿ:š: c§l¢l°4¸À lÑ&HÔ&HÈÈ"ÈÈcÈrÈcÈÔ&RÑSÔSÑTÔTÐTÐTÐTrb   c                 ó*  — |                      |                     dd¦  «        d¦  «        }|                      |                     dd¦  «        d¦  «        }t          t          t          g||f¢R i ddi¤Ž t          t          t          g||f¢R i ddi¤Ž d S rÓ   )r†   r‡   rº   r»   r   r¼   s       r`   r×   z"TestConvolve2d.test_invalid_shapesŸ  sœ   € ð �JŠJ�r—y’y  A‘”¨Ñ/Ô/ˆØ�JŠJ�r—y’y  QÑ'Ô'¨Ñ0Ô0ˆå•j¥*ÐK°°1¨vÐKÐKÐK¸&À'Ð9JÐKÐKÐKÝ•j¥*ÐK°°1¨vÐKÐKÐK¸&À'Ð9JÐKÐKÐKÐKÐKrb   rG   c                 óê   — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }t          ||d¦  «        }|                      g d¢g d¢g¦  «        }t          ||¦  «         d S )NrO   rd   r-  r.  re   )rS   rT   rh   )r1  r2  r3  r*  )r[   r\   r+  rñ   r7  r6  s         r`   rÑ   zTestConvolve2d.test_same_mode«  s’   € ð �JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJÐ-Ð-Ð-Ð/EÐ/EÐ/EÐFÑGÔGˆÝ�q˜!˜VÑ$Ô$ˆØ�JŠJ˜˜˜Ø �=�=ð"ñ #ô #ˆå˜˜1ÑÔÐÐÐrb   c                 óF  — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g¦  «        }|                      g d¢g¦  «        }t          ||d¦  «        }t          ||¦  «         t          ||d¦  «        }t          ||¦  «         |                      ddgd	d
gg¦  «        }|                      g d¢g d¢g¦  «        }|                      ddgg¦  «        }t          ||d¦  «        }t          ||¦  «         t          ||d¦  «        }t          ||¦  «         d S )NrO   rd   r-  r.  r0  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µ  sJ  € ð �JŠJ˜	˜	˜	 9 9 9Ð-Ñ.Ô.ˆØ�JŠJÐ-Ð-Ð-Ð/EÐ/EÐ/EÐFÑGÔGˆØ—:’:Ð5Ð5Ð5Ð6Ñ7Ô7ˆå˜˜A˜wÑ'Ô'ˆÝ˜˜XÑ&Ô&Ð&å˜˜A˜wÑ'Ô'ˆÝ˜˜XÑ&Ô&Ð&à�JŠJ˜ Ð(¨6°6Ð*:Ð;Ñ<Ô<ˆØ�JŠJÐ0Ð0Ð0Ð2JÐ2JÐ2JÐKÑLÔLˆØ—:’: ¨Ð2Ð3Ñ4Ô4ˆå˜˜A˜wÑ'Ô'ˆÝ˜˜XÑ&Ô&Ð&õ ˜˜A˜wÑ'Ô'ˆÝ˜˜XÑ&Ô&Ð&Ð&Ð&rb   z9only integer tensors of a single element can be convertedc                 ó  — |                      d¦  «        }|                     g d¢¦  «        }t          |¦  «        }t          |¦  «        }dD ]²}t          |                     t	          j        |||¬¦  «        ¦  «        t          j        |||¬¦  «        ¦  «         t          |                     t          j        |d d d …f         |d d d …f         |¬¦  «        d¬¦  «        t          j        |||¬¦  «        ¦  «         Œ³d S )NrM   ©gš™™™™™	@gffffffö?rK   ©r¬   r­   re   rf   r   ©Úaxis)	r‡   rY   rC   r4   r  r   r   Úsqueezer   )r[   r\   r]   r^   r�  Úb_nprg   s          r`   Útest_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcsÎ  s  € ð
 �IŠI�a‰LŒLˆØ�JŠJ�}�}�}Ñ%Ô%ˆÝ  Ñ#Ô#ˆÝ  Ñ#Ô#ˆà-ð 	ð 	ˆDÝØ—
’
�2œ; t¨T¸Ð=Ñ=Ô=Ñ>Ô>Ý”  1¨4Ð0Ñ0Ô0ñô ð õ Ø—
’
ÝÔ% a¨¨a¨a¨a¨¤j°!°D¸!¸!¸!°G´*À4ÐHÑHÔHØð ñ ô õ ”  1¨4Ð0Ñ0Ô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¦  «         d S )NrK   rL   rR  r   s     r`   Útest_invalid_dimsz TestConvolve2d.test_invalid_dimså  sT   € Ý•j¥*¨a°Ñ3Ô3Ð3Ý•j¥*¨q¨c°A°3Ñ7Ô7Ð7Ý•j¥*°°¨u¨g¸!¸¸°wÑ?Ô?Ð?Ð?Ð?rb   z!Can't create large array for testTÚstride_tricksrx   c                 óÖ  — dd|                      ¦   «         j        z  z  }t          j        d|z  dz  t	          j         ¦   «         j        z  dz  ¦  «         |                     d|z  |j         ¬¦  «        }d|d d d…<   t          j        j                             ||dfd¬	¦  «        }t          j
        |ddgg¦  «        }t	          j        |dk    ¦  «        }|d
         j        d
k    sJ ‚d S )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œZÔ0Ñ0Ñ1ˆÝÔ$ Q¨¡U¨T¡\µB´H±J´JÔ4GÑ%GÈ#Ñ%MÑNÔNÐNð �HŠH�T˜A‘X R¤XˆHÑ.Ô.ˆØˆˆ#ˆ#ˆAˆ#‰ÝŒFÔ ×+Ò+¨A°a¸°YÈ	Ð+ÑRÔRˆåÔ! ! q¨! f XÑ.Ô.ˆÝ”˜ šÑ#Ô#ˆØ�QŒxŒ} Ò!Ð!Ð!Ð!Ð!Ð!rb   N)r"  r#  r$  r%  r¢   r8  r:  rE  rP  rS  rX  rb  ÚpytestÚmarkÚparametrizer   r   rt  r{  r„  r×   rÑ   rÊ   r‘  r“  ÚslowÚxfail_on_32bitr¢  rè   rb   r`   r(  r(    sn  € € € € € ð Ð�kÐ*?Ð@Ñ@Ô@ðð ñ AÔ@ðð Ð�kÐ*?Ð@Ñ@Ô@ð
ð 
ñ AÔ@ð
ð Ð�gÐ&;Ð<Ñ<Ô<ð
ð 
ñ =Ô<ð
ð Ð�kÐ*GÐHÑHÔHðð ñ IÔHðð	:ð 	:ð 	:ð$ð $ð $ð
 Ð�kÐ*MÐNÑNÔNðð ñ OÔNðð Ð�kÐ*MÐNÑNÔNðð ñ OÔNðð Ð�kÐ*MÐNÑNÔNØ„[×Ò˜V j°+Ð%>Ñ?Ô?Ø„[×ÒÐ1Ø%Ð(@Ð(@Ð(@Ð'AÐBØ%Ð(@Ð(@Ð(@Ð'AÐBðDñEô Eð6ð 6ñEô Eñ @Ô?ñ OÔNð
6ð Ð�kÐ*MÐNÑNÔNðMð Mñ OÔNðMð Ð�kÐ*MÐNÑNÔNðUð Uñ OÔNðUð
Lð 
Lð 
Lð Ð�kØCðEñ Eô Eðð ñEô Eðð Ð�kØCðEñ Eô Eð'ð 'ñEô Eð'ð. Ð�gØJðñ ô ðð ñô ðð(@ð @ð @ð
 „[ÔØ„[×ÒÐ CÑDÔDØÐ˜d¨?Ð;Ñ;Ô;ð"ð "ñ <Ô;ñ EÔDñ Ôð"ð "ð "rb   r(  c                   ó
  — e Zd Z edd¬¦  «        ej                             dddddgddgg¦  «        d	„ ¦   «         ¦   «         Z edd¬¦  «        ej                             dd
d
gddgg¦  «        d„ ¦   «         ¦   «         Zej                             dddddgddgg¦  «        d„ ¦   «         Z	ej                             dd
d
gddgg¦  «        d„ ¦   «         Z
e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                             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                             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                             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                             dddddgddgg¦  «        d„ ¦   «         ¦   «         Z edd¬¦  «        ej                             dd
dd
gdgg¦  «        d„ ¦   «         ¦   «         Z edd¬¦  «        ej                             dddddgddgg¦  «        d„ ¦   «         ¦   «         Z edd¬¦  «        ej                             dd
d
gg¦  «        d„ ¦   «         ¦   «         Zej                             dddddgddgg¦  «        d„ ¦   «         Ze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                             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                             dddddgddgg¦  «        d'„ ¦   «         Zej                             dd
d
gddgg¦  «        d(„ ¦   «         Z ed)d*¬+¦  «        e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                             d/ e ed
d0¦  «        ¦  «         e ed1d2¦  «        ¦  «        z   e j!         "                    d3¦  «         #                    d4d5d ¦  «         $                    ¦   «         z   ¦  «        d6„ ¦   «         ¦   «         Z% ed)¬7¦  «        d8„ ¦   «         Z&dS )9ÚTestFFTConvolver£   r¾   rH   ÚaxesÚ Nr   rª   c                 ó   — |                      g d¢¦  «        }|                      g d¢¦  «        }|dk    rt          ||¦  «        }n6t          |t          ¦  «        rt	          |¦  «        }t          |||¬¦  «        }t          ||d¬¦  «         d S )NrO   ©rP   rL   rR   rW   ç      "@r«  ©rª  çTäqs*¹>r„   ©rY   r   Ú
isinstanceÚlistr‰   r4   ©r[   rª  r\   r]   rÈ   rÉ   s         r`   Ú	test_realzTestFFTConvolve.test_realÿ  s—   € ð �JŠJ�y�y�yÑ!Ô!ˆØ—:’:Ð0Ð0Ð0Ñ1Ô1ˆà�2Š:ˆ:Ý˜a Ñ#Ô#ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a ¨Ð.Ñ.Ô.ˆCå˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   rP   c                 óš  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }t          |t          ¦  «        rt          |¦  «        }t          |||¬¦  «        }t          ||d¬¦  «         d S )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�y�yÑ!Ô!ˆØ—:’:Ð0Ð0Ð0Ñ1Ô1ˆà�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ—:’:�bœg h°°A°Ñ7Ô7Ñ8Ô8ˆå�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q TÐ*Ñ*Ô*ˆÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   c                 ó   — |                      g d¢¦  «        }|                      g d¢¦  «        }|dk    rt          ||¦  «        }n6t          |t          ¦  «        rt	          |¦  «        }t          |||¬¦  «        }t          ||d¬¦  «         d S )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Ô0ˆØ—:’:ÐIÐIÐIÑJÔJˆà�2Š:ˆ:Ý˜a Ñ#Ô#ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a ¨Ð.Ñ.Ô.ˆCÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   c                 óš  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }t          |t          ¦  «        rt          |¦  «        }t          |||¬¦  «        }t          ||d¬¦  «         d S )Nr»  r½  rQ   rP   r¯  r°  r„   r·  r´  s         r`   Útest_complex_axesz!TestFFTConvolve.test_complex_axes*  sÀ   € à�JŠJÐ/Ð/Ð/Ñ0Ô0ˆØ—:’:ÐIÐIÐIÑJÔJˆà�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ—:’:�bœg h°°A°Ñ7Ô7Ñ8Ô8ˆå�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q TÐ*Ñ*Ô*ˆÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   éþÿÿÿc                 ó2  — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g d¢g¦  «        }|dk    rt          ||¦  «        }n6t          |t          ¦  «        rt	          |¦  «        }t          |||¬¦  «        }t          ||¦  «         d S )N©ç      ð?rQ   rK   r–   )rÃ  rL   rR   rW   r/  ©r¥   r>  é8   r  rÐ   ©r˜   r?  rÂ   r  rÐ   r«  r¯  r±  r´  s         r`   Útest_2d_real_samez!TestFFTConvolve.test_2d_real_same8  s¿   € ð �JŠJ˜˜˜Ø!˜	˜	ð#ñ $ô $ˆà—:’:Ð2Ð2Ð2Ø2Ð2Ð2Ø3Ð3Ð3ð5ñ 6ô 6ˆð �2Š:ˆ:Ý˜a Ñ#Ô#ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a ¨Ð.Ñ.Ô.ˆCÝ˜˜XÑ&Ô&Ð&Ð&Ð&rb   rQ   c                 ó²  — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g d¢g¦  «        }|                      t          j        |g d¢¦  «        ¦  «        }|                      t          j        |g d¢¦  «        ¦  «        }t          |t          ¦  «        rt          |¦  «        }t          |||¬¦  «        }t          ||dd	¬
¦  «         d S )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˜	˜	˜	Ø�9�9ðñ ô ˆà—:’:Ð0Ð0Ð0Ø-Ð-Ð-Ø.Ð.Ð.ð0ñ 1ô 1ˆð �JŠJ•r”w˜q ) ) )Ñ,Ô,Ñ-Ô-ˆØ—:’:�bœg h°	°	°	Ñ:Ô:Ñ;Ô;ˆå�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q TÐ*Ñ*Ô*ˆÝ˜˜X¨FÀÐFÑFÔFÐFÐFÐFrb   c                 ó6  — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g d¢g¦  «        }|dk    rt          ||¦  «        }n6t          |t          ¦  «        rt	          |¦  «        }t          |||¬¦  «        }t          ||d¬	¦  «         d S )
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Ð0Ð0Ø+Ð+Ð+ð-ñ .ô .ˆà—:’:ØAÐAÐAØ(Ð(Ð(Ø<Ð<Ð<ðñ ô ˆð �2Š:ˆ:Ý˜a Ñ#Ô#ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a ¨Ð.Ñ.Ô.ˆCå˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   c                 ó°  — |                      g d¢g d¢g¦  «        }|                      g d¢g d¢g d¢g¦  «        }|                      t          j        |g d¢¦  «        ¦  «        }|                      t          j        |g d¢¦  «        ¦  «        }t          |t          ¦  «        rt          |¦  «        }t          |||¬¦  «        }t          ||d¬	¦  «         d S )
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Ð0Ð0Ø+Ð+Ð+ð-ñ .ô .ˆà—:’:ØAÐAÐAØ(Ð(Ð(Ø<Ð<Ð<ðñ ô ˆð �JŠJ•r”w˜q ) ) )Ñ,Ô,Ñ-Ô-ˆØ—:’:�bœg h°	°	°	Ñ:Ô:Ñ;Ô;ˆå�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q TÐ*Ñ*Ô*ˆÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   c                 ó>  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|dk    rt          ||d¦  «        }n7t          |t          ¦  «        rt	          |¦  «        }t          ||d|¬¦  «        }t          ||¦  «         |dk    rt          ||d¦  «        }n7t          |t          ¦  «        rt	          |¦  «        }t          ||d|¬¦  «        }t          ||d¬	¦  «         d S )
NrO   ©	rK   rK   rM   rN   r¥   r—   r/  r   rP   ©ç     €A@ç     €D@ç     €G@©	r®  ç      4@ç      9@rÚ  rÛ  rÜ  rg  g      <@ri  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�y�yÑ!Ô!ˆØ�JŠJÐ2Ð2Ð2Ñ3Ô3ˆØ—Z’Z   Ñ0Ô0ˆ
Ø—Z’ZÐ KÐ KÐ KÑLÔLˆ
à�2Š:ˆ:Ý˜a  FÑ+Ô+ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a  F°Ð6Ñ6Ô6ˆCÝ˜˜ZÑ(Ô(Ð(à�2Š:ˆ:Ý˜a  FÑ+Ô+ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a  F°Ð6Ñ6Ô6ˆCÝ˜˜Z¨fÐ5Ñ5Ô5Ð5Ð5Ð5rb   c                 óê  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }t          |t          ¦  «        rt          |¦  «        }t          ||d|¬¦  «        }t          ||d	¬
¦  «         t          ||d|¬¦  «        }t          ||d	¬
¦  «         d S )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�y�yÑ!Ô!ˆØ�JŠJÐ2Ð2Ð2Ñ3Ô3ˆØ—Z’Z   Ñ0Ô0ˆ
Ø—Z’ZÐ KÐ KÐ KÑLÔLˆ
à�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ—Z’Z¥¤¨
°Q¸°FÑ ;Ô ;Ñ<Ô<ˆ
Ø—Z’Z¥¤¨
°Q¸°FÑ ;Ô ;Ñ<Ô<ˆ
å�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q ¨TÐ2Ñ2Ô2ˆÝ˜˜Z¨fÐ5Ñ5Ô5Ð5å˜!˜Q ¨TÐ2Ñ2Ô2ˆÝ˜˜Z¨fÐ5Ñ5Ô5Ð5Ð5Ð5rb   c                 ó  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|dk    rt          ||d¦  «        }n7t          |t          ¦  «        rt	          |¦  «        }t          ||d|¬¦  «        }t          ||d¬¦  «         |dk    rt          ||d¦  «        }n7t          |t          ¦  «        rt	          |¦  «        }t          ||d|¬¦  «        }t          ||d¬¦  «         d S )	N©rK   rQ   rP   rØ  ©ç      8@g      ?@rÛ  rf  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�y�yÑ!Ô!ˆØ�JŠJÐ2Ð2Ð2Ñ3Ô3ˆØ—:’:ÐAÐAÐAÑBÔBˆà�2Š:ˆ:Ý˜a  GÑ,Ô,ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a  G°$Ð7Ñ7Ô7ˆCÝ˜˜X¨FÐ3Ñ3Ô3Ð3à�2Š:ˆ:Ý˜a  GÑ,Ô,ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a  G°$Ð7Ñ7Ô7ˆCÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   c                 ó  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }t          |t          ¦  «        rt          |¦  «        }t          ||d|¬¦  «        }t          ||d¬	¦  «         d S ©
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�y�yÑ!Ô!ˆØ�JŠJÐ2Ð2Ð2Ñ3Ô3ˆØ—:’:ÐAÐAÐAÑBÔBˆà�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ—:’:�bœg h°°A°Ñ7Ô7Ñ8Ô8ˆå�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q ¨dÐ3Ñ3Ô3ˆÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   c                 ó  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|dk    rt          ||d¦  «        }n7t          |t          ¦  «        rt	          |¦  «        }t          ||d|¬¦  «        }t          ||d¬¦  «         |dk    rt          ||d¦  «        }n7t          |t          ¦  «        rt	          |¦  «        }t          ||d|¬¦  «        }t          ||d¬¦  «         d S )	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Ô0ˆØ�JŠJÐ?Ð?Ð?Ñ@Ô@ˆØ—:’:ÐAÐAÐAÑBÔBˆà�2Š:ˆ:Ý˜a  GÑ,Ô,ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a  G°$Ð7Ñ7Ô7ˆCÝ˜˜X¨FÐ3Ñ3Ô3Ð3à�2Š:ˆ:Ý˜a  GÑ,Ô,ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a  G°$Ð7Ñ7Ô7ˆCÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   c                 óh  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }t          |t          ¦  «        rt          |¦  «        }t          ||d|¬¦  «        }t          ||d¬	¦  «         t          ||d|¬¦  «        }t          ||d¬	¦  «         d S )
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Ô0ˆØ�JŠJÐ?Ð?Ð?Ñ@Ô@ˆØ—:’:ÐAÐAÐAÑBÔBˆà�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ—:’:�bœg h°°A°Ñ7Ô7Ñ8Ô8ˆå�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q ¨dÐ3Ñ3Ô3ˆÝ˜˜X¨FÐ3Ñ3Ô3Ð3å˜!˜Q ¨dÐ3Ñ3Ô3ˆÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   rF   z mapped axes must have same shapec                 óÖ  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }|                      t          j        |ddg¦  «        ¦  «        }t          ||dd¬¦  «        }t	          ||d¬	¦  «         d S rî  )rY   r  r¸  r   r4   rÇ   s         r`   Útest_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes   sÝ   € ð �JŠJ�y�y�yÑ!Ô!ˆØ�JŠJÐ2Ð2Ð2Ñ3Ô3ˆØ—:’:ÐAÐAÐAÑBÔBˆà�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ�JŠJ•r”w˜q 1 a &Ñ)Ô)Ñ*Ô*ˆØ—:’:�bœg h°°A°Ñ7Ô7Ñ8Ô8ˆå˜!˜Q ¨aÐ0Ñ0Ô0ˆÝ˜˜X¨FÐ3Ñ3Ô3Ð3Ð3Ð3rb   r’   zassorted error messagesúa,brM   rN   r—   c                 ó´   — t          t          |                     |¦  «        |                     |¦  «        ¦  «        |                     g ¦  «        ¦  «         d S ©N)r5   r   rY   ©r[   r]   r^   r\   s       r`   Ú
test_emptyzTestFFTConvolve.test_empty/  sN   € õ
 	Ý˜Ÿ
š
 1™œ r§z¢z°!¡}¤}Ñ5Ô5Ø�JŠJ�r‰NŒNñ	
ô 	
ð 	
ð 	
ð 	
rb   zjnp.pad: pad_width with nd=0c                 ó    — |                      d¦  «        }|                      d¦  «        }t          ||¦  «        }t          |||z  ¦  «         d S rŽ   )rY   r   r5   ©r[   r\   r]   r^   rÉ   s        r`   rw   zTestFFTConvolve.test_zero_rank9  sM   € à�JŠJ�tÑÔˆØ�JŠJ�tÑÔˆÝ˜!˜QÑÔˆÝ˜˜Q ™UÑ#Ô#Ð#Ð#Ð#rb   c                 óØ   — |                      dg¦  «        }|                      dg¦  «        }t          ||¦  «        }t          ||                      ||z  |j        ¬¦  «        ¦  «         d S )Nr�   r�   r¨   )rY   r   r5   r©   r   s        r`   r‘   z#TestFFTConvolve.test_single_element@  sn   € Ø�JŠJ˜�vÑÔˆØ�JŠJ˜�vÑÔˆÝ˜!˜QÑÔˆÝ˜ØŸ
š
 1 q¡5°´	˜
Ñ:Ô:ñ	<ô 	<ð 	<ð 	<ð 	<rb   c                 óŒ  — t           j                             d¦  «        }t           j                             d¦  «        d|                     d¦  «        z  z   }t           j                             d¦  «        d|                     d¦  «        z  z   }|                     t          j        ||d¦  «        ¦  «        }|                     |¦  «        }|                     |¦  «        }|dk    rt          ||d¦  «        }	n7t          |t          ¦  «        rt          |¦  «        }t          ||d|¬¦  «        }	t          |	|d¬	¦  «         d S )
NéÒ  éÑ  r§   é)  r¬   r«  r¯  ç»½×Ùß|Û=©rþ   )r  r  Údefault_rngÚrandrY   r   r   r²  r³  r‰   r4   ©
r[   rª  r\   r  r�  r�  rÈ   r]   r^   rÉ   s
             r`   Útest_random_dataz TestFFTConvolve.test_random_dataG  s  € åŒi×#Ò# DÑ)Ô)ˆÝŒy�~Š~˜dÑ#Ô# b¨3¯:ª:°dÑ+;Ô+;Ñ&;Ñ;ˆÝŒy�~Š~˜dÑ#Ô# b¨3¯:ª:°dÑ+;Ô+;Ñ&;Ñ;ˆØ—:’:�bœk¨$°°fÑ=Ô=Ñ>Ô>ˆØ�JŠJ�tÑÔˆØ�JŠJ�tÑÔˆà�2Š:ˆ:Ý˜a  FÑ+Ô+ˆCˆCå˜$¥Ñ%Ô%ð #Ý˜T‘{”{�Ý˜a  F°Ð6Ñ6Ô6ˆCÝ˜˜X¨EÐ2Ñ2Ô2Ð2Ð2Ð2rb   c                 óæ  — t           j                             d¦  «        }t           j                             d¦  «        d|                     d¦  «        z  z   }t           j                             d¦  «        d|                     d¦  «        z  z   }t          j        ||d¦  «        }t          j        |ddg¦  «        }t          j        |ddg¦  «        }|                     t          j        |ddg¦  «        ¦  «        }|                     |¦  «        }|                     |¦  «        }t          |t          ¦  «        rt          |¦  «        }t          ||d|¬¦  «        }	t          |	|d	¬
¦  «         d S )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  s7  € åŒi×#Ò# DÑ)Ô)ˆÝŒy�~Š~˜dÑ#Ô# b¨3¯:ª:°dÑ+;Ô+;Ñ&;Ñ;ˆÝŒy�~Š~˜dÑ#Ô# b¨3¯:ª:°dÑ+;Ô+;Ñ&;Ñ;ˆÝ”;˜t T¨6Ñ2Ô2ˆÝŒw�t˜a ˜VÑ$Ô$ˆÝŒw�t˜a ˜VÑ$Ô$ˆØ—:’:�bœg h°°A°Ñ7Ô7Ñ8Ô8ˆà�JŠJ�tÑÔˆØ�JŠJ�tÑÔˆå�d�DÑ!Ô!ð 	Ý˜‘;”;ˆDå˜!˜Q ¨TÐ2Ñ2Ô2ˆÝ˜˜X¨EÐ2Ñ2Ô2Ð2Ð2Ð2rb   TzTODO: swapaxesrx   rL   éüÿÿÿc                 ó  — d\  }}t           j                             d¦  «        }|                     t          j        j        |Ž d|                     |¦  «        z  z   ¦  «        }|                     t          j        j        |Ž d|                     |¦  «        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         }|                     |                     dd¦  «        dd¦  «        }|                     |                     dd¦  «        dd¦  «        }|                     |                     dd¦  «        dd¦  «        }|                     t          j        |g d	¢¦  «        ¦  «        }|                     t          j        |g d
¢¦  «        ¦  «        }|                     t          j        |g d¢¦  «        ¦  «        }t          ||d|¬¦  «        }	t          |	|dd¬¦  «         d S )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×#Ò# DÑ)Ô)ˆØ�JŠJ•r”y”~ wÐ/°"°s·z²zÀ'Ñ7JÔ7JÑ2JÑJÑKÔKˆØ�JŠJ•r”y”~ wÐ/°"°s·z²zÀ'Ñ7JÔ7JÑ2JÑJÑKÔKˆÝ˜a  FÑ+Ô+ˆàˆaˆaˆa����D˜$ Ð$Ô%ˆØˆaˆaˆa����D˜$ Ð$Ô%ˆØ˜A˜A˜A˜q˜q˜q $¨¨dÐ2Ô3ˆà�KŠK˜Ÿ
š
 1 aÑ(Ô(¨!¨QÑ/Ô/ˆØ�KŠK˜Ÿ
š
 1 aÑ(Ô(¨!¨QÑ/Ô/ˆØ—;’;˜x×0Ò0°°AÑ6Ô6¸¸1Ñ=Ô=ˆð �JŠJ•r”w˜q / / /Ñ2Ô2Ñ3Ô3ˆØ�JŠJ•r”w˜q / / /Ñ2Ô2Ñ3Ô3ˆØ—:’:�bœg h°°°Ñ@Ô@ÑAÔAˆå˜!˜Q ¨TÐ2Ñ2Ô2ˆÝ˜˜X¨E¸Ð>Ñ>Ô>Ð>Ð>Ð>rb   r
  rØ   r–  iÜ  r  r—  é'  c                 óD  — t           j                             |¦  «        dt           j                             |¦  «        z  z   }t           j                             |¦  «        dt           j                             |¦  «        z  z   }|                     t          j        ||d¦  «        ¦  «        }|                     |¦  «        }|                     |¦  «        }t          ||d¦  «        }t          ||d¬¦  «         t          ||dd¬¦  «        }t          ||d¬¦  «         d S )Nr§   r¬   r  r„   )r   r¯  )r  r  r	  rY   r   r   r4   )	r[   r
  r\   r�  r�  rÈ   r]   r^   rÉ   s	            r`   Útest_many_sizeszTestFFTConvolve.test_many_sizes‹  sò   € õ Œy�~Š~˜aÑ Ô  2­¬	¯ª°qÑ(9Ô(9Ñ#9Ñ9ˆÝŒy�~Š~˜aÑ Ô  2­¬	¯ª°qÑ(9Ô(9Ñ#9Ñ9ˆØ—:’:�bœk¨$°°fÑ=Ô=Ñ>Ô>ˆØ�JŠJ�tÑÔˆØ�JŠJ�tÑÔˆå˜!˜Q Ñ'Ô'ˆÝ˜˜X¨EÐ2Ñ2Ô2Ð2å˜!˜Q ¨TÐ2Ñ2Ô2ˆÝ˜˜X¨EÐ2Ñ2Ô2Ð2Ð2Ð2rb   r  c                 óÂ  — d}t           j                             d¦  «        }|                     |                     |¦  «        ¦  «        }t           j        t           j        fD ]|}||d<   |                     t          j        dd¦  «        ¦  «        }d}t          j
        t          |¬¦  «        5  t          j        ||dd	¬
¦  «         d d d ¦  «         n# 1 swxY w Y   Œ}d S )Nr–  l   [<zn( rØ   éÈ   çš™™™™™É?z4Use of fft convolution.*|invalid value encountered.*rH  re   r
   r·   )r  r  r  rY   Ústandard_normalÚnanÚinfr   Úfirwinr£  ÚwarnsÚRuntimeWarningr   )r[   r\   r
  r  Úsig_nanr  ÚcoeffsrO  s           r`   Útest_fft_nanzTestFFTConvolve.test_fft_nanž  s!  € àˆÝŒi×#Ò# KÑ0Ô0ˆØ—*’*˜S×0Ò0°Ñ3Ô3Ñ4Ô4ˆå”F�BœFÐ#ð 	Lð 	LˆCØˆG�C‰LØ—Z’Z¥¤¨c°3Ñ 7Ô 7Ñ8Ô8ˆFàHˆCÝ”�n°CÐ8Ñ8Ô8ð Lð LÝ” ¨°fÀUÐKÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Løð	Lð 	Ls   Â.CÃ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ÔBð4ð 4ñ CÔBñ =Ô<ð4ð Ð�gÐ&;Ð<Ñ<Ô<Ø„[×Ò˜V a¨!¨¨b°2°$Ð%7Ñ8Ô8ð4ð 4ñ 9Ô8ñ =Ô<ð4ð „[×Ò˜V b¨$°°A°3¸¸R¸DÐ%AÑBÔBð
4ð 
4ñ CÔBð
4ð „[×Ò˜V a¨!¨¨b°2°$Ð%7Ñ8Ô8ð4ð 4ñ 9Ô8ð4ð „[×Ò˜V bØ&*Ø'(¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð	&0ñ 	1ô 	1ð'ð 'ñ	1ô 	1ð'ð „[×Ò˜V q¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð&0ñ 1ô 1ðGð Gñ1ô 1ðGð  „[×Ò˜V bØ&*Ø'(¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð	&0ñ 	1ô 	1ð4ð 4ñ	1ô 	1ð4ð$ „[×Ò˜V q¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð&0ñ 1ô 1ð4ð 4ñ1ô 1ð4ð$ Ð�gÐ&;Ð<Ñ<Ô<Ø„[×Ò˜V b¨$°°A°3¸¸R¸DÐ%AÑBÔBð6ð 6ñ CÔBñ =Ô<ð6ð, Ð�gÐ&;Ð<Ñ<Ô<Ø„[×Ò˜V a¨¨a¨S°2°$Ð%7Ñ8Ô8ð6ð 6ñ 9Ô8ñ =Ô<ð6ð( Ð�gÐ&;Ð<Ñ<Ô<Ø„[×Ò˜V b¨$°°A°3¸¸R¸DÐ%AÑBÔBð4ð 4ñ CÔBñ =Ô<ð4ð, Ð�gÐ&;Ð<Ñ<Ô<Ø„[×Ò˜V a¨!¨ XÑ.Ô.ð4ð 4ñ /Ô.ñ =Ô<ð4ð  „[×Ò˜V b¨$°°A°3¸¸R¸DÐ%AÑBÔBð4ð 4ñ CÔBð4ð* „[×Ò˜V a¨!¨¨b°2°$Ð%7Ñ8Ô8ð4ð 4ñ 9Ô8ð4ð$ Ð�kÐ*LÐMÑMÔMØÐ�gÐ&;Ð<Ñ<Ô<ð4ð 4ñ =Ô<ñ NÔMð4ð Ð�vÐ&;Ð<Ñ<Ô<ØÐ�{Ð+DÐEÑEÔEØ„[×Ò˜U b¨" X°°A°¸¨|¸bÀ1À#¸YÐ$GÑHÔHð
ð 
ñ IÔHñ FÔEñ =Ô<ð
ð Ð�kÐ*HÐIÑIÔIð$ð $ñ JÔIð$ð<ð <ð <ð „[×Ò˜V b¨$°°A°3¸¸R¸DÐ%AÑBÔBð3ð 3ñ CÔBð3ð  „[×Ò˜V a¨!¨¨b°2°$Ð%7Ñ8Ô8ð3ð 3ñ 9Ô8ð3ð$ Ð˜tÐ,<Ð=Ñ=Ô=Ø„[×Ò˜V q¨! fØ'(¨! fØ'(¨" gØ')¨1 gØ')¨1 gØ'(¨" gØ')¨2 hØ')¨2 hð&0ñ 1ô 1ð?ð ?ñ1ô 1ñ >Ô=ð?ð. „[ÔØ„[×ÒØØˆˆUˆU�1�c‰]Œ]ÑÔØˆˆUˆU�4˜ÑÔÑÔñ	 à
Œ	×Ò˜dÑ#Ô#×+Ò+¨D°%¸Ñ;Ô;×BÒBÑDÔDñ	EñFô Fð
3ð 3ñFô Fñ Ôð3ð Ð˜dÐ#Ñ#Ô#ðLð Lñ $Ô#ðLð Lð Lrb   r©  c                  ó    — t          d¦  «        ‚)NzFell back to fftconvolve)ÚRuntimeError)r  r  s     r`   Úfftconvolve_errr*  ­  s   € Ý
Ð1Ñ
2Ô
2Ð2rb   c                 ó8   — d„ t          | d¬¦  «        D ¦   «         S )Nc                 óH   — g | ]\  }}t          ||z
  ¦  «        d k    ¯||f‘Œ S )rK   )Úabs©ré   r]   r^   s      r`   rí   z!gen_oa_shapes.<locals>.<listcomp>²  s:   € ð ð ð ‘t�q˜!Ý�1�q‘5‰zŒz˜AŠ~ˆ~ð �ˆFØˆ~ˆ~rb   rQ   ©Úrepeatr   ©Úsizess    r`   Úgen_oa_shapesr3  ±  s/   € ðð �w u°QÐ7Ñ7Ô7ð ñ ô ð rb   c                 ó®   — t          | ¦  «        }t          | ¦  «        }d„ t          ||¦  «        D ¦   «         }g d¢}d„ t          ||¦  «        D ¦   «         S )Nc                 ó   — g | ]
\  }}||z   ‘ŒS rè   rè   )ré   Úishapes0Úishapes1s      r`   rí   z$gen_oa_shapes_2d.<locals>.<listcomp>¹  s.   € ð %ð %ð %Ñ$6 H¨hˆh�xÑð %ð %ð %rb   rŒ  c                 ó¼   — g | ]Y\  }}|d k    sH|d         |d         k    r|d         |d         k    s$|d         |d         k     ¯A|d         |d         k     ¯S||fz   ‘ŒZS )r­   r   rP   rQ   rK   rè   )ré   ÚishapesÚimodes      r`   rí   z$gen_oa_shapes_2d.<locals>.<listcomp>½  s‡   € ð Cð Cð C¡ ¨%Ø˜ÒÐØ�QŒZ˜' !œ*Ò$Ð$¨°¬°g¸a´jÒ)@Ð)@Ø�QŒZ˜' !œ*Ò$Ð$¨°¬°g¸a´jÒ)@Ð)@ð �U�HÑð *AÐ)@Ð)@rb   )r3  Úzipr   )r2  Úshapes0Úshapes1ÚshapesÚmodess        r`   Úgen_oa_shapes_2dr@  ¶  s�   € Ý˜EÑ"Ô"€GÝ˜EÑ"Ô"€Gð%ð %Ý�'˜7Ñ#Ô#ð%ñ %ô %€Fð &Ð%Ð%€EðCð Cµ7¸6À5Ñ3IÔ3Ið Cñ Cô Cð Crb   c                 ó8   — d„ t          | d¬¦  «        D ¦   «         S )Nc                 ó(   — g | ]\  }}||k    ¯||f‘ŒS rè   rè   r.  s      r`   rí   z$gen_oa_shapes_eq.<locals>.<listcomp>Ä  s0   € ð ð ð ‘t�q˜!Ø�AŠvˆvð �ˆFØˆvˆvrb   rQ   r/  r   r1  s    r`   Úgen_oa_shapes_eqrC  Ã  s/   € ðð �w u°QÐ7Ñ7Ô7ð ñ ô ð rb   c                   ó\  — e Zd Zej                             ¦   «         ej                             d e e e	ddd¦  «        ¦  «         e e	ddd¦  «        ¦  «        z   ¦  «        ¦  «        d„ ¦   «         ¦   «         Z
ej                             d eg d¢¦  «        ¦  «        ej                             dd	d
g¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         ¦   «         Zej                             dddg¦  «        ej                             d eg d¢¦  «        ¦  «        ej                             dddg¦  «        ej                             dddg¦  «        ej                             dd	d
g¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Zej                             d eg d¢¦  «        ¦  «        ej                             dd	d
g¦  «        d„ ¦   «         ¦   «         Zej                             dddgddgddgg¦  «        ej                             d eg d¢¦  «        ¦  «        ej                             dddg¦  «        ej                             dddg¦  «        ej                             dd	d
g¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z edd¬¦  «        ej                             dg g fddgg fg dgfg¦  «        d „ ¦   «         ¦   «         Zd!„ Zd"„ Zd#S )$ÚTestOAConvolvezshape_a_0, shape_b_0rP   rØ   r–  rV   c                 ó\  — t           j                             |¦  «        }t           j                             |¦  «        }|                     t	          ||¦  «        ¦  «        }|                     |¦  «        }|                     |¦  «        }t          ||¦  «        }t          ||¦  «         d S 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Ê  sˆ   € õ ŒI�NŠN˜9Ñ%Ô%ˆÝŒI�NŠN˜9Ñ%Ô%ˆØ—:’:�k¨!¨QÑ/Ô/Ñ0Ô0ˆØ�JŠJ�q‰MŒMˆØ�JŠJ�q‰MŒMˆå˜˜AÑÔˆå! # xÑ0Ô0Ð0Ð0Ð0rb   )r  é/   rN   rL   rP   Ú
is_complexTFrg   rŒ  c                 óH  — t           j                             |¦  «        }t           j                             |¦  «        }|rJ|dt           j                             |¦  «        z  z   }|dt           j                             |¦  «        z  z   }|                     t	          |||¬¦  «        ¦  «        }	|                     |¦  «        }|                     |¦  «        }|                     t          j        dt          ¦  «         t          |||¬¦  «        }
t          |
|	¦  «         d S ©Nr§   rf   r   ©r  r  r	  rY   r   Úsetattrr   Ú_signaltoolsr*  r   r:   )r[   rG  rH  rK  rg   Úmonkeypatchr\   r]   r^   rÈ   rÉ   s              r`   Útest_1d_noaxeszTestOAConvolve.test_1d_noaxesÚ  sö   € õ ŒI�NŠN˜9Ñ%Ô%ˆÝŒI�NŠN˜9Ñ%Ô%ˆØð 	1Ø�B•r”y—~’~ iÑ0Ô0Ñ0Ñ0ˆAØ�B•r”y—~’~ iÑ0Ô0Ñ0Ñ0ˆAØ—:’:�k¨!¨Q°TÐ:Ñ:Ô:Ñ;Ô;ˆØ�JŠJ�q‰MŒMˆØ�JŠJ�q‰MŒMˆà×Ò�FÔ/°Ý+ñ	-ô 	-ð 	-å˜˜A DÐ)Ñ)Ô)ˆå! # xÑ0Ô0Ð0Ð0Ð0rb   rª  r   )r  rJ  rN   rL   Úshape_a_extrarK   Úshape_b_extrac
                 ó  — |gdz  }
|gdz  }||
|<   |||<   t          j        j        |
Ž }t          j        j        |Ž }|r2|dt          j        j        |
Ž z  z   }|dt          j        j        |Ž z  z   }|	                     t	          ||||¬¦  «        ¦  «        }|	                     |¦  «        }|	                     |¦  «        }|                     t          j        dt          ¦  «         t          ||||¬¦  «        }t          ||¦  «         d S )NrQ   r§   ©rg   rª  r   rN  )r[   rª  rG  rH  rS  rT  rK  rg   rQ  r\   Úax_aÚax_br]   r^   rÈ   rÉ   s                   r`   Útest_1d_axeszTestOAConvolve.test_1d_axesï  s  € ð ˆ˜qÑ ˆØˆ˜qÑ ˆØˆˆT‰
ØˆˆT‰
åŒIŒN˜DÐ!ˆÝŒIŒN˜DÐ!ˆØð 	-Ø�B•r”y”~ tÐ,Ñ,Ñ,ˆAØ�B•r”y”~ tÐ,Ñ,Ñ,ˆAà—:’:�k¨!¨Q°TÀÐEÑEÔEÑFÔFˆØ�JŠJ�q‰MŒMˆØ�JŠJ�q‰MŒMˆà×Ò�FÔ/°Ý+ñ	-ô 	-ð 	-å˜˜A D¨tÐ4Ñ4Ô4ˆå! # xÑ0Ô0Ð0Ð0Ð0rb   z0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec	                 óP  — t           j                             ||¦  «        }	t           j                             ||¦  «        }
|rL|	dt           j                             ||¦  «        z  z   }	|
dt           j                             ||¦  «        z  z   }
|                     t	          |	|
|¬¦  «        ¦  «        }|                     |	¦  «        }	|                     |
¦  «        }
|                     t          j        dt          ¦  «         t          |	|
|¬¦  «        }t          ||¦  «         d S rM  rN  )r[   rG  rH  Ú	shape_a_1Ú	shape_b_1rg   rK  rQ  r\   r]   r^   rÈ   rÉ   s                r`   Útest_2d_noaxeszTestOAConvolve.test_2d_noaxes  sþ   € õ ŒI�NŠN˜9 iÑ0Ô0ˆÝŒI�NŠN˜9 iÑ0Ô0ˆØð 	<Ø�B•r”y—~’~ i°Ñ;Ô;Ñ;Ñ;ˆAØ�B•r”y—~’~ i°Ñ;Ô;Ñ;Ñ;ˆAà—:’:�k¨!¨Q°TÐ:Ñ:Ô:Ñ;Ô;ˆØ�JŠJ�q‰MŒMˆØ�JŠJ�q‰MŒMˆà×Ò�FÔ/°Ý+ñ	-ô 	-ð 	-å˜˜A DÐ)Ñ)Ô)ˆå! # xÑ0Ô0Ð0Ð0Ð0rb   rQ   c                 óz  — |gdz  }|gdz  }|||d         <   |||d         <   |||d         <   |||d         <   t          j        j        |Ž }t          j        j        |Ž }|	r2|dt          j        j        |Ž z  z   }|dt          j        j        |Ž z  z   }t          |¦  «        }|                     t          ||||¬¦  «        ¦  «        }|                     |¦  «        }|                     |¦  «        }|
                     t          j        dt          ¦  «         t          ||||¬¦  «        }t          ||¦  «         d S )NrK   r   rP   r§   rV  r   )r  r  r	  r‰   rY   r   rO  r   rP  r*  r   r:   )r[   rª  rG  rH  r[  r\  rg   rS  rT  rK  rQ  r\   rW  rX  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ŒN˜DÐ!ˆÝŒIŒN˜DÐ!ˆØð 	-Ø�B•r”y”~ tÐ,Ñ,Ñ,ˆAØ�B•r”y”~ tÐ,Ñ,Ñ,ˆAå�T‰{Œ{ˆØ—:’:�k¨!¨Q°TÀÐEÑEÔEÑFÔFˆØ�JŠJ�q‰MŒMˆØ�JŠJ�q‰MŒMˆà×Ò�FÔ/°Ý+ñ	-ô 	-ð 	-å˜˜A D¨tÐ4Ñ4Ô4ˆå! # xÑ0Ô0Ð0Ð0Ð0rb   r£   z*ValueError: Target length must be positiverH   rú  rM   rN   r—   c                 ó¸   — t          t          |                     |¦  «        |                     |¦  «        ¦  «        |                     g ¦  «        d¬¦  «         d S )NFr  )r5   r   rY   rý  s       r`   rþ  zTestOAConvolve.test_emptyH  sU   € õ 	Ý�r—z’z !‘}”} b§j¢j°¡m¤mÑ4Ô4Ø�JŠJ�r‰NŒN¨ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rb   c                 ó    — |                      d¦  «        }|                      d¦  «        }t          ||¦  «        }t          |||z  ¦  «         d S rŽ   ©rY   r   r5   r   s        r`   rw   zTestOAConvolve.test_zero_rankQ  sM   € Ø�JŠJ�tÑÔˆØ�JŠJ�tÑÔˆÝ˜˜AÑÔˆÝ˜˜Q ™UÑ#Ô#Ð#Ð#Ð#rb   c                 ó¤   — |                      dg¦  «        }|                      dg¦  «        }t          ||¦  «        }t          |||z  ¦  «         d S rŽ   rb  r   s        r`   r‘   z"TestOAConvolve.test_single_elementW  sQ   € Ø�JŠJ˜�vÑÔˆØ�JŠJ˜�vÑÔˆÝ˜˜AÑÔˆÝ˜˜Q ™UÑ#Ô#Ð#Ð#Ð#rb   N)r"  r#  r$  r£  r¤  r¦  r¥  rC  r³  rˆ   rI  r3  rR  rY  r@  r]  r_  r&  rþ  rw   r‘   rè   rb   r`   rE  rE  È  sî  € € € € € à„[×ÒÑÔØ„[×ÒÐ3Ø-Ð-¨d¨d°5°5¸¸CÀÑ3CÔ3CÑ.DÔ.DØ.2¨d°5°5¸¸dÀBÑ3GÔ3GÑ.HÔ.Hñ/Iñ Jô Jñô ð	1ð 	1ñ	ô ñ Ôð
	1ð „[×ÒÐ3Ø*˜]Ð+<Ð+<Ð+<Ñ=Ô=ñ?ô ?à„[×Ò˜\¨D°%¨=Ñ9Ô9Ø„[×Ò˜VÐ%>Ð%>Ð%>Ñ?Ô?ð1ð 1ñ @Ô?ñ :Ô9ñ?ô ?ð1ð" „[×Ò˜V a¨ VÑ,Ô,Ø„[×ÒÐ3Ø*˜]¨>¨>¨>Ñ:Ô:ñ<ô <à„[×Ò˜_¨q°!¨fÑ5Ô5Ø„[×Ò˜_¨q°!¨fÑ5Ô5Ø„[×Ò˜\¨D°%¨=Ñ9Ô9Ø„[×Ò˜VÐ%>Ð%>Ð%>Ñ?Ô?ð1ð 1ñ @Ô?ñ :Ô9ñ 6Ô5ñ 6Ô5ñ<ô <ñ -Ô,ð1ð0 „[×Òð :à-Ð-¨n¨n¨nÑ=Ô=ñ?ô ?ð „[×Ò˜\¨D°%¨=Ñ9Ô9ð1ð 1ñ :Ô9ñ?ô ?ð1ð& „[×Ò˜V q¨! f¨q°!¨f°q¸!°fÐ%=Ñ>Ô>Ø„[×Òð :à-Ð-¨n¨n¨nÑ=Ô=ñ?ô ?ð „[×Ò˜_¨q°!¨fÑ5Ô5Ø„[×Ò˜_¨q°!¨fÑ5Ô5Ø„[×Ò˜\¨D°%¨=Ñ9Ô9ð1ð 1ñ :Ô9ñ 6Ô5ñ 6Ô5ñ?ô ?ñ ?Ô>ð1ð8 Ð�wÐ'SÐTÑTÔTØ„[×Ò˜U b¨" X°°A°¸¨|¸bÀ1À#¸YÐ$GÑHÔHð
ð 
ñ IÔHñ UÔTð
ð$ð $ð $ð$ð $ð $ð $ð $rb   rE  Tz!assertions may differ on backendsrx   Úconvapproachc                   ó„   — e Zd Zd„ Zd„ Zej                             ddgdfddgfdgdggfg¦  «        d„ ¦   «         Zd„ Z	d	S )
ÚTestAllFreqConvolvesc                 ó   — t          j        dd¦  «                             d¦  «        }t          j        dd¦  «                             d¦  «        }t          t          d¬¦  «        5   |||d	¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrP   r—   rÔ   rÕ   r   rÖ   zOFor 'valid' mode, one must be at least as large as the other in every dimensionrH  r­   rf   )r  r‡   r†   rº   r»   ©r[   rd  r\   r]   r^   s        r`   r×   z(TestAllFreqConvolves.test_invalid_shapesd  sÛ   € ÝŒI�a˜‰OŒO×#Ò# FÑ+Ô+ˆÝŒI�b˜!ÑÔ×$Ò$ VÑ,Ô,ˆÝ�:ð"FðGñ Gô Gð 	-ð 	-ð ˆL˜˜A GÐ,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   Á'BÂBÂ
Bc                 óÜ   — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          t          d¬¦  «        5   |||ddg¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)rM   rN   rQ   rP   )rM   rN   rK   rP   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)rH  r   rP   r¯  )r  rœ  rº   r»   rh  s        r`   Útest_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axesl  sÅ   € ÝŒH�\�\�\Ñ"Ô"ˆÝŒH�\�\�\Ñ"Ô"ˆÝ�:ð"6ð7ñ 7ô 7ð 	,ð 	,ð ˆL˜˜A Q¨ FÐ+Ñ+Ô+Ð+ð		,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   ÁA!Á!A%Á(A%rú  rP   rQ   rK   c                 ó|   — t          t          d¬¦  «        5   |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz/in1 and in2 should have the same dimensionalityrH  ©rº   r»   )r[   r]   r^   rd  r\   s        r`   r!  z)TestAllFreqConvolves.test_mismatched_dimsu  s˜   € õ
 �:ð"-ð.ñ .ô .ð 	ð 	ð ˆL˜˜AÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   —1±5¸5c                 ó„  — t          t          d¬¦  «        5   |dgdgd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |dgdgg ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d	¬¦  «        5   |dgdgddgd
dgg¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d	¬¦  «        5   |dgdgg d¢¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |dgdgdg¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |dgdgdg¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5   |dgdgddg¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz4acceptable mode flags are 'valid', 'same', or 'full'rH  rP   rQ   Úchipsrf   z#when provided, axes cannot be emptyr¯  z-axes must be a scalar or iterable of integersrK   rL   )rÃ  ri  rk  rl  z$axes exceeds dimensionality of inputrÀ  zall axes must be uniquer   rl  )r[   rd  r\   s      r`   Útest_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags  s  € Ý�:ð"0ð1ñ 1ô 1ð 	1ð 	1ð ˆL˜!˜˜q˜c¨Ð0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1õ
 �:Ø!FðHñ Hô Hð 	,ð 	,àˆL˜!˜˜q˜c¨Ð+Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,õ �:ð .2ð 3ñ 3ô 3ð 	:ð 	:àˆL˜!˜˜q˜c¨!¨Q¨°!°Q°Ð(8Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ �:ð .2ð 3ñ 3ô 3ð 	:ð 	:àˆL˜!˜˜q˜cÐ(8Ð(8Ð(8Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ �:Ø!GðIñ Iô Ið 	-ð 	-àˆL˜!˜˜q˜c¨¨Ð,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ �:Ø!GðIñ Iô Ið 	.ð 	.àˆL˜!˜˜q˜c¨¨Ð-Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ �:Ø!:ð<ñ <ô <ð 	0ð 	0àˆL˜!˜˜q˜c¨¨A¨Ð/Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0sx   —4´8»8ÁA2Á2A6Á9A6ÂB6Â6B:Â=B:ÃC6Ã6C:Ã=C:ÄD5Ä5D9Ä<D9ÅE4Å4E8Å;E8ÆF5Æ5F9Æ<F9N)
r"  r#  r$  r×   rj  r£  r¤  r¥  r!  ro  rè   rb   r`   rf  rf  ^  s—   € € € € € ð-ð -ð -ð,ð ,ð ,ð „[×Ò˜UØ !˜s A˜hØ  1 #˜hØ !˜s a S E˜lð,ñ-ô -ðð ñ	-ô -ðð0ð 0ð 0ð 0ð 0rb   rf  zignore::DeprecationWarningr©   c                 ó”  — t           j                             d¦  «                             | ¦  «        }t           j                             d¦  «                             | ¦  «        }t          j         | ¦   «         ¦  «        r
|dz  }|dz  }t	          ||¦  «        }t          |t          ||d¬¦  «        ¦  «         |j        | k    sJ ‚d S )N)r~   r~   ©rL   rL   y        š™™™™™¹?r€   r�   )r  r  r  Úiscomplexobjr   r4   r   r©   )r©   r\   rq   rr   Úress        r`   Útest_convolve_longdtype_inputrt  ž  s»   € õ
 	Œ	×Ò˜Ñ"Ô"×)Ò)¨%Ñ0Ô0€AÝ
Œ	×Ò˜Ñ Ô ×'Ò'¨Ñ.Ô.€AÝ	„�u�u‘w”wÑÔð Ø	ˆS‰ˆØ	ˆS‰ˆå
�a˜Ñ
Ô
€CÝ�C� ! Q¨xÐ8Ñ8Ô8Ñ9Ô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                             dg d¢¦  «         eej        ej	        ¦  «        d„ ¦   «         ¦   «         Z edd¬¦  «        e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                             dg d(¢¦  «         eej	        ¦  «        d)„ ¦   «         ¦   «         ¦   «         Zd*S )+ÚTestMedFilt)
r  r  r  r  r  r_  é   r~   rÃ   rA  )
r  r  r  r  r  r   éH   éM   rW  r\  )
r  r  r  r  r  rA  rJ  é   r@  ry  )
r  r  r  r  r  rî   é   é   é_   é#   )
r  r  r  r  r  rA  rh   r/  rm  r\  )
rÀ   éa   rT   rW  rÁ   ry  rÍ   rœ   éG   rî   )
r@  r  r[  r|  rW  rU   rz  rW  r=  r]  )
rK   é!   r  rB  rP   rÁ   rV  é7   rW   éS   )
r—   r  rA  rÀ   r  rJ  r=  é+   rÍ   r>  )
rU   rÍ   éX   r—   é'   rL   r_  r@  rÏ   rÍ   )
r   r  r  r  rî   r{  r{  rw  r~   r   )
r   r  r  r  r  rî   rz  rm  r|  r   )
r  r  r  r  r  rJ  rh   rh   rA  r~  )
r  r  r  r  r  r  rî   rJ  r@  rî   )
r  r  r  r  r  r  rA  r‚  r@  r~  )
r�  r  r  r  r  rJ  rA  r„  r‚  r>  )
rU   r  r  r  r  rJ  rA  rÏ   r‚  r>  )
r—   rA  r  r  rJ  rA  rA  r„  rÏ   rm  )
r   rU   r�  r†  rU   rU   r„  r„  r„  r   )
r   r—   r  r—   rL   rL   rz  rz  r=  r   r—   rK   c                 ón  — |                      | j        ¦  «        }|                      | j        ¦  «        }|                      | j        ¦  «        }t	          j        ||¦  «        }t	          j        |                      ||j        ¬¦  «        |¦  «        }t          ||¦  «         t          ||d¬¦  «         d S )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Ñ2Ô2ˆåŒN˜3 Ñ,Ô,ˆÝÔ˜RŸZšZ¨°2´:˜ZÑ>Ô>ÀÑLÔLˆÝ˜˜4Ñ Ô Ð Ý˜˜1¨%Ð0Ñ0Ô0Ð0Ð0Ð0rb   r©   ©
rß   rÛ   rà   rÜ   rá   rÝ   râ   rÞ   rä   rå   c                 ó(  — t          |¦  «        r|dv rt          j        d¦  «         t          ||¦  «        }|                     | j        |¬¦  «        }t          j        |¦  «        j        |k    sJ ‚t          j	        |¦  «        j        |k    sJ ‚d S )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‰<Œ<ð 	A˜EÐ%CÐCÐCÝŒKÐ?Ñ@Ô@Ð@å˜˜EÑ"Ô"ˆØ—:’:˜dœg¨U�:Ñ3Ô3ˆÝŒ~˜hÑ'Ô'Ô-°Ò6Ð6Ð6Ð6ÝÔ Ñ)Ô)Ô/°5Ò8Ð8Ð8Ð8Ð8Ð8rb   Tzassertions may differrx   Úfloat96Úfloat128c                 óÞ  — |dv r>t          j        t           j        ¦  «        j        |k    rt	          j        d|› �¦  «         t          j        | j        |¬¦  «        }t	          j        t          d¬¦  «        5  t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r˜  r™  zPlatform does not support r¨   znot supportedrH  )r  ÚfinfoÚ
longdoubler©   r£  r“  Úarrayrˆ  r   r»   r   r‹  rŒ  r•  s       r`   Útest_invalid_dtypeszTestMedFilt.test_invalid_dtypesâ  s_  € ð Ð,Ð,Ð,Ý”H�Rœ]Ñ+Ô+Ô1°UÒ:Ð:ÝŒKÐ<°UÐ<Ð<Ñ=Ô=Ð=å”8˜DœG¨5Ð1Ñ1Ô1ˆÝŒ]�:¨_Ð=Ñ=Ô=ð 	%ð 	%ÝŒN˜8Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%õ Œ]�:¨_Ð=Ñ=Ô=ð 	'ð 	'ÝÔ˜XÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's$   Á9BÂBÂ!BÃ C"Ã"C&Ã)C&zobject arraysc                 ó–   — t          t          t          f¦  «        5  t          j        d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rü  )rº   r»   Ú	TypeErrorr   r‹  r   s     r`   Ú	test_nonezTestMedFilt.test_noneõ  s‹   € õ �J­	Ð2Ñ3Ô3ð 	!ð 	!ÝŒN˜4Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   œ>¾AÁAz#strides are only writeable in NumPyc                 ó  — |                      d|j        ¬¦  «        }|dd…         }t          j        j                             |d¬¦  «        }t          t          j        |d¦  «        | 	                    dg¦  «        ¦  «         d S )	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ü  su   € ð —	’	˜" B¤J�	Ñ/Ô/ˆØ�!�A�#ŒJˆÝŒ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        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„Š|                     |¦  «        }t          d¬¦  «        5 Šh d£}ˆˆfd	„|D ¦   «         }t          |¦  «        D ]!}| 	                    ¦   «         \  }}	}
|||	|
f<   Œ"	 d d d ¦  «         n# 1 swxY w Y   t          ||¦  «         d S )
Nr¨   r   rQ   rP   c                 ó(  •— | \  }}|dk    r5t          d‰‰z   ¦  «        }t          d‰ ¦  «        }t          d‰¦  «        }n3t          ‰‰z
  d ¦  «        }t          ‰d ¦  «        }t          ‰d ¦  «        }|dk    r5t          d‰‰z   ¦  «        }t          d‰ ¦  «        }t          d‰¦  «        }n3t          ‰‰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ˆvÝ˜A˜r D™yÑ)Ô)�Ý˜Q  ‘”�Ý˜Q ‘|”|��å˜B ™I tÑ,Ô,�Ý˜T 4Ñ(Ô(�Ý˜R ‘”�Ø�AŠvˆ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   c                 ó<   •— h | ]}‰                      ‰|¦  «        ’ŒS rè   )Úsubmit)ré   rª  r¹  Úpools     €€r`   ú	<setcomp>z6TestMedFilt.test_medfilt2d_parallel.<locals>.<setcomp><  s'   ø€ ÐEÐEÐE°U�t—{’{ 5¨%Ñ0Ô0ÐEÐEÐErb   )r”  rY   rˆ  r‰  r˜  rŠ  Ú
zeros_liker   r   rs  r5   )r[   r©   r\   rÈ   ÚoutputÚchunksÚfuturesÚfutureÚdataÚMsliceÚNslicerµ  r¶  r¹  r–  r·  r¸  rÁ  s   `          @@@@@@@r`   Útest_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallel  sÜ  øøøøøøøø€ õ ˜˜EÑ"Ô"ˆØ—:’:˜dœg¨U�:Ñ3Ô3ˆØ—:’:˜dœh¨e�:Ñ4Ô4ˆð Œ~ ¤Ò/Ð/Ð/Ð/ð
 Œ^˜AÔ !Ñ#ˆØŒ^˜AÔ !Ñ#ˆØÔ Ô" aÑ'¨!Ñ+ˆØÔ Ô" aÑ'¨!Ñ+ˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð8 —’˜xÑ(Ô(ˆÝ¨AÐ.Ñ.Ô.ð 	.°$Ø5Ð5Ð5ˆFØEÐEÐEÐEÐE¸fÐEÑEÔEˆGõ ' wÑ/Ô/ð .ð .�Ø'-§}¢}¡¤Ñ$��f˜fØ)-��v˜v�~Ñ&Ð&ð.ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ 	˜ Ñ)Ô)Ð)Ð)Ð)s   ÃAD*Ä*D.Ä1D.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`   rv  rv  ®  sÿ  € € € € € à
2Ð
2Ð
2Ø
1Ð
1Ð
1Ø
2Ð
2Ð
2Ø
2Ð
2Ð
2Ø
1Ð
1Ð
1Ø
2Ð
2Ð
2Ø
2Ð
2Ð
2Ø
0Ð
0Ð
0Ø
1Ð
1Ð
1Ø
0Ð
0Ð
0ð	
2€Bð 2Ð1Ð1Ø1Ð1Ð1Ø3Ð3Ð3Ø3Ð3Ð3Ø3Ð3Ð3Ø3Ð3Ð3Ø3Ð3Ð3Ø2Ð2Ð2Ø1Ð1Ð1Ø-Ð-Ð-ð	/€Cð �Q�%€KàÐ�v”~ vÔ'7Ñ8Ô8ð	1ð 	1ñ 9Ô8ð	1ð „[×Ò˜Wð '=ð '=ð '=ñ >ô >ð Ð�v”~ vÔ'7Ñ8Ô8ð9ð 9ñ 9Ô8ñ>ô >ð9ð Ð˜dÐ+BÐCÑCÔCØ„[×Ò˜W r¤x°´¸r¼}Ø')¤~°r´zØ'0°*ð'>ñ ?ô ?ð Ð�v”~ vÔ'7Ñ8Ô8ð'ð 'ñ 9Ô8ñ?ô ?ñ DÔCð
'ð Ð˜d¨?Ð;Ñ;Ô;ØÐ�v”~Ñ&Ô&ð!ð !ñ 'Ô&ñ <Ô;ð!ð
 Ð˜dÐ+PÐQÑQÔQØÐ�v”~Ñ&Ô&ðAð Añ 'Ô&ñ RÔQðAð ÐØØGðñ ô ð „[×Ò˜WÐ&EÐ&EÐ&EÑFÔFØÐ�vÔ'Ñ(Ô(ð6*ð 6*ñ )Ô(ñ GÔFñ	ô ð6*ð 6*ð 6*rb   rv  c                   ó:   — e Zd Z edd¬¦  «        d„ ¦   «         ZdS )Ú
TestWienerr’   zXXX: can_cast in cupy <= 13.2rH   c                 ó,  — |                      g d¢g d¢g d¢g d¢g|j        ¬¦  «        }|                      g d¢g d¢g d¢g d	¢g¦  «        }t          t          j        |¦  «        |d
¬¦  «         t          t          j        |d¬¦  «        |d
¬¦  «         d S )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\   r7  r6  s       r`   ra   zTestWiener.test_basicI  sÍ   € à�JŠJ˜˜˜Ø$˜˜Ø$˜˜Ø$˜˜ð&ð .0¬Zð ñ 9ô 9ˆð �JŠJÐNÐNÐNØQÐQÐQØQÐQÐQØRÐRÐRðTñ Uô Uˆõ 	"¥&¤-°Ñ"2Ô"2°A¸qÐAÑAÔAÐAÝ!¥&¤-°¸!Ð"<Ñ"<Ô"<¸aÈÐKÑKÔKÐKÐKÐKrb   N)r"  r#  r$  r%  ra   rè   rb   r`   rÏ  rÏ  F  sG   € € € € € ð Ð�fÐ%DÐEÑEÔEð
Lð 
Lñ FÔEð
Lð 
Lð 
Lrb   rÏ  )ÚmeanÚmedianÚminimumÚmaximumÚlinec                   óN	  — e Zd Z eej        ej        ¦  «         edd¬¦  «        d„ ¦   «         ¦   «         Ze	j
                             dd¦  «        e	j
                             dd¦  «        e	j
                             d	d
¦  «         eej        ¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         Z eej        ¦  «        d„ ¦   «         Ze	j
                             dd¦  «        e	j
                             dd¦  «        e	j
                             dd¦  «         eej        ¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         Z edd¬¦  «        e	j
                             de¦  «         eej        ¦  «        d„ ¦   «         ¦   «         ¦   «         Z edd¬¦  «         eej        ¦  «        e	j
                             de¦  «        d„ ¦   «         ¦   «         ¦   «         Ze	j
                             de¦  «        e	j
                             dddg¦  «         edd¬¦  «         eej        ¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         Z edd¬¦  «        e	j
                             ddg e edgddge¦  «        ¦  «        z   ¦  «         eej        ej        ¦  «        d„ ¦   «         ¦   «         ¦   «         Ze	j
                             d d!¦  «        e	j
                             d"d#¦  «         eej        ¦  «        d$„ ¦   «         ¦   «         ¦   «         Ze	j
                             d d%¦  «        e	j
                             d"d#¦  «         eej        ¦  «        d&„ ¦   «         ¦   «         ¦   «         Ze	j
                             d'd(¦  «        e	j
                             d)d(¦  «         eej        ¦  «        d*„ ¦   «         ¦   «         ¦   «         Ze	j
                             d+g d,¢¦  «        e	j
                             deej        ej        eeg¦  «         eej        ¦  «        d-„ ¦   «         ¦   «         ¦   «         Z  eej        ¦  «        d.„ ¦   «         Z! eej        ¦  «        e	j
                             dd/dg¦  «         edd¬¦  «        d0„ ¦   «         ¦   «         ¦   «         Z"d1S )2ÚTestResampler’   z-does not raise with non-int upsampling factorrH   c           
      ó„  — |                      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|                     d¦  «        ¬¦  «         | 	                    |                      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          ||¦  «         d S )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ÑHÔHÐHÝ•j¥&¤/°3¸ÀIÐNÑNÔNÐNõ 	•j¥&Ô"6¸¸TÀ1ÑEÔEÐEÝ•j¥&Ô"6¸¸QÀÑBÔBÐBÝ•j¥&Ô"6¸¸SÀ!ÑDÔDÐDÝ•j¥&Ô"6¸¸QÀÑDÔDÐDÝ•j¥&Ô"6¸¸QÀÈ2ÐNÑNÔNÐNÝ•j¥&Ô"6¸¸QÀØ$¨2ð	/ñ 	/ô 	/ð 	/å•j¥&Ô"6¸¸QÀÈ"Ï&Ê&ÐQRÉ)Ì)ÐTÑTÔTÐTð �wŠw�r—y’y ¨B¬J�yÑ7Ô7¸Ñ@Ô@ˆÝŒ˜˜c¨°3Ð7Ñ7Ô7Ð7ØŒy˜FÒ"Ð"Ð"Ð"õ Ô$ S¨!¨QÑ/Ô/ˆÝÔ! # q¨!°ZÐ@Ñ@Ô@ˆÝÔ! # q¨!°ZÀaÐHÑHÔHˆÝ˜˜EÑ"Ô"Ð"Ý˜˜EÑ"Ô"Ð"Ð"Ð"rb   rä  )NÚhammingr¬  )r  rz  ró  )rØ   rv  rR   r  c                 ó  — t          |¦  «        }||j        k    r|j        n|j        }|                     dd|d¬¦  «        }|                     |dz   dz  ¦  «        }t          j        |                     ||¦  «        ||¬¦  «        }	t          t          j        |||¬¦  «        | 
                    |	¦  «        ¦  «         |                     |                     |dz   dz  ¦  «        |                     |dz   dz  ¦  «        g¦  «        }|                     ||¦  «        }
t          j        |
|d|¬	¦  «        }||j        k    rd
nd}t          t          j        ||d|¬	¦  «        | 
                    |¦  «        |¬¦  «         d S )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€  sƒ  € õ   Ñ#Ô#ˆØ# r¤zÒ1Ð1ˆrŒ|ˆ|°r´}ˆà�KŠK˜˜2˜q¨5ˆKÑ1Ô1ˆØ�FŠF�A�q‘D�5˜‘9ÑÔˆÝ”/ "§)¢)¨A¨tÑ"4Ô"4°cÀ&ÐIÑIÔIˆÝ�œ¨¨3°vÐ>Ñ>Ô>ØŸš Ñ(Ô(ñ	*ô 	*ð 	*ð �HŠH�b—f’f˜a ™d˜U 3™YÑ'Ô'¨¯ª°°A±°°c±	Ñ):Ô):Ð;Ñ<Ô<ˆØ—I’I˜a Ñ&Ô&ˆ	Ý”O I¨s¸À6ÐJÑJÔJˆ	à˜rœzÒ)Ð)ˆtˆt¨tˆåÝŒO˜A˜s¨°6Ð:Ñ:Ô:Ø�GŠG�IÑÔØð	ñ 	ô 	ð 	ð 	ð 	rb   c                 ó  — |                      |                     d¦  «        |j        ¦  «        }t          j        |¦  «        }d}t          t          j        ||d¬¦  «        t          j        ||d¬¦  «        d¬¦  «         d S )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Ô7ˆÝŒz˜$ÑÔˆØˆÝÝŒO˜D #¨fÐ5Ñ5Ô5ÝŒO˜D #¨fÐ5Ñ5Ô5Øð	ñ 	ô 	ð 	ð 	ð 	rb   Únx)rP   rQ   rK   rM   r¥   Únyr©   )rå   r®   c                 óâ   — t          ||¦  «        }|                     dg|z  |¬¦  «        }t          j        ||¦  «        }t	          ||                     dg|z  |j        ¬¦  «        ¦  «         d S )NrP   r¨   )r”  rY   r   rï  r4   r©   )r[   r  r  r©   r\   rq   rr   s          r`   Útest_dczTestResample.test_dc¦  sm   € õ
 ˜˜EÑ"Ô"ˆØ�JŠJ˜�s˜R‘x uˆJÑ-Ô-ˆÝŒO˜A˜rÑ"Ô"ˆÝ˜˜2Ÿ:š: q c¨B¡h°a´g˜:Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?rb   z padtype not supported by upfirdnrê  c                 ó:  — |                      d¦  «        }|                     t          j                             d¦  «                             d¦  «        ¦  «        }|                     |d¬¦  «        }t          j        |dd||¬¦  «         t          ||¦  «         d S )	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°  s‰   € ð
 —(’(˜1‘+”+ˆØ—’�BœI×1Ò1°!Ñ4Ô4×:Ò:¸1Ñ=Ô=Ñ>Ô>ˆØ—j’j ¨d�jÑ3Ô3ˆÝÔ˜W a¨°6À7ÐKÑKÔKÐKÝ˜ Ñ,Ô,Ð,Ð,Ð,rb   c                 óÐ   — |                      d|j        ¬¦  «        }|                     g d¢|j        ¬¦  «        }t          j        |dd||¬¦  «        }|j        |j        k    sJ ‚d S )NrR   r¨   ©rP   rP   rP   rP   rQ   r  )r‡   rä   rY   r   rð  r©   )r[   rê  r\   rq   r6  rr   s         r`   Útest_output_float32z TestResample.test_output_float32»  sl   € ð
 �IŠI�b ¤
ˆIÑ+Ô+ˆØ�JŠJ�y�y�y¨¬
ˆJÑ3Ô3ˆÝÔ   A q°¸GÐDÑDÔDˆØŒw˜"œ*Ò$Ð$Ð$Ð$Ð$Ð$rb   rä   rå   c                 ó¨   — t          ||¦  «        }|                     d|¬¦  «        }t          j        |dd|¬¦  «        }|j        |j        k    sJ ‚d S )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Å  s\   € õ ˜˜EÑ"Ô"ˆØ�IŠI�b ˆIÑ&Ô&ˆÝÔ   A q°'Ð:Ñ:Ô:ˆØŒw˜!œ'Ò!Ð!Ð!Ð!Ð!Ð!rb   zmethod, ext, padtype)r
   FNÚ	polyphaseFTc                 ó¼  — d}g d¢}|                      ||j        ¬¦  «        t          |¦  «        z  }|                     d¦  «        d d …|j        f         }|                     d|j        z  |z  |z  ¦  «        t          ||¬¦  «        z  }	|D �]ä}
|                      |
|j        ¬¦  «        t          |
¦  «        z  }|                     d|j        z  |z  |z  ¦  «        t          |
|¬¦  «        z  }|dk    rt          j	        |	|
d¬	¦  «        }nŽ|rr|
|k    rlt          |
|¦  «        }|
|z  }||z  }t          ||¦  «        }d
|z  }d|z  }t          j        d|z  dz   |d¬¦  «        }|                     |¦  «        }||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    r?|                     |¦  «        }|dv rt#          ||d¬¦  «         Œft#          ||d¬¦  «         Œy|j        |j        k    sJ ‚t%          j        ||¦  «        d         }|dk    sJ |||
f¦   «         ‚Œº�Œæt$          j                             d¦  «        }t          |¦  «        t%          j        |                     |¦  «        ¦  «        z  }	|                     |	¦  «        }	|D ]È}
|                      |
|j        ¬¦  «        t          |
¦  «        z  }t%          j        |||	¦  «        }|dk    rt          j	        |	|
¦  «        }nt          j        |	|
||¬¦  «        }|j        |j        k    sJ ‚|                     t%          j        ||¦  «        d         ¦  «        }|dk    s
J |¦   «         ‚ŒÉ|dk    r¬|                     ddg¦  «        }t          j	        |d¦  «        }|                     g d¢¦  «        }t#          ||d¬¦  «         |                     g d ¢¦  «        }t          j	        |d¦  «        } |                     d
d!g¦  «        }!t#          | |!d¬¦  «         d S d S )"NrØ   )	rŸ   r  r  éc   rØ   rv  éÇ   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å   r  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_resampsr7  Ú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¨1¨1¨b¬j¨=Ô9ˆØ�FŠF�1�r”u‘9˜uÑ$ qÑ(Ñ)Ô)­D°¸"Ð,=Ñ,=Ô,=Ñ=ˆàð &	>ñ &	>ˆGØ—9’9˜W¨B¬J�9Ñ7Ô7½%À¹.¼.ÑHˆDØ—F’F˜1˜rœu™9 uÑ,¨tÑ3Ñ4Ô4µt¸GÈÐ7KÑ7KÔ7KÑKˆEØ˜ŠˆÝ"œO¨A¨w¸RÐ@Ñ@Ô@�	�	àð 4˜7 dš?˜?å˜G TÑ*Ô*�AØ  A™�BØ 1™9�DÝ" 2 t™}œ}�HØ˜x™-�CØ! H™}�HÝ#œ]¨1¨x©<¸!Ñ+;¸SØ2AðCñ Cô C�FàŸZšZ¨Ñ/Ô/�FØ*0¸WÐEÐE�H�Hà )¨7Ð3�Hå"Ô0°°G¸Tð =ð =Èð =Ø3;ð=ð =�	õ ˜5œ; qœ>Ñ*Ô*ð >ð >�Ø˜Q   ˜T”{�Ø$ Q¨¨¨ Tœ?�Ý˜U 1 a 4œ[Ñ)Ô)�Ø˜3 ™=Ò(Ð(àŸ=š=¨Ñ.Ô.�DØÐ"8Ð8Ð8Ý'¨°$¸TÐBÑBÔBÐBÐBå'¨°$¸TÐBÑBÔBÐBÐBàœ:¨¬Ò7Ð7Ð7Ð7Ýœ; t¨XÑ6Ô6°tÔ<�DØ $š;˜;˜;¨¨t°WÐ(=™;œ;˜;˜;ñ>õ" Œi×#Ò# AÑ&Ô&ˆÝ�‰JŒJ�œ 3§9¢9¨T¡?¤?Ñ3Ô3Ñ3ˆØ�JŠJ�q‰MŒMˆØð 	%ð 	%ˆGà—9’9˜W¨B¬J�9Ñ7Ô7½%À¹.¼.ÑHˆDÝ”9˜T 1 aÑ(Ô(ˆDØ˜ŠˆÝ!œ?¨1¨gÑ6Ô6��å!Ô/°°7¸DØ8?ðAñ Aô A�à”: ¤Ò/Ð/Ð/Ð/Ø—:’:�bœk¨$°Ñ9Ô9¸$Ô?Ñ@Ô@ˆDØ˜$’;�;�; ‘;”;�;�;ð �UŠ?ˆ?Ø—’˜V VÐ,Ñ-Ô-ˆBÝ”o b¨!Ñ,Ô,ˆGà—j’jÐ!CÐ!CÐ!CÑDÔDˆGÝ˜G W°5Ð9Ñ9Ô9Ð9Ø—’Ð.Ð.Ð.Ñ/Ô/ˆBÝ”o b¨!Ñ,Ô,ˆGØ—j’j " b Ñ*Ô*ˆGÝ˜G W°5Ð9Ñ9Ô9Ð9Ð9Ð9ð ˆ?rb   Ún_in)r¥   r/  Ún_out)rK   rL   c                 ó¶   — t          j        |¦  «        }d„ }t          j        ||¦  «        }t          j        |||¬¦  «        }t	          d|z  |d¬¦  «         dS )zTest callable window function. c                 ó0   — dt          j        | ¦  «        z  S )zScale input by 1/2r&  )r  Ú	ones_like)r4  s    r`   rô  z0TestResample.test_resample_win_func.<locals>.win1  s   € à�œ eÑ,Ô,Ñ,Ð,rb   rã  rQ   r)  r„   N)r  rp  r   rï  r4   )r[   rG  rH  Úx_inrô  Úy0Úy1s          r`   Útest_resample_win_funcz#TestResample.test_resample_win_func*  sh   € õ
 Œw�t‰}Œ}ˆð	-ð 	-ð 	-õ Œ_˜T 5Ñ)Ô)ˆÝŒ_˜T 5°Ð5Ñ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¬¦  «         dS )zcVerify behavior for parameter `t`.

        Note that only `t[0]` and `t[1]` are utilized.
        )rR   rQ   )rú   rR   r)  r„   N)r  rp  r   rï  r‡   Úlenr5   r4   )
r[   rG  rH  Út0ÚdtrL  rM  rN  rê   Út_refs
             r`   Útest__resample_param_tz#TestResample.test__resample_param_t:  s¡   € ð ‰ˆˆBÝŒw�t‰}Œ}ˆåŒ_˜T 5Ñ)Ô)ˆÝ”  u°°R¸±U°Ð<Ñ<Ô<‰ˆˆBØ•R”Y�s 2™wœ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¬¦  «         dS )zDTest behavior at Nyquist frequency to ensure issue #14569 is fixed. rQ   c              3   óD   K  — | ]}t          j        |¦  «        |z  V — Œd S rü  )r  r‡   )ré   Ún_s     r`   ú	<genexpr>z5TestResample.test_resample_nyquist.<locals>.<genexpr>R  s/   è è € Ð4Ð4 R�bŒi˜‰mŒm˜bÑ Ð4Ð4Ð4Ð4Ð4Ð4rb   c              3   óf   •K  — | ]+}t          j        d t           j        z  ‰z  |z  ¦  «        V — Œ,dS )rQ   N)r  rÿ  r,  )ré   Út_Úf_nys     €r`   r[  z5TestResample.test_resample_nyquist.<locals>.<genexpr>S  s=   øè è € Ð=Ð=°B•"”&˜�RœU™ TÑ)¨BÑ.Ñ/Ô/Ð=Ð=Ð=Ð=Ð=Ð=rb   r«   r)  r„   N)Úminr   rï  r4   r   )	r[   rW  rV  Úttr÷  rö   Úy1_rÚy1_cr^  s	           @r`   Útest_resample_nyquistz"TestResample.test_resample_nyquistL  s£   ø€ õ
 �2�r‰{Œ{˜aÑˆØ4Ð4¨B°¨8Ð4Ñ4Ô4ˆØ=Ð=Ð=Ð=¸"Ð=Ñ=Ô=‰ˆˆBåŒ˜r 2Ñ&Ô&ˆÝŒ˜r B™w¨Ñ+Ô+ˆå˜˜b uÐ-Ñ-Ô-Ð-Ý˜œ	 2¨EÐ2Ñ2Ô2Ð2Ð2Ð2rb   Údown_factor)rQ   r  éO   c                 óx  — t           j                             d¦  «        }d}|                     |¦  «                             |¦  «        }|t           j        t           j        fv r|d|                     |¦  «        z  z  }d|d<   d|d<   t          j        dd|z  d¬	¦  «        }t          |d|d
¬¦  «        d d |…         }t          |t          j        |¦  «        ¦  «        }	t          |j        ||	|                     ¦   «         f¦  «        \  }}	}t          j        |d||	¬	¦  «        }
t!          ||
dd¬¦  «         d S )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[   rd  r©   r\   Úrandom_staterð   rq   r6  ÚyfÚhcrr   s              r`   Útest_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfilt[  s7  € õ
 ”y×,Ò,¨RÑ0Ô0ˆØˆà×Ò˜tÑ$Ô$×+Ò+¨EÑ2Ô2ˆØ•R”\¥2¤=Ð1Ð1Ð1Ø��l×(Ò(¨Ñ.Ô.Ñ.Ñ.ˆAð ˆˆ!‰Øˆˆ"‰åŒM˜"˜b ;Ñ.°yÐAÑAÔAˆÝ�a˜˜a¨Ð4Ñ4Ô4°]°]°{°]ÔCˆõ
 �a�œ ™œÑ$Ô$ˆõ ˜œ
 Q¨¨B¯GªG©I¬IÐ$6Ñ7Ô7‰	ˆˆ2ˆrÝÔ   A {¸2Ð>Ñ>Ô>ˆÝ˜˜A D¨tÐ4Ñ4Ô4Ð4Ð4Ð4rb   c           	      ó¤  — dD ]Ì}t          dd|¦  «        D ]¸}dD ]³}t          j                             |f¦  «        }t          j                             |f¦  «        }t          |t          j        |¦  «        d¬¦  «        }t          |j        |||f¦  «        \  }}}t          j        |d||¬¦  «        }t          |d d |…         |¦  «         Œ´Œ¹ŒÍd S )N)rQ   rL   rP   r?  )rU   r�  rí  rf   )r9  r:  rä  )
rˆ   r  r  r   rh  ri  rY   r   rð  r4   )	r[   r\   r:  r  Únweightsrq   ÚweightsÚy_gÚy_ss	            r`   Útest_correlate1dzTestResample.test_correlate1dz  sö   € àð 		6ð 		6ˆDÝ˜A˜r 4Ñ(Ô(ð 6ð 6�Ø (ð 6ð 6�HÝœ	×(Ò(¨"¨Ñ/Ô/�AÝ œi×.Ò.°¨{Ñ;Ô;�GÝ% a­¬°Ñ)9Ô)9À
ÐKÑKÔK�CÝ&)¨"¬*°q¸'À3Ð6GÑ&HÔ&H‘O�A�w Ý Ô.Ø˜a d°7ð<ñ <ô <�Cå# C¨¨¨$¨¤K°Ñ5Ô5Ð5Ð5ð6ð6ð		6ð 		6rb   rÝ   c                 ó¼   — t          ||¦  «        }|                     g d¢|¬¦  «        }t          j        |ddd¬¦  «        }t	          j        |¦  «        dk    sJ ‚d S )N)r   rP   rQ   rK   rQ   rP   r   r¨   rQ   rP   Úsmooth)r9  r:  rê  r   )r”  rY   r   rð  r  Úcount_nonzero)r[   r©   r\   rÈ  Úactuals        r`   Útest_gh_15620zTestResample.test_gh_15620‡  su   € õ ˜˜EÑ"Ô"ˆØ�zŠzÐ/Ð/Ð/°uˆzÑ=Ô=ˆÝÔ% dØ)*Ø+,Ø.6ð8ñ 8ô 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   rF  rO  rU  rc  Úintr  rä   ræ   r  Úcomplexrm  rs  rx  rè   rb   r`   rÛ  rÛ  [  s¹  € € € € € àÐ�v”¨Ô(<Ñ=Ô=ØÐ�vÐ&UÐVÑVÔVð#ð #ñ WÔVñ >Ô=ð#ðB „[×Ò˜XÐ'8Ñ9Ô9Ø„[×Ò˜S (Ñ+Ô+Ø„[×Ò˜UÐ$6Ñ7Ô7ØÐ�v”Ñ'Ô'ðð ñ (Ô'ñ 8Ô7ñ ,Ô+ñ :Ô9ðð. Ð�v”Ñ'Ô'ðð ñ (Ô'ðð „[×Ò˜T ?Ñ3Ô3Ø„[×Ò˜T ?Ñ3Ô3Ø„[×Ò˜WÐ&?Ñ@Ô@ØÐ�v”Ñ'Ô'ð@ð @ñ (Ô'ñ AÔ@ñ 4Ô3ñ 4Ô3ð@ð Ð�fÐ%GÐHÑHÔHØ„[×Ò˜Y¨Ñ8Ô8ØÐ�vÔ+Ñ,Ô,ð-ð -ñ -Ô,ñ 9Ô8ñ IÔHð-ð Ð�fÐ%GÐHÑHÔHØÐ�vÔ+Ñ,Ô,Ø„[×Ò˜Y¨Ñ8Ô8ð%ð %ñ 9Ô8ñ -Ô,ñ IÔHð%ð „[×Ò˜Y¨Ñ8Ô8Ø„[×Ò˜W y°)Ð&<Ñ=Ô=ØÐ�fÐ%GÐHÑHÔHØÐ�vÔ+Ñ,Ô,ð"ð "ñ -Ô,ñ IÔHñ >Ô=ñ 9Ô8ð"ð Ð�fÐ%GÐHÑHÔHØ„[×ÒØØ	ÐØ
ˆ$ØˆGØ�  t˜}¨oñô ñ
ô 
ñ	
ñô ð Ð�v”¨Ô(<Ñ=Ô=ðM:ð M:ñ >Ô=ñô ñ IÔHðM:ð^ „[×Ò˜V VÑ,Ô,Ø„[×Ò˜W fÑ-Ô-ØÐ�v”Ñ'Ô'ð.ð .ñ (Ô'ñ .Ô-ñ -Ô,ð.ð „[×Ò˜V WÑ-Ô-Ø„[×Ò˜W fÑ-Ô-ØÐ�v”Ñ'Ô'ð/ð /ñ (Ô'ñ .Ô-ñ .Ô-ð/ð „[×Ò˜T <Ñ0Ô0Ø„[×Ò˜T <Ñ0Ô0ØÐ�v”Ñ'Ô'ð
3ð 
3ñ (Ô'ñ 1Ô0ñ 1Ô0ð
3ð „[×Ò˜]¨K¨K¨KÑ8Ô8Ø„[×Ò˜W s¨B¬J¸¼ÀeÈWÐ&UÑVÔVØÐ�vÔ+Ñ,Ô,ð5ð 5ñ -Ô,ñ WÔVñ 9Ô8ð5ð8 Ð�vÔ+Ñ,Ô,ð
6ð 
6ñ -Ô,ð
6ð Ð�vÔ+Ñ,Ô,Ø„[×Ò˜W w°	Ð&:Ñ;Ô;ØÐ�fÐ%GÐHÑHÔHð,ð ,ñ IÔHñ <Ô;ñ -Ô,ð,ð ,ð ,rb   rÛ  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestCSpline1DEvalc                 óÈ  — t          j        g d¢¦  «        }t          j        |j        d         ¦  «        }|d         |d         z
  }|                     t	          j        |¦  «        ¦  «        }|                     t          |¦  «        dz  ¦  «        dz  }t	          j        ||||d         ¬¦  «        }t          |d d d…         |                     |¦  «        d¬¦  «         d S )	N)	rP   rQ   rK   rL   rK   rQ   rP   rQ   rk  r   rP   r%  )Údxr÷  rR   rM   rÑ  )	r  rY   r‡   r˜  r   Ú	cspline1drQ  Úcspline1d_evalr:   )r[   r\   rr   rq   r  Úcjr÷   Úy2s           r`   ra   zTestCSpline1DEval.test_basic—  sÈ   € ÝŒJÐ4Ð4Ð4Ñ5Ô5ˆÝŒI�a”g˜a”jÑ!Ô!ˆØˆqŒT�A�a”D‰[ˆØ�ZŠZ�Ô(¨Ñ+Ô+Ñ,Ô,ˆØ�YŠY•s˜1‘v”v ‘}Ñ%Ô%¨Ñ,ˆÝÔ" 2 r¨b°Q°q´TÐ:Ñ:Ô:ˆõ 	" " T T r T¤(¨B¯JªJ°q©M¬MÀ1ÐEÑEÔEÐEÐEÐErb   c                 óÂ  — t          j        d¦  «        }t          j        |j        t           j        ¬¦  «        }d}d|z  }t          j        dt           j        z  |z  |z  ¦  «        }|                     t          j	        |¦  «        ¦  «        }|                     dg¦  «        }t          j
        ||¦  «        }|j        |                     |¦  «        j        k    sJ ‚d S )Nri  r¨   r%  rÃ  rp   r&  )r  r‡   rœ  r˜  ræ   Úexpr,  rY   r   r€  r�  r©   )	r[   r\   rq   rr   ÚTrñ   ÚcyÚxnewÚynews	            r`   rt   zTestCSpline1DEval.test_complex¢  s¿   € åŒI�c‰NŒNˆÝŒH�Q”W¥B¤LÐ1Ñ1Ô1ˆØˆØ�!‰GˆÝŒF�4�"œ%‘< !Ñ# aÑ'Ñ(Ô(ˆð �ZŠZ�Ô(¨Ñ+Ô+Ñ,Ô,ˆð �zŠz˜3˜%Ñ Ô ˆÝÔ$ R¨Ñ.Ô.ˆàŒz˜RŸZšZ¨™]œ]Ô0Ò0Ð0Ð0Ð0Ð0Ð0rb   N)r"  r#  r$  ra   rt   rè   rb   r`   r}  r}  ”  s5   € € € € € ð	Fð 	Fð 	Fð1ð 1ð 1ð 1ð 1rb   r}  c                   óž   — e Zd Zd„ Zd„ Z edd¬¦  «         edd¬¦  «         eej        ¦  «        d„ ¦   «         ¦   «         ¦   «         Z	d	„ Z
d
S )ÚTestOrderFiltc                 óÔ   — t          j        |                     g d¢¦  «        |                     g d¢¦  «        d¦  «        }|                     g d¢¦  «        }t          ||¦  «         d S )NrO   ©rP   r   rP   rP   )rQ   rK   rQ   )r   Úorder_filterrY   r5   )r[   r\   rw  Úexpects       r`   ra   zTestOrderFilt.test_basic·  sb   € ÝÔ$ R§Z¢Z°	°	°	Ñ%:Ô%:¸B¿JºJÀyÀyÀyÑ<QÔ<QÐSTÑUÔUˆØ—’˜I˜I˜IÑ&Ô&ˆÝ˜ Ñ'Ô'Ð'Ð'Ð'rb   c                 óª  — |                      |                     dt          |¦  «        ¬¦  «        d¦  «        }|                     dt          |¦  «        ¬¦  «        }|                     g d¢g d¢g d¢g d¢g d¢gt          |¦  «        ¬¦  «        }t          t          j        ||d	¦  «        |¦  «         |                     g d
¢g d¢g d¢g d¢g d¢g¦  «        }t          t          j        ||d¦  «        |¦  «         |                     g d¢g d¢g d¢g d¢g d¢gt          |¦  «        ¬¦  «        }t          t          j        ||d¦  «        |¦  «         d S )Né   r¨   ©rM   rM   rK   )r*  r*  r*  r*  r*  )r*  r*  rÃ  ri  r*  )r*  r£  rû  ç      @r*  )r*  r%  ç      &@rê  r*  r   )rû  r“  rà  r®  rl  )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¥   )r{  r˜   r™   rw  r›  ©r   r{  r˜   r™   rw  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ÔIˆØ—’˜Õ!1°"Ñ!5Ô!5�Ñ6Ô6ˆð —:’:Ø!Ð!Ð!Ø!Ð!Ð!Ø!Ð!Ð!Ø$Ð$Ð$Ø!Ð!Ð!ð	#õ
 # 2Ñ&Ô&ð ñ 
ô 
ˆõ 	�Ô+¨A¨v°qÑ9Ô9¸8ÑDÔDÐDð —:’:Ø!Ð!Ð!Ø%Ð%Ð%Ø&Ð&Ð&Ø&Ð&Ð&Ø&Ð&Ð&ð	(ñ
ô 
ˆõ 	�Ô+¨A¨v°qÑ9Ô9¸8ÑDÔDÐDð —:’:Øˆ_ˆ_Øˆ_ˆ_Ø Ð Ð Ø!Ð!Ð!Ø Ð Ð ð	"õ
 # 2Ñ&Ô&ð ñ 
ô 
ˆõ 	�Ô+¨A¨v°qÑ9Ô9¸8ÑDÔDÐDÐDÐDrb   z
dask.arrayzrepeat requires an axisrH   r£   zarray-api-compat#292c                 óT  — |                      |                     d¦  «        d¦  «        }|                     g d¢g d¢g d¢g d¢g d¢g¦  «        }t          t	          j        |d¦  «        |¦  «         t          t	          j        ||                     d	¦  «        d
¦  «        |¦  «         d S )Nr‘  r’  rš  )rP   rN   r—   r¥   rL   )rN   r  rW   r›  r/  )r  r˜   r™   rw  é   )r   r˜   r™   rw  r   rK   r}  rL   )r†   r‡   rY   r4   r   r‹  rŽ  rp  )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Ô7Ð7åÝÔ  2§7¢7¨6¡?¤?°AÑ6Ô6Øñ	
ô 	
ð 	
ð 	
ð 	
rb   c                 ó´  — |                      |                     d¦  «        d¦  «        }|                     g d¢g d¢g d¢g¦  «        }|                     g d¢g d¢g d¢g d	¢g d
¢g¦  «        }t          t	          j        ||d¦  «        |¦  «         |                     g d¢g d¢g d¢g d¢g d¢g¦  «        }t          t	          j        ||d¦  «        |¦  «         d S )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   )r{  r˜   r™   rw  rz  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Ñ-Ô-ˆØ—’ØˆYˆYØˆYˆYØˆYˆYðñ
ô 
ˆð —:’:Øˆ_ˆ_Øˆ_ˆ_Øˆ_ˆ_Ø Ð Ð Ø Ð Ð ð	"ñ
ô 
ˆõ 	�Ô+¨A¨v°qÑ9Ô9¸8ÑDÔDÐDà—:’:Øˆ_ˆ_Øˆ_ˆ_Øˆ_ˆ_Ø!Ð!Ð!Ø!Ð!Ð!ð	#ñ
ô 
ˆõ 	�Ô+¨A¨v°qÑ9Ô9¸8ÑDÔDÐDÐDÐDrb   N)r"  r#  r$  ra   rž  r&  r@   r   r‹  r¡  r¥  rè   rb   r`   r‹  r‹  ´  s¬   € € € € € ð(ð (ð (ð
$Eð $Eð $EðL Ð�|Ð,EÐFÑFÔFØÐ�wÐ'=Ð>Ñ>Ô>ØÐ�v”~Ñ&Ô&ð
ð 
ñ 'Ô&ñ ?Ô>ñ GÔFð
ð&Eð Eð Eð Eð 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j                             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j                             dd0d0g e'j(        d0¦  «        g¦  «        ej                             d1d0d0g e'j(        d0¦  «        g¦  «        d2„ ¦   «         ¦   «         ¦   «         Z)d3S )4Ú_TestLinearFilterc                 ó  — t          |t          ¦  «        r|nt          j        |¦  «        }|                     d|dz
  |¦  «        }t          |t          ¦  «        s|                     ||¦  «        }|                      ||¦  «        S )Nr   rP   )r²  rz  ÚmathÚprodrþ  r†   Úconvert_dtype)r[   r˜  r\   Ú	prodshaperq   s        r`   Úgeneratez_TestLinearFilter.generate  sx   € Ý'¨­sÑ3Ô3ÐI�E�E½¼À5Ñ9IÔ9Iˆ	Ø�KŠK˜˜9 q™=¨)Ñ4Ô4ˆÝ˜%¥Ñ%Ô%ð 	%Ø—
’
˜1˜eÑ$Ô$ˆAØ×!Ò! ! RÑ(Ô(Ð(rb   c                 óÈ  — | j         t          j         d¦  «        k    ryt          j        |¦  «        }t          j        |j        | j         ¦  «        }t          j        ||gddgdgdgg¦  «        }|D ]#\  }}|                      |d         ¦  «        |d<   Œ$|S t          | j         t          ¦  «        rt          || j         ¦  «        n| 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 d¤jÑ1Ô1ˆCÝ”9˜c 3˜Z¨)°MÐ)BØ$˜ { mÐ4ñ6ô 6ˆDàð *ð *‘��1ØŸš 1 R¤5Ñ)Ô)��#‘�ØˆJõ # 4¤:­sÑ3Ô3ð%•W˜R ¤Ñ,Ô,Ð,àœ*ð ð —:’:˜c¨�:Ñ/Ô/Ð/rb   r’   z/XXX https://github.com/scipy/scipy/issues/23539rH   c                 óú  ‡— ‰                      dg¦  «        ‰                      dg¦  «        ‰                      ddg¦  «        }}}t          j        t          d¬¦  «        5  t	          ‰                     d¦  «        ||¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t	          ‰                      g ¦  «        ||¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t	          |‰                     d¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t	          |‰                      g ¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d	¬¦  «        5  ˆfd
„|||fD ¦   «         \  }}}t	          |||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z"Verify all exceptions are raised. rP   rQ   rK   rL   z^Parameter b is notrH  Nz^Parameter a is notz^Parameter's dtypes produced c              3   óR   •K  — | ]!}‰                      |‰j        d ¬¦  «        V — Œ"dS )Fr  N)r  râ   )ré   Úv_r\   s     €r`   r[  z8_TestLinearFilter.test_invalid_params.<locals>.<genexpr>8  s7   øè è € ÐPÐPÀ�r—y’y  R¤Y°U�yÑ;Ô;ÐPÐPÐPÐPÐPÐPrb   )rY   r£  r   r»   r   rñ  ÚNotImplementedError)r[   r\   r^   r]   rq   s    `   r`   r½   z%_TestLinearFilter.test_invalid_params+  s  ø€ ð —*’*˜a˜S‘/”/ 2§:¢:¨q¨c¡?¤?°B·J²JÀÀ1¸vÑ4FÔ4Fˆaˆ1ˆÝŒ]�:Ð-BÐCÑCÔCð 	%ð 	%Ý�B—F’F˜1‘I”I˜q !Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%åŒ]�:Ð-BÐCÑCÔCð 	*ð 	*Ý�B—J’J˜r‘N”N A qÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*åŒ]�:Ð-BÐCÑCÔCð 	%ð 	%Ý�A�r—v’v˜a‘y”y !Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%åŒ]�:Ð-BÐCÑCÔCð 	*ð 	*Ý�A�r—z’z "‘~”~ qÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*åŒ]Õ.Ð6UÐVÑVÔVð 	ð 	ØPÐPÐPÐPÀqÈ!ÈQÀiÐPÑPÔP‰GˆAˆq�!Ý�A�q˜!ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	sZ   Á %BÂBÂBÂ7%C(Ã(C,Ã/C,Ä%D?Ä?EÅEÅ%%FÆFÆFÆ<'G0Ç0G4Ç7G4c                 ó   — |                       d|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }|                      g d¢|¦  «        }t          t          |||¦  «        |¦  «         d S )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;  s…   € Ø�MŠM˜$ Ñ#Ô#ˆØ×Ò  2˜w¨Ñ+Ô+ˆØ×Ò  T˜{¨BÑ/Ô/ˆØ× Ò Ð!5Ð!5Ð!5°rÑ:Ô:ˆÝ!¥'¨!¨Q°Ñ"2Ô"2°CÑ8Ô8Ð8Ð8Ð8rb   c                 óþ   — |                       d|¦  «        }|                      ddg|¦  «        }|                      dg|¦  «        }|                      g d¢|¦  «        }t          t          |||¦  «        |¦  «         d S )Nr¿  rP   ©r   rP   rK   rM   r—   r®  rÂ  rÃ  s         r`   Útest_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIRB  sƒ   € Ø�MŠM˜$ Ñ#Ô#ˆØ×Ò  1˜v rÑ*Ô*ˆØ×Ò ˜s BÑ'Ô'ˆØ× Ò Ð!4Ð!4Ð!4°bÑ9Ô9ˆÝ!¥'¨!¨Q°Ñ"2Ô"2°CÑ8Ô8Ð8Ð8Ð8rb   z*XXX https://github.com/cupy/cupy/pull/8677c                 óŽ  — |                       d|¦  «        }|                      g d¢|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }|                      g d¢|¦  «        }|                      dd	g|¦  «        }t          ||||¬
¦  «        \  }}	t          ||¦  «         t          |	|¦  «         d S )Nr¿  ©rP   r   rª   r&  rÀ  rP   rQ   )rP   rM   r/  r›  r™   rm  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˜z˜z¨2Ñ.Ô.ˆØ×Ò  T˜{¨BÑ/Ô/ˆØ×Ò  A ¨Ñ+Ô+ˆØ× Ò Ð!6Ð!6Ð!6¸Ñ;Ô;ˆØ×!Ò! 2 s )¨RÑ0Ô0ˆÝ˜˜1˜a BÐ'Ñ'Ô'‰ˆˆ2Ý! ! SÑ)Ô)Ð)Ý! " dÑ+Ô+Ð+Ð+Ð+rb   c                 óŒ  — |                       d|¦  «        }|                      g d¢|¦  «        }|                      dg|¦  «        }|                      ddg|¦  «        }|                      g d¢|¦  «        }|                      ddg|¦  «        }t          ||||¬¦  «        \  }}	t          ||¦  «         t          |	|¦  «         d S )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˜y˜y¨"Ñ-Ô-ˆØ×Ò ˜s BÑ'Ô'ˆØ×Ò  A ¨Ñ+Ô+ˆØ× Ò Ð!5Ð!5Ð!5°rÑ:Ô:ˆØ×!Ò! 1 a &¨"Ñ-Ô-ˆÝ˜˜1˜a BÐ'Ñ'Ô'‰ˆˆ2Ý! ! SÑ)Ô)Ð)Ý! " dÑ+Ô+Ð+Ð+Ð+rb   c                 ó  — |                       d|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }|                      g d¢g d¢g d¢g d¢g|¦  «        }t          |||d¬¦  «        }t          ||¦  «         d S )	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  s©   € Ø�MŠM˜& "Ñ%Ô%ˆØ×Ò  2˜w¨Ñ+Ô+ˆØ×Ò  S˜z¨2Ñ.Ô.ˆØ×$Ò$ i i i°°°¸I¸I¸IØ&/ i ið&1Ø24ñ6ô 6ˆå�A�q˜! !Ð$Ñ$Ô$ˆÝ! '¨1Ñ-Ô-Ð-Ð-Ð-rb   c                 ó  — |                       d|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }|                      g d¢g d¢g d¢g d¢g|¦  «        }t          |||d¬	¦  «        }t          ||¦  «         d S )
NrÖ  rP   rª   r&  ©r   rQ   r   ©rN   r  rN   ©rW   rË  rW   ©rw  iðÿÿÿrw  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  s©   € Ø�MŠM˜& "Ñ%Ô%ˆØ×Ò  2˜w¨Ñ+Ô+ˆØ×Ò  S˜z¨2Ñ.Ô.ˆØ×$Ò$ i i i°°°¸]¸]¸]Ø)˜M˜Mð&+Ø,.ñ0ô 0ˆå�A�q˜! !Ð$Ñ$Ô$ˆÝ! '¨1Ñ-Ô-Ð-Ð-Ð-rb   c                 óì  — |                       d|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }|                      t          j        d¦  «        |¦  «        }|                      g d¢g d¢g d¢g d	¢g|¦  «        }|                      g d
¢|¦  «        d d …t          j        f         }t          |||d|¬¦  «        \  }}	t          ||¦  «         t          |	|¦  «         d S )NrÖ  rP   rª   r&  )rL   rP   r  )r—   éûÿÿÿr—   )r›  éõÿÿÿr›  )rz  éïÿÿÿrz  )rã  rå  iãÿÿÿi×ÿÿÿ©rŽ  rÍ  )r­  r«  r  rp  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Ô3ˆà×&Ò&¨	¨	¨	°:°:°:¸}¸}¸}Ø+˜m˜mð(-Ø.0ñ2ô 2ˆ	à×!Ò!Ð"5Ð"5Ð"5°rÑ:Ô:¸1¸1¸1½b¼j¸=ÔIˆÝ˜˜1˜a a¨BÐ/Ñ/Ô/‰ˆˆ2Ý! )¨QÑ/Ô/Ð/Ý! " dÑ+Ô+Ð+Ð+Ð+rb   c                 óÆ  — |                       d|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }|                      t          j        d¦  «        |¦  «        }|                      g d¢g d¢g d¢g d¢g|¦  «        }|                      g d¢g|¦  «        }t	          |||d	|¬
¦  «        \  }}	t          ||¦  «         t          |	|¦  «         d S )NrÖ  rP   rª   r&  ©rP   rK   )rP   rK   rM   )rM   rK   rP   )ééÿÿÿrë  rë  r   ræ  )r­  r«  r  rp  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Ô4ˆà×&Ò&¨	¨	¨	°9°9°9Ø(1¨	¨	°9°9°9ð(>Ø?AñCô Cˆ	à×!Ò! ? ? ?Ð"3°RÑ8Ô8ˆÝ˜˜1˜a a¨BÐ/Ñ/Ô/‰ˆˆ2Ý! )¨QÑ/Ô/Ð/Ý! " dÑ+Ô+Ð+Ð+Ð+rb   c                 óš  ‡	‡
— |                       d|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }t          t          |||f¦  «        \  Š	Š
}t	          |j        ¦  «        D ]Q}t          ||||¦  «        }t          j        ˆ	ˆ
fd„||¦  «        }t          || 
                    |¦  «        ¦  «         ŒRd S )N©rL   rK   rQ   rP   rª   r&  c                 ó&   •— t          ‰‰| ¦  «        S rü  ©r   ©Úwr�  r�  s    €€r`   ú<lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>–  ó   ø€ µ¸¸dÀAÑ0FÔ0F€ rb   ©r­  r«  ri  rC   rˆ   Úndimr   r  Úapply_along_axisr:   rY   ©r[   r\   rq   r^   r]   Úx_nprŽ  rr   rÄ  r�  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”Mð 	:ð 	:ˆDÝ˜˜1˜a Ñ&Ô&ˆAÝÔ%Ð&FÐ&FÐ&FÐ&FÐ&FÈÈdÑSÔSˆCÝ% a¨¯ª°C©¬Ñ9Ô9Ð9Ð9ð	:ð 	:rb   Ú
inaccuratec                 ó  ‡‡‡— |                       d|¦  «        }|                      ddg|¦  «        }|                      ddg|¦  «        }t          |j        ¦  «        D �](}t	          |j        ¦  «        }d||<   |                      |                     |¦  «        |¦  «        }|                      dg|¦  «        }t          |||||¦  «        \  }	}
t          t          |||f¦  «        \  ŠŠŠˆˆˆfd„}ˆˆˆfd„}t          j        ||t          |¦  «        ¦  «        }t          j        ||t          |¦  «        ¦  «        }t          |	|                     |¦  «        ¦  «         t          |
|                     |¦  «        ¦  «         �Œ*d S )Nrï  rP   rª   r&  c                 ó6   •— t          ‰‰| ‰¬¦  «        d         S ©NrÌ  r   rñ  ©ró  r�  r�  Úzi1_nps    €€€r`   Úlf0z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf0¦  ó   ø€ Ý˜t T¨1°Ð8Ñ8Ô8¸Ô;Ð;rb   c                 ó6   •— 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˜  rp  r   ri  rC   r  rø  r:   rY   )r[   r\   rq   r^   r]   rŽ  Úzi_shaperÍ  Úzi1rr   rÑ  r  r  rÄ  rÐ  r�  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”Mð 	<ñ 	<ˆDÝ˜AœG‘}”}ˆHØˆH�T‰NØ×#Ò# B§G¢G¨HÑ$5Ô$5°rÑ:Ô:ˆBØ×$Ò$ a S¨"Ñ-Ô-ˆCÝ˜A˜q ! T¨2Ñ.Ô.‰EˆAˆrÝ!$Õ%6¸¸A¸s¸Ñ!DÔ!DÑˆD�$˜ð<ð <ð <ð <ð <ð <ð <ð<ð <ð <ð <ð <ð <ð <åÔ% c¨4Õ1BÀ1Ñ1EÔ1EÑFÔFˆCÝÔ& s¨DÕ2CÀAÑ2FÔ2FÑGÔGˆDÝ% a¨¯ª°C©¬Ñ9Ô9Ð9Ý% b¨"¯*ª*°TÑ*:Ô*:Ñ;Ô;Ð;Ñ;ð	<ð 	<rb   c                 ó˜  ‡	‡
— |                       d|¦  «        }|                      g d¢|¦  «        }|                      dg|¦  «        }t          t          |||f¦  «        \  Š	Š
}t	          |j        ¦  «        D ]Q}t          ||||¦  «        }t          j        ˆ	ˆ
fd„||¦  «        }t          || 
                    |¦  «        ¦  «         ŒRd S )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˜z˜z¨2Ñ.Ô.ˆØ×Ò ˜s BÑ'Ô'ˆåÕ0°1°a¸°)Ñ<Ô<Ñˆˆd�DÝ˜!œ&‘M”Mð 	:ð 	:ˆDÝ˜˜1˜a Ñ&Ô&ˆAÝÔ%Ð&FÐ&FÐ&FÐ&FÐ&FÈÈdÑSÔSˆCÝ% a¨¯ª°C©¬Ñ9Ô9Ð9Ð9ð	:ð 	:rb   c                 ó6  ‡‡‡— |                       d|¦  «        }|                      g d¢|¦  «        }|                      dg|¦  «        }t          t          |||f¦  «        \  }ŠŠt	          |j        ¦  «        D �]}t          |j        ¦  «        }d||<   |                      |                     |¦  «        |¦  «        }|                      ddg|¦  «        }	t          |	¦  «        Št          |||||¦  «        \  }
}t          t          |||	f¦  «        \  ŠŠŠˆˆˆfd„}ˆˆˆfd„}t          j        |||¦  «        }t          j        |||¦  «        }t          |
|                     |¦  «        ¦  «         t          ||                     |¦  «        ¦  «         �Œ d S )Nrï  rÊ  rP   rQ   c                 ó6   •— t          ‰‰| ‰¬¦  «        d         S rÿ  rñ  r   s    €€€r`   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0É  r  rb   c                 ó6   •— t          ‰‰| ‰¬¦  «        d         S r  rñ  r   s    €€€r`   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1Ë  r  rb   )r­  r«  ri  rC   rˆ   r÷  r³  r˜  rp  r   r  rø  r:   rY   )r[   r\   rq   r^   r]   rú  rŽ  r  rÍ  r  rr   rÑ  r  r  rÄ  rÐ  r�  r�  r  s                   @@@r`   Útest_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_condº  sÀ  øøø€ à�MŠM˜) RÑ(Ô(ˆØ×Ò˜z˜z˜z¨2Ñ.Ô.ˆØ×Ò ˜s BÑ'Ô'ˆåÕ0°1°a¸°)Ñ<Ô<Ñˆˆd�DÝ˜!œ&‘M”Mð 	<ñ 	<ˆDÝ˜AœG‘}”}ˆHØˆH�T‰NØ×#Ò# B§G¢G¨HÑ$5Ô$5°rÑ:Ô:ˆBØ×$Ò$ a¨ V¨RÑ0Ô0ˆCÝ& sÑ+Ô+ˆFÝ˜A˜q ! T¨2Ñ.Ô.‰EˆAˆrÝ!$Õ%6¸¸A¸s¸Ñ!DÔ!DÑˆD�$˜ð<ð <ð <ð <ð <ð <ð <ð<ð <ð <ð <ð <ð <ð <åÔ% c¨4°Ñ6Ô6ˆCÝÔ& s¨D°$Ñ7Ô7ˆDÝ% a¨¯ª°C©¬Ñ9Ô9Ð9Ý% b¨"¯*ª*°TÑ*:Ô*:Ñ;Ô;Ð;Ñ;ð	<ð 	<rb   c                 óŠ  — |                       d|¦  «        }t          j        ddd¬¦  «        \  }}|                      ||¦  «        }|                      ||¦  «        }|j        d         dz
  }|                      |                     dd	|f¦  «        |¦  «        }|                      |                     dd|f¦  «        |¦  «        }t          ||||¬
¦  «        \  }}	t          ||||¬
¦  «        \  }
}t          |
|¦  «         t          |	|¦  «         t          t          t          |||d|                     |¦  «        ¦  «         d S )N)rL   rM   r  r¥   r  Úba©rÄ  r   rP   rL   rM   rÌ  rª   )
r­  r   r   r«  r˜  rp  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Ô1‰ˆˆ1Ø×Ò˜q "Ñ%Ô%ˆØ×Ò˜q "Ñ%Ô%ˆØ”'˜!”*˜q‘.ˆð ×$Ò$ R§W¢W¨a°°G¨_Ñ%=Ô%=¸rÑBÔBˆØ×$Ò$ R§W¢W¨a°°G¨_Ñ%=Ô%=¸rÑBÔBˆå! ! Q¨¨gÐ6Ñ6Ô6‰ˆ�Ý! ! Q¨¨gÐ6Ñ6Ô6‰ˆ�å! &¨&Ñ1Ô1Ð1Ý! '¨7Ñ3Ô3Ð3õ 	•j¥'¨1¨a°°B¸¿ºÀÑ8HÔ8HÑIÔIÐIÐIÐIrb   c                 ó  — |                       d|¦  «        }|                      g d¢|¦  «        }|                      dg|¦  «        }|                      g d¢|¦  «        }t          ||d         |¦  «        }t          ||¦  «         d S )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è  sŽ   € ð �MŠM˜!˜RÑ Ô ˆØ×Ò˜z˜z˜z¨2Ñ.Ô.ˆØ×Ò ˜s BÑ'Ô'ˆØ× Ò Ð!3Ð!3Ð!3°RÑ8Ô8ˆå�A�q˜”t˜QÑÔˆÝ! ! SÑ)Ô)Ð)Ð)Ð)rb   c                 ó  — |                       |                     d|j        ¬¦  «        |¦  «        }|                       |                     d|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<   |                     |¦  «        }|                       ||¦  «        }|                       |                     d	|j        ¬¦  «        |¦  «        }t          j        dt
          j        ¬¦  «        }dggdggdggg|d d …d d …d d
…f<   |                     |¦  «        }|                       ||¦  «        }t          |||d|¦  «        \  }}	t          ||¦  «         t          |	|¦  «         t          ||d         |d|¦  «        \  }
}t          |
|¦  «         t          ||¦  «         d S )N)rK   rQ   rM   r¨   rM   )rP   r   r   )rK   rP   rL   rP   rQ   rK   )rK   rQ   rL   rL   rª   r   )r«  rœ  rÞ   rp  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ÀBÑGÔGˆØ×Ò˜rŸwšw q°´˜wÑ9Ô9¸2Ñ>Ô>ˆØ×Ò˜rŸzšz¨)¨)¨)Ñ4Ô4°bÑ9Ô9ˆÝŒW�Y¥b¤hÐ/Ñ/Ô/ˆØ
ˆ1ˆaˆaˆa���ˆ7ˆˆŒ�qÑˆˆ‰Ø
ˆ1ˆaˆaˆa���ˆ7ˆˆŒ�qÑˆˆ‰Ø�ZŠZ˜‰^Œ^ˆØ×Ò  BÑ'Ô'ˆà×(Ò(¨¯ª°)À2Ä8¨Ñ)LÔ)LÈbÑQÔQˆÝ”X˜i­r¬xÐ8Ñ8Ô8ˆ
Ø"#  ¨¨ u°¨s¨eÐ4ˆ
�1�1�1�a�a�a˜˜!˜�8ÑØ—Z’Z 
Ñ+Ô+ˆ
Ø×'Ò'¨
°BÑ7Ô7ˆ
õ    1 a¨¨RÑ0Ô0‰ˆˆvÝ! %¨Ñ4Ô4Ð4Ý! &¨+Ñ6Ô6Ð6õ    1 Q¤4¨¨B°Ñ3Ô3‰ˆˆvÝ! %¨Ñ4Ô4Ð4Ý! &¨+Ñ6Ô6Ð6Ð6Ð6rb   c           	      óô   — |                       ||¦  «        }|                       ||¦  «        }|                       ||¦  «        }|                       ||¦  «        }t          t          t          |||||¦  «         d S rü  )r«  rº   r»   r   )r[   r^   r]   rq   rŽ  rÍ  r\   s          r`   Úbase_bad_size_ziz"_TestLinearFilter.base_bad_size_zi  sv   € Ø×Ò˜q "Ñ%Ô%ˆØ×Ò˜q "Ñ%Ô%ˆØ×Ò˜q "Ñ%Ô%ˆØ×Ò  BÑ'Ô'ˆÝ•j¥'¨1¨a°°D¸"Ñ=Ô=Ð=Ð=Ð=rb   zcupy does not raisec                 ó4  — |                      d¦  «        }|                      dgdg|ddg|¦  «         |                      ddgdg|dddg|¦  «         |                      ddgdg|ddgg|¦  «         |                      ddgdg|dg d¢|¦  «         |                      g d¢dg|ddgg|¦  «         |                      g d¢dg|dg d¢|¦  «         |                      dgddg|dddg|¦  «         |                      dgddg|ddgg|¦  «         |                      dgddg|dg d¢|¦  «         |                      g d¢ddg|ddg|¦  «         |                      g d¢ddg|ddgdgg|¦  «         |                      g d¢ddg|dg d¢|¦  «         |                      g d¢ddg|dg d¢|¦  «         |                      ddgg d¢|ddg|¦  «         |                      ddgg d¢|ddgdgg|¦  «         |                      ddgg d¢|dg d¢|¦  «         |                      ddgg d¢|dg d¢|¦  «         t          j         d¦  «                             d	¦  «        }|                     |¦  «        }|                      dgdg|ddg|¦  «         |                      ddgdg|dg d¢|¦  «         |                      ddgdg|dg d¢gg|¦  «         |                      ddgdg|ddgdgd
gg|¦  «         |                      ddgdg|dddgg|¦  «         |                      ddgdg|dg d¢g|¦  «         |                      g d¢dg|dg d¢|¦  «         |                      g d¢dg|dg d¢g d¢gg|¦  «         |                      g d¢dg|dddgd
dgddgg|¦  «         |                      g d¢dg|dddgd
dgg|¦  «         |                      g d¢dg|dg d¢g d¢g|¦  «         |                      dgddg|dg d¢|¦  «         |                      dgddg|dg d¢gg|¦  «         |                      dgddg|ddgdgd
gg|¦  «         |                      dgddg|dddgg|¦  «         |                      dgddg|dg d¢g|¦  «         |                      dgg d¢|dg d¢|¦  «         |                      dgg d¢|dg d¢g d¢gg|¦  «         |                      dgg d¢|dddgd
dgddgg|¦  «         |                      dgg d¢|dddgd
dgg|¦  «         |                      dgg d¢|dg d¢g d¢g|¦  «         |                      g d¢ddg|dg d¢|¦  «         |                      g d¢ddg|dg d¢g d¢gg|¦  «         |                      g d¢ddg|dddgd
dgddgg|¦  «         |                      g d¢ddg|dddgd
dgg|¦  «         |                      g d¢ddg|dg d¢g d¢g|¦  «         |                      dgdg|ddg|¦  «         |                      ddgdg|dg d¢|¦  «         |                      ddgdg|ddgdgd
gdggg|¦  «         |                      ddgdg|dg d¢g|¦  «         |                      ddgdg|ddgdgd
gg|¦  «         |                      ddgdg|ddgdgd
gdgdgg|¦  «         |                      g d¢dg|dg d¢|¦  «         |                      g d¢dg|dddgd
dgddgddggg|¦  «         |                      g d¢dg|dg d¢g d¢g|¦  «         |                      g d¢dg|dddgd
dgddgg|¦  «         |                      g d¢dg|dddgd
dgddgddgddgg|¦  «         |                      dgddg|dg d¢|¦  «         |                      dgddg|ddgdgd
gdggg|¦  «         |                      dgddg|dg d¢g|¦  «         |                      dgddg|ddgdgd
gg|¦  «         |                      dgddg|ddgdgd
gdgdgg|¦  «         |                      dgg d¢|dg d¢|¦  «         |                      dgg d¢|dddgd
dgddgddggg|¦  «         |                      dgg d¢|dg d¢g d¢g|¦  «         |                      dgg d¢|dddgd
dgddgg|¦  «         |                      dgg d¢|dddgd
dgddgddgddgg|¦  «         |                      g d¢ddg|dg d¢|¦  «         |                      g d¢ddg|dddgd
dgddgddggg|¦  «         |                      g d¢ddg|dg d¢g d¢g|¦  «         |                      g d¢ddg|dddgd
dgddgg|¦  «         |                      g d¢ddg|dddgd
dgddgddgddgg|¦  «         d S )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  s‚  € ð �YŠY�q‰\Œ\ˆØ×Ò˜q˜c A 3¨¨B°°°RÑ8Ô8Ð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°9°9¸bÑAÔAÐAØ×Ò˜i˜i˜i¨!¨¨b°"¸°s°e¸RÑ@Ô@Ð@Ø×Ò˜i˜i˜i¨!¨¨b°"°i°i°iÀÑDÔDÐ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°9°9¸bÑAÔAÐAØ×Ò˜i˜i˜i¨!¨Q¨°°R¸!¸¸bÑAÔAÐAØ×Ò˜i˜i˜i¨!¨Q¨°°R¸1¸#À¸s¸ÀRÑHÔHÐHØ×Ò˜i˜i˜i¨!¨Q¨°°R¸¸¸ÀBÑGÔGÐGØ×Ò˜i˜i˜i¨!¨Q¨°°R¸¸¸ÀrÑJÔJÐJØ×Ò˜q !˜f i i i°°R¸!¸¸bÑAÔAÐAØ×Ò˜q !˜f i i i°°R¸1¸#À¸s¸ÀRÑHÔHÐHØ×Ò˜q !˜f i i i°°R¸¸¸ÀBÑGÔGÐGØ×Ò˜q !˜f i i i°°R¸¸¸ÀrÑJÔJÐJõ ŒY�r‰]Œ]×"Ò" 5Ñ)Ô)ˆØ�ZŠZ˜‰^Œ^ˆà×Ò˜q˜c A 3¨¨A°¨s°BÑ7Ô7Ð7ð 	×Ò˜q !˜f q c¨2¨q°)°)°)¸RÑ@Ô@Ð@Ø×Ò˜q !˜f q c¨2¨q°I°I°I°;°-ÀÑDÔDÐDØ×Ò˜q !˜f q c¨2¨q°A°3¸¸¸a¸S°/À2ÑFÔFÐFØ×Ò˜q !˜f q c¨2¨q°A°q°6°(¸BÑ?Ô?Ð?Ø×Ò˜q !˜f q c¨2¨q°<°<°<°.À"ÑEÔEÐEà×Ò˜i˜i˜i¨!¨¨b°!Ð5GÐ5GÐ5GÈÑLÔLÐLØ×Ò˜i˜i˜i¨!¨¨b°!°y°y°yÀ)À)À)Ð6LÐ5MÈrÑRÔRÐRØ×Ò˜i˜i˜i¨!¨¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÑRÔRÐRØ×Ò˜i˜i˜i¨!¨¨b°!°q¸!°f¸qÀ!¸fÐ5EÀrÑJÔJÐJØ×Ò˜i˜i˜i¨!¨¨b°!°l°l°lÀLÀLÀLÐ5QÐSUÑVÔVÐVà×Ò˜q˜c A q 6¨2¨q°)°)°)¸RÑ@Ô@Ð@Ø×Ò˜q˜c A q 6¨2¨q°I°I°I°;°-ÀÑDÔDÐDØ×Ò˜q˜c A q 6¨2¨q°A°3¸¸¸a¸S°/À2ÑFÔFÐFØ×Ò˜q˜c A q 6¨2¨q°A°q°6°(¸BÑ?Ô?Ð?Ø×Ò˜q˜c A q 6¨2¨q°<°<°<°.À"ÑEÔEÐEà×Ò˜q˜c 9 9 9¨b°!Ð5GÐ5GÐ5GÈÑLÔLÐLØ×Ò˜q˜c 9 9 9¨b°!°y°y°yÀ)À)À)Ð6LÐ5MÈrÑRÔRÐRØ×Ò˜q˜c 9 9 9¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÑRÔRÐRØ×Ò˜q˜c 9 9 9¨b°!°q¸!°f¸qÀ!¸fÐ5EÀrÑJÔJÐJØ×Ò˜q˜c 9 9 9¨b°!°l°l°lÀLÀLÀLÐ5QÐSUÑVÔVÐVà×Ò˜i˜i˜i¨!¨Q¨°°QÐ8JÐ8JÐ8JÈBÑOÔOÐOØ×Ò˜i˜i˜i¨!¨Q¨°°Q¸)¸)¸)ÀYÀYÀYÐ9OÐ8PÐRTÑUÔUÐUØ×Ò˜i˜i˜i¨!¨Q¨°°Q¸!¸Q¸À!ÀQÀÈ!ÈQÈÐ8PÐRTÑUÔUÐUØ×Ò˜i˜i˜i¨!¨Q¨°°Q¸!¸Q¸À!ÀQÀÐ8HÈ"ÑMÔMÐMØ×Ò˜i˜i˜i¨!¨Q¨°°QØ+˜|˜|¨\¨\¨\Ð:¸Bñ	@ô 	@ð 	@ð 	×Ò˜q˜c A 3¨¨A°¨s°BÑ7Ô7Ð7à×Ò˜q !˜f q c¨2¨q°,°,°,ÀÑCÔCÐCØ×Ò˜q !˜f q c¨2¨q°Q°C¸!¸¸q¸cÀAÀ3Ð3GÐ2HÈ"ÑMÔMÐMØ×Ò˜q !˜f q c¨2¨q°<°<°<°.À"ÑEÔEÐEØ×Ò˜q !˜f q c¨2¨q°A°3¸¸¸a¸S°/À2ÑFÔFÐFØ×Ò˜q !˜f q c¨2¨q°A°3¸¸¸a¸SÀ1À#ÈÀsÐ2KÈRÑPÔPÐPà×Ò˜i˜i˜i¨!¨¨b°!Ð5MÐ5MÐ5MÈrÑRÔRÐRØ×Ò˜i˜i˜i¨!¨¨b°!Ø!" A ¨¨A¨°°A°¸¸A¸Ð?Ð@À"ñ	Fô 	Fð 	Fà×Ò˜i˜i˜i¨!¨¨b°!°l°l°lÀLÀLÀLÐ5QÐSUÑVÔVÐVØ×Ò˜i˜i˜i¨!¨¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÑRÔRÐRØ×Ò˜i˜i˜i¨!¨¨b°!Ø ! 1˜v¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÐFÈñ	Lô 	Lð 	Lð 	×Ò˜q˜c A q 6¨2¨q°,°,°,ÀÑCÔCÐCØ×Ò˜q˜c A q 6¨2¨q°Q°C¸!¸¸q¸cÀAÀ3Ð3GÐ2HÈ"ÑMÔMÐMØ×Ò˜q˜c A q 6¨2¨q°<°<°<°.À"ÑEÔEÐEØ×Ò˜q˜c A q 6¨2¨q°A°3¸¸¸a¸S°/À2ÑFÔFÐFØ×Ò˜q˜c A q 6¨2¨q°A°3¸¸¸a¸SÀ1À#ÈÀsÐ2KÈRÑPÔPÐPà×Ò˜q˜c 9 9 9¨b°!Ð5MÐ5MÐ5MÈrÑRÔRÐRØ×Ò˜q˜c 9 9 9¨b°!Ø!" A ¨¨A¨°°A°¸¸A¸Ð?Ð@À"ñ	Fô 	Fð 	Fà×Ò˜q˜c 9 9 9¨b°!°l°l°lÀLÀLÀLÐ5QÐSUÑVÔVÐVØ×Ò˜q˜c 9 9 9¨b°!°q¸!°f¸qÀ!¸fÀqÈ!ÀfÐ5MÈrÑRÔRÐRØ×Ò˜q˜c 9 9 9¨b°!°q¸!°fØ  !˜f q¨! f¨q°!¨f°q¸!°fð6>Ø?Añ	Cô 	Cð 	Cð 	×Ò˜i˜i˜i¨!¨Q¨°°QÐ8PÐ8PÐ8PÐRTÑUÔUÐUØ×Ò˜i˜i˜i¨!¨Q¨°°QØ!" A ¨¨A¨°°A°¸¸A¸Ð?Ð@À"ñ	Fô 	Fð 	Fà×Ò˜i˜i˜i¨!¨Q¨°°QØ+˜|˜|¨\¨\¨\Ð:¸Bñ	@ô 	@ð 	@à×Ò˜i˜i˜i¨!¨Q¨°°Q¸!¸Q¸À!ÀQÀÈ!ÈQÈÐ8PÐRTÑUÔUÐUØ×Ò˜i˜i˜i¨!¨Q¨°°QØ ! 1˜v¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÐFÈñ	Lô 	Lð 	Lð 	Lð 	Lrb   c                 ó²  — |                       d|¦  «        }|                      dg|¦  «        }|                      dg|¦  «        }|                      g |¦  «        }t          ||||¬¦  «        \  }}t          ||¦  «         |j        t          | j        t          ¦  «        rt          || j        ¦  «        n| j        k    sJ ‚t          |¦  «        dk    sJ ‚d S )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Ý)¨$¬*µcÑ:Ô:ð,�G B¨¬
Ñ3Ô3Ð3à!%¤ò-ð -ð -ð -õ �r‰{Œ{˜aÒÐÐÐÐÐrb   rF   z jax does not support inplace opsr]   rP   )rP   r&  ç      ø?rQ   )rQ   rP   rK   )Úidsc           	      ó‚  — t          |¦  «        r1t          |t          t          z  ¦  «        rt	          j        d¦  «         |                      d|¦  «        }|                      g d¢|¦  «        }|                      ||¦  «        }t          |¦  «        dz
  }t          |¦  «        dz
  }t          |¦  «        r||z   nt          ||¦  «        }t          ||||                      ||¦  «        ¬¦  «        \  }}	t          |||                     |¦  «        |                     |¦  «        ¦  «        }
t          |	|
¦  «         d S )Nz0cupy does not supoprt scalar filter coefficientsrN   )r&  rÃ  r  rP   rÌ  )r9   r²  rz  r  r£  r“  r­  r«  r=   r-  r   r#   rh  r:   )r[   r]   r\   rq   r^   r¬  r«  ÚKrN  Úzi_1Úzi_2s              r`   Útest_lfilticz_TestLinearFilter.test_lfiltic�  s  € õ �2‰;Œ;ð 	L�: a­­u©Ñ5Ô5ð 	LÝŒKÐJÑKÔKÐKØ�MŠM˜!˜RÑ Ô ˆØ×Ò˜|˜|˜|¨RÑ0Ô0ˆØ×Ò˜q "Ñ%Ô%ˆÝ�A‰JŒJ˜‰NˆÝ�A‰JŒJ˜‰NˆÝ˜R‘[”[Ð/ˆA�‰EˆE¥c¨!¨Q¡i¤iˆå˜1˜a  t§}¢}°Q¸Ñ';Ô';Ð<Ñ<Ô<‰ˆˆDå�q˜!˜RŸWšW R™[œ[¨"¯'ª'°!©*¬*Ñ5Ô5ˆå! $¨Ñ-Ô-Ð-Ð-Ð-rb   c           	      ó8  — 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¦  «         d S )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ÔFÐFÝ•j¥'¨A¨q¨6°A°q°6¸A¸q¸6ÀAÀqÀ6ÑJÔJÐJÝ•j¥'¨A¨q¨6°Q°C¸!¸°:ÀÀ1¸vÈÈ1ÀvÑNÔNÐNÝ•j¥'¨Q¨C°!°¨:¸°s¸QÀ¸FÀQÈÀFÑKÔKÐKÐKÐKrb   Úarray_api_strictz-int64 and float64 cannot be promoted togetherzjax dtype defaults differc                 ó®  — |                       dg|¦  «        }|                       dg|¦  «        }t          |||                     ddg¦  «        ¦  «        }t          |||                     ddg¦  «        ¦  «        }t          |||                     ddg¦  «        ¦  «        }t          ||¦  «         | j        t
          k    ri nddi}t          ||fi |¤Ž d S )NrP   rÃ  r   TFr  )r«  r#   rY   r5   r©   Úobject)r[   r\   r]   r^   rÍ  r2  r3  Ú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Ô1Ñ2Ô2ˆÝ�q˜!˜RŸZšZ¨¨u¨Ñ6Ô6Ñ7Ô7ˆÝ˜˜DÑ!Ô!Ð!à $¤
­fÒ 4Ð 4˜"˜"¸=È%Ð:PˆÝ˜˜DÐ4Ð4 OÐ4Ð4Ð4Ð4Ð4rb   c                 óŒ  — |                       dg|¦  «        }|                       g d¢|¦  «        }|                       ddg|¦  «        }|                       dg|¦  «        }|                       dg|¦  «        }|                       ddg|¦  «        }t          ||||¬¦  «        \  }}	t          ||¦  «         t          |	|¦  «         d S )	NrP   rÊ  rQ   r—   rx  rV  é¸ÿÿÿ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˜z˜z¨2Ñ.Ô.ˆØ×Ò  A ¨Ñ+Ô+ˆØ×Ò ˜t RÑ(Ô(ˆØ×Ò   bÑ)Ô)ˆØ× Ò  ! S ¨2Ñ.Ô.ˆÝ˜˜1˜a BÐ'Ñ'Ô'‰ˆˆ2Ý! ! RÑ(Ô(Ð(Ý! " cÑ*Ô*Ð*Ð*Ð*rb   c                 óŽ  — |                       ddg|¦  «        }|                       g d¢|¦  «        }|                       ddg|¦  «        }|                       dg|¦  «        }|                       dg|¦  «        }|                       ddg|¦  «        }t          ||||¬	¦  «        \  }}	t          ||¦  «         t          |	|¦  «         d S )
NrP   rÊ  rQ   r—   rx  rV  i½ÿÿÿr=  rÌ  r>  r?  s
             r`   Útest_short_x_IIRz"_TestLinearFilter.test_short_x_IIRÍ  sÖ   € ð ×Ò  1˜v rÑ*Ô*ˆØ×Ò˜z˜z˜z¨2Ñ.Ô.ˆØ×Ò  A ¨Ñ+Ô+ˆØ×Ò ˜t RÑ(Ô(ˆØ×Ò   bÑ)Ô)ˆØ× Ò  # s ¨RÑ0Ô0ˆÝ˜˜1˜a BÐ'Ñ'Ô'‰ˆˆ2Ý! ! RÑ(Ô(Ð(Ý! " cÑ*Ô*Ð*Ð*Ð*rb   c                 óˆ  — |                       d|¦  «        }|                      ddg|¦  «        }t          ||¬¦  «        }|                      ddg|¦  «        }t          ||¬¦  «        }|                      g d¢|¦  «        }t          |||¦  «        }t	          ||¦  «         t          ||¦  «         t          ||¦  «         d S )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Ð!5Ð!5°rÑ:Ô:ˆÝ�a˜˜AÑÔˆÝ! # sÑ+Ô+Ð+Ý˜˜2ÑÔÐÝ˜˜2ÑÔÐÐÐrb   c                 ó†  — |                       d|¦  «        }|                      g d¢|¦  «        }t          ||¬¦  «        }|                      dg|¦  «        }t          ||¬¦  «        }|                      g d¢|¦  «        }t          |||¦  «        }t	          ||¦  «         t          ||¦  «         t          ||¦  «         d S )Nr¿  r�  râ  rQ   )r   r&  rP   rQ   rK   rl  rF  rG  s	            r`   Útest_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIRç  sÌ   € Ø�MŠM˜$ Ñ#Ô#ˆØ×Ò˜y˜y˜y¨"Ñ-Ô-ˆÝ�Q˜2ÐÑÔˆØ×Ò ˜s BÑ'Ô'ˆÝ�Q˜2ÐÑÔˆØ× Ò Ð!6Ð!6Ð!6¸Ñ;Ô;ˆÝ�a˜˜AÑÔˆÝ! # sÑ+Ô+Ð+Ý˜˜2ÑÔÐÝ˜˜2ÑÔÐÐÐrb   Tr  rÃ  r^   c                 ó  — t           j                             d¦  «        }|                     |¦  «        }t	          t          |                     dg¦  «        |                     dg¦  «        |¦  «        t          |||¦  «        ¦  «         d S )NrR   rÃ  )r  r  r  rY   r4   r   )r[   r]   r^   r\   rÈ  s        r`   Útest_scalar_inputz#_TestLinearFilter.test_scalar_inputó  s~   € õ Œy�Š˜rÑ"Ô"ˆØ�zŠz˜$ÑÔˆÝÝ�B—J’J ˜uÑ%Ô% r§z¢z°3°%Ñ'8Ô'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#   r4  r6  r;  rB  rD  rK  rM  r  r�  rO  rè   rb   r`   r§  r§    sÊ  € € € € € ð)ð )ð )ð0ð 0ð 0ð Ð�fÐ%VÐWÑWÔWðð ñ XÔWðð9ð 9ð 9ð9ð 9ð 9ð Ð�fÐ%QÐRÑRÔRð	,ð 	,ñ SÔRð	,ð Ð�fÐ%QÐRÑRÔRð	,ð 	,ñ SÔRð	,ð.ð .ð .ð.ð .ð .ð Ð�fÐ%QÐRÑRÔRð,ð ,ñ SÔRð,ð Ð�fÐ%QÐRÑRÔRð,ð ,ñ SÔRð,ð:ð :ð :ð Ð�v lÐ3Ñ3Ô3ð<ð <ñ 4Ô3ð<ð*	:ð 	:ð 	:ð Ð�v lÐ3Ñ3Ô3ð<ð <ñ 4Ô3ð<ð. Ð�fÐ%QÐRÑRÔRðJð Jñ SÔRðJð* Ð�fÐ%QÐRÑRÔRð*ð *ñ SÔRð*ð Ð�fÐ%QÐRÑRÔRð7ð 7ñ SÔRð7ð:>ð >ð >ð Ð�fÐ%:Ð;Ñ;Ô;ðgLð gLñ <Ô;ðgLðR ð  ð  ð Ð�kÐ*LÐMÑMÔMØ„[×Ò˜S 1 q c¨<¨<¨<¸¸Q¸CÀÀÀÐ"KØ!$ð ñ &ô &àÐ�wÑÔð.ð .ñ  Ôñ&ô &ñ NÔMð.ð$ Ð�wÑÔðLð Lñ  ÔðLð ÐØÐ#Rðñ ô ð Ð�kÐ*EÐFÑFÔFØÐ�wÑÔð5ð 5ñ  Ôñ GÔFñô ð
5ð Ð�fÐ%QÐRÑRÔRð+ð +ñ SÔRð+ð Ð�fÐ%QÐRÑRÔRð+ð +ñ SÔRð+ð
ð 
ð 
ð
ð 
ð 
ð Ð˜dÐ#Ñ#Ô#Ø„[×Ò˜S 3¨¨¨x¨r¬x¸©}¬}Ð"=Ñ>Ô>Ø„[×Ò˜S 3¨¨¨x¨r¬x¸©}¬}Ð"=Ñ>Ô>ð
ð 
ñ ?Ô>ñ ?Ô>ñ $Ô#ð
ð 
ð 
rb   r§  c                   ó   — e Zd ZdZdS )ÚTestLinearFilterFloat32rä   N©r"  r#  r$  r©   rè   rb   r`   rQ  rQ  ÿ  ó   € € € € € Ø€E€E€Erb   rQ  c                   ó   — e Zd ZdZdS )ÚTestLinearFilterFloat64rå   NrR  rè   rb   r`   rU  rU  	  rS  rb   rU  r  c                   ó.   — e Zd Z ej        d¦  «        ZdS )ÚTestLinearFilterFloatExtendedr7  N©r"  r#  r$  r  r©   rè   rb   r`   rW  rW  	  ó   € € € € € àˆBŒH�S‰MŒM€E€E€Erb   rW  c                   ó   — e Zd ZdZdS )ÚTestLinearFilterComplex64ræ   NrR  rè   rb   r`   r[  r[  	  s   € € € € € Ø€E€E€Erb   r[  c                   ó   — e Zd ZdZdS )ÚTestLinearFilterComplex128r®   NrR  rè   rb   r`   r]  r]  	  s   € € € € € Ø€E€E€Erb   r]  c                   ó.   — e Zd Z ej        d¦  «        ZdS )ÚTestLinearFilterComplexExtendedÚGNrX  rè   rb   r`   r_  r_  	  rY  rb   r_  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¢¦  «         d S )NÚabiflagsr¡   z'test is flaky when run with python3-dbgrÃ  )rÃ  Nri  ©rÃ  ri  rk  )ÚhasattrÚsysrb  r£  r“  rº   r   r   râ  s    r`   Útest_lfilter_bad_objectrf  	  s–   € õ �s�JÑÔð ? C­3¬<Ð$7Ð$7ÝŒÐ=Ñ>Ô>Ð>Ý•)�W s e¨c¨UÐ4DÐ4DÐ4DÑEÔEÐEÝ•)�W s e¨d¨V°_°_°_ÑEÔEÐEÝ•)�W t f¨s¨e°_°_°_ÑEÔEÐEÐEÐErb   c                 óL   — t          t          t          ddgddgg d¢¦  «         d S )NrQ   rK   rL   rM   )rP   rQ   rK   rL   rM   )rº   r½  r   râ  s    r`   Ú!test_lfilter_notimplemented_inputrh  $	  s-   € õ Õ%¥w°°1°¸¸!°u¸k¸k¸kÑJÔJÐJÐJÐJrb   rS  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dS )ÚTestCorrelateRealc                 ó¢   — |                      ddd|¬¦  «        }|                      ddd|¬¦  «        }|                     g d¢|¬¦  «        }|||fS )Nr   rK   rL   r¨   rP   rQ   )r   rQ   rM   r¥   rK   )rþ  rY   ©r[   rS  r\   r]   r^   rÄ  s         r`   Ú_setup_rank1zTestCorrelateReal._setup_rank13	  sY   € Ø�KŠK˜˜1˜a rˆKÑ*Ô*ˆØ�KŠK˜˜1˜a rˆKÑ*Ô*ˆà�jŠj˜˜˜°ˆjÑ3Ô3ˆØ�!�SˆyÐrb   c                 óÈ   — d}	 t          j        |¦  «        }t          |d¦  «        r)t          dt          j        |j        ¦  «        z  ¦  «        }n# t          $ r Y nw xY w|S )NrN   Ú
resolutionrÀ  )r  r›  rd  rz  Úlog10ro  Ú	Exception)r[   Úres_dtrÒ  Údt_infos       r`   Úequal_tolerancez!TestCorrelateReal.equal_tolerance:	  ss   € àˆð	Ý”h˜vÑ&Ô&ˆGÝ�w Ñ-Ô-ð AÝ˜d¥2¤8¨GÔ,>Ñ#?Ô#?Ñ?Ñ@Ô@�øøÝð 	ð 	ð 	ØˆDð	øøøàˆs   „AA Á
AÁAc                 óŠ   — |t           j        k    r|                      t           j        ¦  «        S |                      |¦  «        S rü  )r  rœ  rt  rå   )r[   rr  s     r`   Úequal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fftE	  s;   € ð •R”]Ò"Ð"Ø×'Ò'­¬
Ñ3Ô3Ð3à×'Ò'¨Ñ/Ô/Ð/rb   Tz	order='F'rx   c                 ó~  — t          ||¦  «        }|                      ||¦  «        \  }}}t          ||d¬¦  «        }t          ||d¬¦  «        }t          |||                      |j        ¦  «        ¬¦  «         t          |||                      |j        ¦  «        ¬¦  «         |j        |k    sJ ‚|j        |k    sJ ‚d S )Nr
   r�   r€   rÑ  )r”  Ú_setup_rank3r   r:   rv  r©   rt  )r[   rS  r\   r]   r^   rÄ  Úy_fftÚy_directs           r`   Útest_methodzTestCorrelateReal.test_methodM	  sâ   € å�R˜‰_Œ_ˆà×%Ò% b¨"Ñ-Ô-‰	ˆˆ1ˆcÝ˜!˜Q uÐ-Ñ-Ô-ˆÝ˜Q ¨(Ð3Ñ3Ô3ˆå! # uØ*.×*BÒ*BÀ5Ä;Ñ*OÔ*Oð	Rñ 	Rô 	Rð 	Rå! # xØ*.×*>Ò*>¸x¼~Ñ*NÔ*Nð	Qñ 	Qô 	Qð 	QàŒ{˜bÒ Ð Ð Ð ØŒ~ Ò#Ð#Ð#Ð#Ð#Ð#rb   c                 óÔ  — t          |¦  «        r|dv rt          j        d¦  «         t          |t          ¦  «        rt          ||¦  «        n|}|                      ||¦  «        \  }}}t          ||d¦  «        }t          ||dd…         ¦  «         |j	        |k    sJ ‚t          ||d¦  «        }t          || 
                    |dd…         ¦  «        ¦  «         |j	        |k    sJ ‚d S )Nr’  ú$torch does not support unsigned intsr­   rP   rL   )r7   r£  r“  r²  r·  r”  rm  r   r:   r©   rh  ©r[   rS  r\   r]   r^   rÄ  rr   s          r`   Útest_rank1_validz"TestCorrelateReal.test_rank1_valid\	  sé   € Ý�B‰<Œ<ð 	?˜BÐ"@Ð@Ð@ÝŒ;Ð=Ñ>Ô>Ð>å *¨2­sÑ 3Ô 3Ð;�W�R˜‰_Œ_ˆ_¸ˆØ×%Ò% b¨"Ñ-Ô-‰	ˆˆ1ˆcÝ�a˜˜GÑ$Ô$ˆÝ! ! S¨¨1¨¤XÑ.Ô.Ð.ØŒw˜"Š}ˆ}ˆ}ˆ}õ �a˜˜GÑ$Ô$ˆÝ! ! R§W¢W¨S°°1°¬XÑ%6Ô%6Ñ7Ô7Ð7ØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 óB  — t          |¦  «        r|dv rt          j        d¦  «         t          |t          ¦  «        rt          ||¦  «        n|}|                      ||¦  «        \  }}}t          ||d¦  «        }t          ||d d…         ¦  «         |j	        |k    sJ ‚d S )Nr’  r}  re   rª   ©
r7   r£  r“  r²  r·  r”  rm  r   r:   r©   r~  s          r`   Útest_rank1_samez!TestCorrelateReal.test_rank1_samek	  s£   € Ý�B‰<Œ<ð 	?˜BÐ"@Ð@Ð@ÝŒ;Ð=Ñ>Ô>Ð>å *¨2­sÑ 3Ô 3Ð;�W�R˜‰_Œ_ˆ_¸ˆà×%Ò% b¨"Ñ-Ô-‰	ˆˆ1ˆcÝ�a˜˜FÑ#Ô#ˆÝ! ! S¨¨"¨¤XÑ.Ô.Ð.ØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 ó2  — t          |¦  «        r|dv rt          j        d¦  «         t          |t          ¦  «        rt          ||¦  «        n|}|                      ||¦  «        \  }}}t          ||d¦  «        }t          ||¦  «         |j	        |k    sJ ‚d S )Nr’  r}  r¬   r�  r~  s          r`   Útest_rank1_fullz!TestCorrelateReal.test_rank1_fullv	  s›   € Ý�B‰<Œ<ð 	?˜BÐ"@Ð@Ð@ÝŒ;Ð=Ñ>Ô>Ð>å *¨2­sÑ 3Ô 3Ð;�W�R˜‰_Œ_ˆ_¸ˆà×%Ò% b¨"Ñ-Ô-‰	ˆˆ1ˆcÝ�a˜˜FÑ#Ô#ˆÝ! ! SÑ)Ô)Ð)ØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 óÜ  — t          j        ddd¦  «                             dd¬¦  «                             |¦  «        }t          j        ddd¦  «                             d	d¬¦  «                             |¦  «        }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        ¬¦  «                             |¦  «        }|||fS )Nr   r†  r?  )rQ   rL   rM   ÚF)ÚorderrV   r=  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      €@rg  )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å   rl  s         r`   rx  zTestCorrelateReal._setup_rank3�	  sq  € ÝŒK˜˜2˜rÑ"Ô"×*Ò*¨9¸CÐ*Ñ@Ô@×GÒGØñô ˆåŒK˜˜2˜rÑ"Ô"×*Ò*¨9¸CÐ*Ñ@Ô@×GÒGØñô ˆõ ŒhÐHÐHÐHØIÐIÐIØKÐKÐKØKÐKÐKØJÐJÐJØFÐFÐFðHð JÐIÐIØKÐKÐKØLÐLÐLØLÐLÐLØLÐLÐLØIÐIÐIðKð GÐFÐFØIÐIÐIØKÐKÐKØLÐLÐLØIÐIÐIØEÐEÐEðGðHõ( œ*ð)&ñ &ô &÷( '-¢f¨R¡j¤jð) 	ð, �!�SˆyÐrb   c           	      ó   — t          |t          ¦  «        rt          ||¦  «        n|}|                      ||¦  «        \  }}}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 ‚d S )Nr­   rP   rQ   rL   rK   rM   rª   )r²  r·  r”  rx  r   r:   r©   r~  s          r`   Útest_rank3_validz"TestCorrelateReal.test_rank3_validŸ	  sï   € å *¨2­sÑ 3Ô 3Ð;�W�R˜‰_Œ_ˆ_¸ˆØ×%Ò% b¨"Ñ-Ô-‰	ˆˆ1ˆcÝ�a˜˜GÑ$Ô$ˆÝ! ! S¨¨1¨¨a°¨c°1°Q°3¨Ô%7Ñ8Ô8Ð8ØŒw˜"Š}ˆ}ˆ}ˆ}õ �a˜˜GÑ$Ô$ˆÝ! ! S¨¨1¨¨a°¨c°1°Q°3¨Ô%7¸¸¸"¸¸d¸dÀ¸dÀDÀDÀbÀDÐ8HÔ%IÑJÔJÐJØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 ó  — t          |t          ¦  «        rt          ||¦  «        n|}|                      ||¦  «        \  }}}t	          ||d¦  «        }t          ||dd…dd…dd…f         ¦  «         |j        |k    sJ ‚d S )Nre   r   rª   rP   rÀ  ©r²  r·  r”  rx  r   r4   r©   r~  s          r`   Útest_rank3_samez!TestCorrelateReal.test_rank3_same¬	  s‰   € å *¨2­sÑ 3Ô 3Ð;�W�R˜‰_Œ_ˆ_¸ˆØ×%Ò% b¨"Ñ-Ô-‰	ˆˆ1ˆcÝ�a˜˜FÑ#Ô#ˆÝ˜˜3˜q ˜t Q r T¨1¨R¨4Ð/Ô0Ñ1Ô1Ð1ØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 óâ   — t          |t          ¦  «        rt          ||¦  «        n|}|                      ||¦  «        \  }}}t	          ||¦  «        }t          ||¦  «         |j        |k    sJ ‚d S rü  r’  r~  s          r`   Útest_rank3_allz TestCorrelateReal.test_rank3_all´	  sm   € å *¨2­sÑ 3Ô 3Ð;�W�R˜‰_Œ_ˆ_¸ˆØ×%Ò% b¨"Ñ-Ô-‰	ˆˆ1ˆcÝ�a˜‰OŒOˆÝ˜˜3ÑÔÐØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   N)r"  r#  r$  rm  rt  rv  r%  r{  r  r‚  r„  rx  r�  r“  r•  rè   rb   r`   rj  rj  *	  s-  € € € € € ðð ð ð	ð 	ð 	ð0ð 0ð 0ð Ð˜d¨;Ð7Ñ7Ô7ð$ð $ñ 8Ô7ð$ðð ð ð	ð 	ð 	ð	ð 	ð 	ðð ð ð< Ð˜d¨;Ð7Ñ7Ô7ð
ð 
ñ 8Ô7ð
ð Ð˜d¨;Ð7Ñ7Ô7ðð ñ 8Ô7ðð Ð˜d¨;Ð7Ñ7Ô7ðð ñ 8Ô7ðð ð rb   rj  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dS )ÚTestCorrelateTr  c                 ó"  — t          j        dd¦  «                             d¦  «        }t          j        dd¦  «                             d¦  «        }t          t          t
          g||f¢R i ddi¤Ž t          t          t
          g||f¢R i ddi¤Ž d S rÓ   )r  r‡   r†   rº   r»   r   r¼   s       r`   r×   z!TestCorrelate.test_invalid_shapesÁ	  s˜   € õ ŒI�a˜‰OŒO×#Ò# FÑ+Ô+ˆÝŒI�b˜!ÑÔ×$Ò$ VÑ,Ô,ˆå•j¥)ÐJ¨q°!¨fÐJÐJÐJ¸ÀÐ8IÐJÐJÐJÝ•j¥)ÐJ¨q°!¨fÐJÐJÐJ¸ÀÐ8IÐJÐJÐJÐJÐJrb   c                 óJ  — 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¬¦  «         d S r´   ©rº   r»   r   r¼   s       r`   r½   z!TestCorrelate.test_invalid_paramsÎ	  sŸ   € àˆIˆIˆØˆIˆIˆÝ•j¥)¨Q°¸Ð?Ñ?Ô?Ð?Ý•j¥)¨Q°¸ÀuÐMÑMÔMÐMÝ•j¥)¨Q°¸ÀhÐOÑOÔOÐOÝ•j¥)¨Q°¸ÀwÐOÑOÔOÐOÝ•j¥)¨Q°¸ÀwÐOÑOÔOÐOÐOÐOrb   c                 óv  — 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¦  «         d S r  rš  r   s     r`   r!  z"TestCorrelate.test_mismatched_dimsØ	  s¦   € õ 	•j¥)¨a¨S°!¸HÐEÑEÔEÐEÝ•j¥)¨Q°°¸HÐEÑEÔEÐEÝ•j¥)¨a¨S°!¸EÐBÑBÔBÐBÝ•j¥)¨Q°°¸EÐBÑBÔBÐBÝ•j¥)¨a¨S°A°3°%Ñ8Ô8Ð8Ý•j¥)¨a¨S°!Ñ4Ô4Ð4Ð4Ð4rb   r’   )Úcpu_onlyÚ
exceptionsrF   zdtype differsrH   c                 ód  — |                      g d¢¦  «        }|                      ddg¦  «        }t          t          ||d¬¦  «        |                      g d¢¦  «        ¦  «         |                      g d¢¦  «        }|                      g d¢¦  «        }t          t          ||d¬¦  «        |                      g d¢¦  «        ¦  «         t          t          ||d	¬¦  «        |                      g d
¢¦  «        ¦  «         t          t          ||d¬¦  «        |                      dg¦  «        ¦  «         d S )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�y�yÑ!Ô!ˆØ�JŠJ˜˜1�vÑÔˆÝ�	 ! Q¨VÐ4Ñ4Ô4°b·j²jÀÀÀÑ6MÔ6MÑNÔNÐNà�JŠJ�y�y�yÑ!Ô!ˆØ�JŠJ�y�y�yÑ!Ô!ˆÝ�	 ! Q¨VÐ4Ñ4Ô4°b·j²jÀÀÀÑ6NÔ6NÑOÔOÐOÝ�	 ! Q¨VÐ4Ñ4Ô4°b·j²jÐATÐATÐATÑ6UÔ6UÑVÔVÐVÝ�	 ! Q¨WÐ5Ñ5Ô5°r·z²zÀ2À$Ñ7GÔ7GÑHÔHÐHÐHÐHrb   N)r"  r#  r$  r%  r×   r½   r!  rŸ  rè   rb   r`   r—  r—  ½	  sæ   € € € € € ð Ð˜dÐ#Ñ#Ô#ð
Kð 
Kñ $Ô#ð
Kð Ð˜dÐ#Ñ#Ô#ðPð Pñ $Ô#ðPð Ð˜dÐ#Ñ#Ô#ð5ð 5ñ $Ô#ð5ð Ð˜t°°Ð9Ñ9Ô9ØÐ�k¨/Ð:Ñ:Ô:ð	Ið 	Iñ ;Ô:ñ :Ô9ð	Ið 	Ið 	Irb   r—  rg   ©r­   re   r¬   ÚbehindFÚ
input_sizerØ   rv  r–  r—  r  )Úmarksi'  c                 óÜ  — t           j                             d¦  «        }|                     |¦  «        }t	          |dz  ¦  «        }|r-t          j        |                     |¦  «        |g¦  «        }| }n||d …         }|}t          ||| ¬¦  «        }	t          |j        |j        | ¬¦  «        }
t          j	        |	¦  «        }t          |
|         |¦  «         |
j        |	j        k    sJ ‚d S )Nr   rR   rf   )r  r  r  r  rz  Ú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˜c×1Ò1°&Ñ9Ô9¸3Ð?Ñ@Ô@ˆØ�7ˆˆð �&�'�'ŒlˆØˆå˜C ¨4Ð0Ñ0Ô0€KÝ˜CœH c¤h°TÐ:Ñ:Ô:€Då”	˜+Ñ&Ô&€Iå�D˜”O XÑ.Ô.Ð.àŒ:˜Ô*Ò*Ð*Ð*Ð*Ð*Ð*rb   c                 ó’   — t          j        t          d¬¦  «        5  t          ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzMode asdfgh is invalidrH  rØ   Úasdfghrf   )r£  r   r»   r   râ  s    r`   Ú"test_correlation_lags_invalid_moder°  
  s‘   € å	Œ•zÐ)AÐ	BÑ	BÔ	Bð 2ð 2Ý˜˜c¨Ð1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   œ<¼A ÁA Údt_nameræ   r®   c                   óŽ   — 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dS )ÚTestCorrelateComplexc                 óÈ   — t          |¦  «        r|t          j        k    rt          j        }dddœ|                     |¦  «        j                 }t          d|z  dz  ¦  «        S )Nr{  rN   )r@  rU   rQ   rK   )r6   r  rÍ  Úcdoubler›  Úbitsrz  )r[   rS  r\   Úprecs       r`   rÒ  zTestCorrelateComplex.decimal 
  sX   € Ý�B‰<Œ<ð 	˜B¥"¤.Ò0Ð0Ý”ˆBð ˜Aˆˆ˜rŸxšx¨™|œ|Ô0Ô1ˆÝ�1�t‘8˜a‘<Ñ Ô Ð rb   c                 ó`  — t           j                             d¦  «        }t           j                             d¦  «                             |¦  «        }|d|                     d¦  «                             |¦  «        z  z  }t           j                             d¦  «                             |¦  «        }|d|                     d¦  «                             |¦  «        z  z  }t          |j        |j        |¬¦  «        t          |j        |j        |¬¦  «        z                        |¦  «        }|dt          |j        |j        |¬¦  «         t          |j        |j        |¬¦  «        z   z  z  }| 	                    |¦  «        | 	                    |¦  «        | 	                    |¦  «        }}}|||fS )Nr/  rR   r§   r¥   rf   )
r  r  r  r  r  r  r   r   ÚimagrY   )r[   rS  rg   r\   r  r]   r^   rÄ  s           r`   rm  z!TestCorrelateComplex._setup_rank1(
  sm  € ÝŒi×#Ò# AÑ&Ô&ˆÝŒI�OŠO˜BÑÔ×&Ò& rÑ*Ô*ˆØ	ˆR�#×%Ò% bÑ)Ô)×0Ò0°Ñ4Ô4Ñ4Ñ4ˆÝŒI�OŠO˜AÑÔ×%Ò% bÑ)Ô)ˆØ	ˆR�#×%Ò% aÑ(Ô(×/Ò/°Ñ3Ô3Ñ3Ñ3ˆå˜œ ¤¨dÐ3Ñ3Ô3Ý˜œ ¤¨dÐ3Ñ3Ô3ñ4ß5;²V¸B±Z´Zð 	àˆr•i ¤¨¬°TÐ:Ñ:Ô:Ð:Ý˜qœv q¤v°DÐ9Ñ9Ô9ñ:ñ ;ñ 	;ˆð —J’J˜q‘M”M 2§:¢:¨a¡=¤=°"·*²*¸S±/´/ˆcˆ1ˆØ�!�SˆyÐrb   c                 ó¸  — |                       |d|¦  «        \  }}}t          ||¦  «        }t          ||d¦  «        }t          |||                      ||¦  «        ¬¦  «         |j        |k    sJ ‚t          ||d¦  «        }t          ||                     |                     |¦  «        ¦  «        |                      ||¦  «        ¬¦  «         |j        |k    sJ ‚d S )Nr­   rÑ  )rm  r”  r   r:   rÒ  r©   Úconjrh  ©r[   r±  r\   r]   r^   rÄ  rS  rr   s           r`   r  z%TestCorrelateComplex.test_rank1_valid7
  sÝ   € Ø×%Ò% g¨w¸Ñ;Ô;‰	ˆˆ1ˆcÝ�R˜Ñ!Ô!ˆÝ�a˜˜GÑ$Ô$ˆÝ! ! S°$·,²,¸rÀ2Ñ2FÔ2FÐGÑGÔGÐGØŒw˜"Š}ˆ}ˆ}ˆ}õ �a˜˜GÑ$Ô$ˆÝ! ! R§W¢W¨R¯WªW°S©\¬\Ñ%:Ô%:Ø*.¯,ª,°r¸2Ñ*>Ô*>ð	@ñ 	@ô 	@ð 	@àŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 óä   — |                       |d|¦  «        \  }}}t          ||¦  «        }t          ||d¦  «        }t          |||                      ||¦  «        ¬¦  «         |j        |k    sJ ‚d S )Nre   rÑ  ©rm  r”  r   r:   rÒ  r©   r¼  s           r`   r‚  z$TestCorrelateComplex.test_rank1_sameD
  su   € Ø×%Ò% g¨v°rÑ:Ô:‰	ˆˆ1ˆcÝ�R˜Ñ!Ô!ˆå�a˜˜FÑ#Ô#ˆÝ! ! S°$·,²,¸rÀ2Ñ2FÔ2FÐGÑGÔGÐGØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 óä   — |                       |d|¦  «        \  }}}t          ||¦  «        }t          ||d¦  «        }t          |||                      ||¦  «        ¬¦  «         |j        |k    sJ ‚d S )Nr¬   rÑ  r¾  r¼  s           r`   r„  z$TestCorrelateComplex.test_rank1_fullL
  su   € Ø×%Ò% g¨v°rÑ:Ô:‰	ˆˆ1ˆcÝ�R˜Ñ!Ô!ˆÝ�a˜˜FÑ#Ô#ˆÝ! ! S°$·,²,¸rÀ2Ñ2FÔ2FÐGÑGÔGÐGØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   c                 óú   — t          ||¦  «        }|                     g d¢|¬¦  «        }|                     g d¢|¬¦  «        }t          ||¦  «        }t          ||                     g d¢¦  «        dd¬¦  «         d S )N©r«   rm   r¼  r¨   ©y      ð?      @y       @      @y      @      @y      @      @)r«   ù      $@       Àù      <@      Àù      6@      Ày      0@      Ày       @      Àrü   FrÊ  )r”  rY   r   r4   )r[   r±  r\   rS  r¡   Úkrr   s          r`   Útest_swap_fullz#TestCorrelateComplex.test_swap_fullS
  s”   € Ý�R˜Ñ!Ô!ˆØ�JŠJÐ/Ð/Ð/°rˆJÑ:Ô:ˆØ�JŠJÐ7Ð7Ð7¸rˆJÑBÔBˆÝ�a˜‰OŒOˆÝØˆr�zŠzÐNÐNÐNÑOÔOØ 5ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rb   c                 óÐ   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||d¬¦  «        }t          ||                      g d¢¦  «        ¦  «         d S )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]
  so   € Ø�JŠJÐ/Ð/Ð/Ñ0Ô0ˆØ�JŠJÐ7Ð7Ð7Ñ8Ô8ˆÝ�a˜ Ð(Ñ(Ô(ˆÝ˜˜2Ÿ:š:Ð&AÐ&AÐ&AÑBÔBÑCÔCÐCÐCÐCrb   r’   ÚnotimplementederrorrH   c                 óP  — t          |¦  «        r t          dk    rt          j        d¬¦  «         t          j                             ddd¦  «                             |¦  «        }|dt          j                             ddd¦  «                             |¦  «        z  z  }t          j                             ddd¦  «                             |¦  «        }|dt          j                             ddd¦  «                             |¦  «        z  z  }t          |j	        |j	        ¦  «        t          |j
        |j
        ¦  «        z                        |¦  «        }|dt          |j	        |j
        ¦  «         t          |j
        |j	        ¦  «        z   z  z  }|                     |¦  «        |                     |¦  «        |                     |¦  «        }}}t          ||¦  «        }t          ||d	¦  «        }t          |||                      ||¦  «        d
z
  ¬¦  «         |j        |k    sJ ‚d S )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Ç  € å�"‰:Œ:ð 	M�,¨%Ò/Ð/ÝŒLÐ KÐLÑLÔLÐLÝŒI�OŠO˜B  1Ñ%Ô%×,Ò,¨WÑ5Ô5ˆØ	ˆR•"”)—/’/ " a¨Ñ+Ô+×2Ò2°7Ñ;Ô;Ñ;Ñ;ˆÝŒI�OŠO˜A˜q !Ñ$Ô$×+Ò+¨GÑ4Ô4ˆØ	ˆR•"”)—/’/ ! Q¨Ñ*Ô*×1Ò1°'Ñ:Ô:Ñ:Ñ:ˆå˜œ ¤Ñ(Ô(Ý˜1œ6 1¤6Ñ*Ô*ñ+ß,2ªF°7©O¬Oð 	àˆr•i ¤¨¬Ñ/Ô/Ð/µ)¸A¼FÀAÄFÑ2KÔ2KÑKÑLÑLˆà—J’J˜q‘M”M 2§:¢:¨a¡=¤=°"·*²*¸S±/´/ˆcˆ1ˆÝ�R˜Ñ!Ô!ˆå�a˜˜FÑ#Ô#ˆÝ! ! S°$·,²,¸rÀ2Ñ2FÔ2FÈÑ2JÐKÑKÔKÐKØŒw˜"Š}ˆ}ˆ}ˆ}ˆ}ˆ}rb   Tr  c           	      óð  — t          j        t           j                             ¦   «         ¦  «                             |¦  «        }|dt          j        t           j                             ¦   «         ¦  «                             |¦  «        z  z  }t          j        t           j                             ¦   «         ¦  «                             |¦  «        }|dt          j        t           j                             ¦   «         ¦  «                             |¦  «        z  z  }t          ||¦  «        }t          |j        |j        ¦  «        t          |j        |j        ¦  «        z                        |¦  «        }|dt          j        t          |j        |j        ¦  «         t          |j        |j        ¦  «        z   ¦  «        z  z  }| 	                    |¦  «        | 	                    |¦  «        }}t          ||d¦  «        }t          |||                      ||¦  «        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¬¦  «         d S )
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^   rS  rÄ  rr   s           r`   Ú
test_rank0zTestCorrelateComplex.test_rank0w
  sy  € åŒH•R”Y—_’_Ñ&Ô&Ñ'Ô'×.Ò.¨wÑ7Ô7ˆØ	ˆR•"”(�2œ9Ÿ?š?Ñ,Ô,Ñ-Ô-×4Ò4°WÑ=Ô=Ñ=Ñ=ˆÝŒH•R”Y—_’_Ñ&Ô&Ñ'Ô'×.Ò.¨wÑ7Ô7ˆØ	ˆR•"”(�2œ9Ÿ?š?Ñ,Ô,Ñ-Ô-×4Ò4°WÑ=Ô=Ñ=Ñ=ˆÝ�R˜Ñ!Ô!ˆå˜œ ¤Ñ(Ô(Ý˜1œ6 1¤6Ñ*Ô*ñ+ß,2ªF°2©J¬Jð 	àˆr•B”H�i¨¬°´Ñ7Ô7Ð7Ý& q¤v¨q¬vÑ6Ô6ñ7ñ 8ô 8ñ 8ñ 	8ˆð �zŠz˜!‰}Œ}˜bŸjšj¨™mœmˆ1ˆå�a˜˜FÑ#Ô#ˆÝ! ! S°$·,²,¸rÀ2Ñ2FÔ2FÈÑ2JÐKÑKÔKÐKØŒw˜"Š}ˆ}ˆ}ˆ}å�	 1 #¨ tÑ,Ô,­b¬j½À1ÀbÑ9IÔ9IÑ.JÔ.JØ$)ð	+ñ 	+ô 	+ð 	+å�	 2 $¨¨Ñ-Ô-­r¬z½)ÀBÈÑ:KÔ:KÑ/LÔ/LØ$)ð	+ñ 	+ô 	+ð 	+å�	 2 $¨¨Ñ,Ô,­b¬j½À2ÀqÑ9IÔ9IÑ.JÔ.JØ$)ð	+ñ 	+ô 	+ð 	+ð 	+ð 	+rb   N)r"  r#  r$  rÒ  rm  r  r‚  r„  rÇ  rÉ  r%  rÎ  rÒ  rè   rb   r`   r³  r³  
  s×   € € € € € ð!ð !ð !ðð ð ðð ð ðð ð ðð ð ð
ð 
ð 
ðDð Dð 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dS )ÚTestCorrelate2dc                 ó   — t          j        d¦  «        }t          j        g d¢¦  «        }dD ]Ð}|                     |¦  «        |                     |¦  «        }}t          j        |||¬¦  «        }t          t          j        |||¬¦  «        |                     |¦  «        ¦  «         |dk    rOt          j        |||¬¦  «        }t          t          j        |||¬¦  «        |                     |¦  «        ¦  «         ŒÑd S ©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�a‰LŒLˆÝŒH�]�]�]Ñ#Ô#ˆØ-ð 
	@ð 
	@ˆDØŸš A™œ¨¯
ª
°1©¬�$ˆDÝœ\¨!¨Q°TÐ:Ñ:Ô:ˆNÝ¥Ô 0°°tÀ$Ð GÑ GÔ GØ "§
¢
¨>Ñ :Ô :ñ<ô <ð <ð �wŠˆÝ!#¤¨a°¸Ð!>Ñ!>Ô!>�Ý#¥FÔ$4°T¸4ÀdÐ$KÑ$KÔ$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    rNt          t          j        t          j        |g|g|¬¦  «        ¦  «        t          j        |||¬¦  «        ¦  «         Œ¥d S 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�a‰LŒLˆÝŒH�]�]�]Ñ#Ô#ˆØ-ð 		Gð 		GˆDÝ¥¤
­6Ô+=¸q¸cÀAÀ3ØCGð,Iñ ,Iô ,Iñ !Jô !Jå &Ô 0°°A¸DÐ AÑ AÔ AñCô Cð Cð
 �wŠˆÝ#¥B¤J­vÔ/AÀ1À#ÈÀsØGKð0Mñ 0Mô 0Mñ %Nô %Nå$*Ô$4°Q¸ÀÐ$EÑ$EÔ$EñGô Gð Gøð		Gð 		Grb   c                 ó6  — t          j        dd¦  «                             d¦  «        }t          j        dd¦  «                             d¦  «        }t          t          t
          j        g||f¢R i ddi¤Ž t          t          t
          j        g||f¢R i ddi¤Ž d S rÓ   )r  r‡   r†   rº   r»   r   r   r¼   s       r`   r×   z#TestCorrelate2d.test_invalid_shapes¸
  sž   € õ ŒI�a˜‰OŒO×#Ò# FÑ+Ô+ˆÝŒI�b˜!ÑÔ×$Ò$ VÑ,Ô,ˆå•j¥&Ô"4ÐS¸¸1°vÐSÐSÐSÀ&È'ÐARÐSÐSÐSÝ•j¥&Ô"4ÐS¸¸1°vÐSÐSÐSÀ&È'ÐARÐSÐSÐSÐSÐSrb   c                 ó^  — t          t          j        |                     dgg¦  «        |                     dgg¦  «        ¦  «        |                     dg¦  «        dd¬¦  «         t          t          j        |                     dgg¦  «        |                     dgg¦  «        ¦  «        |                     dg¦  «        dd¬¦  «         t          t          j        |                     dgg¦  «        |                     dgg¦  «        ¦  «        |                     d	g¦  «        dd¬¦  «         d S )
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Ô>PÑQÔQØŸ
š
 C 5Ñ)Ô)°uÈ%ð	Qñ 	Qô 	Qð 	Qå�Ô*¨2¯:ª:¸°t°fÑ+=Ô+=¸r¿zºzÈBÈ4È&Ñ?QÔ?QÑRÔRØŸ
š
 D 6Ñ*Ô*¸È5ð	Rñ 	Rô 	Rð 	Rå�Ô*¨2¯:ª:¸°t°fÑ+=Ô+=¸r¿zºzÈAÈ3È%Ñ?PÔ?PÑQÔQØŸ
š
 C 5Ñ)Ô)°uÈ%ð	Qñ 	Qô 	Qð 	Qð 	Qð 	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ñ +Ô*ñ $Ô#ðGð  Ð˜dÐ#Ñ#Ô#ØÐ�vÔ)Ñ*Ô*ð
Tð 
Tñ +Ô*ñ $Ô#ð
Tð Ð�vÔ)Ñ*Ô*ðQð Qñ +Ô*ðQð Qð Qrb   rÔ  c                   ó’   — e Zd Z edd¬¦  «        d„ ¦   «         Zd„ Zd„ Zej         	                    ddd	g¦  «        d
„ ¦   «         Z
dS )ÚTestLFilterZITzlist inputs are numpy specificrx   c                 ó|   — |                      ddg¦  «        }t          g d¢g d¢¦  «        }t          ||¦  «         d S )Nr£  rj  ©rÃ  r*  ri  ©rÃ  rj  r&  ©rY   r   r:   )r[   r\   Úzi_expectedrÍ  s       r`   Útest_array_likezTestLFilterZI.test_array_likeÓ
  sG   € à—j’j # t Ñ-Ô-ˆÝ˜˜˜Ð)9Ð)9Ð)9Ñ:Ô:ˆÝ! " kÑ2Ô2Ð2Ð2Ð2rb   c                 óÐ   — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      ddg¦  «        }t          ||¦  «        }t          ||¦  «         d S )Nrå  rä  r£  rj  ræ  )r[   r\   r]   r^   rç  rÍ  s         r`   ra   zTestLFilterZI.test_basicÙ
  si   € Ø�JŠJÐ'Ð'Ð'Ñ(Ô(ˆØ�JŠJ���Ñ'Ô'ˆØ—j’j # t Ñ-Ô-ˆÝ˜˜1ÑÔˆÝ! " kÑ2Ô2Ð2Ð2Ð2rb   c                 óÒ   — |                      g d¢¦  «        }|                      g d¢¦  «        }t          ||¦  «        }t          d|z  d|z  ¦  «        }t          ||d¬¦  «         d S )N)ri  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à
  so   € ð �JŠJ�{�{�{Ñ#Ô#ˆØ�JŠJ�{�{�{Ñ#Ô#ˆÝ˜˜AÑÔˆÝ˜˜1™˜a ™cÑ"Ô"ˆÝ˜˜S uÐ-Ñ-Ô-Ð-Ð-Ð-rb   r©   rä   rå   c                 óÄ   — t          ||¦  «        }|                     d|¬¦  «        }|                     dg|¬¦  «        }t          j        ||¦  «        j        |k    sJ ‚d S )Nr¥   r¨   rP   )r”  rœ  rY   r   r   r©   )r[   r©   r\   r^   r]   s        r`   r—  zTestLFilterZI.test_typesé
  sd   € å˜˜EÑ"Ô"ˆØ�HŠH�a ˆHÑ&Ô&ˆØ�JŠJ˜�s %ˆJÑ(Ô(ˆÝÔ   AÑ&Ô&Ô,°Ò5Ð5Ð5Ð5Ð5Ð5rb   N)r"  r#  r$  r%  rè  ra   rì  r£  r¤  r¥  r—  rè   rb   r`   râ  râ  Ð
  s“   € € € € € ð Ð˜dÐ+KÐLÑLÔLð3ð 3ñ MÔLð3ð
3ð 3ð 3ð.ð .ð .ð „[×Ò˜W y°)Ð&<Ñ=Ô=ð6ð 6ñ >Ô=ð6ð 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dS )ÚTestFiltFiltÚtfrª   ÚoddNr€  c	           
      ó,  — | j         dk    rLt          |Ž \  }	}
|                     |	¦  «        |                     |
¦  «        }
}	t          |	|
||||||¦  «        S | j         dk    r1t	          |Ž }|                     |¦  «        }t          |||||¦  «        S d S )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ÐJØÔ 5Ò(Ð(Ý˜3�-ˆCØ—*’*˜S‘/”/ˆCÝ˜s A t¨W°fÑ=Ô=Ð=ð )Ð(rb   r£   únegative stridesrH   c                 ó¬  — t          |¦  «        r | j        dk    rt          j        d¬¦  «         t	          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        }|                      ||                     d¦  «        |¬¦  «        }t          |¦  «        rdnd}t          ||                     d|j
        ¬	¦  «        |¬
¦  «         d S )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Â   € å�"‰:Œ:ð 	9˜$Ô,°Ò5Ð5ÝŒKÐ7Ð8Ñ8Ô8Ð8å�R—Z’Z 
 
 
Ñ+Ô+¨R¯ZªZ¸
¸
¸
Ñ-CÔ-CÑDÔDˆØ�mŠm˜C §¢¨2¡¤°2ˆmÑ6Ô6ˆÝ˜b‘k”kÐ/ˆdˆd xˆÝ˜˜RŸYšY r°´˜YÑ<Ô<À4ÐHÑHÔHÐHÐHÐHrb   c                 ó~  — t          |¦  «        r | j        dk    rt          j        d¬¦  «         d}|                     dd|dz   ¦  «        }|                     dt          j        z  |z  ¦  «        }|                     d	t          j        z  |z  ¦  «        }||z   }t          d
| 	                    d¦  «        d¬¦  «        }t          j
        |d         ¦  «                             ¦   «         }d}	t          t          j        t          j        |	¦  «        t          j        |¦  «        z  ¦  «        ¦  «        }
|                      |||
|¬¦  «        }t          j
        ||z
  ¦  «                             ¦   «         }|dk     sJ ‚| 	                    t          j        |||z   g¦  «        ¦  «        }|                      |||
d|¬¦  «        }|j        |j        k    sJ ‚t          j
        ||z
  ¦  «                             ¦   «         }|dk     sJ ‚|                      ||j        |
d|¬¦  «        }t'          ||j        ¦  «         d S )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-  rz  ÚceilÚlogr   Úvstackr˜  r†  r5   )r[   r\   r2  rú   ÚxlowÚxhighrq   rõ  ÚrÚepsr
  rr   ÚerrÚx2dÚy2dÚy2dts                   r`   Ú	test_sinezTestFiltFilt.test_sine
  s   € å�"‰:Œ:ð 	9˜$Ô,°Ò5Ð5ÝŒKÐ7Ð8Ñ8Ô8Ð8àˆØ�KŠK˜˜3  q¡Ñ)Ô)ˆà�vŠv�e�bœe‘m aÑ'Ñ(Ô(ˆØ—’�w¥¤‘¨Ñ*Ñ+Ô+ˆØ�5‰Lˆå�Q˜Ÿ
š
 5Ñ)Ô)°%Ð8Ñ8Ô8ˆåŒF�3�q”6‰NŒN×ÒÑ Ô ˆØˆõ •”�œ˜s™œ¥b¤f¨Q¡i¤iÑ/Ñ0Ô0Ñ1Ô1ˆð �MŠM˜#˜q¨¨rˆMÑ2Ô2ˆåŒf�Q˜‘XÑÔ×"Ò"Ñ$Ô$ˆØ�TŠzˆzˆzˆzð �jŠj�œ D¨$°©,Ð#7Ñ8Ô8Ñ9Ô9ˆØ�mŠm˜C ¨Q°Q¸2ˆmÑ>Ô>ˆØŒy˜CœIÒ%Ð%Ð%Ð%ÝŒf�S˜4‘ZÑ Ô ×$Ò$Ñ&Ô&ˆØ�TŠzˆzˆzˆzð �}Š}˜S #¤%°¸¸bˆ}ÑAÔAˆÝ˜˜TœVÑ$Ô$Ð$Ð$Ð$rb   c           
      ó>  — t          |¦  «        r | j        dk    rt          j        d¬¦  «         t	          j        d¦  «                             ddd¦  «        }|                     |¦  «        }t          d|                     d	¦  «        d
¬¦  «        }|  	                    ||dd|¬¦  «        }|  	                    ||                     t	          j
        |dd¦  «        ¦  «        dd|¬¦  «        }t          ||                     t	          j
        |dd¦  «        ¦  «        ¦  «         |  	                    ||                     t	          j
        |dd¦  «        ¦  «        dd|¬¦  «        }t          ||                     t	          j
        |dd¦  «        ¦  «        ¦  «         d S )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õ  rM  rN  rƒ  s          r`   Ú	test_axiszTestFiltFilt.test_axis0  sw  € å�"‰:Œ:ð 	9˜$Ô,°Ò5Ð5ÝŒKÐ7Ð8Ñ8Ô8Ð8õ ŒIÐ(Ñ)Ô)×1Ò1°"°b¸"Ñ=Ô=ˆØ�JŠJ�q‰MŒMˆÝ�Q˜Ÿ
š
 5Ñ)Ô)°%Ð8Ñ8Ô8ˆØ�]Š]˜3 ¨!°!¸ˆ]Ñ;Ô;ˆØ�]Š]Ø�—’�BœK¨¨1¨aÑ0Ô0Ñ1Ô1¸!À!Èð ñ 
ô 
ˆõ 	˜˜BŸJšJ¥r¤{°2°q¸!Ñ'<Ô'<Ñ=Ô=Ñ>Ô>Ð>Ø�]Š]Ø�—’�BœK¨¨1¨aÑ0Ô0Ñ1Ô1¸!À!Èð ñ 
ô 
ˆõ 	˜˜BŸJšJ¥r¤{°2°q¸!Ñ'<Ô'<Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>rb   Tz-python scalars in array_namespace are np-onlyrx   c                 ó  — | j         dk    rd S t          j        |                     ddg¦  «        d|                     d|j        ¬¦  «        ¦  «        }t          ||                     d|j        ¬¦  «        dd¬¦  «         d S )Nrð  r&  rP   rR   r¨   rƒ   rý   )rô  r   r   rY   r‡   rå   r4   )r[   r\   rÉ   s      r`   Útest_acoeffzTestFiltFilt.test_acoeffC  s‚   € ð Ô Ò%Ð%ØˆFåŒoØ�JŠJ˜˜B�xÑ Ô  ! R§Y¢Y¨r¸¼ YÑ%DÔ%Dñ
ô 
ˆõ 	˜˜RŸYšY r°´˜YÑ<Ô<À5ÈuÐUÑUÔUÐUÐUÐUrb   z_filtfilt_gust is np-onlyc           
      ó”  — | j         dk    rt          j        d¦  «         |                     ddg¦  «        }|                     dg¦  «        }|                     ddg¦  «        }t	          |||¦  «        \  }}}t          |d         d|d         z  d	|d
         z  z   ¦  «         t          |d         d	|d         z  d|d
         z  z   ¦  «         t          ||                     |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¦  «        ¦  «         d S )Nrð  ú$gust only implemented for TF systemsrÃ  ri  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Ð>Ñ?Ô?Ð?ð �JŠJ˜˜S�zÑ"Ô"ˆØ�JŠJ˜�uÑÔˆØ�JŠJ˜˜T�{Ñ#Ô#ˆÝ" 1 a¨Ñ+Ô+‰	ˆˆ2ˆrÝ˜˜1œ˜s 1 Q¤4™x¨#¨a°¬d©(Ñ2Ñ3Ô3Ð3Ý˜˜1œ˜s 1 Q¤4™x¨#¨a°¬d©(Ñ2Ñ3Ô3Ð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ô Rñ	
ô 	
ð 	
ð 	
ð 	
rb   c                 óÒ   — | j         dk    rt          j        d¦  «         |                     d¦  «        }d}d}t	          |||d¬¦  «        }||z  dz  |z  }t          ||¦  «         d S )	Nrð  r  rW   rk  ri  Úgustr�   rQ   )rô  r£  r“  r‡   r   r4   )r[   r\   rq   r^   r]   rr   rÈ   s          r`   Útest_gust_scalarszTestFiltFilt.test_gust_scalars_  s{   € ð Ô Ò%Ð%ÝŒKÐ>Ñ?Ô?Ð?ð �IŠI�b‰MŒMˆØˆØˆÝ�Q˜˜1 VÐ,Ñ,Ô,ˆØ�a‘C˜!‘8˜a‘<ˆÝ˜˜8Ñ$Ô$Ð$Ð$Ð$rb   )rª   rñ  Nr€  NN)r"  r#  r$  rô  r   r%  ra   r
  r  r  r  r  rè   rb   r`   rï  rï  ñ
  sc  € € € € € à€Mà>BØ.2ð	>ð 	>ð 	>ð 	>ð Ð�gÐ&8Ð9Ñ9Ô9ðIð Iñ :Ô9ðIð Ð�gÐ&8Ð9Ñ9Ô9ð#%ð #%ñ :Ô9ð#%ðJ Ð�gÐ&8Ð9Ñ9Ô9ð?ð ?ñ :Ô9ð?ð$ Ð˜dØLðNñ Nô NðVð VñNô NðVð Ð˜dÐ+FÐGÑGÔGð
ð 
ñ HÔGð
ð  Ð˜dØLðNñ Nô Nð%ð %ñNô Nð%ð %ð %rb   rï  c                   ód   — e Zd ZdZ edd¬¦  «         edd¬¦  «        d„ ¦   «         ¦   «         ZdS )	ÚTestSOSFiltFiltró  rF   rú  rH   r£   rø  c                 ó¸  — t           j                             d¦  «                             d¦  «        }|                     |¦  «        }t          dd¦  «        D ]�}t          j        |dd¬¦  «        }t          |Ž \  }}t          |Ž }t          |j        |||f¦  «        \  }}}t          |||¦  «        }t          ||¦  «        }	t          ||	dd	|› �¬
¦  «         Œ‚dS )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   ri  r   r&   r4   )
r[   r\   rq   r‡  rõ  r^   r]   ró  rr   Úy_soss
             r`   Útest_equivalencez TestSOSFiltFilt.test_equivalences  sç   € õ ŒI×!Ò! !Ñ$Ô$×*Ò*¨4Ñ0Ô0ˆØ�JŠJ�q‰MŒMˆÝ˜1˜a‘[”[ð 	Lð 	LˆEÝ”-  t°EÐ:Ñ:Ô:ˆCÝ˜3�<‰DˆAˆqÝ˜3�-ˆCå˜BœJ¨¨A¨s¨Ñ4Ô4‰IˆAˆq�#Ý˜˜A˜qÑ!Ô!ˆAÝ  QÑ'Ô'ˆEÝ˜A˜u¨5Ð:JÀ5Ð:JÐ:JÐKÑKÔKÐKÐKð	Lð 	Lrb   N)r"  r#  r$  rô  r%  r  rè   rb   r`   r  r  o  sf   € € € € € à€MàÐ�kÐ*BÐCÑCÔCØÐ�gÐ&8Ð9Ñ9Ô9ðLð Lñ :Ô9ñ DÔCðLð Lð Lrb   r  c                 óT  — d„ }t          t          |¦  «        t          | ¦  «        ¦  «        dz
  }t          | |¦  «        }t          j        |d|…                              ¦   «         |z  || d…                              ¦   «         |z  f¦  «        }t          ||| ||fdddddd¬	¦	  «	        }|\  }}	}
}}|d
k    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                 óÌ  — 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-  rQ  r   r  Úsum)Úicsr^   r]   rq   ÚmÚz0fÚz0brJ  Ú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°4°R°4Ô8ˆå�a˜˜A˜d˜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-  rQ  r   r  r¥  rÕ  r   r)  r   )r^   r]   rq   r*  r#  rÍ  r"  rs  ÚoptÚfoptÚniterÚfuncallsÚwarnflagr$  r%  r'  rr   s                    r`   Úfiltfilt_gust_optr6  „  s^  € ðð ð õ 	�C�‰FŒF•C˜‘F”FÑÔ˜aÑ€AÝ	�A�qÑ	Ô	€BÝ
Œ.˜!˜B˜Q˜Bœ%Ÿ*š*™,œ, r™/¨1¨a¨R¨S¨S¬6¯;ª;©=¬=¸Ñ+;Ð<Ñ
=Ô
=€CÝÐ(¨#°Q¸¸1°IØ 5Ø¨Ø"¨ð0ñ 0ô 0€Fð ,2Ñ(€Cˆˆu�h Ø�!‚|€|ÝØLÀ(ÐLÐLñ
ô 
ð 	
ð ˆbˆqˆbŒ'€CØ
ˆaˆbˆbŒ'€Cõ �!�Q˜˜$˜$˜B˜$œ CÐ
(Ñ
(Ô
(¨Ô
+¨D¨D¨b¨DÔ
1€CÝ��1�c˜cÐ"Ñ"Ô" 1Ô%€Aàˆc�3ˆ;Ðrb   c                 ó„  — t           j                             d¦  «        }|                     |¦  «        }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„ |D ¦   «         Ž D ]&}t          | |||         ¦  «        \  ||<   ||<   ||<   Œ't          j        |d|¦  «        }t          j        |d|¦  «        }t          j        |d|¦  «        }t          ||dd	¬
¦  «         t          ||dd	¬
¦  «         t          |	|dd	¬
¦  «         t          |
|dd	¬
¦  «         d S )Nr  r  )rŽ  r‚   r÷  )rŽ  r÷  rª   rP   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rè   )rˆ   )ré   r¡   s     r`   rí   z'check_filtfilt_gust.<locals>.<listcomp>Å  s   € Ð6Ð6Ð6 q�% ™(œ(Ð6Ð6Ð6rb   r  rü  rý   )r  r  r  r  r   r/   r  r˜  Ú
empty_liker-  rQ  r´  r   r6  r4   )r^   r]   r˜  rŽ  r÷  r  rq   rr   ÚygÚzg1Úzg2ÚxxÚ	out_shaperè  r#  Úzo1Úzo2Úindxs                     r`   Úcheck_filtfilt_gustrB  ±  sÏ  € å
Œ)×
Ò
 Ñ
$Ô
$€CØ×Ò˜EÑ"Ô"€Aõ 	��A�q˜t¨F¸%Ð@Ñ@Ô@€Aõ " ! Q¨°¸EÐBÑBÔB�L€BˆˆSõ
 
Œ�Q˜˜bÑ	!Ô	!€BØ”˜˜"˜”€IÝ	Œ�rÑ	Ô	€BÝ�C�‰FŒF•C˜‘F”FÑÔ˜aÑ€AÝ
Œ(�9 ˜tÑ#Ñ
$Ô
$€CÝ
Œ(�9 ˜tÑ#Ñ
$Ô
$€CÝÐ6Ð6¨IÐ6Ñ6Ô6Ð7ð Kð KˆÝ):¸1¸aÀÀDÄÑ)JÔ)JÑ&ˆˆ4‰�#�d‘)˜S ™Y˜YÝ	Œ�R˜˜TÑ	"Ô	"€BÝ
Œ+�c˜2˜tÑ
$Ô
$€CÝ
Œ+�c˜2˜tÑ
$Ô
$€Cå�A�r ¨4Ð0Ñ0Ô0Ð0Ý�B˜ ¨DÐ1Ñ1Ô1Ð1Ý�C˜ 4¨dÐ3Ñ3Ô3Ð3Ý�C˜ 4¨dÐ3Ñ3Ô3Ð3Ð3Ð3rb   rR   c                 óÒ  — dD �]b}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|
                     ¦   «         v rd	|
                     ¦   «         v sJ ‚Œ²d
}dD ]Y}t          t           |¦  «        rBt          j        ||¬¦  «        }| 	                    ¦   «         }t          |||¬¦  «        d	k    sJ ‚ŒZt          j
        dgt           j        ¬¦  «        }| 	                    ¦   «         }t          |||¬¦  «        d	k    sJ ‚�Œdd S )Nr   )rP   rQ   )r¥   rN   r€   rf   T)rg   Úmeasure>   r
   r€   r
   r€   rR   ©Ú
complex256Ú
complex192r¨   l         @ )r  r  r  r   r²  ÚdictÚkeysrd  rp  r  r�  rÞ   )r\   rg   r÷  r
  rÆ  Útrue_methodrq   r6  r‚   Ú
method_tryÚtimesÚnot_fft_conv_supps               r`   Útest_choose_conv_methodrN  Ñ  s®  € ð *ð ?ñ ?ˆØð 	Fð 	FˆDØ .ÑˆAˆq�+Ý”	” 1 $¨¡+Ð/ˆAÝ”	” 1 $¨¡+Ð/ˆAå'¨¨1°4Ð8Ñ8Ô8ˆFØ˜[Ò(Ð(Ð(Ð(å 2°1°a¸dÈDÐ QÑ QÔ QÑˆJ˜ØÐ!2Ð2Ð2Ð2Ð2Ý˜e¥TÑ*Ô*Ð*Ð*Ð*Ø˜EŸJšJ™LœLÐ(Ð(¨X¸¿º¹¼Ð-EÐ-EÐ-EÐEÐ-EàˆØ!=ð 	Gð 	GÐÝ•rÐ,Ñ-Ô-ð GÝ”G˜AÐ%6Ð7Ñ7Ô7�Ø—F’F‘H”H�Ý)¨!¨Q°TÐ:Ñ:Ô:¸hÒFÐFÐFÐFøåŒH�e�W¥B¤HÐ-Ñ-Ô-ˆØ�FŠF‰HŒHˆÝ! ! Q¨TÐ2Ñ2Ô2°hÒ>Ð>Ð>Ð>Ñ>ð/?ð ?rb   c                 óÌ   — dD ]`}d}dD ]Y}t          t          |¦  «        rBt          j        ||¬¦  «        }|                     ¦   «         }t	          |||¬¦  «        dk    sJ ‚ŒZŒad S )Nr   rR   rE  r¨   rf   r€   )rd  r  rp  r  r   )r\   rg   r
  rM  rq   r6  s         r`   Útest_choose_conv_method_2rP  î  s“   € à)ð Gð GˆØˆØ!=ð 	Gð 	GÐÝ•rÐ,Ñ-Ô-ð GÝ”G˜AÐ%6Ð7Ñ7Ô7�Ø—F’F‘H”H�Ý)¨!¨Q°TÐ:Ñ:Ô:¸hÒFÐFÐFÐFøð		GðGð Grb   c           	      ó  — t          j        ddddd¬¦  «        \  }}}d}t          j        t          j        |¦  «        ¦  «        }t          t          j        t          j        |¦  «        t          j        |¦  «        z  ¦  «        ¦  «        }t          |||¦  «        \  }}d |fD ]I}	d|z  }
t          |||
fd	|	¦  «         t          d¦  «        D ]}g d
¢}|
||<   t          |||||	¦  «         ŒŒJd|z  dz
  }t          |||fd	|¦  «         d S )NrK   ç{®Gáz„?éx   gffffff¶?rõ  r  r  rM   r   r¦   rQ   r  )r   Úellipr  r-  r-  rz  rÿ  r   r   rB  rˆ   )r\   rs   ÚprÆ  r  r  Úapprox_impulse_lenr^   r]   r÷  Ú
signal_lenrŽ  r˜  Úlengths                 r`   Útest_filtfilt_gustrY  ù  s4  € õ Œl˜1˜d C¨¸Ð>Ñ>Ô>�G€A€qˆ!ð €CÝ
Œ�rŒv�a‰yŒyÑÔ€AÝ�RœW¥R¤V¨C¡[¤[µ2´6¸!±9´9Ñ%<Ñ=Ô=Ñ>Ô>Ðå�!�Q˜‰?Œ?�D€A€qØÐ*Ð+ð 
:ð 
:ˆØÐ+Ñ+ˆ
õ 	˜A˜q : -°°EÑ:Ô:Ð:õ ˜!‘H”Hð 	:ð 	:ˆDØ�I�IˆEØ$ˆE�$‰KÝ  1 e¨T°5Ñ9Ô9Ð9Ð9ð	:ð Ð!Ñ! BÑ&€FÝ˜˜1˜v˜i¨Ð,>Ñ?Ô?Ð?Ð?Ð?rb   c                   óF  — 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dS )ÚTestDecimatec                 ó¼   — |                      d¦  «        }t          t          t          j        |dd¬¦  «         t          t          t          j        |dd¬¦  «         d S )NrW   r&  rP   )Úqr
  rQ   )r‡   rº   r   r   Údecimate©r[   r\   rq   s      r`   Útest_bad_argszTestDecimate.test_bad_args  sM   € Ø�IŠI�b‰MŒMˆÝ•i¥¤°!°s¸aÐ@Ñ@Ô@Ð@Ý•i¥¤°!°q¸CÐ@Ñ@Ô@Ð@Ð@Ð@rb   c                 óè   — |                      d¦  «        }t          j        |dddd¬¦  «                             ¦   «         }t	          ||d d d…                              t          ¦  «        ¦  «         d S )NrW   rQ   rP   ÚiirF©r
  ÚftypeÚ
zero_phase©r‡   r   r^  Úroundr5   r  r  ©r[   r\   rq   rr   s       r`   Útest_basic_IIRzTestDecimate.test_basic_IIR  óc   € Ø�IŠI�b‰MŒMˆÝŒO˜A˜q A¨U¸uÐEÑEÔE×KÒKÑMÔMˆÝ˜˜1˜S˜S˜q˜Sœ6Ÿ=š=­Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0rb   c                 óè   — |                      d¦  «        }t          j        |dddd¬¦  «                             ¦   «         }t	          ||d d d…                              t          ¦  «        ¦  «         d S )NrW   rQ   rP   ÚfirFrc  rf  rh  s       r`   Útest_basic_FIRzTestDecimate.test_basic_FIR$  rj  rb   c                 óÄ   — |                      d¦  «        }t          j        |ddd¬¦  «        }|j        dk    sJ ‚t          j        |ddd¬¦  «        }|j        dk    sJ ‚d S )	N)rš   rš   rQ   r   F)rŽ  re  )r{  rš   rP   )rš   r{  )rœ  r   r^  r˜  )r[   r\   rs   Úd0Úd1s        r`   Ú
test_shapezTestDecimate.test_shape)  so   € à�HŠH�XÑÔˆÝŒ_˜Q ¨°eÐ<Ñ<Ô<ˆØŒx˜8Ò#Ð#Ð#Ð#ÝŒ_˜Q ¨°eÐ<Ñ<Ô<ˆØŒx˜8Ò#Ð#Ð#Ð#Ð#Ð#rb   Tztest code is NumPy specificrx   c                 óÂ   — t          j        ¦   «         5  t          j        ddt          ¦  «         |                      dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrG  úBadly conditioned filterrl  F©r‚   re  ©rL  rM  rN  r)   Ú_test_phaseshiftr   s     r`   Útest_phaseshift_FIRz TestDecimate.test_phaseshift_FIR1  sÂ   € åÔ$Ñ&Ô&ð 	Bð 	BÝÔ#ØÐ4µoñGô Gð Gà×!Ò!¨¸5Ð!ÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bó   ”3AÁAÁAc                 óÂ   — t          j        ¦   «         5  t          j        ddt          ¦  «         |                      dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrG  rs  rl  Trt  ru  r   s     r`   Útest_zero_phase_FIRz TestDecimate.test_zero_phase_FIR8  sÂ   € åÔ$Ñ&Ô&ð 	Að 	AÝÔ#ØÐ4µoñGô Gð Gà×!Ò!¨¸4Ð!Ñ@Ô@Ð@ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Að 	Arx  c                 ó4   — |                       dd¬¦  «         d S )Nrb  Frt  ©rv  r   s     r`   Útest_phaseshift_IIRz TestDecimate.test_phaseshift_IIR?  s!   € à×Ò U°uÐÑ=Ô=Ð=Ð=Ð=rb   c                 ó4   — |                       dd¬¦  «         d S )Nrb  Trt  r|  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
        d¦  «        z  }|D �]8}	||	z  }
t          j        |	|z  dz   ¦  «        t          |	¦  «        z  }t          j        dt           j        z  |d d …t           j        f         z  |z  ¦  «        t          j         	                    |j
        d¦  «        z  }|d	k    r3d
}t          j        t          j        |dz   d|
z  d¬¦  «        d¦  «        }nI|dk    rCd}dt           j        z  |
z  }t          j        t          j        |d|t           j        z  ¦  «        Ž }|du rNt          j        |j        |j        ||z  dz  t           j        z  ¦  «        \  }}|t          j        |¦  «        z  }nt          j        |¦  «        }t          j        |j        |
|||¬¦  «        }t          j        |                     ¦   «         |z  d¬¦  «        }|t          j        |¦  «        z  }|d|	z  k     }t          j        |                     ¦   «         |z  ¦  «        |         }t1          |t          j        |¦  «        dd¬¦  «         �Œ:d S )NrS  )r{  r  rš   r?  rØ   rP   çš™™™™™é?rQ   rp   çš™™™™™¹?rl  rš   rÃ  rø  rã  rb  r¥   gš™™™™™©?F©rd  re  rª   r�  r&  rÿ   rg  )r  r‡   r  r�  r…  r,  r+  r   ÚwindowsÚtukeyrð   Údltir   Úcheby1Úfreqzró  Údenr-  rK  r^  r   r!  r»  Úangler4   rÃ  )r[   r‚   re  r2  r3  Út_totrú   r4  r¡   r5  r]  r6  Úd_tosr
  ÚsystemÚwcÚ_Úh_respsr8  Ú	h_resampsÚsubnyqrs  s                         r`   rv  zTestDecimate._test_phaseshiftG  sÒ  € àˆØ#Ð#Ð#ˆàˆÝŒI�d˜5‘j ‘lÑ#Ô#¥e¨D¡k¤kÑ1ˆõ ”˜Ñ"Ô" SÑ(¨1Ñ,ˆÝŒV�F�RœU‘N U¨1¨1¨1­b¬j¨=Ô%9Ñ9¸AÑ=Ñ>Ô>ÝŒ~×#Ò# A¤F¨CÑ0Ô0ñ1ˆð  ð #	2ñ #	2ˆGØ˜‘ˆAÝ”9˜W U™]¨1™_Ñ-Ô-µ°g±´Ñ>ˆDÝ”V˜F¥R¤U™N¨U°1°1°1µb´j°=Ô-AÑAÀDÑHÑIÔIÝ”~×+Ò+¨D¬I°sÑ;Ô;ñ<ˆEð ˜ŠˆØ�Ýœ¥V¤]°1°q±5¸"¸q¹&Ø:Cð&Eñ &Eô &EØFHñJô J��à˜5’�Ø�Ø�œ‘Y˜q‘[�Ýœ¥f¤m°A°t¸RÅÄ¹XÑ&FÔ&FÐG�ð ˜UÐ"Ð"Ý#œ\¨&¬*°f´jØ*/°©*°Q©,µr´uÑ*<ñ>ô >‘
��7à�2œ6 '™?œ?Ñ*��åœ, uÑ-Ô-�åœ¨¬°°1¸FØ3=ð?ñ ?ô ?ˆIõ œ˜uŸzšz™|œ|¨iÑ7¸bÐAÑAÔAˆIØ�œ 	Ñ*Ô*Ñ*ˆIØ˜S ™[Ò(ˆFõ ”X˜gŸlšl™nœn¨YÑ6Ñ7Ô7¸Ô?ˆFÝ˜F¥B¤M°&Ñ$9Ô$9Ø!%¨Dð2ñ 2ô 2ð 2ñ 2ðE#	2ð #	2rb   c                 ó  — d}d}|                      |¦  «        |z  }|                     |                     d|z  ¦  «        |                     d|j        z  |dz  z  |z  ¦  «        z  ¦  «        }t          |                     |                     |¦  «        ¦  «        |                     d¦  «        dd¬	¦  «         t          j        |d
d¬¦  «        }|                     |                     |¦  «        ¦  «        dk     sJ ‚d S )Ng      Y@r–  ri  rQ   g      >@rÃ  rÿ   F)rþ   Úcheck_0drš   rl  )rd  rR  )	r‡   rY   Úsqrtr  r,  r4   Údotr   r^  )r[   r\   Úsfreqr
  rú   rq   Úx_outs          r`   Útest_auto_nzTestDecimate.test_auto_ny  sä   € ð ˆØˆØ�IŠI�a‰LŒL˜5Ñ ˆà�JŠJ�r—w’w˜r A™v‘”¨¯ª°°B´E±	¸UÀS¹[Ñ0IÈAÑ0MÑ)NÔ)NÑNÑOÔOˆõ 	˜Ÿš §¢ a¡¤Ñ)Ô)¨2¯:ª:°b©>¬>ÀÈuÐUÑUÔUÐUÝ”  2¨UÐ3Ñ3Ô3ˆØ�wŠw�u—y’y Ñ'Ô'Ñ(Ô(¨4Ò/Ð/Ð/Ð/Ð/Ð/rb   c                 ó¬   — t          j        |                     d|j        ¬¦  «        d¦  «        }t	          |                     |¦  «        ¦  «        rJ ‚d S )Nr  r¨   rR   )r   r^  rp  rä   r	  Úisnanr_  s      r`   Útest_long_float32zTestDecimate.test_long_float32‡  sK   € õ ŒO˜BŸGšG F°"´*˜GÑ=Ô=¸rÑBÔBˆÝ�r—x’x ‘{”{Ñ#Ô#Ð#Ð#Ð#Ð#Ð#rb   c                 ó¤   — t          j        t          j        dt          j        ¬¦  «        d¦  «        }|j        j        t          j        k    sJ ‚d S )NrØ   r¨   rR   )r   r^  r  rp  rã   r©   r¶  rå   )r[   rq   s     r`   Útest_float16_upcastz TestDecimate.test_float16_upcast�  sA   € åŒO�BœG C­r¬zÐ:Ñ:Ô:¸BÑ?Ô?ˆØŒwŒ|�rœzÒ)Ð)Ð)Ð)Ð)Ð)rb   r†  c                 ó&  — d}d}d}t          j        d|                     d|j        z  |z  dz  ¦  «        d|¬¦  «        \  }}}|                     t
          ¦  «        |                     |                     d|j        z  |z  |z  ¦  «        ¦  «        z  }|                     t
          ¦  «        |                     |                     d|j        z  |z  |z  ¦  «        ¦  «        z  }t          j        |||¦  «        }|                     d¦  «        |z  }	|                     d|j        z  |z  |	z  ¦  «        d	|                     d
|j        z  |z  |	z  ¦  «        z  z   }
t          j	        |
d|d¬¦  «        }t          j
        g t          j        |||¦  «        ¢|
‘R Ž d d d…         }t          ||¦  «         t          j	        |
d|d¬¦  «        }t          j        g t          j        |||¦  «        ¢|
‘R Ž d d d…         }t          ||dd¬¦  «         d S )Nr  rM   ç     @�@rQ   rõ  )rÄ  Úfsrp   r  r&  rß  Frƒ  Tr  ç‚vIhÂ%<=rý   )r   r   rY   r,  r  r{  r…  r†  r‡   r^  r   r   r5   r   r4   )r[   r\   ÚfcentreÚfwidthr¡  rs   rU  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ñ 5ô 5‰ˆˆ1ˆaà�HŠH•WÑÔ §¢ r§z¢z°"°r´u±*¸wÑ2FÀrÑ2IÑ'JÔ'JÑ KÔ KÑKˆØ�HŠH•WÑÔ §¢ r§z¢z°"°r´u±*¸wÑ2FÀrÑ2IÑ'JÔ'JÑ KÔ KÑKˆÝ”˜Q  1Ñ%Ô%ˆà�IŠI�c‰NŒN˜RÑˆð �VŠV�B˜œ‘J Ñ(¨1Ñ,Ñ-Ô-Ø�R—V’V˜C "¤%™K¨'Ñ1°AÑ5Ñ6Ô6Ñ6ñ7ˆõ Œ˜q !¨6¸eÐDÑDÔDˆÝ”.ð $¥&¤-°°1°aÑ"8Ô"8ð $Ø!"ð$ð $ð $Ø$' C a Cô)ˆõ 	˜˜gÑ&Ô&Ð&åŒo˜a ¨&¸TÐBÑBÔBˆÝ”ð $¥&¤-°°1°aÑ"8Ô"8ð $Ø!"ð$ð $ð $Ø$' C 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          ||¦  «         d S )Nr  rM   r   r  rQ   )r¡  rp   r   rP   r  r&  rß  Frƒ  )r9  r:  rØ   Trã  )r   r   r  Úrootsr…  r,  Úpolyr†  r‡   r^  Ú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´  sz  € ð ˆàˆàˆØˆõ ”˜g v¨a¡x°BÐ7Ñ7Ô7ˆõ ”˜‘”ˆØ•r”v˜b¥2¤5™j¨7Ñ2°2Ñ5Ñ6Ô6Ñ6ˆà�1ŒX�œ ™œÑ%ˆå”˜R Ñ#Ô#ˆåŒI�c‰NŒN˜RÑˆõ ŒV�B�œ‘J Ñ(¨1Ñ,Ñ-Ô-Ø•R”V˜C¥"¤%™K¨'Ñ1°AÑ5Ñ6Ô6Ñ6ñ7ˆõ Œ˜q !¨6¸eÐDÑDÔDˆÝ”.  Q¨1°1Ð5Ñ5Ô5°d°s°dÔ;ˆå˜˜gÑ&Ô&Ð&åŒo˜a ¨&¸TÐBÑBÔBˆÝÔ% a¨¨A°bÐ9Ñ9Ô9ˆå˜˜VÑ$Ô$Ð$Ð$Ð$rb   N)r"  r#  r$  r`  ri  rm  rq  r%  rw  rz  r}  r  rv  r™  rœ  rž  r©  r³  rè   rb   r`   r[  r[    s§  € € € € € ðAð Að Að
1ð 1ð 1ð
1ð 1ð 1ð
$ð $ð $ð Ð˜dÐ+HÐIÑIÔIðBð Bñ JÔIðBð Ð˜dÐ+HÐIÑIÔIðAð Añ JÔIðAð Ð˜dÐ+HÐIÑIÔIð>ð >ñ JÔIð>ð Ð˜dÐ+HÐIÑIÔIð=ð =ñ JÔIð=ð02ð 02ð 02ðd0ð 0ð 0ð$ð $ð $ð*ð *ð *ð
 Ð˜d¨6Ð2Ñ2Ô2ð=ð =ñ 3Ô2ð=ðB Ð˜d¨6Ð2Ñ2Ô2ð"%ð "%ñ 3Ô2ð"%ð "%ð "%rb   r[  c                   ór   — e Zd Zd„ Zd„ Zd„ Zd„ Zej         	                    dddg¦  «        d„ ¦   «         Z
d	S )
ÚTestHilbertc                 óÌ   — |                      dg¦  «        }t          t          t          |¦  «         |                     d¦  «        }t          t          t          |d¬¦  «         d S )NrÆ   rà  r   ©r¬  )rY   rº   r»   r   r‡   r_  s      r`   r`  zTestHilbert.test_bad_argsÜ  sS   € Ø�JŠJ˜
�|Ñ$Ô$ˆÝ•j¥'¨1Ñ-Ô-Ð-Ø�IŠI�c‰NŒNˆÝ•j¥'¨1°Ð2Ñ2Ô2Ð2Ð2Ð2rb   c           	      óì  — d}|j         }|                     dd|z  |dz  |j        ¬¦  «        }|                     |¦  «        }|                     |¦  «        }|                     d|z  ¦  «        }|                     d|z  ¦  «        }|                     ||||g¦  «        }	t          |	¦  «        }
|                     |
¦  «        }|                     | 	                    |
¦  «        | 
                    |
¦  «        ¦  «        }| 
                    |
¦  «        }t          ||	|¦  «         t          ||                     |	j        ¦  «        |¦  «         t          |dd d…f         |                     | dz  |dz  |dz  |j        ¬¦  «        |¦  «         t          |dd d…f         |                     d||dz  |j        ¬¦  «        |¦  «         t          |dd d…f         |                     | dz  |dz  |dz  |j        ¬¦  «        |¦  «         t          |dd d…f         |                     d||dz  |j        ¬¦  «        |¦  «         t          | 	                    |
dd d …f         ¦  «        ||¦  «         d S )	Nr   r   rQ   rÞ  r¨   rP   rÝ  rK   )r,  r‡   rå   r  rÿ  r  r   r-  Úatan2r¹  r   r;   rp  r˜  )r[   r\   rÒ  r,  rú   rI  Úa1Úa2Úa3r]   r6  Úh_absÚh_angleÚh_reals                 r`   Útest_hilbert_theoreticalz$TestHilbert.test_hilbert_theoreticalâ  si  € àˆàŒUˆØ�IŠI�a˜˜R™  c¡°´ˆIÑ<Ô<ˆØ�VŠV�A‰YŒYˆØ�VŠV�A‰YŒYˆØ�VŠV�A˜‘E‰]Œ]ˆØ�VŠV�A˜‘E‰]Œ]ˆØ�HŠH�b˜"˜b "Ð%Ñ&Ô&ˆå�A‰JŒJˆØ—’�q‘	”	ˆà—(’(˜2Ÿ7š7 1™:œ: r§w¢w¨q¡z¤zÑ2Ô2ˆØ—’˜‘”ˆõ 	˜F A wÑ/Ô/Ð/å˜E 2§7¢7¨1¬7Ñ#3Ô#3°WÑ=Ô=Ð=õ 	˜G A t¨ t GÔ,ØŸIšI r c¨A¡g¨r°A©v°r¸C±xÀrÄz˜IÑRÔRØ#ñ	%ô 	%ð 	%õ
 	Ø�A�t˜�t�GÔ˜bŸiši¨¨2¨r°C©x¸r¼z˜iÑJÔJÈGñ	Uô 	Uð 	Uõ 	˜G A t¨ t GÔ,ØŸIšI r c¨A¡g¨r°A©v°r¸C±xÀrÄz˜IÑRÔRØ#ñ	%ô 	%ð 	%õ 	Ø�A�t˜�t�GÔ˜bŸiši¨¨2¨r°C©x¸r¼z˜iÑJÔJÈGñ	Uô 	Uð 	Uõ 	˜BŸGšG A a¨¨¨ d¤GÑ,Ô,¨b°'Ñ:Ô:Ð:Ð:Ð:rb   c                 óP  — |                      |                     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¢¦  «        }| 
                    |¦  «        }t          |dd d …f         |dd¬¦  «         d S )Nrw  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   r†  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Ô6¸Ñ?Ô?ˆå�Q˜RÐ Ñ Ô ˆÝ� ¤¨!Ð,Ñ,Ô,¨b¬dÑ3Ô3Ð3å�G A a¨¨¨ d¤GÑ,Ô,¨b°°A°A°A°¬h¸Ñ;Ô;Ð;õ �a˜2 BÐ'Ñ'Ô'ˆØŒy˜GÒ#Ð#Ð#Ð#Ý�q”s˜b qÐ)Ñ)Ô)Ô/°7Ò:Ð:Ð:Ð:õ ”ð Fð Fð Fñ Gô Gˆð( —’˜FÑ#Ô#ˆÝ˜C  1 1 1 œI v¨r¸>ÐJÑJÔJÐJÐJÐJrb   c                 ó,  — |                      |                     d|j        ¬¦  «        d¦  «        }t          |d¬¦  «        }dD ]O}t          |                     |d|¦  «        |¬¦  «        }|                     ||d¦  «        }t          ||¦  «         ŒPd S )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  sœ   € Ø�JŠJ�r—y’y °"´*�yÑ=Ô=¸yÑIÔIˆå�Q˜RÐ Ñ Ô ˆØð 	%ð 	%ˆDÝ˜"Ÿ+š+ a¨¨TÑ2Ô2¸Ð>Ñ>Ô>ˆCØ—+’+˜c 4¨Ñ,Ô,ˆCÝ˜B Ñ$Ô$Ð$Ð$ð	%ð 	%rb   r©   rä   rå   c                 ó®   — t          ||¦  «        }|                     d|¬¦  «        }|                     t          |¦  «        ¦  «        j        |k    sJ ‚d S )Nr¥   r¨   )r”  rœ  r   r   r©   r•  s       r`   Útest_hilbert_typeszTestHilbert.test_hilbert_types;  sT   € å˜˜EÑ"Ô"ˆØ—8’8˜A U�8Ñ+Ô+ˆØ�wŠw•w˜xÑ(Ô(Ñ)Ô)Ô/°5Ò8Ð8Ð8Ð8Ð8Ð8rb   N)r"  r#  r$  r`  rÀ  rÅ  rÉ  r£  r¤  r¥  rË  rè   rb   r`   rµ  rµ  Ù  sˆ   € € € € € ð3ð 3ð 3ð(;ð (;ð (;ðT$Kð $Kð $KðL%ð %ð %ð „[×Ò˜W y°)Ð&<Ñ=Ô=ð9ð 9ñ >Ô=ð9ð 9ð 9rb   rµ  c                   óö  — e Zd ZdZ edd¬¦  «        d„ ¦   «         Zd„ Z edd¬	¦  «        d
„ ¦   «         Zej	         
                    dddg¦  «        d„ ¦   «         Zd„ Zd„ Zej	         
                    dg d¢¦  «         edd¬	¦  «        d„ ¦   «         ¦   «         Zej	         
                    dg d¢¦  «        d„ ¦   «         Zej	         
                    dddg¦  «        ej	         
                    dddg¦  «        ej	         
                    dddg¦  «        ej	         
                    dg d ¢¦  «         edd!¬	¦  «        d"„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z edd!¬	¦  «        d#„ ¦   «         Zd$S )%ÚTestHilbert2z!Test function `signal.hilbert2`. Túlist inputs are numpy-specificrx   c                 ó0   — t          g d¢g d¢g¦  «         d S )NrO   r–   ©r   r   s     r`   rè  zTestHilbert2.test_array_likeF  s#   € å�)�)�)˜Y˜Y˜YÐ'Ñ(Ô(Ð(Ð(Ð(rb   c                 ó   — |                      |                     d¦  «        d¦  «        }t          j        t          d¬¦  «        5  t          |                     dgg¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          |d¬	¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  t          |d¬	¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  t          |d¬	¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z$Raise all exceptions in `hilbert2`. r˜   rq  z^x must be real.rH  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   r_  s      r`   r`  zTestHilbert2.test_bad_argsJ  s1  € à�JŠJ�r—y’y ‘}”} fÑ-Ô-ˆÝŒ]�:Ð-?Ð@Ñ@Ô@ð 	1ð 	1Ý�R—Z’Z *  Ñ/Ô/Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1åŒ]�:Ð-CÐDÑDÔDð 	ð 	Ý�Q˜"ÐÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åŒ]�:Ð-RÐSÑSÔSð 	%ð 	%Ý�Q˜)Ð$Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%åŒ]�:Ð-RÐSÑSÔSð 	"ð 	"Ý�Q˜&Ð!Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"sH   Á%A6Á6A:Á=A:ÂB:Â:B>ÃB>Ã C>Ã>DÄDÄ$EÅEÅ
Er’   z,CuPy's hilbert2 does not have axes= argumentrH   c                 ój  — |                      |                     d¦  «        d¦  «        }t          j        t          d¬¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr˜   rq  z!^axes must be a tuple of length 2rH  r)  r¯  z"^axes must contain 2 distinct axesr¼  )r†   r‡   r£  r   r»   r   r_  s      r`   Útest_bad_args2zTestHilbert2.test_bad_args2V  s*  € à�JŠJ�r—y’y ‘}”} fÑ-Ô-ˆÝŒ]�:Ð-PÐQÑQÔQð 	(ð 	(Ý�Q˜YÐ'Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(åŒ]�:Ð-QÐRÑRÔRð 	%ð 	%Ý�Q˜VÐ$Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s$   ÁA#Á#A'Á*A'Â	B(Â(B,Â/B,r©   rä   rå   c                 ó¼   — t          ||¦  «        }|                     d|¬¦  «        }|                     t          j        |¦  «        ¦  «        }|j        |k    sJ ‚d S )N)rQ   rU   r¨   )r”  rœ  r   r   r   r©   )r[   r©   r\   r–  rÉ   s        r`   Útest_hilbert2_typesz TestHilbert2.test_hilbert2_types^  sZ   € å˜˜EÑ"Ô"ˆØ—8’8˜G¨5�8Ñ1Ô1ˆØ�gŠg•f”o hÑ/Ô/Ñ0Ô0ˆØŒy˜EÒ!Ð!Ð!Ð!Ð!Ð!rb   c                 óþ   — |                      g d¢¦  «        }t          j        |                     |d¦  «        ¦  «        }t          j        |                     |d¦  «        ¦  «        }t	          ||j        ¦  «         dS )zNeeded for 100% coverage )r*  rÃ  rÃ  r*  rj  rj  )rN   rP   ©rP   rN   N)rY   r   r   r†   r4   r†  )r[   r\   rq   Úx0aÚx1as        r`   Útest_1d_inputzTestHilbert2.test_1d_inpute  sl   € à�JŠJÐ1Ð1Ð1Ñ2Ô2ˆÝŒo˜bŸjšj¨¨FÑ3Ô3Ñ4Ô4ˆÝŒo˜bŸjšj¨¨FÑ3Ô3Ñ4Ô4ˆÝ˜˜SœUÑ#Ô#Ð#Ð#Ð#rb   c                 ó”   — |                      d¦  «        }t          |d¬¦  «        }t          |d¬¦  «        }t          ||¦  «         dS )z%Compare passing tuple to single int. r’  rL   r·  rq  N)rœ  r   r5   )r[   r\   rq   Úx0_aÚx1_as        r`   Útest_parameter_NzTestHilbert2.test_parameter_Nl  sM   € à�HŠH�VÑÔˆÝ˜˜QÐÑÔˆÝ˜˜VÐ$Ñ$Ô$ˆÝ˜˜dÑ#Ô#Ð#Ð#Ð#rb   r˜  ))rL   rM   )rM   rL   rq  r’  z)Bug in cupy implementation, see cupy#9396c                 óN  — |                      ||j        ¬¦  «        }|dxx         dz  cc<   |                     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          || 	                    |¦  «        |¬
¦  «         dS )z8Compare desired and calculated values in Fourier space. r¨   r¼  r—   rP   r   rQ   Nr)  rL   r„   )
rp  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Ô1ˆØˆEˆ
ˆ
Œ
�a‰ˆ
ˆ
‰
Ø�GŠG•F”L Ñ%Ô%Ñ&Ô&ˆå˜‰{Œ{ˆÝ”˜TÑ"Ô"ˆõ ˜q 5¨¤8¨a¡<°AÑ"5Ñ6Ô6½¸uÀQ¼xÈ!¹|ÐPQÑ>QÐSWÑ8XÔ8X�ˆÝ˜q 5¨¤8¨a¡<°AÑ"5Ñ6Ô6½¸uÀQ¼xÈ!¹|ÐPQÑ>QÐSWÑ8XÔ8X�ˆàˆÝ˜˜v v˜~Ô.°°F¸F°NÔ0CÀaÑ0GÈdÐSÑSÔSÐSÝ˜˜q &˜yÔ)¨3¨q°&¨y¬>¸AÑ+=ÀDÐIÑIÔIÐIÝ˜˜v q˜yÔ)¨3¨v°q¨y¬>¸AÑ+=ÀDÐIÑIÔIÐIÝ˜˜tœ c¨$¤i°dÐ;Ñ;Ô;Ð;Ø˜ ˜Ô(ˆÝ˜ §¢¨wÑ!7Ô!7¸dÐCÑCÔCÐCÐCÐCrb   c                 óþ  — |d         dz  }|d         dz  }|                      |¦  «        }d||dz
  |dz   f<   d||dz   |dz
  f<   t          j        |¦  «        }|                     t          j        |¦  «        ¦  «        }|                     t          |¦  «        ¦  «        dk    sJ ‚t          |¦  «        }t          || 	                    |¦  «        | 
                    |j        ¦  «        j        dz  ¬¦  «         dS )	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ŒoˆØ!ˆˆB�‰F�B˜‘FˆNÑØ!ˆˆB�‰F�B˜‘FˆNÑÝÔ˜sÑ#Ô#ˆØ�GŠG•F”L Ñ%Ô%Ñ&Ô&ˆØ�vŠv•c˜!‘f”f‰~Œ~ Ò#Ð#Ð#Ð#Ý˜‰{Œ{ˆÝ˜˜bŸmšm¨DÑ1Ô1¸¿ºÀÄÑ8LÔ8LÔ8PÐQSÑ8SÐTÑTÔTÐTÐTÐTrb   Úsh0rL   rM   Úsh1rN   r—   Úsh2r¥   r/  Únot_axisr)  z,cupy implementation does not have axes kwargc                 ó`  — |                      |                     ||z  |z  |j        ¬¦  «        |||f¦  «        }g d¢}|                     |¦  «         t	          ||¬¦  «        }|                     ||¬¦  «        }	d„ |	D ¦   «         }
|                     |
|¬¦  «        }
t          ||
¦  «         dS )z?2d transform on 3d array is equal to 2d transform on 2d slices.r¨   r)  r¯  r�  c                 ó,   — g | ]}t          |¦  «        ‘ŒS rè   rÐ  )ré   rU  s     r`   rí   z1TestHilbert2.test_3d_vs_slice.<locals>.<listcomp>¦  s   € Ð.Ð.Ð. 1•8˜A‘;”;Ð.Ð.Ð.rb   N)r†   r‡   rå   Úpopr   Úunstackr  r4   )r[   rð  rñ  rò  ró  r\   rq   Útransform_axesÚx_as_3dÚpartsÚx_as_2ds              r`   Útest_3d_vs_slicezTestHilbert2.test_3d_vs_sliceš  sº   € ð �JŠJ�r—y’y  s¡¨S¡¸¼
�yÑCÔCÀcÈ3ÐPSÀ_ÑUÔUˆØ"˜˜ˆØ×Ò˜8Ñ$Ô$Ð$Ý˜1 >Ð2Ñ2Ô2ˆØ—
’
˜1 8�
Ñ,Ô,ˆØ.Ð.¨Ð.Ñ.Ô.ˆØ—(’(˜7¨�(Ñ2Ô2ˆÝ˜ Ñ)Ô)Ð)Ð)Ð)rb   c                 óÀ  — |                      |                     d|j        ¬¦  «        d¦  «        }t          |¦  «        }|                     |dd¦  «        }t          |d¬¦  «        }|                     |dd¦  «        }t          ||¦  «         |                     |dd¦  «        }t          |d	¬¦  «        }|                     |dd¦  «        }t          ||¦  «         d
S )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ÔJˆÝ˜‘”ˆà�[Š[˜˜Q Ñ"Ô"ˆÝ˜ &Ð)Ñ)Ô)ˆØ—’˜E 1 aÑ(Ô(ˆÝ˜˜uÑ%Ô%Ð%à�[Š[˜˜Q Ñ"Ô"ˆÝ˜ &Ð)Ñ)Ô)ˆØ—’˜E 1 aÑ(Ô(ˆÝ˜˜uÑ%Ô%Ð%Ð%Ð%rb   N)r"  r#  r$  Ú__doc__r%  rè  r`  rÓ  r£  r¤  r¥  rÕ  rÚ  rÞ  rê  rï  rü  r  rè   rb   r`   rÍ  rÍ  B  sC  € € € € € à+Ð+àÐ˜dÐ+KÐLÑLÔLð)ð )ñ MÔLð)ð
"ð 
"ð 
"ð Ð�fÐ%SÐTÑTÔTð%ð %ñ UÔTð%ð „[×Ò˜W y°)Ð&<Ñ=Ô=ð"ð "ñ >Ô=ð"ð$ð $ð $ð$ð $ð $ð „[×Ò˜WÐ&FÐ&FÐ&FÑGÔGØÐ�fÐ%PÐQÑQÔQðDð Dñ RÔQñ HÔGðDð, „[×Ò˜WÐ&FÐ&FÐ&FÑGÔGðUð Uñ HÔGðUð „[×Ò˜U Q¨ FÑ+Ô+Ø„[×Ò˜U Q¨ FÑ+Ô+Ø„[×Ò˜U Q¨ FÑ+Ô+Ø„[×Ò˜Z¨¨¨Ñ3Ô3ØÐ�fÐ%SÐTÑTÔTð	*ð 	*ñ UÔTñ 4Ô3ñ ,Ô+ñ ,Ô+ñ ,Ô+ð
	*ð Ð�fÐ%SÐTÑTÔTð&ð &ñ UÔTð&ð &ð &rb   rÍ  c                   óê  — e Zd ZdZed„ ¦   «         Zd„ Z edd¬¦  «        d„ ¦   «         Z edd¬¦  «        e	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
                             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
                             d)g d*¢g d+¢g¦  «        d,„ ¦   «         ¦   «         Zd-„ Zd.S )/ÚTestEnvelopez4Unit tests for function `._signaltools.envelope()`. c                 óp   — t          |¦  «        |j        k    rdddœndddœ}	 t          | |fi |¤d|i¤Ž d S )Nr)  rg  r   r  )r>   rå   r4   )rw  r  rO  r\   Úa_r_tols        r`   Úassert_closezTestEnvelope.assert_close¿  sh   € õ ' rÑ*Ô*¨b¬jÒ8Ð8ð "¨5Ð1Ð1Ð1à!%¨tÐ4Ð4ð 	ð
 	HÝ˜ Ð@Ð@¨7Ð@Ð@¸CÐ@Ð@Ð@Ð@Ð@Ð@rb   c                 ó†  — t          j        t          d¬¦  «        5  t          t	          j        d¦  «        d¬¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          |                     d¦  «        d	¬¦  «         ddd¦  «         n# 1 swxY w Y   d
D ]…}d                     t          t          |¦  «        ¦  «        }t          j        t          d|› d�¬¦  «        5  t          |                     d¦  «        |¬¦  «         ddd¦  «         n# 1 swxY w Y   Œ†t          j        t          d¬¦  «        5  t          |                     d¦  «        d¬¦  «         ddd¦  «         n# 1 swxY w Y   dD ]Y}t          j        t          d¬¦  «        5  t          |                     d¦  «        |¬¦  «         ddd¦  «         n# 1 swxY w Y   ŒZt          j        t          d¬¦  «        5  t          |                     d¦  «        d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z[For `envelope()` Raise all exceptions that are used to verify function
        parameters. z'Invalid parameter axis=2 for z.shape=.*rH  rK   rQ   r�  Nz&z.shape\[axis\] not > 0 for z.shape=.*)rK   r   rP   )r)  )r   ri  )Nri  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%  )rH  ))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  rp  Újoinri  r·  )r[   r\   r	  Útss       r`   Ú test_envelope_invalid_parametersz-TestEnvelope.test_envelope_invalid_parametersÉ  sÀ  € õ Œ]�:Ø!KðMñ Mô Mð 	)ð 	)å•R”W˜Q‘Z”Z aÐ(Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)õ Œ]�:Ø!JðLñ Lô Lð 	.ð 	.å�R—W’W˜V‘_”_¨1Ð-Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 6ð 	2ð 	2ˆEØ—’�3�s E™?œ?Ñ+Ô+ˆBÝ”�zØ%L°Ð%LÐ%LÐ%LðNñ Nô Nð 2ð 2õ ˜Ÿš ™œ¨5Ð1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2øõ Œ]�:Ø!LðNñ Nô Nð 	,ð 	,õ �R—W’W˜Q‘Z”Z sÐ+Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 0ð 	2ð 	2ˆEÝ”�zØ%NðPñ Pô Pð 2ð 2å˜Ÿš ™œ¨5Ð1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2øõ Œ]�:Ð-MÐNÑNÔNð 	7ð 	7å�R—W’W˜Q‘Z”Z¨+Ð6Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7sk   œ$AÁAÁAÁ2%B#Â#B'Â*B'Ã9%D*Ä*D.	Ä1D.	Å%FÆFÆ	FÆ,%GÇG!	Ç$G!	È%H6È6H:È=H:rF   zXXX: immutable arraysrH   c           
      óV  — t          |¦  «        }||j        k    r|j        n|j        }|                     g d¢|¬¦  «        }|                     g d¢|¬¦  «        }t          j        |¦  «        }|j        d         }|                     t          |ddd¬¦  «        ¦  «        \  }}	|  
                    t          j        |¦  «        |                     g d	¢|¬¦  «        d
|¬¦  «         |  
                    t          j        |	¦  «        |                     g d¢|¬¦  «        d|¬¦  «         |                     t          |ddd¬¦  «        ¦  «        \  }
}|  
                    |
dz  |d|¬¦  «         |  
                    ||	d|¬¦  «         |                     t          |dddd|z  ¬¦  «        ¦  «        \  }}|  
                    |ddd…         |d|¬¦  «         |  
                    |ddd…         |	d|¬¦  «         |                     t          |ddd¬¦  «        ¦  «        \  }}|  
                    ||d|¬¦  «         |  
                    t          j        |¦  «        |                     g d¢|¬¦  «        d|¬¦  «         t          |ddd¬¦  «        }|  
                    ||d|¬¦  «         |                     |d¬¦  «        }|dd…xx         dz  cc<   t          j        ||¬¦  «        }|  
                    |                     |¦  «        |d|¬¦  «         |                     t          |ddd¬¦  «        ¦  «        \  }}|  
                    ||                     ||¦  «        d |¬¦  «         |  
                    t          j        |¦  «        |                     ||¬¦  «        d!|¬¦  «         dS )"zEEnsure that the various parametrizations produce compatible results. )rl  rQ   rQ   rK   r   r¨   )rl  r   r   rN   r   r   r   r   r   rê  ÚallT©r  Úsquared©rL   rQ   r   r   r   úEnvelope calculation error©rO  r\   )rL   r   r   rK   r   úResidual calculation errorFrQ   z3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrK   )r  r  rH  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ä  sK  € õ   Ñ#Ô#ˆØ# r¤zÒ1Ð1ˆrŒ|ˆ|°r´}ˆà�JŠJÐ(Ð(Ð(°ˆJÑ5Ô5ˆØ�zŠzÐ4Ð4Ð4¸DˆzÑAÔAˆÝŒL˜‰OŒOˆØŒG�AŒJˆð —j’j¥¨!¨V¸eÈTÐ!RÑ!RÔ!RÑSÔS‰ˆˆtØ×Ò�&œ+ eÑ,Ô,ØŸ*š* _ _ _¸D˜*ÑAÔAØ:¸rð 	ñ 	Cô 	Cð 	Cð 	×Ò�&œ+ dÑ+Ô+ØŸ*š* _ _ _¸D˜*ÑAÔAØ:¸rð 	ñ 	Cô 	Cð 	Cð —Z’Z¥¨¨F¸UÈEÐ RÑ RÔ RÑSÔS‰
ˆˆdØ×Ò˜$ ™' 5ØSØð 	ñ 	!ô 	!ð 	!ð 	×Ò˜$ ØSØð 	ñ 	!ô 	!ð 	!ð —j’jÝ�Q˜¨¸ÀAÀaÁCÐHÑHÔHñ
ô 
‰ˆˆtð 	×Ò˜%   ! œ* eØHÈRð 	ñ 	Qô 	Qð 	Qà×Ò˜$˜s˜s ˜sœ) TØHÈRð 	ñ 	Qô 	Qð 	Qð —j’j¥¨!¨V¸iÐQUÐ!VÑ!VÔ!VÑWÔW‰ˆˆtØ×Ò˜% ØOÐTVð 	ñ 	Xô 	Xð 	Xà×Ò�&œ+ dÑ+Ô+ØŸ*š* _ _ _¸D˜*ÑAÔAØOÐTVð 	ñ 	Xô 	Xð 	Xõ ˜˜F¨T¸4Ð@Ñ@Ô@ˆØ×Ò˜% ØJÈrð 	ñ 	Sô 	Sð 	Sð �jŠj˜ ˆjÑ&Ô&ˆØˆAˆBˆBˆˆŒ�1‰ˆˆ‰ÝŒk˜# Ð#Ñ#Ô#ˆØ×Ò˜"Ÿ'š' #™,œ,¨Ø?ÀBð 	ñ 	Hô 	Hð 	Hà—j’j¥¨#¨vÀÈtÐ!TÑ!TÔ!TÑUÔU‰ˆˆtØ×Ò˜% §¢¨5°$Ñ!7Ô!7ØBÀrð 	ñ 	Kô 	Kð 	Kà×Ò�&œ* TÑ*Ô*¨B¯JªJ°tÀ4¨JÑ,HÔ,HØBÀrð 	ñ 	Kô 	Kð 	Kð 	Kð 	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        ¬¦  «        }t          j        |¦  «        }|                     t          ||dd¬¦  «        ¦  «        \  }}|                     t          ||dd¬¦  «        ¦  «        \  }	}
d„ |||	|
fD ¦   «         \  }}}}|                      ||j        ¬¦  «        }|                      ||j        ¬¦  «        }|                      ||d|¬¦  «         |                      ||d	|¬¦  «         |d
         �d||d
         d…<   |                      ||d|¬¦  «         |                      ||d|¬¦  «         dS )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   ó>   K  — | ]}t          j        |¦  «        V — Œd S rü  ©r  r  ©ré   Úz_s     r`   r[  z:TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>:  s*   è è € Ð!UÐ!U°b¥&¤+¨b¡/¤/Ð!UÐ!UÐ!UÐ!UÐ!UÐ!Urb   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  sÈ  € ð( �JŠJ�q ¤
ˆJÑ+Ô+ˆØ—j’j °B´J�jÑ?Ô?ˆØ—Z’Z 
°"´*�ZÑ=Ô=ˆ
åŒL˜‰OŒOˆØ—*’*�X a¨¸ÈÐMÑMÔMÑNÔN‰ˆˆRØŸ
š
¥8¨A¨u¸yÐRVÐ#WÑ#WÔ#WÑXÔX‰ˆ�Ø!UÐ!U¸SÀ"ÀfÈeÐ<TÐ!UÑ!UÔ!UÑˆˆR�˜à—j’j °B´M�jÑBÔBˆØ—Z’Z 
°"´-�ZÑ@Ô@ˆ
Ø×Ò˜#˜{ØKÐPRð 	ñ 	Tô 	Tð 	Tà×Ò˜"˜jØKÐPRð 	ñ 	Tô 	Tð 	Tð �Œ8ÐØ$%ˆJ�u˜Q”x�y�yÑ!Ø×Ò˜& +ØOÐTVð 	ñ 	Xô 	Xð 	Xà×Ò˜% ØOÐTVð 	ñ 	Xô 	Xð 	Xð 	Xð 	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        ¬¦  «        }t          j        t          j        |¦  «        ¦  «        }|                     t          ||dd¬¦  «        ¦  «        \  }}d„ ||fD ¦   «         \  }	}
|                      |	|d|¬¦  «         |                      |
|d|¬¦  «         d	S )
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   ób   K  — | ]*}t          j        t          j        |¦  «        ¦  «        V — Œ+d S rü  ©r  Úfftshiftr
   r2  s     r`   r[  z=TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>]  s4   è è € ÐGÐG°r•6”?¥6¤:¨b¡>¤>Ñ2Ô2ÐGÐGÐGÐGÐGÐGrb   r  r  r  N)	rY   rå   r®   r  r  rì  r÷  r   r  )r[   r  r	  r4  r5  r\   rs   r6  r7  r:  r;  s              r`   Útest_envelope_complex_signalsz*TestEnvelope.test_envelope_complex_signalsJ  s  € ð �JŠJ�q ¤
ˆJÑ+Ô+ˆØ—j’j °B´M�jÑBÔBˆØ—Z’Z 
°"´-�ZÑ@Ô@ˆ
åŒK�Ô(¨Ñ+Ô+Ñ,Ô,ˆØ—*’*�X a¨¸ÈÐMÑMÔMÑNÔN‰ˆˆRØGÐG¸cÀ2¸YÐGÑGÔG‰ˆˆRà×Ò˜#˜{Ø:¸rð 	ñ 	Cô 	Cð 	Cà×Ò˜"˜jØ:¸rð 	ñ 	Cô 	Cð 	Cð 	Cð 	Crb   c                 óØ  — t          |¦  «        }||j        k    r|j        n|j        }t	          j        |                     g d¢g d¢g|¬¦  «        ¦  «        }|                     g d¢g d¢g|¬¦  «        }|                     g d¢g d¢g|¬¦  «        }|                     t          |dd	¬
¦  «        ¦  «        \  }}|                     t          |j	        dd¬
¦  «        ¦  «        \  }	}
d„ ||	j	        ||
j	        fD ¦   «         \  }}}}|  
                    ||d|¬¦  «         |  
                    ||d|¬¦  «         |  
                    ||d|¬¦  «         |  
                    ||d|¬¦  «         dS )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   ó>   K  — | ]}t          j        |¦  «        V — Œd S rü  r1  r2  s     r`   r[  zCTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>q  s*   è è € ÐOÐO°�FœK¨™OœOÐOÐOÐOÐOÐOÐOrb   ú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   r†  r  )r[   r\   r  r  rs   r4  r5  r6  r7  Úye2TÚyrTr:  ÚYe2r;  ÚYrs                  r`   Ú#test_envelope_verify_axis_parameterz0TestEnvelope.test_envelope_verify_axis_parameterd  s´  € õ   Ñ#Ô#ˆØ# r¤zÒ1Ð1ˆrŒ|ˆ|°r´}ˆåŒL˜ŸšÐ%6Ð%6Ð%6¸¸¸Ð$HÐPT˜ÑUÔUÑVÔVˆØ—j’j / / /Ð3CÐ3CÐ3CÐ!DØ'+ð !ñ -ô -ˆà—Z’Z   °/°/°/Ð BÈ$�ZÑOÔOˆ
à—*’*�X a°¸AÐ>Ñ>Ô>Ñ?Ô?‰ˆˆRØ—J’J�x¨¬°TÀÐBÑBÔBÑCÔC‰	ˆˆcØOÐO°s¸D¼FÀBÈÌÐ6NÐOÑOÔOÑˆˆS�"�bà×Ò˜#˜{Ð0OÐTVÐÑWÔWÐWØ×Ò˜"˜jÐ/NÐSUÐÑVÔVÐVØ×ÒØ�Ð"FÈ2ð 	ñ 	
ô 	
ð 	
ð 	×ÒØ�
Ð DÈð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rb   c                 ó  — t          |¦  «        }||j        k    r|j        n|j        }|                     g d¢g d¢g|¬¦  «        }t          j        t          j        |d¬¦  «        ¦  «        }|                     g d¢g d¢g|¬¦  «        }|                     g d¢g d¢g|¬¦  «        }t          d	d
d¬¦  «        }| 	                    t          |fddi|¤Ž¦  «        \  }	}
| 	                    t          |j        fddi|¤Ž¦  «        \  }}d„ |	|j        |
|j        fD ¦   «         \  }}}}|                      ||d|¬¦  «         |                      ||d|¬¦  «         |                      ||d|¬¦  «         |                      ||d|¬¦  «         dS )zBTest for multi-channel envelope calculations with complex values. )rÃ  rM   r   rM   rQ   )rP   rR   r   rR   rQ   r¨   rP   r¯  r?  )r  r   r?  r   r  rA  r@  r  T)r	  r  r  rŽ  r   c              3   óf   K  — | ],}t          j        t          j        |¦  «        d ¬¦  «        V — Œ-dS )rP   r¯  NrD  r2  s     r`   r[  zKTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>‰  sU   è è € ð @ð @Ø "õ #œO­F¬J°r©N¬NÀÐCÑCÔCð @ð @ð @ð @ð @ð @rb   rI  r  rJ  rK  rL  N)r>   rä   ræ   r®   rY   r  r  rì  rH  r÷  r   r†  r  )r[   r\   r  r  Úinprs   ÚZe2_desÚZr_desÚkwr6  r7  rM  rN  r:  rO  r;  rP  s                    r`   Ú+test_envelope_verify_axis_parameter_complexz8TestEnvelope.test_envelope_verify_axis_parameter_complex|  së  € õ   Ñ#Ô#ˆØ# r¤zÒ1Ð1ˆrŒ|ˆ|°r´}ˆØ�jŠjÐ+Ð+Ð+Ð->Ð->Ð->Ð?ÀtˆjÑLÔLˆÝŒK�Ô(¨°1Ð5Ñ5Ô5Ñ6Ô6ˆØ—*’*Ð.Ð.Ð.Ð0BÐ0BÐ0BÐDÈD�*ÑQÔQˆØ—’˜_˜_˜_¨o¨o¨oÐ>Àd�ÑKÔKˆå˜¨%¸Ð>Ñ>Ô>ˆØ—*’*�X aÐ6Ð6¨aÐ6°2Ð6Ð6Ñ7Ô7‰ˆˆRØ—J’J�x¨¬Ð:Ð:°!Ð:°rÐ:Ð:Ñ;Ô;‰	ˆˆcð@ð @Ø'*¨D¬F°B¸¼Ð&>ð@ñ @ô @ÑˆˆS�"�bð 	×Ò˜#˜wÐ,KÐPRÐÑSÔSÐSØ×Ò˜"˜fÐ*IÈbÐÑQÔQÐQØ×ÒØ�ÐCÈð 	ñ 	
ô 	
ð 	
ð 	×Ò˜"˜fÐ+OÐTVÐÑWÔWÐWÐWÐWrb   ÚX)rL   r   r   rP   rQ   )rL   r   r   rQ   rP   rQ   c                 ó   — |                      ||j        ¬¦  «        }t          j        |¦  «        }|                     t          |¦  «        ¦  «        }t          |dd¬¦  «        }|                      ||d|¬¦  «         dS )z0Compare output of `envelope()` and `hilbert()`. r¨   r-  Nr  z!Hilbert-Envelope comparison errorr  )rY   rå   r  r  r-  r   r   r  )r[   rY  r\   rq   Úe_hilÚe_envs         r`   Útest_compare_envelope_hilbertz*TestEnvelope.test_compare_envelope_hilbert“  sx   € ð �JŠJ�q ¤
ˆJÑ+Ô+ˆÝŒL˜‰OŒOˆØ—’•w˜q‘z”zÑ"Ô"ˆÝ˜˜L°4Ð8Ñ8Ô8ˆØ×Ò˜% Ð,OÐTVÐÑWÔWÐWÐWÐ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        ¦  «        d¬¦  «         d
S )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  )rH  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 Q™KœK¨eÐ4Ñ4Ô4Ð4Ý˜ ¨Ð/Ñ/Ô/Ð/å˜�BœH Q¨b¬hÐ7Ñ7Ô7¸eÐDÑDÔDÐDÝ˜ §	¢	¨"¬(Ñ 3Ô 3¸%Ð@Ñ@Ô@Ð@Ð@Ð@rb   N)r"  r#  r$  r  Ústaticmethodr  r  r%  r+  r£  r¤  r¥  r>  rF  rQ  rX  r]  re  rè   rb   r`   r  r  »  sý  € € € € € à>Ð>àðAð Añ „\ðAð7ð 7ð 7ð6 Ð�kÐ*AÐBÑBÔBð8Kð 8Kñ CÔBð8Kðt Ð�kÐ*AÐBÑBÔBØ„[×ÒØJØ
ˆ/ˆ/˜i¨¨¨¸/¸/¸/Ð	JØ
ˆ/ˆ/˜i¨¨¨¸/¸/¸/Ð	JØ
ˆ/ˆ/˜<¨¨¨¸/¸/¸/Ð	JØ
ˆ/ˆ/ ¨¨¨¸/¸/¸/Ð	JØ
ˆ/ˆ/ ¨¨¨¸/¸/¸/Ð	JØ
ˆ/ˆ/˜i¨¨¨¸/¸/¸/Ð	JØ
ˆ/ˆ/˜i¨¨¨¸/¸/¸/Ð	Jð	LñMô MðXð XñMô Mñ CÔBðXðB Ð�kÐ*AÐBÑBÔBØ„[×ÒØQØ
ˆ/ˆ/˜<Ð,<Ð,<Ð,<ÀÀÀÐ	QØ
ˆ/ˆ/ Ð,<Ð,<Ð,<ÀÀÀÐ	QØ
Ð
Ð
 Ð)<Ð)<Ð)<Ð>PÐ>PÐ>PÐ	Qð	ñô ðCð Cñô ñ CÔBðCð& Ð�kÐ*AÐBÑBÔBð
ð 
ñ CÔBð
ð. Ð�kÐ*AÐBÑBÔBðXð Xñ CÔBðXð, Ð�kÐ*AÐBÑBÔBØ„[×Ò˜S ? ? ?Ð4FÐ4FÐ4FÐ"GÑHÔHðXð Xñ IÔHñ CÔBðXðAð Að Að Að 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dS )ÚTestPartialFractionExpansionr—   c                 óÄ  — t          | |¦  «        }|                     |¦  «        }|                     |¦  «        }|                     t          |d d …d f         |z
  ¦  «        t          | d d …d f         |z
  ¦  «        ¦  «        }t	          t          |¦  «        ¦  «        \  }}t          ||         ||         |¬¦  «         t          | |         ||         |¬¦  «         d S )NrÑ  )r?   rY   Úhypotr-  r   rC   r;   )	r  rU  Ú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Ô4Ý  ! ! ! T '¤
¨VÑ 3Ñ4Ô4ñ6ô 6ˆõ +Õ+<¸XÑ+FÔ+FÑGÔG‰
ˆˆdÝ˜A˜dœG V¨D¤\¸7ÐCÑCÔCÐCÝ˜A˜dœG V¨D¤\¸7ÐCÑCÔCÐCÐCÐ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
¢¦  «        ¦  «         d S )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   rQ  r;   r  r¬  )r[   r\   Úfactorsr¬  s       r`   Útest_compute_factorsz1TestPartialFractionExpansion.test_compute_factorsÀ  sì  € å(¨¨¨°I°I°IÑ>Ô>‰ˆ�Ý�7‰|Œ|˜qÒ Ð Ð Ð Ý˜G AœJ­¬°	°	°	Ñ(:Ô(:Ñ;Ô;Ð;Ý˜G AœJ­¬°°°Ñ(=Ô(=Ñ>Ô>Ð>Ý˜G AœJ­¬°°°Ñ(@Ô(@ÑAÔAÐAÝ˜D¥"¤'Ð*<Ð*<Ð*<Ñ"=Ô"=Ñ>Ô>Ð>å(¨¨¨°I°I°IØ8<ð>ñ >ô >‰ˆ�å�7‰|Œ|˜qÒ Ð Ð Ð Ý˜G AœJ­¬°°°Ñ(@Ô(@ÑAÔAÐAÝ˜G AœJ­¬°°°Ñ(=Ô(=Ñ>Ô>Ð>Ý˜G AœJ­¬°	°	°	Ñ(:Ô(:Ñ;Ô;Ð;Ý˜G AœJ­¬°°°Ñ(@Ô(@ÑAÔAÐAÝ˜G AœJ­¬°°°Ñ(=Ô(=Ñ>Ô>Ð>Ý˜G AœJ­¬°°°Ñ(@Ô(@ÑAÔAÐAÝ˜D¥"¤'Ð*<Ð*<Ð*<Ñ"=Ô"=Ñ>Ô>Ð>Ð>Ð>rb   c                 óz   — t          g d¢dd¦  «        \  }}t          |g d¢¦  «         t          |g d¢¦  «         d S )N)rÃ  gj¼t“ð?g?5^ºIð?ri  g /Ý$ @rk  r‚  r_  rc  rç  )r1   r4   ©r[   r\   ÚuniqueÚmultiplicitys       r`   Útest_group_polesz-TestPartialFractionExpansion.test_group_polesÔ  sQ   € å+Ø0Ð0Ð0°#°uñ >ô  >Ñˆ�å˜   Ñ0Ô0Ð0Ý˜ i i iÑ0Ô0Ð0Ð0Ð0rb   c                 ó"  — t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     g d¢¦  «        d¬¦  «         t          ||                     g d¢¦  «        d¬¦  «         t          ||                     dg¦  «        d¬¦  «         t          |                     dd	g¦  «        |                     g d
¢¦  «        ¦  «        \  }}}t          ||                     d	dg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     ddg¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     ddg¦  «        |                     g d¢¦  «        ¦  «        \  }}}|                      ||g d¢g d¢¦  «         |j        dk    sJ ‚t          |                     ddg¦  «        |                     g d¢¦  «        ¦  «        \  }}}|                      ||g d¢g d¢¦  «         |j        dk    sJ ‚t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          |                     dg¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     dd g¦  «        ¦  «         |j        dk    sJ ‚t          |                     g d!¢¦  «        |                     g d"¢¦  «        ¦  «        \  }}}|                      ||g d#¢g d$¢¦  «         |j        dk    sJ ‚t          |                     g d%¢¦  «        |                     g d&¢¦  «        ¦  «        \  }}}|                      ||g d'¢g d(¢¦  «         |j        dk    sJ ‚t          |                     ddg¦  «        |                     g d)¢¦  «        ¦  «        \  }}}t          ||                     dd*g¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     g d+¢¦  «        |                     g d)¢¦  «        ¦  «        \  }}}t          ||                     dd,g¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          ||                     dg¦  «        ¦  «         t          |                     g d-¢¦  «        |                     g d)¢¦  «        ¦  «        \  }}}t          ||                     d.d/g¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          ||                     d0d1g¦  «        ¦  «         t          |                     g d+¢¦  «        |                     g d2¢¦  «        ¦  «        \  }}}|                      ||g d3¢g d4¢¦  «         |j        dk    sJ ‚d S )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Ó¿r�  )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ð   rp  ©r[   r\   r  rU  rÆ  s        r`   Útest_residue_generalz1TestPartialFractionExpansion.test_residue_generalÛ  sÅ  € õ ˜"Ÿ*š* ] ] ]Ñ3Ô3°R·Z²ZÀÀÀÑ5NÔ5NÑOÔO‰ˆˆ1ˆaÝ˜A˜rŸzšzÐ*DÐ*DÐ*DÑEÔEÈqÐQÑQÔQÐQÝ˜A˜rŸzšzÐ*DÐ*DÐ*DÑEÔEÈqÐQÑQÔQÐQÝ˜A˜rŸzšz¨7¨)Ñ4Ô4¸aÐ@Ñ@Ô@Ð@å˜"Ÿ*š* b¨! WÑ-Ô-¨r¯zªz¸)¸)¸)Ñ/DÔ/DÑEÔE‰ˆˆ1ˆaÝ˜A˜rŸzšz¨1¨c¨(Ñ3Ô3Ñ4Ô4Ð4Ý˜A˜rŸzšz¨2¨r¨(Ñ3Ô3Ñ4Ô4Ð4ØŒv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* a¨ VÑ,Ô,¨b¯jªj¸¸¸Ñ.EÔ.EÑFÔF‰ˆˆ1ˆaÝ˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨2¨q¨'Ñ2Ô2Ñ3Ô3Ð3ØŒv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* a¨ VÑ,Ô,ØŸ*š*Ð%<Ð%<Ð%<Ñ=Ô=ñ?ô ?‰ˆˆ1ˆaà×#Ò#ØˆqÐ?Ð?Ð?Ø)Ð)Ð)ñ	+ô 	+ð 	+ð Œv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* a¨ VÑ,Ô,¨b¯jªj¸¸¸Ñ.FÔ.FÑGÔG‰ˆˆ1ˆaØ×#Ò# A q¨*¨*¨*Ø$0 L Lñ	2ô 	2ð 	2àŒv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š*Ð%CÐ%CÐ%CÑDÔDØŸ*š*Ð%<Ð%<Ð%<Ñ=Ô=ñ?ô ?‰ˆˆ1ˆaå˜A˜rŸzšz¨*¨*¨*Ñ5Ô5Ñ6Ô6Ð6Ý˜A˜rŸzšzÐ*:Ð*:Ð*:Ñ;Ô;Ñ<Ô<Ð<Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2å˜"Ÿ*š* a S™/œ/¨2¯:ª:°j°j°jÑ+AÔ+AÑBÔB‰ˆˆ1ˆaÝ˜A˜rŸzšz¨4°¨-Ñ8Ô8Ñ9Ô9Ð9Ý˜A˜rŸzšz¨1¨b¨'Ñ2Ô2Ñ3Ô3Ð3ØŒv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* Z Z ZÑ0Ô0°"·*²*Ð=MÐ=MÐ=MÑ2NÔ2NÑOÔO‰ˆˆ1ˆaØ×#Ò# A qØ$8Ð$8Ð$8Ø$4Ð$4Ð$4ñ	6ô 	6ð 	6ð Œv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* Y Y YÑ/Ô/°·²¸L¸L¸LÑ1IÔ1IÑJÔJ‰ˆˆ1ˆaØ×#Ò# A q¨)¨)¨)Ø$0 L Lñ	2ô 	2ð 	2àŒv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* a¨ WÑ-Ô-¨r¯zªz¸*¸*¸*Ñ/EÔ/EÑFÔF‰ˆˆ1ˆaÝ˜A˜rŸzšz¨2¨q¨'Ñ2Ô2Ñ3Ô3Ð3Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2ØŒv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* Z Z ZÑ0Ô0°"·*²*¸Z¸Z¸ZÑ2HÔ2HÑIÔI‰ˆˆ1ˆaÝ˜A˜rŸzšz¨2¨r¨(Ñ3Ô3Ñ4Ô4Ð4Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨1¨#™œÑ/Ô/Ð/å˜"Ÿ*š* ] ] ]Ñ3Ô3°R·Z²ZÀ
À
À
Ñ5KÔ5KÑLÔL‰ˆˆ1ˆaÝ˜A˜rŸzšz¨3°¨)Ñ4Ô4Ñ5Ô5Ð5Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨1¨b¨'Ñ2Ô2Ñ3Ô3Ð3å˜"Ÿ*š* Z Z ZÑ0Ô0°"·*²*¸^¸^¸^Ñ2LÔ2LÑMÔM‰ˆˆ1ˆaØ×#Ò# A qÐ*CÐ*CÐ*CØ$7Ð$7Ð$7ñ	9ô 	9ð 	9àŒv˜Š{ˆ{ˆ{ˆ{ˆ{ˆ{rb   c                 ó  — t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}	}
t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||¦  «         t          ||¦  «         t          ||¦  «         t          ||¦  «         t          ||	¦  «         t          ||¦  «         t          ||¦  «         t          ||
¦  «         t          ||¦  «         d S )Nr{  r|  )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Ô6¸¿
º
À=À=À=Ñ8QÔ8QÑRÔR‰
ˆˆB�Ý˜RŸZšZÐ(8Ð(8Ð(8Ñ9Ô9¸2¿:º:ÀmÀmÀmÑ;TÔ;TÑUÔU‰
ˆˆB�Ý˜RŸZšZ¨¨¨Ñ6Ô6¸¿
º
ÐCSÐCSÐCSÑ8TÔ8TÑUÔU‰
ˆˆB�Ý˜RŸZšZÐ(;Ð(;Ð(;Ñ<Ô<ØŸZšZÐ(>Ð(>Ð(>Ñ?Ô?ñAô A‰
ˆˆB�å˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ð#Ð#rb   c                 óz  — t          |                     ddg¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     d¦  «        |                     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 ¦  «         d S # 1 swxY w Y   d S )Nr   r}  rÀ  r  rP   úDenominator `a` is zero.rH  )r,   rY   r;   rð   r£  r   r»   r„  s        r`   Útest_residue_degeneratez4TestPartialFractionExpansion.test_residue_degenerate6  se  € õ ˜"Ÿ*š* a¨ VÑ,Ô,¨b¯jªj¸¸¸Ñ.CÔ.CÑDÔD‰ˆˆ1ˆaÝ˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨2¨r¨(Ñ3Ô3Ñ4Ô4Ð4ØŒv˜Š{ˆ{ˆ{ˆ{å˜"Ÿ*š* Q™-œ-¨¯ª°A©¬Ñ7Ô7‰ˆˆ1ˆaØŒv˜Š{ˆ{ˆ{ˆ{ØŒv˜Š{ˆ{ˆ{ˆ{ØŒv˜Š{ˆ{ˆ{ˆ{åŒ]�:Ð-GÐHÑHÔHð 	ð 	Ý�A�q‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÄD0Ä0D4Ä7D4c           
      óê  — t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}|                      ||g d¢g d¢¦  «         t          ||                     dg¦  «        ¦  «         t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}|                      ||dd	gd
dgd¬¦  «         t          ||                     dg¦  «        d¬¦  «         t          |                     ddg¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}|                      ||g d¢g d¢¦  «         |j        dk    sJ ‚t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          |                     dg¦  «        |                     g d¢¦  «        ¦  «        \  }}}|                      ||g d ¢g d!¢¦  «         |j        dk    sJ ‚t          |                     ddg¦  «        |                     t          j        dd"gdd#g¦  «        ¦  «        ¦  «        \  }}}t          ||                     d$d%g¦  «        ¦  «         t          ||                     d&dg¦  «        ¦  «         |j        dk    sJ ‚t          |                     g d'¢¦  «        |                     ddg¦  «        ¦  «        \  }}}t          ||                     dg¦  «        ¦  «         t          ||                     dg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          |                     d¦  «        |                     dd(g¦  «        ¦  «        \  }}}t          ||                     dg¦  «        ¦  «         t          ||                     d)g¦  «        ¦  «         |j        dk    sJ ‚t          |                     d¦  «        |                     g d*¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     d¦  «        |                     g d+¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     d#dg¦  «        ¦  «         |j        dk    sJ ‚t          |                     g d,¢¦  «        |                     g d'¢¦  «        ¦  «        \  }}}t          ||                     d-d.g¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          ||                     dg¦  «        ¦  «         t          |                     d/dg¦  «        |                     g d'¢¦  «        ¦  «        \  }}}t          ||                     d0d1g¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     g d¢¦  «        |                     g d'¢¦  «        ¦  «        \  }}}t          ||                     d2d3g¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          ||                     d4dg¦  «        ¦  «         t          |                     g d5¢¦  «        |                     g d6¢¦  «        ¦  «        \  }}}|                      ||g d7¢g d8¢d¬¦  «         |j        dk    sJ ‚d S )9N)rP   rN   rN   rQ   )rP   y       À      ð¿rÎ  r  )y       À      @y      @      @y      À      (À)r§   rP   rP   rp   )rP   rQ   rP   )rP   rª   g'Â†§WÊÖ?y	Šcîì¿à-� øÀy	Šcîì¿à-� ø@y      à?*©ÐDØÔ?y      à?*©ÐDØÔ¿rL   rÑ  g�Å�1w@rP   rª   )rP   rã  rN   rQ   rK   r   r•   r€  )rL   rã  rK   r�  )rP   rË  r  rL   )rQ   rÀ  r  r&  g      ø¿r.  rw  )rw  rK   r  rª   )g
×£p=
×?g¸…ëQ¸Î?çš™™™™™Ù?)r&  çUUUUUUÕ¿rš  rÀ  r  g«ªªªªª
ÀgUUUUUU@r~  ©rP   rÀ  rP   r  r§   )rP   rª   r  )rP   g      è¿rý  )rP   rN   rQ   rË  r/  rN   rÀ  r¥   ièÿÿÿr{  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   rp  r;   rð   r  Úpolymulr„  s        r`   Útest_residuez_generalz2TestPartialFractionExpansion.test_residuez_generalF  sê  € å˜2Ÿ:š: l l lÑ3Ô3ØŸ:š:Ð&CÐ&CÐ&CÑDÔDñFô F‰ˆˆ1ˆaà×#Ò# A qÐ*GÐ*GÐ*GØ$. J Jñ	0ô 	0ð 	0å˜A˜rŸzšz¨2¨$Ñ/Ô/Ñ0Ô0Ð0å˜2Ÿ:š: i i iÑ0Ô0°"·*²*¸_¸_¸_Ñ2MÔ2MÑNÔN‰ˆˆ1ˆaØ×#Ò# A qØ%6Ð8IÐ$JØ%2°MÐ$BØ,-ð 	$ñ 	/ô 	/ð 	/õ 	˜A˜rŸzšz¨6¨(Ñ3Ô3¸QÐ?Ñ?Ô?Ð?å˜2Ÿ:š: q¨" gÑ.Ô.°·
²
¸:¸:¸:Ñ0FÔ0FÑGÔG‰ˆˆ1ˆaÝ˜A˜rŸzšz¨2¨q¨'Ñ2Ô2Ñ3Ô3Ð3Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2ØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: i i iÑ0Ô0°"·*²*¸\¸\¸\Ñ2JÔ2JÑKÔK‰ˆˆ1ˆaØ×#Ò# A q¨*¨*¨*°l°l°lÑCÔCÐCØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: o o oÑ6Ô6¸¿
º
À;À;À;Ñ8OÔ8OÑPÔP‰ˆˆ1ˆaÝ˜A˜rŸzšz¨3°¨+Ñ6Ô6Ñ7Ô7Ð7Ý˜A˜rŸzšz¨2¨q¨'Ñ2Ô2Ñ3Ô3Ð3Ý˜A˜rŸzšz¨3°¨)Ñ4Ô4Ñ5Ô5Ð5å˜2Ÿ:š: r dÑ+Ô+¨R¯ZªZ¸¸¸Ñ-HÔ-HÑIÔI‰ˆˆ1ˆaØ×#Ò# A qØ$5Ð$5Ð$5Ð7HÐ7HÐ7Hñ	Jô 	Jð 	JàŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: q¨! fÑ-Ô-ØŸ:š:¥b¤j°!°T°¸QÀ¸HÑ&EÔ&EÑFÔFñHô H‰ˆˆ1ˆaå˜A˜rŸzšz¨5°$¨-Ñ8Ô8Ñ9Ô9Ð9Ý˜A˜rŸzšz¨5°#¨,Ñ7Ô7Ñ8Ô8Ð8ØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: j j jÑ1Ô1°2·:²:¸qÀ"¸gÑ3FÔ3FÑGÔG‰ˆˆ1ˆaÝ˜A˜rŸzšz¨1¨#™œÑ/Ô/Ð/Ý˜A˜rŸzšz¨1¨#™œÑ/Ô/Ð/Ý˜A˜rŸzšz¨1¨b¨'Ñ2Ô2Ñ3Ô3Ð3å˜2Ÿ:š: a™=œ=¨"¯*ª*°a¸°XÑ*>Ô*>Ñ?Ô?‰ˆˆ1ˆaÝ˜A˜rŸzšz¨1¨#™œÑ/Ô/Ð/Ý˜A˜rŸzšz¨2¨$Ñ/Ô/Ñ0Ô0Ð0ØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: a™=œ=¨"¯*ª*°]°]°]Ñ*CÔ*CÑDÔD‰ˆˆ1ˆaÝ˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨3°¨*Ñ5Ô5Ñ6Ô6Ð6ØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: a™=œ=¨"¯*ª*Ð5EÐ5EÐ5EÑ*FÔ*FÑGÔG‰ˆˆ1ˆaÝ˜A˜rŸzšz¨2¨q¨'Ñ2Ô2Ñ3Ô3Ð3Ý˜A˜rŸzšz¨4°¨+Ñ6Ô6Ñ7Ô7Ð7ØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: i i iÑ0Ô0°"·*²*¸Z¸Z¸ZÑ2HÔ2HÑIÔI‰ˆˆ1ˆaÝ˜A˜rŸzšz¨3°¨(Ñ3Ô3Ñ4Ô4Ð4Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨1¨#™œÑ/Ô/Ð/å˜2Ÿ:š: q¨! fÑ-Ô-¨r¯zªz¸*¸*¸*Ñ/EÔ/EÑFÔF‰ˆˆ1ˆaÝ˜A˜rŸzšz¨2¨q¨'Ñ2Ô2Ñ3Ô3Ð3Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2ØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: l l lÑ3Ô3°R·Z²ZÀ
À
À
Ñ5KÔ5KÑLÔL‰ˆˆ1ˆaÝ˜A˜rŸzšz¨3°¨)Ñ4Ô4Ñ5Ô5Ð5Ý˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨2¨q¨'Ñ2Ô2Ñ3Ô3Ð3å˜2Ÿ:š: i i iÑ0Ô0°"·*²*Ð=PÐ=PÐ=PÑ2QÔ2QÑRÔR‰ˆˆ1ˆaØ×#Ò# A qð%Nð %Nð %Nð%Nð %Nð %Nà,-ð 	$ñ 	/ô 	/ð 	/ð Œv˜Š{ˆ{ˆ{ˆ{ˆ{ˆ{rb   c                 ó  — t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}	}
t          |                     g d¢¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||¦  «         t          ||¦  «         t          ||¦  «         t          ||¦  «         t          ||	¦  «         t          ||¦  «         t          ||¦  «         t          ||
¦  «         t          ||¦  «         d S )Nr{  r|  )rM   rK   rÀ  r—   r   )r  r   r¥   rK   r   )rM   rK   rÀ  r—   r   r   )r  r   r¥   rK   r   r   r   )r-   rY   r;   r‡  s                 r`   Útest_residuez_trailing_zerosz9TestPartialFractionExpansion.test_residuez_trailing_zerosš  s�  € õ ˜bŸjšj¨¨¨Ñ7Ô7Ø Ÿjšj¨¨¨Ñ7Ô7ñ9ô 9‰
ˆˆB�å˜bŸjšjÐ)9Ð)9Ð)9Ñ:Ô:Ø Ÿjšj¨¨¨Ñ7Ô7ñ9ô 9‰
ˆˆB�å˜bŸjšj¨¨¨Ñ7Ô7Ø ŸjšjÐ)9Ð)9Ð)9Ñ:Ô:ñ<ô <‰
ˆˆB�å˜bŸjšjÐ)<Ð)<Ð)<Ñ=Ô=Ø ŸjšjÐ)?Ð)?Ð)?Ñ@Ô@ñBô B‰
ˆˆB�å˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ý˜B Ñ#Ô#Ð#Ð#Ð#rb   c                 óœ  — t          |                     ddg¦  «        |                     g d¢¦  «        ¦  «        \  }}}t          ||                     ddg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         |j        dk    sJ ‚t          |                     d¦  «        |                     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 ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  t          |                     d¦  «        |                     g d	¢¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr   r}  rÀ  r  rP   r–  rH  z6First coefficient of determinant `a` must be non-zero.r*  )r-   rY   r;   rð   r£  r   r»   r„  s        r`   Útest_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate°  s  € å˜2Ÿ:š: q¨! fÑ-Ô-¨r¯zªz¸)¸)¸)Ñ/DÔ/DÑEÔE‰ˆˆ1ˆaÝ˜A˜rŸzšz¨1¨a¨&Ñ1Ô1Ñ2Ô2Ð2Ý˜A˜rŸzšz¨2¨r¨(Ñ3Ô3Ñ4Ô4Ð4ØŒv˜Š{ˆ{ˆ{ˆ{å˜2Ÿ:š: a™=œ=¨"¯*ª*°Q©-¬-Ñ8Ô8‰ˆˆ1ˆaØŒv˜Š{ˆ{ˆ{ˆ{ØŒv˜Š{ˆ{ˆ{ˆ{ØŒv˜Š{ˆ{ˆ{ˆ{åŒ]�:Ð-GÐHÑHÔHð 	3ð 	3Ý�R—Z’Z ‘]”] B§J¢J¨q¡M¤MÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3õ Œ]�:ð"0ð1ñ 1ô 1ð 	>ð 	>õ �R—Z’Z ‘]”] B§J¢J¨|¨|¨|Ñ$<Ô$<Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s$   Ä7EÅEÅEÅ;9GÇGÇGc                 óÞ  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g ¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }dD ]x}t          ||||¬¦  «        \  }}	t          ||d¬¦  «         t          |	|d	d¬
¦  «         t          ||||¬¦  «        \  }}	t          ||d¬¦  «         t          |	|d	d¬
¦  «         Œyd S )N)r'  çUUUUUUÅ¿gÁ¿)r   rÀ  rã  )r*  rP   rK   )rP   r—   rR   r   ©ÚavgrÕ  r_  r×  r-  rØ  ©ÚrtypegVçž¯Â<r„   F)r  r…   ©rY   r    r4   r!   )
r[   r\   r  rU  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Ð0Ð0Ñ1Ô1ˆØ�JŠJ�{�{�{Ñ#Ô#ˆØ�JŠJ�r‰NŒNˆØ—Z’Z   Ñ,Ô,ˆ
Ø—Z’Z   Ñ.Ô.ˆ
ð Ið 	Jð 	JˆEÝ˜!˜Q ¨Ð/Ñ/Ô/‰DˆAˆqÝ˜A˜z°Ð6Ñ6Ô6Ð6Ý˜A˜z°uÀ5ÐIÑIÔIÐIå˜1˜a ¨%Ð0Ñ0Ô0‰DˆAˆqÝ˜A˜z°Ð6Ñ6Ô6Ð6Ý˜A˜z°uÀ5ÐIÑIÔIÐIÐIð	Jð 	Jrb   c                 ó  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g ¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }|                      g d¢¦  «        }dD ]v}t          ||||¬¦  «        \  }	}
t          |	|d¬	¦  «         t          |
|d
¬¦  «         t          ||||¬¦  «        \  }	}
t          |	|d¬	¦  «         t          |
|d
¬¦  «         Œwd S )N©g333333Ã?g9Žã8ŽãÈ¿r£  glÁlÁ¦?©r   rÀ  rÀ  rã  )r*  r   rP   rK   )r£  gUUUUUUå¿gUUUUUUý?rK   )rP   r/  r=  r  r   r¤  r¦  rƒ   r„   Fr  r¨  )r[   r\   r  rU  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Ð8Ð8Ñ9Ô9ˆØ�JŠJ���Ñ'Ô'ˆØ�JŠJ�r‰NŒNˆØ—Z’Z   Ñ/Ô/ˆ
Ø—z’zÐ"7Ð"7Ð"7Ñ8Ô8ˆØ—Z’ZÐ 1Ð 1Ð 1Ñ2Ô2ˆ
àHð 	>ð 	>ˆEÝ˜!˜Q ¨Ð/Ñ/Ô/‰DˆAˆqÝ˜A˜z°Ð6Ñ6Ô6Ð6Ý˜A˜z°uÐ=Ñ=Ô=Ð=å˜1˜a ¨%Ð0Ñ0Ô0‰DˆAˆqÝ˜A˜|°%Ð8Ñ8Ô8Ð8Ý˜A˜z°uÐ=Ñ=Ô=Ð=Ð=ð	>ð 	>rb   c                 ó¦  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      g ¦  «        }t          j        t          d¬¦  «        5  t	          |||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          |||d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr­  r®  z`rtype` must be one ofrH  rÖ  r¦  )rY   r£  r   r»   r    r!   r„  s        r`   Útest_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtypeê  sQ  € à�JŠJÐ8Ð8Ð8Ñ9Ô9ˆØ�JŠJ���Ñ'Ô'ˆØ�JŠJ�r‰NŒNˆÝŒ]�:Ð-EÐFÑFÔFð 	,ð 	,Ý�1�a˜ (Ð+Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,åŒ]�:Ð-EÐFÑFÔFð 	-ð 	-Ý�A�q˜! 8Ð,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s$   ÁA?Á?BÂBÂ%CÃC
ÃC
c                 óD  — |                      dg¦  «        }|                      dg¦  «        }|                      dg¦  «        }t          |||¦  «        \  }}t          ||                      dg¦  «        ¦  «         t          ||                      ddg¦  «        ¦  «         d S )NrP   rQ   r   rÃ  g       À)rY   r!   r4   )r[   r\   r  rU  rÆ  r^   r]   s          r`   Ú test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bugô  sŽ   € ð �JŠJ˜�s‰OŒOˆØ�JŠJ˜�s‰OŒOˆØ�JŠJ˜�s‰OŒOˆÝ�q˜!˜QÑÔ‰ˆˆ1Ý˜˜2Ÿ:š: q c™?œ?Ñ+Ô+Ð+Ý˜˜2Ÿ:š: s¨D kÑ2Ô2Ñ3Ô3Ð3Ð3Ð3rb   c                 ó  — t          |                     dg¦  «        |                     dg¦  «        |                     g ¦  «        ¦  «        \  }}t          ||                     dg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          |                     g d¢¦  «        |                     g d¢¦  «        |                     g ¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         t          |                     ddg¦  «        |                     dd	g¦  «        |                     g d
¢¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         t          |                     g d¢¦  «        |                     g d¢¦  «        |                     g ¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         t          |                     ddg¦  «        |                     ddg¦  «        |                     ddg¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         d S )NrP   rª   ©rƒ  rQ   ù      à?      À©rP   ró   rm   ©y      @      Ày      !À      Ð?y      @      
@©rP   y       À      ø¿y      à?       @y      à?      à¿r&  rƒ  r¼  rO   )rP   ù      ð¿      ð¿ù      ð?       Àr·  rR   ©rP   ù      À      ð¿rL   ©rª   rQ   r§   rò  rL   rÀ  ©rª   rÄ   rÄ   rK   rK   rK   )y      @      ð¿y      <À      0@y      D@      OÀy      Y@      8@y     @rÀ     `k@y      h@     ÀpÀ©rP   y      (À       @y     €J@      4Ày      XÀ      Q@y      ;@      RÀy      [@      KÀy     @TÀ      [@r§   rQ   )rP   r   r  ro   r›  )r    rY   r;   ©r[   r\   r^   r]   s       r`   Útest_invresz(TestPartialFractionExpansion.test_invresþ  sè  € å�b—j’j ! ‘o”o r§z¢z°1°#¡¤¸¿
º
À2¹¼ÑGÔG‰ˆˆ1Ý˜A˜rŸzšz¨1¨#™œÑ/Ô/Ð/Ý˜A˜rŸzšz¨1¨b¨'Ñ2Ô2Ñ3Ô3Ð3å�b—j’jÐ!6Ð!6Ð!6Ñ7Ô7Ø—j’jÐ!2Ð!2Ð!2Ñ3Ô3°R·Z²ZÀ±^´^ñEô E‰ˆˆ1å˜A˜rŸzšzÐ*OÐ*OÐ*OÑPÔPÑQÔQÐQÝ˜A˜rŸzšzÐ*NÐ*NÐ*NÑOÔOÑPÔPÐPå�b—j’j # q Ñ*Ô*¨B¯JªJ¸ÀÐ7GÑ,HÔ,HØ—j’j   Ñ+Ô+ñ-ô -‰ˆˆ1å˜A˜rŸzšzÐ*LÐ*LÐ*LÑMÔMÑNÔNÐNÝ˜A˜rŸzšz¨/¨/¨/Ñ:Ô:Ñ;Ô;Ð;å�b—j’jÐ!;Ð!;Ð!;Ñ<Ô<Ø—j’jÐ!>Ð!>Ð!>Ñ?Ô?ÀÇÂÈBÁÄñQô Q‰ˆˆ1å˜AØŸJšJð (Að (Að (Añ Bô Bñ	Cô 	Cð 	Cõ 	˜AØŸJšJð (?ð (?ð (?ñ @ô @ñ	Aô 	Að 	Aõ �b—j’j " b Ñ*Ô*¨B¯JªJ¸¸1°vÑ,>Ô,>ÀÇ
Â
ÈAÈqÈ6Ñ@RÔ@RÑSÔS‰ˆˆ1Ý˜A˜rŸzšzÐ*<Ð*<Ð*<Ñ=Ô=Ñ>Ô>Ð>Ý˜A˜rŸzšz¨*¨*¨*Ñ5Ô5Ñ6Ô6Ð6Ð6Ð6rb   c                 ó  — t          |                     dg¦  «        |                     dg¦  «        |                     g ¦  «        ¦  «        \  }}t          ||                     dg¦  «        ¦  «         t          ||                     ddg¦  «        ¦  «         t          |                     g d¢¦  «        |                     g d¢¦  «        |                     g ¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         t          |                     ddg¦  «        |                     dd	g¦  «        |                     g d
¢¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         t          |                     g d¢¦  «        |                     g d¢¦  «        |                     g ¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         t          |                     ddg¦  «        |                     ddg¦  «        |                     ddg¦  «        ¦  «        \  }}t          ||                     g d¢¦  «        ¦  «         t          ||                     g d¢¦  «        ¦  «         d S )NrP   rª   r¶  r¸  r¹  rº  r&  rƒ  r¼  rO   )g      @r¾  r¼  y      ð¿      ÀrW   r½  r¿  rÀ  )rN   y      IÀ      &@y      Y@      RÀy      T@      M@y      vÀ     €l@y     @m@     �rÀrÁ  r§   rQ   )r§   rP   r.  rQ   r›  )r!   rY   r;   rÂ  s       r`   Útest_invreszz)TestPartialFractionExpansion.test_invresz  sñ  € å�r—z’z 1 #‘”¨¯
ª
°A°3©¬¸¿ºÀB¹¼ÑHÔH‰ˆˆ1Ý˜A˜rŸzšz¨1¨#™œÑ/Ô/Ð/Ý˜A˜rŸzšz¨1¨b¨'Ñ2Ô2Ñ3Ô3Ð3å�r—z’zÐ"7Ð"7Ð"7Ñ8Ô8Ø—z’zÐ"3Ð"3Ð"3Ñ4Ô4°b·j²jÀ±n´nñFô F‰ˆˆ1å˜A˜rŸzšzÐ*OÐ*OÐ*OÑPÔPÑQÔQÐQÝ˜A˜rŸzšzÐ*NÐ*NÐ*NÑOÔOÑPÔPÐPå�r—z’z 3¨ (Ñ+Ô+Ø—z’z 6¨6Ð"2Ñ3Ô3Ø—z’z ) ) )Ñ,Ô,ñ.ô .‰ˆˆ1õ 	˜A˜rŸzšzÐ*MÐ*MÐ*MÑNÔNÑOÔOÐOÝ˜A˜rŸzšz¨/¨/¨/Ñ:Ô:Ñ;Ô;Ð;å�r—z’zÐ"<Ð"<Ð"<Ñ=Ô=Ø—z’zÐ"?Ð"?Ð"?Ñ@Ô@Ø—z’z "‘~”~ñ'ô '‰ˆˆ1õ 	˜AØŸJšJð (Að (Að (Añ Bô Bñ	Cô 	Cð 	Cõ 	˜AØŸJšJð (?ð (?ð (?ñ @ô @ñ	Aô 	Að 	Aõ �r—z’z 2 r (Ñ+Ô+Ø—z’z 1 a &Ñ)Ô)Ø—z’z 1 a &Ñ)Ô)ñ+ô +‰ˆˆ1õ 	˜A˜rŸzšz¨.¨.¨.Ñ9Ô9Ñ:Ô:Ð:Ý˜A˜rŸzšz¨*¨*¨*Ñ5Ô5Ñ6Ô6Ð6Ð6Ð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¦  «         d S )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$  rf  rp  r%  rt  ry  r@   r,   r…  r”  r—  r-   r�  rŸ  r¡  r    r!   r«  r°  r²  r´  rÃ  rÅ  rÇ  rè   rb   r`   rh  rh  ²  s²  € € € € € Øð
Dð 
Dð 
Dñ „\ð
Dð Ð˜dÐ#Ñ#Ô#ð?ð ?ñ $Ô#ð?ð& Ð˜dÐ#Ñ#Ô#ð1ð 1ñ $Ô#ð1ð Ð�wÑÔðFð Fñ  ÔðFðP Ð�wÑÔð$ð $ñ  Ôð$ð" Ð�wÑÔðð ñ  Ôðð Ð�xÑ Ô ðQð Qñ !Ô ðQðf Ð�xÑ Ô ð$ð $ñ !Ô ð$ð* Ð�xÑ Ô ð>ð >ñ !Ô ð>ð& Ð�v˜wÑ'Ô'ðJð Jñ (Ô'ðJð& Ð�v˜wÑ'Ô'ð>ð >ñ (Ô'ð>ð" Ð�v˜wÑ'Ô'ð-ð -ñ (Ô'ð-ð Ð�wÑÔð4ð 4ñ  Ôð4ð Ð�vÑÔð7ð 7ñ Ôð7ð8 Ð�wÑÔð7ð 7ñ  Ôð7ð@ Ð˜dÐ#Ñ#Ô#ØÐ�v˜wÑ'Ô'ð(ð (ñ (Ô'ñ $Ô#ð(ð (ð (rb   rh  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dS )ÚTestVectorstrengthc                 ó  — |                      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 ‚d S )	Nr&  r£  rÃ  r‚  r   çvƒôõ!„>©Úabs_tolrQ   ©rY   r"   r÷  r©  Úiscloser,  ©r[   r\   ÚeventsÚperiodÚtarg_strengthÚ
targ_phaseÚstrengthÚphases           r`   Útest_single_1dperiodz'TestVectorstrength.test_single_1dperiodK  s¤   € Ø—’˜R˜DÑ!Ô!ˆØˆØˆØˆ
å(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆåŒ|˜H m¸VÐDÑDÔDÐDÐDÐDÝŒ|˜E 1¥t¤w¡;°Ñ#;ÀVÐLÑLÔLÐLÐLÐLÐLÐLrb   r£   zphase modulo 2*pirH   c                 óp  — |                      dg¦  «        }|                      g d¢¦  «        }|                      dgdz  ¦  «        }|                      g d¢¦  «        }t          ||¦  «        \  }}|j        dk    sJ ‚|j        dk    sJ ‚t          ||¦  «         t	          |d|j        z  |z  ¦  «         d S )Nr&  )rP   rQ   r£  rÃ  rK   )r&  r  r‚  rP   rQ   )rY   r"   r÷  r:   r;   r,  rÐ  s           r`   Útest_single_2dperiodz'TestVectorstrength.test_single_2dperiodY  s¼   € à—’˜R˜DÑ!Ô!ˆØ—’˜J˜J˜JÑ'Ô'ˆØŸ
š
 B 4¨!¡8Ñ,Ô,ˆØ—Z’Z   Ñ.Ô.ˆ
å(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆÝ! (¨MÑ:Ô:Ð:Ý˜E 1 r¤u¡9¨zÑ#9Ñ:Ô:Ð:Ð:Ð:rb   c                 ó  — |                      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 ‚d S )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Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆåŒ|˜H m¸VÐDÑDÔDÐDÐDÐDÝŒ|˜E 1¥t¤w¡;°Ñ#;ÀVÐLÑLÔLÐLÐLÐLÐLÐLrb   c                 ór  — |                      g d¢¦  «        }|                      ddg¦  «        }|                      dgdz  ¦  «        }|                      ddg¦  «        }t          ||¦  «        \  }}|j        dk    sJ ‚|j        dk    sJ ‚t          ||¦  «         t          |d|j        z  |z  ¦  «         d S )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Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆÝ˜H mÑ4Ô4Ð4Ý˜E 1 r¤u¡9¨zÑ#9Ñ:Ô:Ð:Ð:Ð:rb   c                 ó  — |                      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 ‚d S )
N©r‚  gš™™™™™ñ?gÍÌÌÌÌÌ @gffffff@g333333$@rP   rÃ  r‚  r   rË  rÌ  rQ   r°  rÎ  rÐ  s           r`   Útest_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiod‚  s©   € Ø—’Ð5Ð5Ð5Ñ6Ô6ˆØˆØˆØˆ
å(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆåŒ|˜H m¸VÐDÑDÔDÐDÐDÐDÝŒ|˜E 1¥t¤w¡;°Ñ#;ÀVÐLÑLÔLÐLÐLÐLÐLÐLrb   c                 óª  — |                      g d¢¦  «        }|                      ddg¦  «        }|                      dgdz  ¦  «        }|                      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 |¤Ž d S )
Nrá  rP   r&  rÃ  rQ   r‚  r  rþ   g�íµ ÷ÆÀ>)rY   r"   r÷  r;   r>   rä   r4   r,  )	r[   r\   rÑ  rÒ  rÓ  rÔ  rÕ  rÖ  Úrtol_kws	            r`   Útest_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod�  sê   € Ø—’Ð5Ð5Ð5Ñ6Ô6ˆØ—’˜Q ˜GÑ$Ô$ˆØŸ
š
 B 4¨!¡8Ñ,Ô,ˆØ—Z’Z  R Ñ)Ô)ˆ
å(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆÝ˜H mÑ4Ô4Ð4Ý$4°RÑ$8Ô$8¸B¼JÒ$FÐ$F�6˜4�.�.ÈBˆÝ˜˜q 2¤5™y¨:Ñ5ÐAÐA¸ÐAÐAÐAÐAÐArb   c                 ó  — |                      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 ‚d S )N©r  r&  ç      è?rP   çUUUUUUÕ?r&  r   rQ   rÎ  rÐ  s           r`   Útest_partial_1dperiodz(TestVectorstrength.test_partial_1dperiodž  sœ   € Ø—’˜N˜N˜NÑ+Ô+ˆØˆØˆØˆ
å(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆåŒ|˜H mÑ4Ô4Ð4Ð4Ð4ÝŒ|˜E 1¥t¤w¡;°Ñ#;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<rb   c                 ór  — |                      g d¢¦  «        }|                      g d¢¦  «        }|                      dgdz  ¦  «        }|                      g d¢¦  «        }t          ||¦  «        \  }}|j        dk    sJ ‚|j        dk    sJ ‚t          ||¦  «         t          |d|j        z  |z  ¦  «         d S )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˜N˜NÑ+Ô+ˆØ—’Ð,Ð,Ð,Ñ-Ô-ˆØŸ
š
 G 9¨q¡=Ñ1Ô1ˆØ—Z’ZÐ 0Ð 0Ð 0Ñ1Ô1ˆ
å(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆÝ˜H mÑ4Ô4Ð4Ý˜E 1 r¤u¡9¨zÑ#9Ñ:Ô:Ð:Ð:Ð:rb   c                 óÈ   — |                      g d¢¦  «        }d}d}t          ||¦  «        \  }}|j        dk    sJ ‚|j        dk    sJ ‚t          j        ||d¬¦  «        sJ ‚d S )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»  s|   € Ø—’Ð-Ð-Ð-Ñ.Ô.ˆØˆØˆå(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆÝŒ|˜H m¸VÐDÑDÔDÐDÐDÐDÐDÐDrb   c                 ó  — |                      g d¢¦  «        }|                      dgdz  ¦  «        }|                      dgdz  ¦  «        }t          ||¦  «        \  }}|j        dk    sJ ‚|j        dk    sJ ‚t          ||¦  «         d S )Nrî  rÃ  rR   r*  rP   )rY   r"   r÷  r;   rï  s          r`   Útest_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiodÆ  s“   € Ø—’Ð-Ð-Ð-Ñ.Ô.ˆØ—’˜R˜D 2™IÑ&Ô&ˆØŸ
š
 B 4¨"¡9Ñ-Ô-ˆå(¨°Ñ8Ô8‰ˆ�%àŒ} Ò!Ð!Ð!Ð!ØŒz˜QŠˆˆˆÝ˜H mÑ4Ô4Ð4Ð4Ð4rb   c                 ór   — |                      ddgg¦  «        }d}t          t          t          ||¦  «         d S )NrP   rQ   rÃ  ©rY   rº   r»   r"   ©r[   r\   rÑ  rÒ  s       r`   Útest_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueErrorÑ  s8   € Ø—’˜a ˜V˜HÑ%Ô%ˆØˆÝ•j¥.°&¸&ÑAÔAÐAÐAÐArb   c                 óp   — d}|                      dgg¦  «        }t          t          t          ||¦  «         d S )NrÃ  rP   rô  rõ  s       r`   Útest_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueErrorÖ  s6   € ØˆØ—’˜a˜S˜EÑ"Ô"ˆÝ•j¥.°&¸&ÑAÔAÐAÐAÐArb   c                 óF   — d}d}t          t          t          ||¦  «         d S )NrÃ  r   ©rº   r»   r"   rõ  s       r`   Útest_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueErrorÛ  s&   € ØˆØˆÝ•j¥.°&¸&ÑAÔAÐAÐAÐArb   c                 óF   — d}d}t          t          t          ||¦  «         d S )NrÃ  rª   rú  rõ  s       r`   Útest_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueErrorà  s&   € ØˆØˆÝ•j¥.°&¸&ÑAÔAÐAÐAÐ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ð Mð Mð Ð�wÐ':Ð;Ñ;Ô;ð;ð ;ñ <Ô;ð;ðMð Mð Mð;ð ;ð ;ðMð Mð MðBð Bð Bð=ð =ð =ð Ð�wÐ':Ð;Ñ;Ô;ð;ð ;ñ <Ô;ð;ð	Eð 	Eð 	Eð	5ð 	5ð 	5ðBð Bð Bð
Bð Bð Bð
Bð Bð Bð
Bð Bð Bð Bð Brb   rÉ  )rœ  )rä   rå   ræ   r®   c                   óê  — e Zd Z edd¬¦  «        d„ ¦   «         Z edd¬¦  «        d„ ¦   «         Z edd¬¦  «        d„ ¦   «         Zd„ Z edd¬¦  «        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dS )ÚTestSOSFiltrF   zbuffer array is read-onlyrH   c                 óV  — t          ||¦  «        }|                     ddd|¬¦  «        }|                     ddg|¬¦  «        }|                     ddg|¬¦  «        }|                     g d	¢|¬¦  «        }t          t          j        ||f¦  «        \  }}t          ||¦  «        }	|                     |	¦  «        }	t          t          |	|¦  «        |¦  «         |                     ddg|¬¦  «        }|                     ddg|¬¦  «        }|                     g d
¢|¬¦  «        }t          t          j        ||f¦  «        \  }}t          ||¦  «        }	|                     |	¦  «        }	t          t          |	|¦  «        |¦  «         |                     g d¢¦  «        }|                     g d¢¦  «        }|                     d¦  «        }| 	                    ||f¦  «        }	| 
                    |	d¦  «        }	t          |	|¦  «        }
t          |
|                     g d¢¦  «        ¦  «         d S )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   ri  r  r$   r:   r%   rp  Úconcatr†   r4   )r[   rS  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Ô8ˆÝ•R”Z ! Q Ñ(Ô(‰ˆˆBÝ�R˜‰nŒnˆØ�jŠj˜‰oŒoˆÝ!¥'¨#¨q¡/¤/°3Ñ7Ô7Ð7ð �JŠJ˜˜1�v RˆJÑ(Ô(ˆà�JŠJ˜˜1�v RˆJÑ(Ô(ˆØ�jŠjÐ,Ð,Ð,°BˆjÑ7Ô7ˆÝ•R”Z ! Q Ñ(Ô(‰ˆˆBÝ�R˜‰nŒnˆØ�jŠj˜‰oŒoˆÝ!¥'¨#¨q¡/¤/°3Ñ7Ô7Ð7à�JŠJ�{�{�{Ñ#Ô#ˆØ�JŠJ�{�{�{Ñ#Ô#ˆØ�GŠG�A‰JŒJˆà�iŠi˜˜A˜ÑÔˆØ�jŠj˜˜fÑ%Ô%ˆÝ�C˜‰OŒOˆÝ˜˜2Ÿ:š:Ð&@Ð&@Ð&@ÑAÔAÑBÔBÐBÐBÐBrb   c                 ó   — t          ||¦  «        }d}t          j        |¦  «        }|                     d|dz
  ||¬¦  «        }|                     ||¦  «        }|                     ddg|¬¦  «        }|                     ddg|¬¦  «        }|                     g d¢g d¢g d¢g d¢g|¬¦  «        }|                     g d	¢g d
¢g d¢g d¢g|¬¦  «        }	t          t          j        ||f¦  «        \  }
}t          |
|¦  «        }|                     |¦  «        }t          ||d¬¦  «        }t          ||¦  «         t          |
|¦  «        }|                     |¦  «        }t          ||d¬¦  «        }t          |	|¦  «         d S )NrÖ  r   rP   r¨   rª   r&  r×  rØ  rÜ  rÝ  rÞ  rß  r�  )r”  r©  rª  rþ  r†   rY   ri  r  r$   r%   r:   )r[   rS  r\   r˜  r¬  rq   r^   r]   rÙ  rà  r  rÂ  ró  rr   s                 r`   Ú
test_rank2zTestSOSFilt.test_rank2  s—  € å�R˜‰_Œ_ˆØˆÝ”I˜eÑ$Ô$ˆ	Ø�KŠK˜˜9 q™=¨)¸2ˆKÑ>Ô>ˆØ�JŠJ�q˜%Ñ Ô ˆà�JŠJ˜˜2�w bˆJÑ)Ô)ˆØ�JŠJ˜˜S�z¨ˆJÑ,Ô,ˆà—*’*˜i˜i˜i¨¨¨°I°I°I¸y¸y¸yÐIØ!#ð ñ %ô %ˆð —*’*˜i˜i˜i¨¨¨°]°]°]Ø)˜M˜Mð+Ø24ð ñ 6ô 6ˆõ •R”Z ! Q Ñ(Ô(‰ˆˆBÝ�R˜‰nŒnˆØ�jŠj˜‰oŒoˆÝ�C˜ Ð#Ñ#Ô#ˆÝ! '¨1Ñ-Ô-Ð-å�R˜‰nŒnˆØ�jŠj˜‰oŒoˆÝ�C˜ Ð#Ñ#Ô#ˆÝ! '¨1Ñ-Ô-Ð-Ð-Ð-rb   c                 ó”  — t          ||¦  «        }d}t          j        |¦  «        }|                     d|dz
  |¦  «        }|                     ||¦  «        }|                     ddg|¬¦  «        }|                     ddg|¬¦  «        }t          t          j        ||f¦  «        \  }}	t          ||	¦  «        }
|                     |
¦  «        }
t          |
|¦  «        }t          |j        d         ¦  «        D ]P}t          |j        d         ¦  «        D ]3}t          |||df         t          |||||df         ¦  «        ¦  «         Œ4ŒQd S )Nrï  r   rP   rª   r¨   r&  .)r”  r©  rª  rþ  r†   rY   ri  r  r$   r%   rˆ   r˜  r:   r   )r[   rS  r\   r˜  r¬  rq   r^   r]   r  rÂ  ró  rr   rŠ   Újs                 r`   rÎ  zTestSOSFilt.test_rank3/  sH  € å�R˜‰_Œ_ˆØˆÝ”I˜eÑ$Ô$ˆ	Ø�KŠK˜˜9 q™=¨)Ñ4Ô4ˆØ�JŠJ�q˜%Ñ Ô ˆà�JŠJ˜˜2�w bˆJÑ)Ô)ˆØ�JŠJ˜˜S�z¨ˆJÑ,Ô,ˆõ •R”Z ! Q Ñ(Ô(‰ˆˆBÝ�R˜‰nŒnˆØ�jŠj˜‰oŒoˆÝ�C˜‰OŒOˆÝ�q”w˜q”zÑ"Ô"ð 	Uð 	UˆAÝ˜1œ7 1œ:Ñ&Ô&ð Uð U�Ý)¨!¨A¨q°#¨I¬,½ÀÀ1ÀaÈÈ1ÈcÈ	ÄlÑ8SÔ8SÑTÔTÐTÐTðUð	Uð 	Urb   c                 ó  — t          j        ddd¦  «        \  }}t          j        ddd¦  «        \  }}t          j        ddd¦  «        \  }}t          j        t          j        ||¦  «        |¦  «        }t          j        t          j        ||¦  «        |¦  «        }	t          j        t          j        ||f         t          j        ||f         t          j        ||f         f¦  «        }
t          |j        |	||
f¦  «        \  }	}}
|	||
fS )NrQ   r  Úlowrè  )r   r   r  r   r�  Úr_ri  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�œ B¨Ñ+Ô+¨RÑ0Ô0ˆÝŒK�œ B¨Ñ+Ô+¨RÑ0Ô0ˆÝŒh�œ˜b "˜fœ¥r¤u¨R°¨V¤}µb´e¸BÀ¸F´mÐDÑEÔEˆå˜œ
 Q¨¨3 KÑ0Ô0‰	ˆˆ1ˆcØ�!�SˆyÐrb   zitem assignmentc           
      óÀ  — |                       |¦  «        \  }}}t          j                             d¦  «                             |¦  «        }|                     |¦  «        }t          ||¦  «        }t          |||d d…         |                     d¦  «        ¬¦  «        \  }}| 	                    |t          |||dd …         |¬¦  «        d         f¦  «        }t          |t          |||¦  «        ¦  «         t          ||d d…         |                     d¦  «        ¬¦  «        \  }	}| 	                    |	t          ||dd …         |¬¦  «        d         f¦  «        }	t          ||	¦  «         t          |¦  «        }|                     d|¬¦  «        }t          |||¬¦  «        \  }
}t          |
|                     d¦  «        d	¬
¦  «         t          ||d	¬
¦  «         d S )Nr  r  rN   rÌ  r   rÖ   r¥   r¨   Fr  )r  r  r  r	  r  rY   r”  r   rœ  r  r4   r%   r'   rp  )r[   rS  r\   r]   r^   ró  rq   Úy_truerÍ  r  rr   rÑ  s               r`   Útest_initial_conditionsz#TestSOSFilt.test_initial_conditionsN  s¸  € à×$Ò$ RÑ(Ô(‰	ˆˆ1ˆcåŒI�NŠN˜2ÑÔ×%Ò% bÑ)Ô)ˆØ�JŠJ�q‰MŒMˆå�R˜‰_Œ_ˆõ ˜Q  1 S b S¤6¨b¯hªh°q©k¬kÐ:Ñ:Ô:‰
ˆ�Ø—’˜F¥G¨A¨q°!°B°C°C´&¸RÐ$@Ñ$@Ô$@ÀÔ$CÐDÑEÔEˆÝ˜¥¨¨1¨aÑ 0Ô 0Ñ1Ô1Ð1å˜C  3 B 3¤¨B¯HªH°VÑ,<Ô,<Ð=Ñ=Ô=‰	ˆˆrØ—	’	˜5¥'¨#¨q°°°¬v¸"Ð"=Ñ"=Ô"=¸aÔ"@ÐAÑBÔBˆÝ˜ Ñ&Ô&Ð&õ ˜‰_Œ_ˆØ�GŠG�A˜RˆGÑ Ô ˆÝ˜˜Q 2Ð&Ñ&Ô&‰ˆˆ2å˜˜2Ÿ7š7 1™:œ:°5Ð9Ñ9Ô9Ð9Ý˜˜B¨EÐ2Ñ2Ô2Ð2Ð2Ð2rb   r7  zfancy indexing not supportedc                 óR  — t          ||¦  «        }|                     d|¬¦  «        }|                      |¦  «        \  }}}t          |¦  «        }|                     |d|j        z   ¦  «        }t          j        t          ¦  «        5  t          |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          ||¬¦  «        }|                     ||j        d         dd|j        d         f¦  «        }t          j        t          ¦  «        5  t          |||d d …d d …d d …g d	¢f         ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |||¬¦  «        \  }}	t          |d
         |                     d¦  «        d¬¦  «         t          |	d d …ddd d …f         |d¬¦  «         d S )Nr¥   r¨   r¾  rÌ  râ  r   rP   rª   )r   rP   rP   r¼  Fr  )r”  rp  r  r'   r†   r˜  r£  r   r»   r%   r<   r4   )
r[   rS  r\   rq   r�  ró  rÍ  Úzi_ndrr   rÑ  s
             r`   Útest_initial_conditions_2z%TestSOSFilt.test_initial_conditions_2h  s   € õ �R˜‰_Œ_ˆØ�GŠG�A˜RˆGÑ Ô ˆà×$Ò$ RÑ(Ô(‰	ˆˆ1ˆcÝ˜‰_Œ_ˆð �JŠJ�q˜& 1¤7Ñ*Ñ+Ô+ˆÝŒ]�:Ñ&Ô&ð 	#ð 	#Ý�C˜˜rÐ"Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ ˜˜rÐ"Ñ"Ô"ˆØ—
’
˜5 2¤8¨A¤;°°1°b´h¸r´lÐ"CÑDÔDˆåŒ]�:Ñ&Ô&ð 	:ð 	:Ý�C˜˜u Q Q Q¨¨¨¨1¨1¨1¨i¨i¨iÐ%7Ô8Ð9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ ˜˜Q 5Ð)Ñ)Ô)‰ˆˆ2Ý˜˜$œ §¢¨¡¤¸Ð?Ñ?Ô?Ð?Ý˜˜1˜1˜1˜a  A A A˜:œ¨¸Ð>Ñ>Ô>Ð>Ð>Ð>s$   ÂB&Â&B*Â-B*Ä%D<Ä<E ÅE c                 ó  — t           j                             d¦  «                             ddd¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          j        ddd¬	¦  «        }t          |Ž }|                     |¦  «        }|j	        d         }d
}t          |j	        ¦  «        }d||<   t          |g|z   ¦  «        }|                     |¦  «        }	t          ||||	¬¦  «        \  }
}t          ||d d …d d…d d …f         ||	¬¦  «        \  }}t          ||d d …dd …d d …f         ||¬¦  «        \  }}|                     ||f|¬¦  «        }t          ||
dd¬¦  «         t          ||dd¬¦  «         t!          |¦  «        }|                     ||d
dd
f¦  «        }||d d …dd
…d d …f         z  }t          ||||¬¦  «        d         }t%          |Ž \  }}|                     |¦  «        |                     |¦  «        }}t'          ||¦  «        }|                     |d
t)          |¦  «        d
f¦  «        }||d d …dd
…d d …f         z  }t+          |||||¬¦  «        d         }t          ||dd¬¦  «         d S )NéŸ   r   rM   )rQ   r{  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[   rS  r\   rq   rõ  ró  Ú	nsectionsrŽ  ÚshpÚz0rk  rÑ  rN  r  rƒ  r  rr   rÍ  r^   r]   Úy_tfs                        r`   Ú test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1€  s§  € õ
 ŒI×!Ò! #Ñ&Ô&×.Ò.¨q°!¸*Ð.ÑEÔEˆØ�HŠH�R‰LŒLˆØ�JŠJ�q‰MŒMˆõ Œm˜A˜t¨EÐ2Ñ2Ô2ˆÝ�sˆmˆØ�jŠj˜‰oŒoˆà”I˜a”Lˆ	ð ˆõ �1”7‰mŒmˆØˆˆD‰	Ý�Y�K #Ñ%Ñ&Ô&ˆØ�XŠX�c‰]Œ]ˆõ ˜˜a d¨rÐ2Ñ2Ô2‰ˆˆBõ ˜˜a    2 A 2 q q q œk°¸Ð<Ñ<Ô<‰ˆˆBÝ˜˜a    1 2 2 q q q œk°¸Ð<Ñ<Ô<‰ˆˆBð �IŠI�r˜2�h TˆIÑ*Ô*ˆÝ˜˜2 E°Ð6Ñ6Ô6Ð6Ý˜˜B U°Ð7Ñ7Ô7Ð7õ ˜‰_Œ_ˆØ�ZŠZ˜˜Y¨¨1¨aÐ0Ñ1Ô1ˆØ�!�A�A�A�q˜�s˜A˜A˜A�I”,ÑˆÝ�C˜ ¨"Ð-Ñ-Ô-¨aÔ0ˆå�sˆ|‰ˆˆ1Ø�zŠz˜!‰}Œ}˜bŸjšj¨™mœmˆ1ˆå˜˜1ÑÔˆØ�ZŠZ˜˜Q¥¨¡¤¨QÐ/Ñ0Ô0ˆØ�!�A�A�A�q˜�s˜A˜A˜A�I”,ÑˆÝ�q˜!˜Q T¨bÐ1Ñ1Ô1°!Ô4ˆÝ˜˜4 e°%Ð8Ñ8Ô8Ð8Ð8Ð8rb   r£   zissues a RuntimeWarningc                 óÔ  — t          ||¦  «        }|                     d|¬¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        t
          d¬¦  «        5  t          |||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   d	|d d …d
f<   t          j        t
          d¬¦  «        5  t          |||d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)rK   r{  rK   r¨   )rL   rN   )rL   rK   rK   rQ   zshould be all onesrH  rP   )rÍ  rŽ  rÃ  rK   zInvalid zi shape)r”  r´  rœ  r£  r   r»   r%   )r[   rS  r\   rq   ró  rÍ  s         r`   Útest_bad_zi_shapezTestSOSFilt.test_bad_zi_shape´  sn  € õ �R˜‰_Œ_ˆð �HŠH�Z rˆHÑ*Ô*ˆØ�hŠh�vÑÔˆØ�XŠX�lÑ#Ô#ˆÝŒ]�:Ð-AÐBÑBÔBð 	+ð 	+Ý�C˜˜r¨Ð*Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+àˆˆAˆAˆAˆqˆD‰	ÝŒ]�:Ð-?Ð@Ñ@Ô@ð 	+ð 	+Ý�C˜˜r¨Ð*Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s$   Á-BÂBÂBÂ<CÃC!Ã$C!c           	      ó  — t          ||¦  «        }t          j        ddd¬¦  «        }|                     |¦  «        }t	          |¦  «        }t          ||                     d|¬¦  «        |¬¦  «        \  }}t          ||dd	¬
¦  «         |                     | 	                    |d d …d d…f         d¬¦  «        | 	                    |d d …dd …f         d¬¦  «        z  ¦  «        }t          ||| 
                    |¦  «        z  d¬¦  «         d S )NrN   r  ró  r  r?  r¨   rÌ  r¢  F©rþ   r  rK   rª   r�  r  )r”  r   r   rY   r'   r%   rp  r4   rª  r!  rK  )r[   rS  r\   ró  rÍ  rr   rÑ  Ússs           r`   Útest_sosfilt_zizTestSOSFilt.test_sosfilt_ziÃ  s   € å�R˜‰_Œ_ˆÝŒm˜A˜s¨5Ð1Ñ1Ô1ˆØ�jŠj˜‰oŒoˆÝ˜‰_Œ_ˆå˜˜RŸWšW R¨r˜WÑ2Ô2°rÐ:Ñ:Ô:‰ˆˆ2Ý˜˜B U¸Ð>Ñ>Ô>Ð>ð �WŠW�R—V’V˜C    2 A 2 œJ¨R�VÑ0Ô0°2·6²6¸#¸a¸a¸aÀÀÀ¸e¼*È2°6Ñ3NÔ3NÑNÑOÔOˆÝ˜˜2 §¢¨Q¡¤Ñ/°eÐ<Ñ<Ô<Ð<Ð<Ð<rb   Tr  c                 ó:  — t          ||¦  «        }t          j        ddd¬¦  «        }|                     |¦  «        }t	          |¦  «        }t          ||                     d|¬¦  «        |                     ¦   «         ¬¦  «        \  }}t          ||dd	¬
¦  «         d S )NrN   r  ró  r  r?  r¨   rÌ  r¢  Fr  )	r”  r   r   rY   r'   r%   rp  r'  r4   )r[   rS  r\   ró  rÍ  r�  rÑ  s          r`   Útest_sosfilt_zi_2zTestSOSFilt.test_sosfilt_zi_2Ñ  sŽ   € õ �R˜‰_Œ_ˆÝŒm˜A˜s¨5Ð1Ñ1Ô1ˆØ�jŠj˜‰oŒoˆÝ˜‰_Œ_ˆå˜˜RŸWšW R¨r˜WÑ2Ô2°r·y²y±{´{ÐCÑCÔ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ÑFÔFðCð Cñ GÔFðCð@ Ð�kÐ*EÐFÑFÔFð.ð .ñ GÔFð.ð6 Ð�kÐ*EÐFÑFÔFðUð Uñ GÔFðUð&	ð 	ð 	ð Ð�kÐ*;Ð<Ñ<Ô<ð3ð 3ñ =Ô<ð3ð2 Ð�kÐ*;Ð<Ñ<Ô<ØÐÐ(Ð1OÐPÑPÔPð?ð ?ñ QÔPñ =Ô<ð?ð, Ð�kÐ*;Ð<Ñ<Ô<ð19ð 19ñ =Ô<ð19ðf Ð�gÐ&?Ð@Ñ@Ô@ØÐ�kÐ*;Ð<Ñ<Ô<ð+ð +ñ =Ô<ñ AÔ@ð+ð Ð�kÐ*;Ð<Ñ<Ô<ð=ð =ñ =Ô<ð=ð Ð˜dÐ#Ñ#Ô#ð?ð ?ñ $Ô#ð?ð ?ð ?rb   rÿ  c                   óž   — e Zd Z edd¬¦  «        d„ ¦   «         Zd„ Z edd¬¦  «        d	„ ¦   «         Z edd¬¦  «        d
„ ¦   «         Zd„ Z	dS )ÚTestDeconvolveTrÎ  rx   c                 ó”   — g d¢}ddg}|                      g d¢¦  «        }t          j        ||¦  «        \  }}t          ||¦  «         d S )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à  s_   € ð .Ð-Ð-ˆØ˜q˜6ÐØ—:’:Ð;Ð;Ð;Ñ<Ô<ˆÝ%Ô0°Ð;KÑLÔLÑˆ	�9Ý˜	 8Ñ,Ô,Ð,Ð,Ð,rb   c                 óî   — |                      g d¢|j        ¬¦  «        }|                      ddg¦  «        }|                      g d¢¦  «        }t          j        ||¦  «        \  }}t	          ||¦  «         d S )Nr'  r¨   rQ   rP   r(  )rY   rå   r   r)  r4   r*  s          r`   ra   zTestDeconvolve.test_basicé  s|   € à—:’:Ð8Ð8Ð8ÀÄ
�:ÑKÔKˆØŸ:š: q¨! fÑ-Ô-ÐØ—:’:Ð;Ð;Ð;Ñ<Ô<ˆÝ%Ô0°Ð;KÑLÔLÑˆ	�9Ý˜	 8Ñ,Ô,Ð,Ð,Ð,rb   r’   zdifferent error messagerH   c                 ó  — |                      ddgddgg¦  «        }|                      ddg¦  «        }t          j        t          d¬¦  «        5  t	          j        ||¦  «        \  }}d d d ¦  «         d S # 1 swxY w Y   d S )Nr   z#^Parameter signal must be non-emptyrH  ©rY   r£  r   r»   r   r)  ©r[   r\   r-  r,  Úquotientr/  s         r`   Útest_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signalñ  sÜ   € à—:’:  1˜v¨¨1 vÐ.Ñ/Ô/ˆØŸ:š: q¨! fÑ-Ô-ÐÝŒ]�:Ð-RÐSÑSÔSð 	Pð 	PÝ"(Ô"3°HÐ>NÑ"OÔ"OÑˆH�ið	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pó   ÁA4Á4A8Á;A8c                 ó  — |                      ddg¦  «        }|                      ddgddgg¦  «        }t          j        t          d¬¦  «        5  t	          j        ||¦  «        \  }}d d d ¦  «         d S # 1 swxY w Y   d S )Nr   z$^Parameter divisor must be non-emptyrH  r2  r3  s         r`   Útest_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisorø  sÜ   € à—:’:˜q !˜fÑ%Ô%ˆØŸ:š:¨¨1 v°°1¨vÐ&6Ñ7Ô7ÐÝŒ]�:Ð-SÐTÑTÔTð 	Pð 	PÝ"(Ô"3°HÐ>NÑ"OÔ"OÑˆH�ið	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pr6  c                 ó  — |                      g d¢¦  «        |                      g d¢¦  «        }}t          j        ||¦  «        \  }}t          ||¦  «         t	          |                      |¦  «        ¦  «        dk    sJ ‚dS )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ò  Údivr4  r/  s         r`   Útest_divisor_greater_signalz*TestDeconvolve.test_divisor_greater_signalÿ  s}   € à—:’:˜i˜i˜iÑ(Ô(¨"¯*ª*°_°_°_Ñ*EÔ*EˆSˆÝ$Ô/°°SÑ9Ô9Ñˆ�)Ý˜	 3Ñ'Ô'Ð'Ý�r—z’z (Ñ+Ô+Ñ,Ô,°Ò1Ð1Ð1Ð1Ð1Ð1rb   N)
r"  r#  r$  r%  rè  ra   r&  r5  r8  r;  rè   rb   r`   r%  r%  Ý  sÂ   € € € € € ð Ð˜dÐ+KÐLÑLÔLð-ð -ñ MÔLð-ð-ð -ð -ð Ð�vÐ&?Ð@Ñ@Ô@ðPð Pñ AÔ@ðPð Ð�vÐ&?Ð@Ñ@Ô@ðPð Pñ AÔ@ðPð2ð 2ð 2ð 2ð 2rb   r%  c                   óH  — e Zd Zd„ Z edd¬¦  «        d„ ¦   «         Zej                             dddg¦  «        ej                             d	g d
¢¦  «        d„ ¦   «         ¦   «         Z	d„ Z
ej                             d ej        ddg¦  «        ddgg¦  «        d„ ¦   «         ZdS )ÚTestDetrendc                 óœ   — t          |                     g d¢¦  «        ¦  «        }|                     g d¢¦  «        }t          ||¦  «         d S )NrO   r£  )r*   rY   r:   )r[   r\   Ú	detrendedÚdetrended_exacts       r`   ra   zTestDetrend.test_basic
  sJ   € Ý˜BŸJšJ y y yÑ1Ô1Ñ2Ô2ˆ	ØŸ*š* Y Y YÑ/Ô/ˆÝ! )¨_Ñ=Ô=Ð=Ð=Ð=rb   rF   zoverwrite_data not implementedrH   c                 ó˜   — |                      g d¢¦  «        }t          |d¬¦  «        }t          |d¬¦  «        }t          ||¦  «         d S )N)rP   ç333333ó?r.  gš™™™™™ù?g333333@F)Úoverwrite_dataT)rY   r*   r:   )r[   r\   rq   Ú
copy_arrayÚinplaces        r`   Ú	test_copyzTestDetrend.test_copy  sT   € à�JŠJÐ.Ð.Ð.Ñ/Ô/ˆÝ˜Q¨uÐ5Ñ5Ô5ˆ
Ý˜!¨DÐ1Ñ1Ô1ˆÝ! *¨gÑ6Ô6Ð6Ð6Ð6rb   r  Úlinearrí  rŽ  r)  c                 ó    — |                      |                     d¦  «        d¦  «        }t          |||¬¦  «        }|j        |j        k    sJ ‚d S )NéÒ   )rM   rN   r—   )r¶  rŽ  )r†   r‡   r*   r˜  )r[   rŽ  r  r\   rÈ  r?  s         r`   r  zTestDetrend.test_axis  sR   € ð �zŠz˜"Ÿ)š) EÑ*Ô*¨IÑ6Ô6ˆÝ˜D t°$Ð7Ñ7Ô7ˆ	ØŒ $¤*Ò,Ð,Ð,Ð,Ð,Ð,rb   c                 óÞ  — g d¢g d¢z   }|                      |¦  «        }t          |dd¬¦  «        }t          ||                     |¦  «        d¬¦  «         |                      |¦  «        d d d …d f         }t          |ddd¬	¦  «        }t          ||                     |¦  «        d¬¦  «         t	          t
          ¦  «        5  t          |dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr)  )rM   r   rã  rË  rG  rK   )r¶  Úbprƒ   r„   rP   )r¶  rK  rŽ  )rY   r*   r4   rÃ  rº   r»   )r[   r\   rÈ  r?  s       r`   Útest_bpzTestDetrend.test_bp  s<  € Øˆyˆy˜?˜?˜?Ñ*ˆØ�zŠz˜$ÑÔˆÝ˜D x°AÐ6Ñ6Ô6ˆ	Ý˜	 2§=¢=°Ñ#;Ô#;À%ÐHÑHÔHÐHð �zŠz˜$ÑÔ  a a a¨ Ô.ˆå˜D x°A¸AÐ>Ñ>Ô>ˆ	Ý˜	 2§=¢=°Ñ#;Ô#;À%ÐHÑHÔHÐHõ �:Ñ&Ô&ð 	/ð 	/Ý�D˜x¨AÐ.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   ÃC"Ã"C&Ã)C&rK  r   rQ   c                 óD  — t           j                             d¦  «        }|                     d¦  «        }|                     |t          |¦  «        ¬¦  «        }t          |t           j        ¦  «        r%t          |¦  «        s|                     |¦  «        }n2t          |¦  «        s#t          |¦  «        st          j        d¦  «         t          ||¬¦  «        }|                     g d¢¦  «        }t          |¦  «        |j        k    rdnd}t          |||¬	¦  «         d S )
Ni90  rR   r¨   z'list bp is currently numpy and jax only)rK  )
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[   rK  r\   r  rq   rs  Úres_scipy_191r…   s           r`   Útest_detrend_array_bpz!TestDetrend.test_detrend_array_bp-  s  € õ Œi×#Ò# EÑ*Ô*ˆØ�HŠH�R‰LŒLˆØ�JŠJ�qÕ 0°Ñ 4Ô 4ˆJÑ5Ô5ˆÝ�b�"œ*Ñ%Ô%ð 	G­f°R©j¬jð 	Gð —’˜B‘”ˆBˆBå˜R‘L”Lð G¥F¨2¡J¤Jð GÝ”ÐEÑFÔFÐFå�a˜BÐÑÔˆØŸ
š
ð $Oð $Oð $Oñ Pô Pˆõ (¨Ñ+Ô+¨r¬zÒ9Ð9ˆtˆt¸uˆÝ˜˜]°Ð6Ñ6Ô6Ð6Ð6Ð6rb   N)r"  r#  r$  ra   r%  rF  r£  r¤  r¥  r  rL  r  r�  rP  rè   rb   r`   r=  r=    sû   € € € € € ð>ð >ð >ð
 Ð�kÐ*JÐKÑKÔKð7ð 7ñ LÔKð7ð „[×Ò˜V h°
Ð%;Ñ<Ô<Ø„[×Ò˜V Y Y YÑ/Ô/ð-ð -ñ 0Ô/ñ =Ô<ð-ð
/ð /ð /ð  „[×Ò˜T H B¤H¨a°¨VÑ$4Ô$4°q¸!°fÐ#=Ñ>Ô>ð7ð 7ñ ?Ô>ð7ð 7ð 7rb   r=  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestUniqueRootsc                 óê   — |                      g d¢¦  «        }t          |¦  «        \  }}t          ||d¬¦  «         t          ||                     t          |¦  «        t          ¬¦  «        ¦  «         d S )N)rj  rÀ  r'  rB  r%  r{  rÑ  r¨   ©rY   r+   r;   r5   rp  rQ  rz  ©r[   r\   rU  rw  rx  s        r`   Útest_real_no_repeatz#TestUniqueRoots.test_real_no_repeatF  sk   € Ø�JŠJÐ3Ð3Ð3Ñ4Ô4ˆÝ+¨A™œÑˆ�Ý˜F A¨rÐ2Ñ2Ô2Ð2Ý˜ b§g¢g­c°!©f¬f½C gÑ&@Ô&@ÑAÔAÐAÐAÐArb   c                 óz  — |                      g d¢¦  «        }t          |dd¬¦  «        \  }}t          ||                      g d¢¦  «        d¬¦  «         t          ||                      g d¢¦  «        ¦  «         t          |dd	¬¦  «        \  }}t          ||                      g d
¢¦  «        d¬¦  «         t          ||                      g d¢¦  «        ¦  «         t          |dd¬¦  «        \  }}t          ||                      g d¢¦  «        d¬¦  «         t          ||                      g d¢¦  «        ¦  «         d S )N)rj  çffffffî¿ç{®Gázì¿çš™™™™™é¿r&  rÃ  çÍÌÌÌÌÌð?r‚  r_  ©Útolr§  )rj  rY  r&  rÃ  r{  rÑ  ©rQ   rQ   rP   rQ   r-  )rX  rZ  r&  r[  r¥  )g333333ï¿g
×£p=
ë¿r&  gffffffð?©rY   r+   r;   r5   rU  s        r`   Útest_real_repeatz TestUniqueRoots.test_real_repeatL  sN  € Ø�JŠJÐAÐAÐAÑBÔBˆå+¨A°4¸uÐEÑEÔEÑˆ�Ý˜F B§J¢JÐ/FÐ/FÐ/FÑ$GÔ$GÐQSÐTÑTÔTÐTÝ˜ b§j¢j°°°Ñ&>Ô&>Ñ?Ô?Ð?å+¨A°4¸uÐEÑEÔEÑˆ�Ý˜F B§J¢JÐ/GÐ/GÐ/GÑ$HÔ$HÐRTÐUÑUÔUÐUÝ˜ b§j¢j°°°Ñ&>Ô&>Ñ?Ô?Ð?å+¨A°4¸uÐEÑEÔEÑˆ�Ý˜F B§J¢JÐ/KÐ/KÐ/KÑ$LÔ$LØ$&ð	(ñ 	(ô 	(ð 	(å˜ b§j¢j°°°Ñ&>Ô&>Ñ?Ô?Ð?Ð?Ð?rb   c                 óê   — |                      g d¢¦  «        }t          |¦  «        \  }}t          ||d¬¦  «         t          ||                     t          |¦  «        t          ¬¦  «        ¦  «         d S )N)rj  r§   ù      à?      à?r»  r‰  r{  rÑ  r¨   rT  rU  s        r`   Útest_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeat\  sk   € Ø�JŠJÐHÐHÐHÑIÔIˆÝ+¨A™œÑˆ�Ý˜F A¨rÐ2Ñ2Ô2Ð2Ý˜ b§g¢g­c°!©f¬f½C gÑ&@Ô&@ÑAÔAÐAÐAÐArb   c                 óz  — |                      g d¢¦  «        }t          |dd¬¦  «        \  }}t          ||                      g d¢¦  «        d¬¦  «         t          ||                      g d¢¦  «        ¦  «         t          |dd	¬¦  «        \  }}t          ||                      g d
¢¦  «        d¬¦  «         t          ||                      g d¢¦  «        ¦  «         t          |dd¬¦  «        \  }}t          ||                      g d¢¦  «        d¬¦  «         t          ||                      g d¢¦  «        ¦  «         d S )N)rj  ù      ð¿š™™™™™©?ùffffffî¿333333Ã?ùÍÌÌÌÌÌì¿333333Ã?r*  rb  ùÍÌÌÌÌÌÜ?š™™™™™á?r‚  r_  r\  )rj  rf  r*  rh  r{  rÑ  r^  r-  )re  rg  r*  rb  r¥  )y      ð¿š™™™™™™?yš™™™™™í¿333333Ã?r*  yffffffÞ?ÍÌÌÌÌÌà?r_  rU  s        r`   Útest_complex_repeatz#TestUniqueRoots.test_complex_repeatb  s{  € Ø�JŠJð 'ð 'ð 'ñ (ô (ˆõ  ,¨A°4¸uÐEÑEÔEÑˆ�Ý˜FØŸJšJÐ'OÐ'OÐ'OÑPÔPØ$&ð	(ñ 	(ô 	(ð 	(õ 	˜ b§j¢j°°°Ñ&>Ô&>Ñ?Ô?Ð?å+¨A°4¸uÐEÑEÔEÑˆ�ÝØØ�JŠJØ>Ð>Ð>ñô ð ð	
ñ 	
ô 	
ð 	
õ 	˜ b§j¢j°°°Ñ&>Ô&>Ñ?Ô?Ð?å+¨A°4¸uÐEÑEÔEÑˆ�ÝØØ�JŠJÐKÐKÐKÑLÔLØð	
ñ 	
ô 	
ð 	
õ
 	˜ b§j¢j°°°Ñ&>Ô&>Ñ?Ô?Ð?Ð?Ð?rb   c           
      óÒ  — |                      t          j        t          j        t          j        d¦  «        t          j        d¦  «        ¦  «        ¦  «        ¦  «        }|                      g d¢¦  «        }t          |¦  «        \  }}|                     |¦  «        }t          |                     |¦  «        |d¬¦  «         t          ||                      g d¢¦  «        ¦  «         d S )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   rp  r+   Úsortr;   r5   )r[   r\   rU  Ú
true_rootsrw  rx  s         r`   Útest_gh_4915zTestUniqueRoots.test_gh_4915~  s»   € Ø�JŠJ•r”x¥¤­B¬G°A©J¬J½¼À¹
¼
Ñ CÔ CÑDÔDÑEÔEˆØ—Z’ZØBÐBÐBñ
ô 
ˆ
õ  ,¨A™œÑˆ�Ø—’˜‘”ˆå˜BŸGšG F™OœO¨ZÀÐCÑCÔCÐCÝ˜ b§j¢j°°°Ñ&>Ô&>Ñ?Ô?Ð?Ð?Ð?rb   c                 óÖ  — t          |                     g d¢¦  «        ¦  «        \  }}t          ||                     ddg¦  «        d¬¦  «         t          ||                     ddg¦  «        ¦  «         t          |                     g d¢¦  «        d	¬
¦  «        \  }}t          ||                     ddg¦  «        d¬¦  «         t          ||                     ddg¦  «        ¦  «         d S )N)rÃ  r§   rÃ  rÃ  r§   r{  rÑ  rQ   rP   )rP   g_p‰   ð?ù•Ö&è.>      ð?r‚  )r]  ro  )r+   rY   r;   r5   rv  s       r`   Útest_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extraŠ  së   € Ý+¨B¯JªJÐ7GÐ7GÐ7GÑ,HÔ,HÑIÔIÑˆ�Ý˜F B§J¢J°°T¨{Ñ$;Ô$;ÀRÐHÑHÔHÐHÝ˜ b§j¢j°!°Q°Ñ&8Ô&8Ñ9Ô9Ð9å+Ø�JŠJÐ/Ð/Ð/Ñ0Ô0°cð 
ñ  
ô  
Ñˆ�õ 	˜F B§J¢J°°[Ð/AÑ$BÔ$BÈBÐOÑOÔOÐOÝ˜ b§j¢j°!°Q°Ñ&8Ô&8Ñ9Ô9Ð9Ð9Ð9rb   c                 óŽ  — |                      t          j                             d¦  «        dt          j                             d¦  «        z  z   ¦  «        }t	          |d¦  «        \  }}t          ||                      t          j        |¦  «        g¦  «        d¬¦  «         t          ||                      dg¦  «        ¦  «         d S )NrØ   r§   rQ   r{  rÑ  )rY   r  r  r	  r+   r;   r_  r5   rU  s        r`   Útest_single_unique_rootz'TestUniqueRoots.test_single_unique_root•  sœ   € Ø�JŠJ•r”y—~’~ cÑ*Ô*¨Rµ"´)·.².ÀÑ2EÔ2EÑ-EÑEÑFÔFˆÝ+¨A¨qÑ1Ô1Ñˆ�Ý˜F B§J¢Jµ´°q±	´	¨{Ñ$;Ô$;ÀRÐHÑHÔHÐHÝ˜ b§j¢j°#°Ñ&7Ô&7Ñ8Ô8Ð8Ð8Ð8rb   N)
r"  r#  r$  rV  r`  rc  ri  rm  rp  rr  rè   rb   r`   rR  rR  D  sŒ   € € € € € ðBð Bð Bð@ð @ð @ð Bð Bð Bð@ð @ð @ð8
@ð 
@ð 
@ð	:ð 	:ð 	:ð9ð 9ð 9ð 9ð 9rb   rR  c                  óœ   — t          j        t          j        dt          j        ¬¦  «        dd¦  «        } | j        t          j        k    sJ ‚d S )Nrü  r¨   rN   rL   )r   rð  r  r‡   ræ   r©   )rw  s    r`   Útest_gh_22684rt  œ  sB   € ÝÔ!¥"¤)¨D½¼Ð"EÑ"EÔ"EÀqÈ!ÑLÔL€FØŒ<�2œ<Ò'Ð'Ð'Ð'Ð'Ð'rb   rü  )–re  r©  rL  Úconcurrent.futuresr   r   Ú	itertoolsr   r   r£  r   rº   Únumpyr  Únumpy.exceptionsr	   Úscipyr
   r  rx  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*  r3  r@  rC  rE  r¥  rf  rN  rœ  rÍ  rt  rv  rÔ  rÏ  ry  rÛ  r�  r}  rŽ  r‹  r§  rQ  rU  rW  r[  r]  r_  rf  rh  rj  r—  Úparamr¦  r­  r°  r³  rÔ  râ  rï  r  r6  rB  Ú	fail_slowrN  rP  rY  r^  r[  rµ  rÍ  r  rh  rÉ  rÿ  r)  r%  r=  rR  rt  rè   rb   r`   ú<module>r„     sN  ðØ 
€
€
€
Ø €€€Ø €€€à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð &Ð %Ð %Ð %Ð %Ð %Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ”;Ô/Ð Ø”KÔ1Ð à�(€ð Ð�8ÑÔðo4ð o4ð o4ð o4ð o4ñ o4ô o4ñ Ôðo4ðd Ð�:ÑÔð["ð ["ð ["ð ["ð ["ñ ["ô ["ñ Ôð["ð| Ð�;ÑÔðmLð mLð mLð mLð mLñ mLô mLñ  ÔðmLð`3ð 3ð 3ðð ð ð

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