
    Yh`                    H   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m	Z	 d dl
Z
d dl
mZ d dlmZ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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS e
jT        jU        ZUe
jT        jV        ZV eUddg           G d d                      ZW eUddg           G d d                      ZX eUddg           G d d                      ZYd ZZd Z[d Z\d Z] eUd d!"           eVd#d$"           G d% d&                                  Z^ eUdd'(           G d) d*                      Z_ eUddg           G d+ d,                      Z` eUddg           G d- d.                      Zag d/ZbebeDz  Zb eUd#d0"           G d1 d2                      Zc eUd3           G d4 d5                      Zd eUddg           G d6 d7                      Ze eUddg           G d8 d9                      Zf G d: d;ef          Zg G d< d=ef          Zhe
jT        i                    d>           eUd3           G d? d@ef                                  Zj G dA dBef          Zk G dC dDef          Zle
jT        i                    d>           eUd3           G dE dFef                                  Zme
jT        i                    d>           eUddG(           G dH dIef                                  Zne
jT        i                    d>           eUddG(           G dJ dKef                                  Zoe
jT        i                    d>           eUd3          dL                         Zp eUd3          dM             Zq G dN dO          Zre
jT        s                    dPg dQ           eUddg           eUd d!"           G dR dSer                                              Zte
jT        i                    d>           eUddG(          e
jT        s                    dPeg           G dT dUer                                              Zu G dV dW          Zv eUddX(          e
jT        s                    dYg dZ          e
jT        s                    d[dd\g          e
jT        s                    d]d^d_d`da e
jw        dbe
jT        jx        gc           e
jw        dde
jT        jx        gc          g          de                                                 Zy eUd3          df             Zz eUddg          e
jT        s                    dgdhdig           G dj dk                                  Z{ eUddg           G dl dm                      Z| eUdn           eUddo"           G dp dq                                  Z} eUddg           G dr ds                      Z~ eUd#dt"           eUddg           G du dve~                                  Zdw ZddxZe
jT        i                    d>           eUd3          e
jT                            dy          dz                                     Ze
jT        j         eUd3          d{                         Z eUd3          e
jT        i                    d>          d|                         Z eUd3          e
jT                            dy          d}                         Z eUd3           G d~ d                      Z eUd d"           G d d                      Z eUd d"           G d d                      Z G d d          Z eUd3           G d d                      Z G d d          Ze
jT        i                    d>           eUd3          e
jT        s                    de4e)f          d                                     Z eUdn          e
jT        s                    dPg d           G d d                                  Z eUdd           eUd d"           G d d                                  Z eUddg           G d d                      Z eUd3           G d d                      Zd ZdS )    N)ThreadPoolExecutoras_completed)Decimalproduct)gcd)raises)assert_allclosesuppress_warnings)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_namespaceTcupycpu_only
exceptionsc                      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
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ej        j         ed
          d                          Zd!S )#TestConvolve	jax.numpy2jax returns floats; scipy returns ints; cf gh-6076reasonc                     |                     g d          }|                     g d          }t          ||          }t          ||                     g d                     d S )N)            rP   rO         rN   )rN   
             rX         asarrayr   r8   selfxpabcs        u/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/signal/tests/test_signaltools.py
test_basiczTestConvolve.test_basic.   sg     JJ)))**JJyyy!!QNN2::&E&E&EFFGGGGG    c                     |                     g d          }|                     g d          }t          ||d          }t          ||                     g d                     d S )NrN   rO   rP   rS   rT   rN   rO   samemode)rU   rV   "   r[   r]   s        rc   	test_samezTestConvolve.test_same6   sh     JJyyy!!JJ|||$$Q'''2::lll3344444re   c                     |                     g d          }|                     g d          }t          ||d          }t          ||                     g d                     d S )Nrg   rR   ri   rj   )rU   rV   rV   r[   r]   s        rc   test_same_eqzTestConvolve.test_same_eq>   sh     JJyyy!!JJyyy!!Q'''2::lll3344444re   c                     |                     g d          }|                     ddg          }t          ||          }t          ||                     g d                     d S )N)      ?      ?       @      ?      @      ?rq   rr   )               @y       @      @y      @       @y      @      @r[   )r^   r_   xyzs        rc   test_complexzTestConvolve.test_complexF   sf    JJ///00JJ'((QNN2::&B&B&BCCDDDDDre   zwrong output dtypec                     |                     d          }|                     d          }t          ||          }t          |||z             d S Ni	  i  r[   r]   s        rc   test_zero_rankzTestConvolve.test_zero_rankL   sK    JJtJJtQNN1q5!!!!!re   Tzpure pythonnp_onlyrL   c                 D    d}d}t          ||          }|||z  k    sJ d S rz   r   r]   s        rc   test_zero_rank_python_scalarsz*TestConvolve.test_zero_rank_python_scalarsS   s.    QNNAEzzzzzzre   c                 x   |                     |                    d          d          }|                    d          }t          d          D ]k}dgdz  }d||<   t          ||                     ||          d          }t          ||                     ||          d          }t	          ||d	           ld S )
N   rN   rN   rN   rN   rS   directmethodr   +=atol)reshapearangeranger   r7   )r^   r_   r`   ra   ib_shaperu   rv   s           rc   test_broadcastablezTestConvolve.test_broadcastableZ   s    JJryy}}i00IIaLLq 	. 	.Ac!eGGAJBJJq'228DDDABJJq'225AAAAAqu-----	. 	.re   c                     |                     dg          }|                     dg          }t          ||          }t          |||z             d S Ng  P  r[   r]   s        rc   test_single_elementz TestConvolve.test_single_elemente   sO    JJvJJvQNN1q5!!!!!re   rC   c                     |                     g dg dg          }|                     g dg dg          }t          ||          }|                     g dg dg dg          }t          ||           d S NrR   rg   rT   rN   rO   rO   rP   rQ   )rT            rZ   )rU      >   :   &   )rZ      r   1   r   r[   r^   r_   r`   ra   rb   ds         rc   test_2d_arrayszTestConvolve.test_2d_arraysl   s     JJ			999-..JJ			999-..QNNJJ***'''''') * * 	1re   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   rT   rT   rT                 ?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@fullri   rS   rN   r   valid)r   r   
complex128r\   r8   r   )r^   r_   smallbig	out_arrays        rc   test_input_swappingz TestConvolve.test_input_swappingw   sn    

299Q<<332::bii"-i@@)LLLrzz"))Bbm)<<TTrTBINNNJJ1116667776668
 :99;;;======?
 ;::>>>>>><<<>
 :99<<<:::888:;< <	* 	V44i@@@eV44i@@@V44$QqS!A#qs]3	5 	5 	5eV44$QqS!A#qs]3	5 	5 	5W55$QqS!A#qs]3	5 	5 	5eW55$QqS!A#qs]3	5 	5 	5 	5 	5re   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 Nrg   rR   spamrj   eggsr   rk   r   hamr   r   baconri   )r\   assert_raises
ValueErrorr   r^   r_   r`   ra   s       rc   test_invalid_paramsz TestConvolve.test_invalid_params   s    JJyyy!!JJyyy!!j(Aqv>>>>j(AqveLLLLj(AquXNNNNj(AqvgNNNNj(AqvgNNNNNNre   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rS   rT   rN   rQ   rP   rN   	rT   rN   rO   rP   rN   rO   rT   rT   rS   )F   N   I   A   r   )y      ?      @       @      y      @               @            ?        y       @      $r[   r^   r_   r`   ra   expectedouts         rc   test_valid_mode2zTestConvolve.test_valid_mode2   s    JJ)))**JJ22233::...//q!W%%X&&&q!W%%X&&&JJ///00JJ'((::vw/00q!W%%X&&&q!W%%X&&&&&re   c                     |                     g d          }|                     g d          }t          ||d          }|                     g d          }t          ||           d S )N)rS   rT   rN   rN   rS   rT   )rS   rO   rN   rO   rP   rQ   r   rO   rN   rT   rS   rS   rN   ri   )9   =   ?   r   -   $   r[   r   s         rc   test_same_modezTestConvolve.test_same_mode   sq    JJ)))**JJ>>>??Q6""JJ///001re   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 	NrS   r   rT   rN   r   rN   rT   rk   r   )r   r   r   r   r   r   s       rc   test_invalid_shapesz TestConvolve.test_invalid_shapes   s     JJryyA//JJryyQ''00j(IaVIII7HIIIj(IaVIII7HIIIIIre   zTODO: convert this testd   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   ri    ).0t1t2rk   typess       rc   
<listcomp>z5TestConvolve.test_convolve_method.<locals>.<listcomp>   sb     F F F2 F F2+DF F#' R F F F F Fre   *   r   rS   size)r   fr   ra   ur                 ?rb   c           	      8    i | ]}|t          |           S ))r   rk   r   )r   keyrk   x1x2s     rc   
<dictcomp>z5TestConvolve.test_convolve_method.<locals>.<dictcomp>   s<     5 5 5 HRCdCCC 5 5 5re   )r   r   r   r   r   c                     g | ]}|d v S )>   r   r   r   )r   ts     rc   r   z5TestConvolve.test_convolve_method.<locals>.<listcomp>   s    DDDaA11DDDre   -C6?ư>rtolr   r   MbP?h㈵>:0yE>)nprandomRandomStatechoicerandnr   kindastyper   anyr7   )r^   r_   nargsrngarray_typesr   r   resultskwargsrk   r   r   r   s             @@@@rc   test_convolve_methodz!TestConvolve.test_convolve_method   s4   4 4 4F F F F F F F
 i##B''JJ1vAJ66IIaLL* *.9#.>>C;s+&s+d;s3C.CCC  	I 	ILBDRXb\\./66r::BRXb\\./66r::B5 5 5 5 5 5"35 5 5G 5>'78+<+BBBBB||")"b11X==== DDB8DDDEE 6"($77r2h&&"&55 #'55GENGH,=HHHHHH1	I 	Ire   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)	rU      2   3   4   5   6   <   r   rT   r   r   r   r   r  Fcheck_dtype)r\   r   r   r8   )r^   r_   r  rw   r   r   vals          rc    test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_input   s     6 	@ 	@A

AqD6
22A1a...Ca8444F
 2vvjj!ac(,,V,,,Se<<<<????	@ 	@re   r}   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 NrS   rT   r   r   r   rN   )r   r   r   r^   r_   s     rc   test_mismatched_dimsz!TestConvolve.test_mismatched_dims  s     	j(QC8DDDDj(As8DDDDj(QC5AAAAj(As5AAAAj(QC1#777j(QC33333re   c                     t          j        g dt                    }t          j        g dt                    }t          j        d          5  t          ||           d d d            d S # 1 swxY w Y   d S Nr   r   r   dtype=object is not supportedmatch)r  r\   objectpytestdeprecated_callr   r   s       rc   test_dtype_deprecationz#TestConvolve.test_dtype_deprecation  s     J)))888J222&AAA#*IJJJ 	 	QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A..A25A2N)r   )__name__
__module____qualname__skip_xp_backendsrd   rm   ro   rx   xfail_xp_backendsr{   r   r   r   r   r   r   r   r   r   r  r   r%  r,  markthread_unsafer.  r   re   rc   rH   rH   +   sT        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	. 	. 	. {+?@@@" " A@" k##f   $# gf#5 #5  #5J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 [d###  $#   re   rH   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 )%TestConvolve2drI   r   rK   c                     |                     g dg dg          }|                     g dg dg          }|                     g dg dg dg          }t          ||          }t          ||           d S r   r\   r   r8   )r^   r_   r`   ra   r   es         rc   r   zTestConvolve2d.test_2d_arrays)  s    JJ			999-..JJ			999-..JJ***'''''') * * q!1re   c                 &   |                     g dg dg          }|                     g dg dg          }|                     g dg          }t          ||d          }t          ||           t          ||d          }t          ||           d S )NrT   rN   rO   rP   rQ   r   r   rO   rP   rQ   r   r   	   rU   rR   rg   r   P   b   t      r   r:  r^   r_   r;  r   hgs         rc   test_valid_modezTestConvolve2d.test_valid_mode3  s    JJ---/E/E/EFGGJJ			999-..JJ.../00q!W%%1 q!W%%1re   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>  rR   rg   r   r   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@r   )r\   r   r   r7   r8   rE  s         rc   test_valid_mode_complxz%TestConvolve2d.test_valid_mode_complx@  s    JJ---/E/E/EFGGJJ			999-R]JCCbHJJLLLMNNq!W%%1 q!W%%1re   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 )NrR   rg   r   r   rS   r   fill)      r   rl   rX   )rW   (   r   @   r  )rX   .   C   r   0   r:  )r^   r_   r`   ra   fillvalrb   r   s          rc   test_fillvaluezTestConvolve2d.test_fillvalueM  s    JJ			999-..JJ			999-..q!VVW55JJ,,,'''''') * * 	1re   c                    d}t           j                                        5 }|                    t          d           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 zCasting complex valuesr)  rS   rT   r   	fillvaluez,`fillvalue` must be scalar or an array with )r  testingr   filterr   r   r   r   )r^   r_   msgsups       rc   test_fillvalue_errorsz$TestConvolve2d.test_fillvalue_errorsX  s   BZ))++ 	:sJJ~'?@@@z555 : :QC5Aq6(b9999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:
 =:S111 	: 	:u1vh1a&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:sG   2BA7+B7A;	;B>A;	?BBB1CCCc                 L    t          t          t          dggddggg            d S )NrS   rT   rW  r   r   r   r$  s     rc   test_fillvalue_emptyz#TestConvolve2d.test_fillvalue_emptyc  s8    j*seq!fX "	$ 	$ 	$ 	$ 	$ 	$re   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 )	NrR   rg   r   r   r   wrap)rA  rA  J   rA  rA  )D   rd  r   rd  rd  r:  r   s         rc   test_wrap_boundaryz!TestConvolve2d.test_wrap_boundaryh  s    JJ			999-..JJ			999-..q!VV,,JJ,,,'''''') * * 	1re   c                     |                     g dg dg          }|                     g dg dg          }t          ||dd          }|                     g dg dg d	g          }t          ||           d S )
NrR   rg   r   r   r   symm)rl   r   ,   r   B   )r  rS  r   rA  T   )R   r   \   n   r   r:  r   s         rc   test_sym_boundaryz TestConvolve2d.test_sym_boundaryr  s    JJ			999-..JJ			999-..q!VV,,JJ,,,''')))+ , , 	1re   funczboundary, expectedrg  )g     B@      E@      F@g     F@rb  )     E@rr  rq       C@c                     |                     g dg          }|                    d          } |||d|          }t          ||                     |                     d S )N)       @            @      @)rS      ri   rk   boundary)r\   onesr8   )r^   rp  r|  r   r_   imagekernelresults           rc   test_same_with_boundaryz&TestConvolve2d.test_same_with_boundary|  sl     

111233!!eV&8DDD 	

8 4 455555re   c           	      J   dd l m} |                    |                    dd|j                  d          }|                    |                    dd|j                  d          }t          ||dd	
          }t          ||                    ||d	d                     d S )Nr   rS   r   r   )rU   rN   e   )rU   rU   ri   rb  r{  )r   r   )rk   origin)scipy.ndimagendimager   r   r   r   r8   r   )r^   r_   ndir`   ra   rb   s         rc   test_boundary_extension_samez+TestConvolve2d.test_boundary_extension_same  s    
 	$#####JJryyF"*y==wGGJJryyG2:y>>IIq!&6:::3<<16(<KKLLLLLre   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   rS   rU   r   rN   rN   %   )rQ   rQ   r   rb  r{  rN   )r  r  rj   r   )r  r  r   r   r   r   r  floatpadr\   r8   r   )	r^   r_   r  r`   ra   rb   a_npapad_npapads	            rc   test_boundary_extension_fullz+TestConvolve2d.test_boundary_extension_full  s
   
 	$#####JJryyEy<<fEEJJryyEy<<fEEq!&6:::yF%00088A>>&/88zz'""2::cll4l&H&H"crc&RSSTTTTTre   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       rc   r   z"TestConvolve2d.test_invalid_shapes  s     JJryyA//JJryyQ''00j*K1vKKK&'9JKKKj*K1vKKK&'9JKKKKKre   rJ   c                     |                     g dg dg          }|                     g dg dg          }t          ||d          }|                     g dg dg          }t          ||           d S )NrR   rg   r=  r>  ri   )rV   rW   rl   )rA  rB  rC  r:  )r^   r_   r;  r   rG  rF  s         rc   r   zTestConvolve2d.test_same_mode  s     JJ			999-..JJ---/E/E/EFGGq!V$$JJ ==" # #1re   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 )NrR   rg   r=  r>  r@  r   rq   r   rs         @        )r         @       @r  )r  y      @      ?y      @      y      ;@      y      G@       @r:  )r^   r_   r;  r   r   r   s         rc   r   zTestConvolve2d.test_valid_mode2  sJ    JJ			999-..JJ---/E/E/EFGG::555677Aw''X&&&Aw''X&&&JJ(66*:;<<JJ0002J2J2JKLL::2344Aw''X&&& Aw''X&&&&&re   z9only integer tensors of a single element can be convertedc                    t          j        d          }t          j        g d          }|                    |          }|                    |          }dD ]}t          |                    t          j        |||                    t          j        |||                     t          |                    t          j        |d d d f         |d d d f         |          d          t          j        |||                     d S )NrP   g	@gffffff?rN   r   r   ri   rj   r   axis)r  r   r\   r7   r   r   squeezer   )r^   r_   r  b_npr`   ra   rk   s          rc   test_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcs  s   
 y||z---((JJtJJt- 	 	D

2;tT===>>14000   

%aaaaj!D!!!G*4HHH    14000   	 	re   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 )NrN   rO   r_  r$  s     rc   test_invalid_dimsz TestConvolve2d.test_invalid_dims  sT    j*a333j*qcA3777j*ug!w?????re   z!Can't create large array for testTstride_tricksr|   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          rT     g    .Ar   rS   )iH  r   )shapestridesr   )r   itemsizer6   check_free_memoryr  zeroslibr  
as_stridedr   r   wherer   )r^   r_   r  r`   countfailss         rc   test_large_arrayzTestConvolve2d.test_large_array  s    
 dRXXZZ001$QUT\BHJJ4G%G#%MNNN HHTAXRXH..##A#F ++AaY	+RR!!q!fX..##Qx}!!!!!!re   N)r0  r1  r2  r3  r   rH  rJ  rU  r]  r`  re  ro  r,  r5  parametrizer   r   r  r  r  r   r   r   r  r  slowxfail_on_32bitr  r   re   rc   r8  r8  &  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[Vj+%>??[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 " " "re   r8  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j        j&         ed)7          d8                         Z'dS )9TestFFTConvolver   r   rK   axes Nr   r   c                     |                     g d          }|                     g d          }|dk    rt          ||          }n6t          |t                    rt	          |          }t          |||          }t          ||d           d S )NrR   rS   rO   rU   rZ         "@r  r  Tqs*>r   r\   r   
isinstancelisttupler7   r^   r  r_   r`   r   r   s         rc   	test_realzTestFFTConvolve.test_real  s     JJyyy!!::000112::a##CC$%% #T{{a...CXF333333re   rS   c                    |                     g d          }|                     g d          }|                     t          j        |ddg                    }|                     t          j        |ddg                    }t          |t                    rt          |          }t          |||          }t          ||d           d S )NrR   r  rT   rS   r  r  r   r\   r  tiler  r  r  r   r7   r  s         rc   test_real_axeszTestFFTConvolve.test_real_axes  s     JJyyy!!::00011JJrwq1a&))**::bghA7788dD!! 	;;D!QT***XF333333re   c                     |                     g d          }|                     g d          }|dk    rt          ||          }n6t          |t                    rt	          |          }t          |||          }t          ||d           d S )Nrq          @       @y      @      @rt   y               @y              4@y              8@y              2@r  r  r  r   r  r  s         rc   rx   zTestFFTConvolve.test_complex&  s    JJ///00::IIIJJ2::a##CC$%% #T{{a...CXF333333re   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  rT   rS   r  r  r   r  r  s         rc   test_complex_axesz!TestFFTConvolve.test_complex_axes3  s    JJ///00::IIIJJJJrwq1a&))**::bghA7788dD!! 	;;D!QT***XF333333re   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)      ?rT   rN   r   )r  rO   rU   rZ   r?  r   rN  8   r  r   r   rO  r   r  r   r  r  r  r  s         rc   test_2d_real_samez!TestFFTConvolve.test_2d_real_sameA  s     JJ!		# $ $::2222223335 6 6 2::a##CC$%% #T{{a...CX&&&&&re   rT   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 )NrR   r   )rS   rO   rU   rZ   r?  r  r  rT   rS   rS   r  r  Fr   r  r  r  s         rc   test_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axesZ  s     JJ			99  ::000---...0 1 1 JJrwq))),,--::bgh			::;;dD!! 	;;D!QT***XFFFFFFFre   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      @      @rr   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         rc   test_2d_complex_samez$TestFFTConvolve.test_2d_complex_samer  s     JJ000+++- . .::AAA(((<<<   2::a##CC$%% #T{{a...CXF333333re   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         rc   test_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axes  s     JJ000+++- . .::AAA(((<<<   JJrwq))),,--::bgh			::;;dD!! 	;;D!QT***XF333333re   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 )
NrR   	rN   rN   rP   rQ   r   r   r?  r   rS        A@     D@     G@	r        4@      9@r  r  r  rt  g      <@rv  r  ri   r  r  r   r  r^   r  r_   r`   ra   
expected_1
expected_2r   s           rc   test_real_same_modez#TestFFTConvolve.test_real_same_mode  s'    JJyyy!!JJ22233ZZ00
ZZ K K KLL
2::aF++CC$%% #T{{aF666CZ(((2::aF++CC$%% #T{{aF666CZf555555re   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 )NrR   r  r  r  rT   rS   ri   r  r  r   r  r  s           rc   test_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axes  s[    JJyyy!!JJ22233ZZ00
ZZ K K KLL
JJrwq1a&))**JJrwq1a&))**ZZ
QF ; ;<<
ZZ
QF ; ;<<
dD!! 	;;D!QT222Zf5555!QT222Zf555555re   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rN   rT   rS   r        8@g      ?@r  rs  g     H@r        (@r  r   r  r  r   r  r^   r  r_   r`   ra   r   r   s          rc   test_valid_mode_realz$TestFFTConvolve.test_valid_mode_real  s    JJyyy!!JJ22233::AAABB2::aG,,CC$%% #T{{aG$777CXF33332::aG,,CC$%% #T{{aG$777CXF333333re   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  rT   rS   r   r  r  r   r  r  s          rc   test_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axes  s     JJyyy!!JJ22233::AAABBJJrwq1a&))**JJrwq1a&))**::bghA7788dD!! 	;;D!Qd333XF333333re   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          rc   test_valid_mode_complexz'TestFFTConvolve.test_valid_mode_complex   s   JJ///00JJ???@@::AAABB2::aG,,CC$%% #T{{aG$777CXF33332::aG,,CC$%% #T{{aG$777CXF333333re   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  rT   rS   r   r  r  r   r  r  s          rc   test_valid_mode_complex_axesz,TestFFTConvolve.test_valid_mode_complex_axes  s&   JJ///00JJ???@@::AAABBJJrwq1a&))**JJrwq1a&))**::bghA7788dD!! 	;;D!Qd333XF3333!Qd333XF333333re   rI   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  )r\   r  r  r   r7   r   s         rc   test_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes)  s     JJyyy!!JJ22233::AAABBJJrwq1a&))**JJrwq1a&))**::bghA7788!Qa000XF333333re   rC   zassorted error messagesa,brP   rQ   r   c                     t          t          |                    |          |                    |                    |                    g                      d S N)r8   r   r\   r^   r`   ra   r_   s       rc   
test_emptyzTestFFTConvolve.test_empty8  sN    
 	

1rzz!}}55JJrNN	
 	
 	
 	
 	
re   zjnp.pad: pad_width with nd=0c                     |                     d          }|                     d          }t          ||          }t          |||z             d S r   )r\   r   r8   r^   r_   r`   ra   r   s        rc   r{   zTestFFTConvolve.test_zero_rankB  sM    JJtJJt!QQU#####re   c                     |                     dg          }|                     dg          }t          ||          }t          ||                     ||z  |j                             d S )Nr   r   r   )r\   r   r8   r   r  s        rc   r   z#TestFFTConvolve.test_single_elementI  sn    JJvJJv!Q

1q5	
::	< 	< 	< 	< 	<re   c                    t           j                            d           t           j                            d          dt           j                            d          z  z   }t           j                            d          dt           j                            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  seedrandr\   r   r   r  r  r  r7   	r^   r  r_   r  r  r   r`   ra   r   s	            rc   test_random_dataz TestFFTConvolve.test_random_dataP  s   
	ty~~d##b29>>$+?+?&??y~~d##b29>>$+?+?&??::bk$f==>>JJtJJt2::aF++CC$%% #T{{aF666CXE222222re   c                    t           j                            d           t           j                            d          dt           j                            d          z  z   }t           j                            d          dt           j                            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   rT   rS   r  r  r  )r  r  r  r  r   r  r\   r  r  r  r   r7   r  s	            rc   test_random_data_axesz%TestFFTConvolve.test_random_data_axesa  s:   
	ty~~d##b29>>$+?+?&??y~~d##b29>>$+?+?&??;tT622wtaV$$wtaV$$::bghA7788JJtJJtdD!! 	;;D!QT222XE222222re   TzTODO: swapaxesr|   rO   c                    d\  }}t           j                            d           |                    t          j        j        | dt          j        j        | z  z             }|                    t          j        j        | dt          j        j        | z  z             }t          ||d          }|d d d d d d d f         }|d d d d d d d f         }|d d d d d d d f         }|                    |                    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)){   rV   )      r  r   r   r   rT   rS   rO   )rT   rS   rN   rS   rS   )rT   rS   rS   rO   rS   )rT   rS   rN   rO   rS   r  r  r  )r  r  r  r\   r  r   moveaxisswapaxesr  r   r7   )	r^   r  r_   a_shaper   r`   ra   r   r   s	            rc   test_random_data_multidim_axesz.TestFFTConvolve.test_random_data_multidim_axest  s    0
	tJJry~w/"ry~w7O2OOPPJJry~w/"ry~w7O2OOPPaF++aaaD$$%aaaD$$%AAAqqq$d23KK

1a((!Q//KK

1a((!Q//;;x00A661== JJrwq///2233JJrwq///2233::bgh@@AA!QT222XE>>>>>>re   r  r   r  i  r  r  '  c                 F   t           j                            |          dt           j                            |          z  z   }t           j                            |          dt           j                            |          z  z   }|                    t          j        ||d                    }|                    |          }|                    |          }t          ||d          }t          ||d           t          ||ddg          }t          ||d           d S )Nr   r   r  r   r   r  )r  r  r  r\   r   r   r7   )	r^   r  r_   r  r  r   r`   ra   r   s	            rc   test_many_sizeszTestFFTConvolve.test_many_sizes  s     y~~a  2	q(9(9#99y~~a  2	q(9(9#99::bk$f==>>JJtJJt!Q''XE2222!QaS111XE222222re   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.*r)  ri   r   r   )r  r  default_rngr\   standard_normalnaninfr   firwinr,  warnsRuntimeWarningr   )r^   r_   r  r  sig_nanr  coeffsr[  s           rc   test_fft_nanzTestFFTConvolve.test_fft_nan  s#    i##K00**S003344FBF# 	L 	LCGCLZZc3 7 788FHCnC888 L LfU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	)(r0  r1  r2  r3  r,  r5  r  r  r  rx   r  r  r  r  r  r  r  r  r  r   r  r  r4  r	  r{   r   r  r  r!  r  r  r   r  r  r  randinttolistr$  r6  r1  r   re   rc   r  r    s        g&;<<<[Vb$A3RD%ABB4 4 CB =<4 g&;<<<[Va!b2$%7884 4 98 =<4 [Vb$A3RD%ABB
4 
4 CB
4 [Va!b2$%7884 4 984 [Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	1 	1' '	1 	1' [Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1 1G G1 1G  [Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	1 	14 4	1 	14$ [Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1 14 41 14$ g&;<<<[Vb$A3RD%ABB6 6 CB =<6, g&;<<<[VaaS2$%7886 6 98 =<6( g&;<<<[Vb$A3RD%ABB4 4 CB =<4, g&;<<<[Va!X..4 4 /. =<4  [Vb$A3RD%ABB4 4 CB4* [Va!b2$%7884 4 984$ k*LMMMg&;<<<4 4 =< NM4 v&;<<<{+DEEE[Ub"XA|b1#Y$GHH
 
 IH FE =<
 k*HIII$ $ JI$< < < [Vb$A3RD%ABB3 3 CB3  [Va!b2$%7883 3 983$ t,<===[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1 1? ?1 1 >=?. [[UU1c]]UU4	 
	d##++D%;;BBDD	EF F
3 3F F 3 [d###L L $# L L Lre   r  c                       t          d          )NzFell back to fftconvolve)RuntimeError)r  r  s     rc   fftconvolve_errr6    s    
1
2
22re   c                 8    d t          | d          D             S )Nc                 H    g | ]\  }}t          ||z
            d k    ||f S )rN   )absr   r`   ra   s      rc   r   z!gen_oa_shapes.<locals>.<listcomp>  s:       tq!1q5zzA~~ F~~re   rT   repeatr   sizess    rc   gen_oa_shapesr?    s/     wuQ777    re   c                     t          |           }t          |           }d t          ||          D             }g d}d t          ||          D             S )Nc                     g | ]
\  }}||z   S r   r   )r   ishapes0ishapes1s      rc   r   z$gen_oa_shapes_2d.<locals>.<listcomp>  s.     % % %$6Hhhx % % %re   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   rS   rT   rN   r   )r   ishapesimodes      rc   r   z$gen_oa_shapes_2d.<locals>.<listcomp>  s     C C C%QZ'!*$$gaj)@)@QZ'!*$$gaj)@)@ UH *A)@)@re   )r?  zipr   )r>  shapes0shapes1shapesmodess        rc   gen_oa_shapes_2drL    s    E""GE""G% %'7##% % %F &%%EC C7653I3I C C C Cre   c                 8    d t          | d          D             S )Nc                 (    g | ]\  }}||k    ||fS r   r   r:  s      rc   r   z$gen_oa_shapes_eq.<locals>.<listcomp>  s0       tq!Avv Fvvre   rT   r;  r   r=  s    rc   gen_oa_shapes_eqrO    s/     wuQ777    re   rI   zfails all aroundrK   
dask.arrayzwrong answerc                   \   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_0rS   r   r  rY   c                 6   t           j                            |          }t           j                            |          }|                    |          }|                    |          }t	          ||          }t          ||          }t          ||           d S r  )r  r  r  r\   r   r   r=   )r^   	shape_a_0	shape_b_0r_   r`   ra   r   r   s           rc   test_real_manylensz!TestOAConvolve.test_real_manylens  s|     INN9%%INN9%%JJqMMJJqMMq!$$A!#x00000re   )r  /   rQ   rO   rS   
is_complexTFrk   r  c                 "   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   rj   r   r  r  r  r\   r   setattrr   _signaltoolsr6  r   r=   )r^   rT  rU  rX  rk   monkeypatchr_   r`   ra   r   r   s              rc   test_1d_noaxeszTestOAConvolve.test_1d_noaxes  s     INN9%%INN9%% 	1Bry~~i0000ABry~~i0000AJJqMMJJqMMq!$///F/+	- 	- 	-AD)))!#x00000re   r  r   )r  rW  rQ   rO   shape_a_extrarN   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 )NrT   r   rk   r  r   r[  )r^   r  rT  rU  r`  ra  rX  rk   r^  r_   ax_aax_br`   ra   r   r   s                   rc   test_1d_axeszTestOAConvolve.test_1d_axes  s    q q T
T
IND!IND! 	-Bry~t,,,ABry~t,,,AJJqMMJJqMMq!$T:::F/+	- 	- 	-ADt444!#x00000re   z0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec	                 *   t           j                            ||          }	t           j                            ||          }
|rL|	dt           j                            ||          z  z   }	|
dt           j                            ||          z  z   }
|                    |	          }	|                    |
          }
t	          |	|
|          }|                    t          j        dt                     t          |	|
|          }t          ||           d S rZ  r[  )r^   rT  rU  	shape_a_1	shape_b_1rk   rX  r^  r_   r`   ra   r   r   s                rc   test_2d_noaxeszTestOAConvolve.test_2d_noaxes  s     INN9i00INN9i00 	<Bry~~i;;;;ABry~~i;;;;AJJqMMJJqMMq!$///F/+	- 	- 	-AD)))!#x00000re   rT   c                 T   |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 )NrN   r   rS   r   rc  r   )r  r  r  r\   r  r   r\  r   r]  r6  r   r=   )r^   r  rT  rU  rh  ri  rk   r`  ra  rX  r^  r_   rd  re  r`   ra   r   r   s                     rc   test_2d_axeszTestOAConvolve.test_2d_axes4  s1    q q !T!W!T!W!T!W!T!WIND!IND! 	-Bry~t,,,ABry~t,,,AJJqMMJJqMMT{{q!$T:::F/+	- 	- 	-ADt444!#x00000re   r   z*ValueError: Target length must be positiverK   r  rP   rQ   r   c                     t          t          |                    |          |                    |                    |                    g           d           d S )NFr  )r8   r   r\   r  s       rc   r	  zTestOAConvolve.test_emptyX  sU     	rzz!}}bjjmm44JJrNN	
 	
 	
 	
 	
 	
re   c                     |                     d          }|                     d          }t          ||          }t          |||z             d S r   r\   r   r8   r  s        rc   r{   zTestOAConvolve.test_zero_ranka  sM    JJtJJtAQU#####re   c                     |                     dg          }|                     dg          }t          ||          }t          |||z             d S r   ro  r  s        rc   r   z"TestOAConvolve.test_single_elementg  sQ    JJvJJvAQU#####re   N)r0  r1  r2  r,  r5  r  r  rO  r  r   rV  r?  r_  rf  rL  rj  rl  r4  r	  r{   r   r   re   rc   rR  rR    s        [[3--dd55C3C3C.D.D.2d55dB3G3G.H.H/I J J 	1 	1	  
	1 [3*]+<+<+<==? ?[\D%=99[V%>%>%>??1 1 @? :9? ?1& [VaV,,[3*]>>>::< <[_q!f55[_q!f55[\D%=99[V%>%>%>??1 1 @? :9 65 65< < -,12 [ :--nnn==? ? [\D%=991 1 :9? ?1( [Vq!fq!fq!f%=>>[ :--nnn==? ? [_q!f55[_q!f55[\D%=991 1 :9 65 65? ? ?>1: w'STTT[Ub"XA|b1#Y$GHH
 
 IH UT
$ $ $$ $ $ $ $re   rR  z!assertions may differ on backendsr|   c                   <   e Zd Zej                            deeg          d             Zej                            deeg          d             Z	ej                            ddgdfddgfdgdggfg          ej                            deeg          d                         Z
ej                            deeg          d	             Zej                            d
          ej                            dej        ej        g          d                         ZdS )TestAllFreqConvolvesconvapproachc                     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 )NrS   r   r   r   r   r   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr)  r   rj   )r  r   r   r   r   r^   rs  r_   r`   ra   s        rc   r   z(TestAllFreqConvolves.test_invalid_shapesq  s     IaOO##F++Ib!$$V,,:"FG G G 	- 	- LAG,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-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)rP   rQ   rT   rS   )rP   rQ   rN   rS   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r)  r   rS   r  )r  r  r   r   ru  s        rc   test_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axes{  s     H\\\""H\\\"":"67 7 7 	, 	, LAQF++++		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   A!!A%(A%r  rS   rT   rN   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 dimensionalityr)  r   r   )r^   r`   ra   rs  r_   s        rc   r%  z)TestAllFreqConvolves.test_mismatched_dims  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'r)  rS   rT   chipsrj   z#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersrN   rO   )r  rv  rx  ry  z$axes exceeds dimensionality of inputr  zall axes must be uniquer   ry  )r^   rs  r_   s      rc   test_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags  s    :"01 1 1 	1 	1 L!qc0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
 :!FH H H 	, 	,L!qc++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, : .2 3 3 3 	: 	:L!qc!Q!Q(89999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: : .2 3 3 3 	: 	:L!qc(8(8(89999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: :!GI I I 	- 	-L!qc,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- :!GI I I 	. 	.L!qc----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. :!:< < < 	0 	0L!qc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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   rO   rO   y        ?r   r   )r  r  r  iscomplexobjr   r7   r   r   )r^   r   r_   ru   rv   ress         rc   test_longdtype_inputz)TestAllFreqConvolves.test_longdtype_input  s     IX&&--e44IV$$++E22?5577## 	HAHA!QXa8<<<===yE!!!!!!re   N)r0  r1  r2  r,  r5  r  r   r   r   rw  r%  r|  filterwarningsr  
longdoubleclongdoubler  r   re   rc   rr  rr  n  s        [^):68 8- -8 8- [^):68 8, ,8 8, [U !sAh 1#h !saSEl,- - [^):68 8 8 8	- - [^):68 80 08 80< [ <==[Wr}bn&EFF	" 	" GF >=	" 	" 	"re   rr  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d Zej        	                    dg d          d             Z
 edd          ej        	                    dej        ej        ej        ej        ej        ddg          d                          Z edd!          d"             Z edd#          d$             Z ed%d&'          ej        	                    dg d(          d)                         Zd*S )+TestMedFilt)
r  r  r  r  r  rl     r   r   rQ  )
r  r  r  r  r  r   H   M   rd  ri  )
r  r  r  r  r  rQ  rW     rP  r  )
r  r  r  r  r  r         _   #   )
r  r  r  r  r  rQ  rl   r?  rz  ri  )
r   a   rW   rd  r   r  r   r   G   r   )
rP  r  rh  r  rd  rX   r  rd  rM  rj  )
rN   !   r  rR  rS   r   rc  7   rZ   S   )
r   r  rQ  r   r  rW  rM  +   r   rN  )
rX   r   X   r   '   rO   rl  rP  r   r   )
r   r  r  r  r   r  r  r  r   r   )
r   r  r  r  r  r   r  rz  r  r   )
r  r  r  r  r  rW  rl   rl   rQ  r  )
r  r  r  r  r  r  r   rW  rP  r   )
r  r  r  r  r  r  rQ  r  rP  r  )
r  r  r  r  r  rW  rQ  r  r  rN  )
rX   r  r  r  r  rW  rQ  r   r  rN  )
r   rQ  r  r  rW  rQ  rQ  r  r   rz  )
r   rX   r  r  rX   rX   r  r  r  r   )
r   r   r  r   rO   rO   r  r  rM  r   r   rN   c                 n   |                     | j                  }|                     | j                  }|                     | j                  }t	          j        ||          }t	          j        |                     ||j                  |          }t          ||           t          ||d           d S )Nr   Fr  )	r\   INOUTKERNEL_SIZEr   medfilt	medfilt2dr   r8   )r^   r_   in_out_kernel_sizer   r;  s          rc   rd   zTestMedFilt.test_basic  s    jj!!zz$(##jj!122N3,,RZZ2:Z>>LL4   1%000000re   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   )
r:   r,  skipgetattrr\   r  r   r  r   r  r^   r   r_   in_typeds       rc   
test_typeszTestMedFilt.test_types  s    
 B<< 	AE%CCCK?@@@E""::dgU:33~h''-6666))/5888888re   Tzassertions may differr|   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 supportedr)  )r  finfor  r   r,  r  arrayr  r	   r   r   r  r  r  s       rc   test_invalid_dtypeszTestMedFilt.test_invalid_dtypes  s_    ,,,HR]++1U::K<U<<===8DG5111]:_=== 	% 	%N8$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]:_=== 	' 	'X&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's$   9BB!B C""C&)C&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     rc   	test_nonezTestMedFilt.test_none  s     J	233 	! 	!N4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!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 )	NrU   r   rP   rQ   )r   )r  rS         @)
r   r   r  r  r  r  r7   r   r  r\   )r^   r_   dummyr`   s       rc   test_odd_strideszTestMedFilt.test_odd_strides  su    
 		"BJ	//!A#JF ++Au+==q!,,rzz2$/?/?@@@@@re   rI   z6chunk assignment does not work on jax immutable arraysrK   )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   rT   rS   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              rc   applyz2TestMedFilt.test_medfilt2d_parallel.<locals>.apply*  s    DAqAvvArDy))QQ||BIt,,T4((RAvvArDy))QQ||BIt,,T4((R "#s(+J":t/?@@CtTz?D$..re   rO   )max_workers>   rS   r   r   r   r   rS   rS   rS   c                 <    h | ]}                     |          S r   )submit)r   r  r  pools     rc   	<setcomp>z6TestMedFilt.test_medfilt2d_parallel.<locals>.<setcomp>I  s'    EEEUt{{5%00EEEre   )r  r\   r  r  r  r  
zeros_liker   r   r  r8   )r^   r   r_   r   outputchunksfuturesfuturedataMsliceNslicer  r  r  r  r  r  r  s   `          @@@@@@@rc   test_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallel  s    E""::dgU:33::dhe:44 ~////
 ^A!#^A!#"a'!+"a'!+	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/8 x((A... 	.$555FEEEEEfEEEG 'w// . .'-}}$ff)-vv~&&.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	)))))s   AD**D.1D.N)r0  r1  r2  r  r  r  rd   r,  r5  r  r  r3  r  bool_r   r   r  r   r  r  r  r  r   re   rc   r  r    s]        3
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	
2B 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	1 	1 	1 [W '= '= '= > >9 9> >9 d+BCCC[Wrxr}')~rz'0*'> ? ?' '? ? DC' d?;;;! ! <;!
 d+PQQQA A RQA G   [W&E&E&EFF6* 6* GF	 
6* 6* 6*re   r  c                   :    e Zd Z edd          d             ZdS )
TestWienerrC   zXXX: can_cast in cupy <= 13.2rK   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)rP   rQ   rO   rN   )rN   rP   rQ   rT   )rT   rN   rP   rQ   )rS   rQ   r?  r   r   )gSXO@gXq	@gq@g?)g]`UUU@gFUUUU@gq@gcq@)gyq@gXq@gXq@gUJ4@)gUUUU?g2k6k@gҷWH@g@_)@rQ   decimalrN   )mysize)r\   r   r=   r   wiener)r^   r_   rG  rF  s       rc   rd   zTestWiener.test_basicV  s    JJ$$$& .0Z  9 9 JJNNNQQQQQQRRRT U U 	"&-"2"2AqAAAA!&-!"<"<"<aKKKKKKre   N)r0  r1  r2  r3  rd   r   re   rc   r  r  S  sG         f%DEEE
L 
L FE
L 
L 
Lre   r  )meanmedianminimummaximumlinezXXX something in daskc                      e Zd Z edd           edd          d                         Zej                            dd	          ej                            d
d          ej                            dd           edd          d                                                 Z edd          d             Z	 edd          ej                            dd          ej                            dd          ej                            dd          d                                                 Z
 edd          ej                            de          d                         Z edd          ej                            de          d                         Z edd          ej                            de          ej                            dddg          d                                     Z edd           edd          ej                            ddg e edgd dge                    z             d!                                     Zej                            d"d#          ej                            d$d%          d&                         Zej                            d"d'          ej                            d$d%          d(                         Zej                            d)d*          ej                            d+d*          d,                         Z edd           edd-gd./          ej                            d0g d1          d2                                     Z edd-gd3/          d4             Z edd          ej                            dd5dg          d6                         Zd7S )8TestResamplerI   zimmutable arraysrK   Tz!resample_poly/upfirdn is CPU onlyrE   rL   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
t          j	        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       @   windowINVALIDdomainyorS   r   g?rT   r  padtyper  rU   )r  cval)rT   rS   r   r  r  )r  constant)r   r   r   
get_windowr   r   resampleresample_polyr  eyer  r  r8   )	r^   r_   signumwinsig2x_refx0r   s	            rc   rd   zTestResample.test_basick  s    ii2:i..55j&/3CHHHHj&/3INNNN 	j&"6T1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 wwryyBJy77@@c37777yF"""" $S!Q//!#q!Z@@@!#q!ZaHHHE"""E"""""re   r  )Nhammingr  )r  r  r  )r   r  rU   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   rU   F)endpointrT         @r  rS   r  &.>v!>r   )rA   r   r   r   linspacecosr   r  r  r7   realstacksinr   )r^   r  r  r  r_   dt_rdt_cru   rv   desired	y_complex	resampledr   s                rc   	test_rfftzTestResample.test_rfft  s     ###rz11r||r}KK2q5K11FFAqD59/"))At"4"4c&III3v>>>((	* 	* 	* HHbffadU3Y''Ac	):):;<<IIa&&	OIs6JJJ	rz))tttOAs6:::GGI	 	 	 	 	 	re   XXX: immutable arraysc                    |                     |                    d          |j                  }t          j        |          }d}t          t          j        ||d          t          j        ||d          d           d S )Nr  freqr  timer  r   )r  r   r   sp_fftr   r7   r   r  )r^   r_   tsigfsigr  s        rc   test_input_domainzTestResample.test_input_domain  s     yy377z$OD#f555OD#f555	 	 	 	 	 	re   nx)rS   rT   rN   rP   r   nyr   )r   r   c                     t          ||          }|                    dg|z  |          }t          j        ||          }t	          ||                    dg|z  |j                             d S )NrS   r   )r  r\   r   r  r7   r   )r^   r!  r"  r   r_   ru   rv   s          rc   test_dczTestResample.test_dc  sm    
 E""JJsRxuJ--OAr""2::qcBhag:>>?????re   r  c                 :   |                     d          }|                    t          j                            d                              d                    }|                    |d          }t          j        |dd||           t          ||           d S )	NrN   r   rT   TcopyrP   rS   r  r  )	r  r\   r  r  r  r
  r   r   r8   )r^   r  r_   impulser  window_origs         rc   test_mutable_windowz TestResample.test_mutable_window  s     ((1++BI11!44::1==>>jjdj33Wa67KKKK,,,,,re   c                     |                     d|j                  }|                    g d|j                  }t          j        |dd||          }|j        |j        k    sJ d S )NrU   r   rS   rS   rS   rS   rT   r(  )r   r   r\   r   r   r   )r^   r  r_   ru   rF  rv   s         rc   test_output_float32z TestResample.test_output_float32  sl     IIb
I++JJyyy
J33 AqGDDDw"*$$$$$$re   r   r   c                     t          ||          }|                    d|          }t          j        |dd|          }|j        |j        k    sJ d S )NrU   r   rS   rT   r  )r  r   r   r   r   )r^   r  r   r_   ru   rv   s         rc   test_output_match_dtypez$TestResample.test_output_match_dtype  s\     E""IIbI&& Aq':::w!'!!!!!!re   zmethod, ext, padtype)r   FN	polyphaseFc           	         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	          }ny|r]|
|k    rWt          |
|          }|
|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        |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   r     r&     r   )r        $@g      D@rT   r_   r   r   r  r  rU   rS   )r  r  r  r(  r  r  r         ?)r  r  333333?r   r  r  gGz?r  r   r   rO   )r         ?        r   r:  -q=)r  r8          r8  r<  )r   r   r  r\   newaxisr  pir1   r   r  r   maxr,  r   r   r  r  r7   r  corrcoefr  r  cumsumr
  interp)"r^   r   extr  r_   raterates_tor   freqsru   rate_tot_toy_tos	y_resampsrG  updownmax_ratef_chalf_lenr  polyargsr   y_toy_resampr  corrr  r   y1_testy1_truer   y2_testy2_trues"                                     rc   test_resample_methodsz"TestResample.test_resample_methods  s    <<< IId"*I--d;

>**111bj=9FF1ru9u$q())D",=,=,== %	> %	>G99WBJ977%..HDFF1ru9u,t344tG7K7K7KKE"OAwR@@@		 47d??GT**A AB19D"2t}}Hx-C!H}H#]1x<!+;S2AC C CF*0WEEHH )73H"0GT = = =3;= =	 5;q>** > >QT{$QT?U1a4[))3=((==..D"888'$TBBBBB'$TBBBBB:7777;tX66t<D$;;;tW(=;;;;>" i##A&&JJ399T??333JJqMM 	% 	%G99WBJ977%..HD9T1a((D!?1g66!/7D8?A A A:////::bk$
80D0DEEdKLLD$;;;;;;; U??VV,--Bob!,,Gjj!C!C!CDDGGW59999...//Bob!,,Gjj"b**GGW5999999 ?re   n_in)r   r?  n_out)rN   rO   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/2r8  )r  	ones_like)rF  s    rc   r  z0TestResample.test_resample_win_func.<locals>.winC  s    e,,,,re   r  rT   r;  r   N)r  r}  r   r  r7   )r^   rY  rZ  x_inr  y0y1s          rc   test_resample_win_funcz#TestResample.test_resample_win_func=  sh     wt}}	- 	- 	- _T5))_T5555"bu------re   )rQ   rZ   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.
        )rU   rT   )r   rU   r;  r   N)r  r}  r   r  r   lenr8   r7   )
r^   rY  rZ  t0dtr^  r_  r`  r   t_refs
             rc   test__resample_param_tz#TestResample.test__resample_param_tL  s     Bwt}}_T5))uRU<<<BRYs2ww''",t3e;;BE......re   n1)rT   rN   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. rT   c              3   D   K   | ]}t          j        |          |z  V  d S r  )r  r   )r   n_s     rc   	<genexpr>z5TestResample.test_resample_nyquist.<locals>.<genexpr>b  s/      44Rbimmb 444444re   c              3   f   K   | ]+}t          j        d t           j        z  z  |z            V  ,dS )rT   N)r  r  r>  )r   t_f_nys     rc   rm  z5TestResample.test_resample_nyquist.<locals>.<genexpr>c  s=      ==B"&RUT)B.//======re   r   r;  r   N)minr   r  r7   r  )	r^   ri  rh  ttr  r   y1_ry1_crp  s	           @rc   test_resample_nyquistz"TestResample.test_resample_nyquist]  s     2r{{a44B8444===="===Br2&&rBw++bu----	2E222222re   rC   zfiltfilt is CPU-only)rE   rF   rL   down_factor)rT   r  O   c                    t           j                            d          }t          t           j        t           j        t          t          f}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        |d||
	          }t%          |	|dd           d S )Nr   r"  r   r   r   r   r  r  r  r  r  rS   gHz>r   r  )r  r  r  intr   r   r  complexr
  r  r   r\   r   r,  r   r   flipr   r7   )r^   rv  r_   random_state	try_typesr   r   ru   rF  yfhcrv   s               rc   test_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltk  sY    y,,R00"*blE7C	 	9 	9E""4((//66Ar}555R,,,T2222

1A AaDAbEb"{"29EEEA

1A!S!Z888;GB
 !RWWQZZ((B$Q;rBBBAB488888)	9 	9re   zcorrelate1d is CPU-onlyc           	         dD ]}t          dd|          D ]}dD ]}t          j                            |f          }t          j                            |f          }t          |j        ||f          \  }}t          |          j        }t          | ||          d          }t          j	        |d||          }	t          |d d |         |	           d S )N)rT   rO   rS   rO  )rX   r  r  rj   )rK  rL  r  )r   r  r  mapr\   rB   r|  r   r   r   r7   )
r^   r_   rL  r!  nweightsru   weightsr|  y_gy_ss
             rc   test_correlate1dzTestResample.test_correlate1d  s     
	6 
	6DAr4(( 	6 	6 ( 6 6H	(("//A i..{;;G!$RZ!W!>!>JAw*1--2D%agZHHHC .ad7< < <C#C$K55556	6
	6 
	6re   r   c                     t          ||          }|                    g d|          }t          j        |ddd          }t	          j        |          dk    sJ d S )N)r   rS   rT   rN   rT   rS   r   r   rT   rS   smooth)rK  rL  r  r   )r  r\   r   r   r  count_nonzero)r^   r   r_   r  actuals        rc   test_gh_15620zTestResample.test_gh_15620  su    
 E""zz///uz==%d)*+,.68 8 8 ''!++++++re   N)r0  r1  r2  r3  rd   r,  r5  r  r  r   r$  padtype_optionsr+  r.  r0  r  r   rX  ra  rg  ru  r  r  r  r   re   rc   r  r  h  s\        k*<===A  # #  >=#B [X'899[S(++[U$677k*<===  >= 87 ,+ :9. k*ABBB  CB k*ABBB[T?33[T?33[W&?@@@ @ A@ 43 43 CB@ t,OPPP[Y88- - 98 QP- A   [Y88% % 98 % A   [Y88[Wy)&<==" " >= 98 
" k*ABBBA   [	
$Gt}o 
 
	
 L: L:   CBL:\ [VV,,[Wf--. . .- -,. [VW--[Wf--/ / .- .-/ [T<00[T<00
3 
3 10 10
3 k*ABBB6(3I   []KKK889 9 98  CB
98 6(3L  6 6 6 A   [Ww	&:;;, , <; , , ,re   r  r!  c                       e Zd Zd Zd ZdS )TestCSpline1DEvalc                 ~   t          j        g d          }t          j        t          |                    }|d         |d         z
  }t	          j        |          }t          j        t          |          dz            dz  }t	          j        ||||d                   }t          |d d d         |d           d S )	N)	rS   rT   rN   rO   rN   rT   rS   rT   rx  rS   r   r6  )dxr  rU   rP   r  )r  r  r   rc  r   	cspline1dcspline1d_evalr=   )r^   r_   rv   ru   r  cjr   y2s           rc   rd   zTestCSpline1DEval.test_basic  s    H22233Ic!ffqTAaD[a  Ys1vv}%%,"2rbQqT::: 	""TTrT(Aq999999re   c                 t   t          j        d          }t          j        |j        t           j                  }d}d|z  }t          j        dt           j        z  |z  |z            }t          j        |          }t          j	        dg          }t          j
        ||          }|j        |j        k    sJ d S )NrT   r   r6  r  rt   r8  )r  r   r  r  r   expr>  r   r  r  r  r   )	r^   r_   ru   rv   Tr   cyxnewynews	            rc   rx   zTestCSpline1DEval.test_complex  s    IaLLHQWBL111!GF4"%<!#a'(( a   x$R..zQW$$$$$$re   N)r0  r1  r2  rd   rx   r   re   rc   r  r    s2        
: 
: 
:% % % % %re   r  c                   r    e Zd Zd Zd Z edd           edd          d                         Zd	 Zd
S )TestOrderFiltc                     t          j        |                    g d          |                    g d          d          }|                    g d          }t          ||           d S )NrR   rS   r   rS   rS   )rT   rN   rT   )r   order_filterr\   r8   )r^   r_   r  expects       rc   rd   zTestOrderFilt.test_basic  sb    $RZZ			%:%:BJJyyy<Q<QSTUUIII&&'''''re   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   rP   rP   rN   )r<  r<  r<  r<  r<  )r<  r<  r  rv  r<  )r<  r  r        @r<  )r<  r6        &@r  r<  r   )r  r  r  r  ry  )r  r  g      *@      ,@r  )g      0@g      1@g      2@      3@r  )      5@      6@      7@r  r  )r  r  r  r  r  rT   r   rS   rT   rN   r   )rP   rQ   r   r   rN   )rU   r  rZ      r   )r  r   r   r  r  r   r  r   r   r  rS   )r   r   rA   r  r\   r7   r   r  r^   r_   ru   r  r   s        rc   test_doc_examplezTestOrderFilt.test_doc_example  s   JJryy+;B+?+?y@@&II!1"!5!566 ::!!!!!!!!!$$$!!!	#
 #2&&  
 
 	+Avq998DDD ::!!!%%%&&&&&&&&&	(
 
 	+Avq998DDD ::____   !!!   	"
 #2&&  
 
 	+Avq998DDDDDre   rP  zrepeat requires an axisrK   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  )rS   rQ   r   r   rO   )rQ   r  rZ   r  r?  )r  r   r   r     )r   r   r   r  r   rN   r  rO   )r   r   r\   r7   r   r  r  r}  )r^   r_   ru   r   s       rc   test_medfilt_order_filterz'TestOrderFilt.test_medfilt_order_filter  s     JJryy}}f-- ::____!!!	!
 
 	q!,,h7772776??A66	
 	
 	
 	
 	
re   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  )rS   rS   r   )r   rS   r   r   r   r   r   r   r   r   r   )r   r   rS   rT   rN   )r   rP   rQ   r   r   )r   rU   r  rZ   r  r  r   )r   rS   rT   rN   rO   )rP   rQ   r   r   r?  )rU   r  rZ   r  r  )r  r   r   r  r  rS   )r   r   r\   r7   r   r  r  s        rc   test_order_filter_asymmetricz*TestOrderFilt.test_order_filter_asymmetric  s   JJryy}}f--YYYYYY
 
 ::______      	"
 
 	+Avq998DDD::______!!!!!!	#
 
 	+Avq998DDDDDre   N)r0  r1  r2  rd   r  r4  r  r  r   re   rc   r  r    s        ( ( (
$E $E $EL |,EFFFw'=>>>
 
 ?> GF
&E E E E Ere   r  c                      e Zd Zd Zd Z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 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 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$          d%                         Zd& Z ed'd(           edd)          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& ed/          ej        j'        d3                         Z(d4S )5_TestLinearFilterc                     | j         t          k    rDt          j        j        | _        t          j        j        | _        t          j        j        | _        d S t          | _        t          | _        t          | _        d S r  )
r   r+  r  rY  r
   assert_closeassert_equalr=   r7   r8   )r^   s    rc   setup_methodz_TestLinearFilter.setup_method,  sZ    : "
 :D "
 7D-/Z-QD*** /D /D-FD***re   c                    t          |t                    r|nt          j        |          }|                    d|dz
  |          }t          |t                    s|                    ||          }|                     ||          S )Nr   rS   )r  rz  mathprodr  r   convert_dtype)r^   r  r_   	prodshaperu   s        rc   generatez_TestLinearFilter.generate6  sx    's33IEE59I9I	KK9q=)44%%% 	%

1e$$A!!!R(((re   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  r\   emptyr  nditertyper  strr  )r^   arrr_   r   iterru   rv   r   s           rc   r  z_TestLinearFilter.convert_dtype=  s    :#&&*S//C(39dj11C9c3Z)M)B${m46 6D * *11R5))#J #4:s33%WR,,,*  ::c:///re   c                    |                      d|          }|                     ddg|          }|                     ddg|          }|                     g d|          }|                     t          |||          |           d S )NrQ   rS   r   r8        ࿩r   rT   rO   rQ   r   r6  r  r  r=   r   r^   r_   ru   ra   r`   y_rs         rc   test_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIRL  s    MM$##2w++T{B//  !5!5!5r::&&wq!Q'7'7=====re   c                 
   |                      d|          }|                     ddg|          }|                     dg|          }|                     g d|          }|                     t          |||          |           d S )Nr  rS   r   rS   rN   rP   r   r  r  r  s         rc   test_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIRS  s    MM$##1vr**sB''  !4!4!4b99&&wq!Q'7'7=====re   rC   z*XXX https://github.com/cupy/cupy/pull/8677rK   c                    |                      d|          }|                     g d|          }|                     ddg|          }|                     ddg|          }|                     g d|          }|                     dd	g|          }t          ||||
          \  }}	|                     ||           |                     |	|           d S )Nr  rS   r   r   r8  r  rS   rT   )rS   rP   r?  r  r   rz  r  zir  r  r   r=   
r^   r_   ru   ra   r`   r  r  zf_rrv   zfs
             rc   test_rank_1_IIR_init_condz+_TestLinearFilter.test_rank_1_IIR_init_condZ  s    MM$##zzz2..T{B//A++  !6!6!6;;!!2s)R001aB'''2&&q#...&&r400000re   c                    |                      d|          }|                     g d|          }|                     dg|          }|                     ddg|          }|                     g d|          }|                     ddg|          }t          ||||          \  }}	|                     ||           |                     |	|           d S )Nr  r-  rS   )rS   rT   rN   rQ   r?  r  r?  rP   r  r  r  s
             rc   test_rank_1_FIR_init_condz+_TestLinearFilter.test_rank_1_FIR_init_condf  s    MM$##yyy"--sB''A++  !5!5!5r::!!1a&"--1aB'''2&&q#...&&r400000re   c                 (   |                      d|          }|                     ddg|          }|                     ddg|          }|                     g dg dg dg dg|          }t          |||d          }|                     ||           d S )	NrO   rN   rS   r   r8  r   rT   rO   rQ   rO   rT   r   r  r  )r^   r_   ru   ra   r`   y_r2_a0rv   s          rc   test_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0r  s    MM&"%%2w++Sz2..$$iiiIII&/ii&1246 6Aq!!$$$&&w22222re   c                 (   |                      d|          }|                     ddg|          }|                     ddg|          }|                     g dg dg dg dg|          }t          |||d	          }|                     ||           d S )
Nr  rS   r   r8  r   rT   r   rQ   r  rQ   rZ   r  rZ   r  ir  r  r  )r^   r_   ru   ra   r`   y_r2_a1rv   s          rc   test_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1{  s    MM&"%%2w++Sz2..$$iii]]])MM&+,.0 0Aq!!$$$&&w22222re   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|          \  }}	|                     ||           |                     |	|           d S )Nr  rS   r   r8  )rO   rS   r-  )r   r   )r  r  )r  r  )r  r  iir  r  )r  r  r  r}  r=  r   r=   )
r^   r_   ru   ra   r`   r  	y_r2_a0_1r  rv   r  s
             rc    test_rank_2_IIR_axis_0_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_0_init_cond  s   MM&"%%2w++Sz2..33&&			:::}}}+mm(-.02 2	!!"5"5"5r::111bj=I1aaB///2&&y!444&&r400000re   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	|
          \  }}	|                     ||           |                     |	|           d S )Nr  rS   r   r8  rS   rN   )rS   rN   rP   )rP   rN   rS   )r  r  r   r  )r  r  r  r}  r   r=   )
r^   r_   ru   ra   r`   r  	y_r2_a0_0r  rv   r  s
             rc    test_rank_2_IIR_axis_1_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_1_init_cond  s   MM&"%%2w++Sz2..44&&			999(1		999(>?AC C	!!???"3R881aaB///2&&y!444&&r400000re   Tznp.apply_along_axis is np onlyr|   c                   	
 |                      d|          }|                     ddg|          }|                     ddg|          }t          j        |          t          j        |          t          j        |          c	
}t	          |j                  D ]W}t          ||||          }t          j        	
fd||          }|                     ||                    |                     Xd S )NrO   rN   rT   rS   r   r8  c                 &    t          |           S r  r   wr  r  s    rc   <lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>      dA0F0F re   	r  r  r  r\   r   ndimr   apply_along_axisr=   r^   r_   ru   ra   r`   x_npr  rv   r  r  r  s            @@rc   test_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIR  s    MM)R((2w++Sz2..:a=="*Q--AdD!&MM 	? 	?D1a&&A%&F&F&F&F&FdSSC**1bjjoo>>>>	? 	?re   c                    |                      d|          }|                     ddg|          |                     ddg|          t          |j                  D ]"}t	          |j                  }d||<   |                     |                    |          |          }|                     dg|          t          |||          \  }}fd}fd}	t          j	        ||t          j
        |                    }
t          j	        |	|t          j
        |                    }|                     ||
                    |
                     |                     ||
                    |                     $d S )Nr  rS   r   r8  c                 Z    t          j        t          |           d                   S Nr  r   r  r\   r   r  r`   ra   zi1s    rc   lf0z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf0  )    z'!Qc":":":1"=>>>re   c                 Z    t          j        t          |           d                   S Nr  rS   r  r  s    rc   lf1z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf1  r  re   )r  r  r   r
  r  r  r}  r   r  r  r\   r=   )r^   r_   ru   r  zi_shaper  rv   r  r  r  r  r  r`   ra   r  s               @@@rc   test_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_cond  s   MM)R((2w++Sz2..!&MM 	A 	ADAG}}HHTN##BGGH$5$5r::B$$aS"--CAq!T2..EAr? ? ? ? ? ? ?? ? ? ? ? ? ?%c4A??C&sD"*Q--@@D**1bjjoo>>>**2rzz$/?/?@@@@	A 	Are   c                   	
 |                      d|          }|                     g d|          }|                     dg|          }t          j        |          t          j        |          t          j        |          c	
}t	          |j                  D ]W}t          ||||          }t          j        	
fd||          }|                     ||                    |                     Xd S )Nr  r  rS   c                 &    t          |           S r  r  r  s    rc   r  z3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>  r  re   r	  r  s            @@rc   test_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIR  s    MM)R((zzz2..sB'':a=="*Q--AdD!&MM 	? 	?D1a&&A%&F&F&F&F&FdSSC**1bjjoo>>>>	? 	?re   c                    |                      d|          }|                     g d|          |                     dg|          t          j        |          }t	          |j                  D ]}t          |j                  }d||<   |                     |                    |          |          }|                     ddg|          t          |||          \  }}fd}	fd}
t          j
        |	||          }t          j
        |
||          }|                     ||                    |                     |                     ||                    |                     d S )Nr  r  rS   rT   c                 Z    t          j        t          |           d                   S r  r  r  s    rc   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0  r  re   c                 Z    t          j        t          |           d                   S r  r  r  s    rc   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1  r  re   )r  r  r  r\   r   r
  r  r  r}  r   r  r=   )r^   r_   ru   r  r  r  r  rv   r  r  r  r  r  r`   ra   r  s                @@@rc   test_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_cond  s   MM)R((zzz2..sB''z!}}!&MM 	A 	ADAG}}HHTN##BGGH$5$5r::B$$aVR00CAq!T2..EAr? ? ? ? ? ? ?? ? ? ? ? ? ?%c466C&sD$77D**1bjjoo>>>**2rzz$/?/?@@@@	A 	Are   c                    |                      d|          }t          j        ddd          \  }}|                     ||          }|                     ||          }|j        d         dz
  }|                     |                    dd	|f          |          }|                     |                    dd|f          |          }t          ||||
          \  }}	t          ||||
          \  }
}|                     |
|           |                     |	|           t          t          t          |||d|                    |                     d S )N)rO   rP   r  r   r'  bar  r   rS   rO   rP   r  r   )
r  r   r    r  r  r}  r   r=   r   r   )r^   r_   ru   ra   r`   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings               rc   test_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcast  sF   MM*b))}QD1111q"%%q"%%'!*q. $$RWWaG_%=%=rBB$$RWWaG_%=%=rBB!!Qg666!!Qg666&&vv666&&w888 	j'1aB8H8HIIIIIre   c                    |                      d|          }|                     g d|          }|                     dg|          }|                     g d|          }t          ||d         |          }|                     ||           d S )NrQ   r  rS   )r   rS   rT   rT   rT   rT   r   r  )r^   r_   ru   ra   r`   r  rv   s          rc   test_scalar_az_TestLinearFilter.test_scalar_a  s     MM!R  zzz2..sB''  !3!3!3R88AqtQ&&q#.....re   c                 F   |                      |                    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          ||d         |d|          \  }
}|                     |
|           |                     ||           d S )N)rN   rT   rP   r   rP   )rS   r   r   )rN   rS   rO   rS   rT   rN   )rN   rT   rO   rO   r   r   )r  r  r   r}  r\   r  r   r=   )r^   r_   ru   ra   r`   r  zf_expected
y_expectedy_iirzf_iiry_firzf_firs               rc   test_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dims  s#   
 rxx	xBBBGGrwwqw992>>rzz)))44b99WYbh///
1aaa7q
1aaa7qZZ^^B''(()28)L)LbQQXirx888
"#use4
111aaa!8ZZ
++
''
B77
  1aR00v&&uj999&&v{;;;  1Q4B33v&&uj999&&v{;;;;;re   c           	          |                      ||          }|                      ||          }|                      ||          }|                      ||          }t          t          t          |||||           d S r  )r  r   r   r   )r^   ra   r`   ru   r  r  r_   s          rc   base_bad_size_ziz"_TestLinearFilter.base_bad_size_zi"  sv    q"%%q"%%q"%%B''j'1aD"=====re   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 )NrQ   rS   r   r   r   rS   rT   r-  r   rS   rT   rN   rZ   r  rT   )r   rS   rT   rN   rO   rP   rg   rN   rO   rP   )rO   rP   rQ   r   )r   rS   rT   rN   rO   rP   rQ   r   r   r   r?  )r   r9  r  r   r\   )r^   r_   r   r   s       rc   test_bad_size_ziz"_TestLinearFilter.test_bad_size_zi)  s    YYq\\qcA3BR888q!fqc2rAq62>>>q!fqc2rQC5"===q!fqc2r999bAAAiii!b"seR@@@iii!b"iiiDDDqcAq62rAq62>>>qcAq62rQC5"===qcAq62r999bAAAiii!QR!bAAAiii!QR1#sRHHHiii!QRBGGGiii!QRrJJJq!fiiiR!bAAAq!fiiiR1#sRHHHq!fiiiRBGGGq!fiiiRrJJJ Yr]]""5))ZZ^^qcA3AsB777 	q!fqc2q)))R@@@q!fqc2qIII;-DDDq!fqc2qA3aS/2FFFq!fqc2qAq6(B???q!fqc2q<<<."EEEiii!b!5G5G5GLLLiii!b!yyy)))6L5MrRRRiii!b!q!fq!fq!f5MrRRRiii!b!q!fq!f5ErJJJiii!b!lllLLL5QSUVVVqcAq62q)))R@@@qcAq62qIII;-DDDqcAq62qA3aS/2FFFqcAq62qAq6(B???qcAq62q<<<."EEEqc999b!5G5G5GLLLqc999b!yyy)))6L5MrRRRqc999b!q!fq!fq!f5MrRRRqc999b!q!fq!f5ErJJJqc999b!lllLLL5QSUVVViii!QQ8J8J8JBOOOiii!QQ)))YYY9O8PRTUUUiii!QQ!Q!Q!Q8PRTUUUiii!QQ!Q!Q8H"MMMiii!QQ+||\\\:B	@ 	@ 	@ 	qcA3AsB777q!fqc2q,,,CCCq!fqc2qQC!qcA33G2H"MMMq!fqc2q<<<."EEEq!fqc2qA3aS/2FFFq!fqc2qA3aS1#s2KRPPPiii!b!5M5M5MrRRRiii!b!!"AAAA?@"	F 	F 	Fiii!b!lllLLL5QSUVVViii!b!q!fq!fq!f5MrRRRiii!b! !1v1v1v1v1vF	L 	L 	L 	qcAq62q,,,CCCqcAq62qQC!qcA33G2H"MMMqcAq62q<<<."EEEqcAq62qA3aS/2FFFqcAq62qA3aS1#s2KRPPPqc999b!5M5M5MrRRRqc999b!!"AAAA?@"	F 	F 	Fqc999b!lllLLL5QSUVVVqc999b!q!fq!fq!f5MrRRRqc999b!q!f !fq!fq!fq!f6>?A	C 	C 	C 	iii!QQ8P8P8PRTUUUiii!QQ!"AAAA?@"	F 	F 	Fiii!QQ+||\\\:B	@ 	@ 	@iii!QQ!Q!Q!Q8PRTUUUiii!QQ !1v1v1v1v1vF	L 	L 	L 	L 	Lre   c                    |                      d|          }|                     dg|          }|                     dg|          }|                     g |          }t          ||||          \  }}|                     ||           |j        t          | j        t                    rt          || j                  n| j        k    sJ t          |          dk    sJ d S )N)rP   rS   r  r   )	r  r  r   r=   r   r  r  r  r@   )r^   r_   ru   r`   ra   r  rv   r  s           rc   test_empty_ziz_TestLinearFilter.test_empty_zi  s    MM$##sB''sB''B''1aB'''2&&q!,,,x)$*c::,GB
333!%- - - - r{{are   rI   z jax does not support inplace opsr`   rS   )rS   r8        ?rT   )rT   rS   rN   )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          |||                    |          |                    |                    }
|                     |	|
           d S )Nz0cupy does not supoprt scalar filter coefficientsrQ   )r8  r  r'  rS   r  )r<   r  rz  r  r,  r  r  r  r@   r?  r   r&   r|  r=   )r^   r`   r_   ru   ra   r  r  Kr`  zi_1zi_2s              rc   test_lfilticz_TestLinearFilter.test_lfiltic  s$    2;; 	L:au55 	LKJKKKMM!R  |||R00q"%%AJJNAJJNR[[/AEEc!Qii1at}}Q';';<<<Dq!RWWR[["''!**55&&tT22222re   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 )NrS   rT   r   )r   r   r&   r7  s    rc   test_lfiltic_bad_coeffsz)_TestLinearFilter.test_lfiltic_bad_coeffs  s    j'Aq621v1vFFFj'Aq6Aq6Aq6Aq6JJJj'Aq6QC!:1v1vNNNj'QC!:sQFQFKKKKKre   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                    }|                     ||           | j        t
          k    ri nddi} | j        ||fi | d S )NrS   r  r   TFr  )r  r&   r\   r  r   r+  )r^   r_   r`   ra   r  rD  rE  check_dtype_args           rc   test_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zi  s     sB''sB''Q2::r1g..//q!RZZa1122q!RZZu6677"d### $
f 4 4""=%:P"d66o66666re   c                    |                      dg|          }|                      g d|          }|                      ddg|          }|                      dg|          }|                      dg|          }|                      ddg|          }t          ||||          \  }}	|                     ||           |                     |	|           d S )	NrS   r  rT   r   r  rc  r  r  r   r=   
r^   r_   r`   ra   r  ru   yezferv   r  s
             rc   test_short_x_FIRz"_TestLinearFilter.test_short_x_FIR  s     sB''zzz2..A++tR((b))  !S2..1aB'''2&&q"---&&r3/////re   c                    |                      ddg|          }|                      g d|          }|                      ddg|          }|                      dg|          }|                      dg|          }|                      ddg|          }t          ||||	          \  }}	|                     ||           |                     |	|           d S )
NrS   r  rT   r   r  rc  irN  r  rO  rP  s
             rc   test_short_x_IIRz"_TestLinearFilter.test_short_x_IIR  s     1vr**zzz2..A++tR((b))  #sR001aB'''2&&q"---&&r3/////re   c                    |                      d|          }|                     ddg|          }t          ||          }|                     ddg|          }t          ||          }|                     g d|          }t          |||          }|                     ||           |                     ||           |                     ||           d S )Nr  rS   r   r7  r8  r  r  r  r  r?   r   r=   r  	r^   r_   ru   ra   b0r`   a0r  y_fs	            rc   test_do_not_modify_a_b_IIRz,_TestLinearFilter.test_do_not_modify_a_b_IIR  s    MM$##2w++Q2T{B//Q2  !5!5!5r::aA&&sC000!R   !R     re   c                    |                      d|          }|                     g d|          }t          ||          }|                     dg|          }t          ||          }|                     g d|          }t          |||          }|                     ||           |                     ||           |                     ||           d S )Nr  r  r7  rT   )r   r8  rS   rT   rN   ry  rW  rX  s	            rc   test_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIR  s    MM$##yyy"--Q2sB''Q2  !6!6!6;;aA&&sC000!R   !R     re   r!  r  ra   c                 &   t           j                            d          }|                    |          }|                     t          |                    dg          |                    dg          |          t          |||                     d S )NrU   r  )r  r  r
  r\   r  r   )r^   r`   ra   r_   r  s        rc   test_scalar_inputz#_TestLinearFilter.test_scalar_input	  s     yr""zz$BJJu%%rzz3%'8'8$??Aq$	
 	
 	
 	
 	
re   c                     t          j        g dt                    }t          j        g dt                    }t          j        d          5  t          ||g d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r(  r)  rh   )r  r\   r+  r,  r-  r   r   s       rc   r.  z(_TestLinearFilter.test_dtype_deprecation	  s     J)))888J222&AAA#*IJJJ 	( 	(Aq,,,'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A11A58A5N))r0  r1  r2  r  r  r  r  r  r3  r  r  r  r  r  r   r  r  r  r"  r-  r/  r7  r9  r=  r?  r,  r5  r  r  rF  rH  rL  rS  rU  r\  r^  r  r  r`  r6  r.  r   re   rc   r  r  )  s       G G G) ) )0 0 0> > >> > > f%QRRR	1 	1 SR	1 f%QRRR	1 	1 SR	13 3 33 3 3 f%QRRR1 1 SR1 f%QRRR1 1 SR1 d+KLLL	? 	? ML	? d+KLLLA A MLA( d+KLLL	? 	? ML	? d+KLLLA A MLA* f%QRRRJ J SRJ* f%QRRR/ / SR/ f%QRRR< < SR<:> > > f%:;;;gL gL <;gLR      k*LMMM[S1qc<<<QC"K!$  & &3 3& & NM3$L L L #R   k*EFFF7 7 GF 7 f%QRRR0 0 SR0 f%QRRR0 0 SR0
! 
! 
!
! 
! 
! d###[S3xrx}}"=>>[S3xrx}}"=>>
 
 ?> ?> $#
 d###[( (  $#( ( (re   r  c                       e Zd ZdZdS )TestLinearFilterFloat32r   Nr0  r1  r2  r   r   re   rc   rc  rc  	          EEEre   rc  c                       e Zd ZdZdS )TestLinearFilterFloat64r   Nrd  r   re   rc   rg  rg  	  re  re   rg  r}  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterFloatExtendedrG  Nr0  r1  r2  r  r   r   re   rc   ri  ri  	           BHSMMEEEre   ri  c                       e Zd ZdZdS )TestLinearFilterComplex64r   Nrd  r   re   rc   rm  rm  $	  s        EEEre   rm  c                       e Zd ZdZdS )TestLinearFilterComplex128r   Nrd  r   re   rc   ro  ro  (	  s        EEEre   ro  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterComplexExtendedGNrj  r   re   rc   rq  rq  ,	  rk  re   rq  r  c                   4    e Zd Z ej        d          Zd ZdS )TestLinearFilterDecimalr  c                 :    t          t          |                    S r  )r   r  )r^   ru   s     rc   r  zTestLinearFilterDecimal.type7	  s    s1vvre   N)r0  r1  r2  r  r   r  r   re   rc   rt  rt  2	  s4         BHSMME    re   rt  c                   2    e Zd Z ej        d          ZeZdS )TestLinearFilterObjectr  N)r0  r1  r2  r  r   r  r  r   re   rc   rw  rw  ;	  s$         BHSMMEDDDre   rw  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  Nrv  r  rv  rx  )hasattrsysry  r,  r  r   r  r   r7  s    rc   test_lfilter_bad_objectr}  B	  s    
 sJ ?C3<$7$7=>>>)WsecU4D4D4DEEE)WsedV___EEE)Wtfse___EEEEEre   c                 L    t          t          t          ddgddgg d           d S )NrT   rN   rO   rP   )rS   rT   rN   rO   rP   )r   NotImplementedErrorr   r7  s    rc   !test_lfilter_notimplemented_inputr  N	  s-     %w1!ukkkJJJJJre   c                       e Zd 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                 H    |t           k    rt          j        j        S t          S )z/Use np.testing while object arrays are a thing.)r   r  rY  r=   )r^   re  s     rc   _get_assertionz!_TestCorrelateReal._get_assertionV	  s    ==:77,,re   c                     |                     ddd|          }|                     ddd|          }|                    g d|          }|||fS )Nr   rN   rO   r   rS   rT   )r   rT   rP   r   rN   )r  r\   r^   re  r_   r`   ra   r  s         rc   _setup_rank1z_TestCorrelateReal._setup_rank1]	  sY    KK1arK**KK1arK**jjj33!Syre   c                     d}	 t          j        |          }t          |d          r)t          dt          j        |j                  z            }n# t          $ r Y nw xY w|S )NrQ   
resolutionr  )r  r  r{  rz  log10r  	Exception)r^   res_dtr  dt_infos       rc   equal_tolerancez"_TestCorrelateReal.equal_toleranced	  ss    	hv&&Gw-- Ad28G,>#?#??@@ 	 	 	D	s   AA 
AAc                     |t           j        k    r|                     t           j                  S |                     |          S r  )r  r  r  r   )r^   r  s     rc   equal_tolerance_fftz&_TestCorrelateReal.equal_tolerance_ffto	  s;     R]""''
333''///re   Tz	order='F'r|   c                     |t           k    r6t          t          d          gt          d          g          }|dk    sJ d S t          ||          }|                     ||          \  }}}t	          ||d          }t	          ||d          }t          |||                     |j                             t          |||                     |j                             |j        |k    sJ |j        |k    sJ d S )NrO   rN   r   r   r   r  )	r   r   r  _setup_rank3r   r=   r  r   r  )	r^   re  r_   r   r`   ra   r  y_ffty_directs	            rc   test_methodz_TestCorrelateReal.test_methodw	  s'   =='wqzzlCCFX%%%%%%RB))"b11IAq#a5111E Ah777H%c&+.2.F.Fu{.S.SV V V V &c&..2.B.B8>.R.RU U U U ;"$$$$>R''''''re   c                 J   t          |          r|dv rt          j        d           t          |t                    rt          ||          n|}|                     |          }|                     ||          \  }}}t          ||d          } |||dd                    |j	        |k    sJ t          ||d          }|j	        t          k    r( |||                    |dd                              n |||dd         d d d                    |j	        |k    sJ d S )Nr  $torch does not support unsigned intsr   rS   rO   r   )r:   r,  r  r  r  r  r  r  r   r   r+  r|  )r^   re  r_   _assert_almost_equalr`   ra   r  rv   s           rc   test_rank1_validz#_TestCorrelateReal.test_rank1_valid	  s8   B<< 	?B"@@@;=>>> *2s 3 3;WR___#22266%%b"--	1caG$$QAaC)))w"}}}} aG$$I  BGGC!H$5$56666  C!HTTrTN333w"}}}}}}re   c                 d   t          |          r|dv rt          j        d           t          |t                    rt          ||          n|}|                     ||          \  }}}t          ||d          }|                     |          } |||d d                    |j	        |k    sJ d S )Nr  r  ri   r   
r:   r,  r  r  r  r  r  r   r  r   r^   re  r_   r`   ra   r  rv   r  s           rc   test_rank1_samez"_TestCorrelateReal.test_rank1_same	  s    B<< 	?B"@@@;=>>> *2s 3 3;WR___%%b"--	1caF###22266QCRC)))w"}}}}}}re   c                 T   t          |          r|dv rt          j        d           t          |t                    rt          ||          n|}|                     ||          \  }}}t          ||d          }|                     |          } |||           |j	        |k    sJ d S )Nr  r  r   r  r  s           rc   test_rank1_fullz"_TestCorrelateReal.test_rank1_full	  s    B<< 	?B"@@@;=>>> *2s 3 3;WR___%%b"--	1caF###22266Q$$$w"}}}}}}re   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  rO  )rT   rO   rP   F)orderrY   rM  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     @rt  )r  g     j@g     @g     @g     Д@g     p@g     z@g     `@)g     U@g     @~@g     (@r  g     P@g     @g      @g     i@)g     g@g     @r  g     X@g     @g     @g     Џ@g     @k@)g     @s@g     p@g     x@g     h@g     @g     @g     ؐ@r  )r  g     @r  g      @g     @g     Ȗ@g     @g     S@)g     _@g      v@g     @g     @g     @g     p@g     @m@r<  r   )r  r  r   r  r  r   r  s         rc   r  z_TestCorrelateReal._setup_rank3	  sq   K2r""**9C*@@GG K2r""**9C*@@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( *)& & &( '-fRjj) 	, !Syre   c           	         t          |t                    rt          ||          n|}|                     ||          \  }}}t	          ||d          }|                     |          } |||ddddddf                    |j        |k    sJ t	          ||d          }|                     |          } |||ddddddf         d d dd d dd d df                    |j        |k    sJ d S )Nr   rS   rT   rO   rN   rP   r   r  r  r  r  r   r  r   r  s           rc   test_rank3_validz#_TestCorrelateReal.test_rank3_valid	  s    *2s 3 3;WR___%%b"--	1caG$$#22266QAaC1acM 2333w"}}}} aG$$#22266QAaC1acM 244R42ttt3C DEEEw"}}}}}}re   c                 $   t          |t                    rt          ||          n|}|                     ||          \  }}}t	          ||d          }|                     |          } |||ddddddf                    |j        |k    sJ d S )Nri   r   r   rS   r  r  r  s           rc   test_rank3_samez"_TestCorrelateReal.test_rank3_same	  s     *2s 3 3;WR___%%b"--	1caF###22266QAbD!B$"$4 5666w"}}}}}}re   c                    t          |t                    rt          ||          n|}|                     ||          \  }}}t	          ||          }|                     |          } |||           |j        |k    sJ d S r  r  r  s           rc   test_rank3_allz!_TestCorrelateReal.test_rank3_all	  s     *2s 3 3;WR___%%b"--	1caOO#22266Q$$$w"}}}}}}re   N)r0  r1  r2  r  r  r  r  r3  r  r  r  r  r  r  r  r  r   re   rc   r  r  T	  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  re   r  re  r  c                       e Zd ZdS )TestCorrelateRealNr0  r1  r2  r   re   rc   r  r  	  s         	Dre   r  c                       e Zd ZdS )TestCorrelateRealDecimalNr  r   re   rc   r  r  
  s         	Dre   r  c                   .   e Zd Z ed          d             Z ed          d             Z ed          d             Z eddg           edd	
          d                         Zej	        j
         e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       rc   r   z!TestCorrelate.test_invalid_shapes
  s     IaOO##F++Ib!$$V,,j)Jq!fJJJ8IJJJj)Jq!fJJJ8IJJJJJre   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       rc   r   z!TestCorrelate.test_invalid_params
  s    IIII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Ore   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     rc   r%  z"TestCorrelate.test_mismatched_dims#
  s     	j)aS!HEEEEj)QHEEEEj)aS!EBBBBj)QEBBBBj)aSA3%888j)aS!44444re   rC   rD   rI   zdtype differsrK   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 )NrR   rO   rP   ri   rj   )rP   r  rY   r   )r   rX   rY   r   )rQ   r   rX   rY   rZ   r   rX   )r\   r7   r   r   s       rc   test_numpy_fastpathz!TestCorrelate.test_numpy_fastpath-
  s    JJyyy!!JJ1v	!QV444bjj6M6MNNNJJyyy!!JJyyy!!	!QV444bjj6N6NOOO	!QV444bjjATATAT6U6UVVV	!QW555rzz2$7G7GHHHHHre   c                     t          j        g dt                    }t          j        g dt                    }t          j        d          5  t          ||           d d d            d S # 1 swxY w Y   d S r'  )r  r\   r+  r,  r-  r   r   s       rc   r.  z$TestCorrelate.test_dtype_deprecation:
  s     J)))888J222&AAA#*IJJJ 	 	aOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r/  N)r0  r1  r2  r3  r   r   r%  r  r,  r5  r6  r.  r   re   rc   r  r  	
  s        d###
K 
K $#
K d###P P $#P d###5 5 $#5 t999k/:::	I 	I ;: :9	I [d###  $#   re   r  z accepts ints, return numpy arrayrk   r   ri   r   behindF
input_sizer   r  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   rU   rj   )r  r  r  r)  rz  concatenater   r   r   argmaxr8   r  )rk   r  r  r_   r  in1offsetin2r   correlationlags	lag_indexs               rc   test_correlation_lagsr  D
  s     )


"
"C


j
)
)CBF nc11&993?@@7 &''lC4000KCHchT:::D	+&&IDOX...:*******re   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 invalidr)  r   asdfghrj   )r,  r	   r   r   r7  s    rc   "test_correlation_lags_invalid_moder  d
  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  rQ   )rP  rX   rT   rN   )r9   r  r  cdoubler  bitsrz  )r^   re  r_   precs       rc   r  zTestCorrelateComplex.decimalt
  sX    B<< 	B".00B Arxx||011t8a<   re   c                    t           j                            d           t           j                            d                              |          }|dt           j                            d                              |          z  z  }t           j                            d                              |          }|dt           j                            d                              |          z  z  }t          |j        |j        |          t          |j        |j        |          z                       |          }|dt          |j        |j        |           t          |j        |j        |          z   z  z  }|                    |          |                    |          |                    |          }}}|||fS )Nr?  rU   r   r   rj   )	r  r  r  r
  r  r   r  imagr\   )r^   re  rk   r_   r`   ra   r  s          rc   r  z!TestCorrelateComplex._setup_rank1|
  sl   
	qIOOB&&r**	R")//"%%,,R0000IOOA%%b))	R")//!$$++B////d333d33345;VBZZ 	riT::::qvqvD999: ; 	; JJqMM2::a=="**S//c1!Syre   c                    |                      |d|          \  }}}t          ||          }t          ||d          }t          |||                     ||                     |j        |k    sJ t          ||d          }t          ||                    |                    |                    |                     ||                     |j        |k    sJ d S )Nr   r  )r  r  r   r=   r  r   conjr|  r^   r  r_   r`   ra   r  re  rv   s           rc   r  z%TestCorrelateComplex.test_rank1_valid
  s    %%gw;;	1cR!!aG$$!!S$,,r22F2FGGGGw"}}}} aG$$!!RWWRWWS\\%:%:*.,,r2*>*>	@ 	@ 	@ 	@w"}}}}}}re   c                     |                      |d|          \  }}}t          ||          }t          ||d          }t          |||                     ||                     |j        |k    sJ d S )Nri   r  r  r  r   r=   r  r   r  s           rc   r  z$TestCorrelateComplex.test_rank1_same
  su    %%gvr::	1cR!!aF##!!S$,,r22F2FGGGGw"}}}}}}re   c                     |                      |d|          \  }}}t          ||          }t          ||d          }t          |||                     ||                     |j        |k    sJ d S )Nr   r  r  r  s           rc   r  z$TestCorrelateComplex.test_rank1_full
  su    %%gvr::	1cR!!aF##!!S$,,r22F2FGGGGw"}}}}}}re   c                     t          ||          }|                    g d|          }|                    g d|          }t          ||          }t          ||                    g d          dd           d S )Nr   rq   r  r   y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      r   Fr  )r  r\   r   r7   )r^   r  r_   re  r   krv   s          rc   test_swap_fullz#TestCorrelateComplex.test_swap_full
  s    R!!JJ///rJ::JJ777rJBBaOOrzzNNNOO5	
 	
 	
 	
 	
 	
re   c                     |                     g d          }|                     g d          }t          ||d          }t          ||                     g d                     d S )Nr  r  ri   rj   )r  r  r  )r\   r   r7   )r^   r  r_   r   r  rv   s         rc   test_swap_samez#TestCorrelateComplex.test_swap_same
  so    JJ///00JJ77788a(((2::&A&A&ABBCCCCCre   rC   notimplementederrorrK   c                    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 )	NrU   r   rQ   r   rO   r   rS   r  )r  r  r
  r  r   r  r  r\   r  r=   r  r   r  s           rc   
test_rank3zTestCorrelateComplex.test_rank3
  s   IOOB1%%,,W55	R")//"a++227;;;;IOOAq!$$++G44	R")//!Q**11'::::((1616**+,2F7OO 	ri///)AFAF2K2KKLLJJqMM2::a=="**S//c1R!!aF##!!S$,,r22F2F2JKKKKw"}}}}}}re   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   rS   r  rt   F)check_shape              @rO   )r  r  r  r
  r  r  r   r  r  r\   r=   r  r   r8   )r^   r  r_   r`   ra   re  r  rv   s           rc   
test_rank0zTestCorrelateComplex.test_rank0
  sy   HRY__&&''..w77	R"(29??,,--44W====HRY__&&''..w77	R"(29??,,--44W====R!!((1616**+,2F2JJ 	rBHi777&qvqv667 8 8 8 	8 zz!}}bjjmm1aF##!!S$,,r22F2F2JKKKKw"}}}}	1#t,,bj1b9I9I.J.J$)	+ 	+ 	+ 	+	2$--rz)B:K:K/L/L$)	+ 	+ 	+ 	+	2$,,bj2q9I9I.J.J$)	+ 	+ 	+ 	+ 	+ 	+re   N)r0  r1  r2  r  r  r  r  r  r  r  r3  r  r  r   re   rc   r  r  j
  s        ! ! !        
 
 
D D D f%:;;;  <;" d###+ + $#+ + +re   r  c                   n    e Zd Zd Z ed          d             Z ed          d             Z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 NrP   r  r  rj   r   )r  r   r  r\   r   r>   r   )r^   r_   r`   ra   rk   a_xpb_xpnp_corr_results           rc    test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcs
  s   IaLLH]]]##- 
	@ 
	@DA

1$D\!QT:::N 0t$ G G G "

> : :< < < w!#a!>!>!>#F$4T4d$K$K$K$&JJ~$>$>@ @ @
	@ 
	@re   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`   ra   rk   s        rc   "test_consistency_correlate_funcs_2z2TestCorrelate2d.test_consistency_correlate_funcs_2
  s    IaLLH]]]##- 		G 		GD
6+=qcA3CG,I ,I ,I !J !J & 0AD A A AC C C
 w#BJv/A1#sGK0M 0M 0M %N %N$*$4Q$E$E$EG G G		G 		Gre   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       rc   r   z#TestCorrelate2d.test_invalid_shapes  s     IaOO##F++Ib!$$V,,j&"4S1vSSS&'ARSSSj&"4S1vSSS&'ARSSSSSre   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 )
NrS   rt                 F)r  r  r  y      @        rO   y              (@)r8   r   r   r\   r$  s     rc   test_complex_inputz"TestCorrelate2d.test_complex_input  s+   *2::se+<+<bjj2$>P>PQQ

C5))u%	Q 	Q 	Q 	Q*2::tf+=+=rzzB4&?Q?QRR

D6**5	R 	R 	R 	R*2::tf+=+=rzzA3%?P?PQQ

C5))u%	Q 	Q 	Q 	Q 	Q 	Qre   N)r0  r1  r2  r  r3  r  r   r  r   re   rc   r  r  
  s        @ @ @  d###G G $#G  d###
T 
T $#
TQ Q Q Q Qre   r  )rE   zlfilter_zi is incompatiblec                       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 specificr|   c                 |    |                     ddg          }t          g dg d          }t          ||           d S )Nr  rw  r  r<  rv  r  rw  r8  r\   r   r=   )r^   r_   zi_expectedr  s       rc   test_array_likezTestLFilterZI.test_array_like"  sG    jj#t--)9)9)9::!"k22222re   c                     |                     g d          }|                     g d          }|                     ddg          }t          ||          }t          ||           d S )Nr  r  r  rw  r  )r^   r_   r`   ra   r  r  s         rc   rd   zTestLFilterZI.test_basic(  si    JJ'''((JJ''jj#t--1!"k22222re   c                     |                     g d          }|                     g d          }t          ||          }t          d|z  d|z            }t          ||d           d S )N)rv  r   rP   )r  rS   r   rT   r;  r  )r\   r   r7   )r^   r_   ra   r`   r  zi2s         rc   test_scale_invariancez#TestLFilterZI.test_scale_invariance/  so     JJ{{{##JJ{{{##A1ac""Su------re   r   r   r   c                     t          ||          }|                    d|          }|                    dg|          }t          j        ||          j        |k    sJ d S )Nr   r   rS   )r  r  r\   r   r   r   )r^   r   r_   ra   r`   s        rc   r  zTestLFilterZI.test_types8  sd    E""HHaH&&JJs%J(( A&&,555555re   N)r0  r1  r2  r3  r  rd   r	  r,  r5  r  r  r   re   rc   r  r    s         d+KLLL3 3 ML3
3 3 3. . . [Wy)&<==6 6 >=6 6 6re   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!   r\   r   r"   r)   )r^   zpkru   r  r  padlenr   irlenr_   ra   r`   r  s               rc   r   zTestFiltFilt.filtfiltD  s    %%3<DAq::a=="**Q--qAAq!T7FFEJJJ5((3-C**S//CsAtWf=== )(re   r   negative stridesrK   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-placerK   rR   rZ   r7  gA:)>g6{=r   r   )
r;   r  r,  r  r+   r   r   r<   r7   r   )r^   r_   r  r   r   s        rc   rd   zTestFiltFilt.test_basicO  s    ":: 	9$,55K78888YYY			**mmC22m66bkk/ddxRYYrY<<4HHHHHHre   c                 X   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  rK     r   r  rS   rU   i  r         ?r  r%  r  )r  r_   r   r  r  r_   )r;   r  r,  r  r  r  r  r>  r    r9  r?  rz  ceillogr   r\   vstackr  r  r8   )r^   r_   rD  r   xlowxhighru   r  repsr  rv   errx2dy2dy2dts                   rc   	test_sinezTestFiltFilt.test_sineY  s   ":: 	9$,55K78888KK3q))vvebema'((w*++5LQe,,,F3q6NN   sbfQii/0011 MM#qrM22fQX""$$Tzzzz jjD$,#78899mmCQQ2m>>yCI%%%%fS4Z  $$&&Tzzzz }}S#%b}AATV$$$$$re   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  rK   g     @rU   r  rZ   rN   r  r  r%  r   r  rS   rT   )r;   r  r,  r  r  r   r   r\   r    r   r  r8   )r^   r_   ru   r  r_  r`  r  s          rc   	test_axiszTestFiltFilt.test_axis  sk   ":: 	9$,55K78888 I())11"b"==JJqMMQe,,,]]3!!];;]]BK1a0011!!  
 
 	BJJr{2q!'<'<==>>>]]BK1a0011!!  
 
 	BJJr{2q!'<'<==>>>>>re   Tz-python scalars in array_namespace are np-onlyr|   c                    | j         dk    rd S t          j        |                    ddg          d|                    d|j                            }t          ||                    d|j                  dd           d S )Nr  r8  rS   rU   r   r   r  )r  r   r   r\   r   r   r7   )r^   r_   r   s      rc   test_acoeffzTestFiltFilt.test_acoeff  s     %%FoJJBx  !RYYrY%D%D
 
 	RYYrY<<5uUUUUUUre   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  rv  r8  r  r   r9  r'  rS         ?r  )r  r,  r  r\   r2   r7   )r^   r_   ru   ra   r`   rv   z1z2s           rc   test_gust_simplezTestFiltFilt.test_gust_simple  s[   %%K>??? JJSz""JJuJJT{##"1a++	2r1s1Q4x#ad(23331s1Q4x#ad(2333

BqEDAJ$6ad$BU1Q4Z$O$(AJA$6qt$Cd1Q4i$O$Q R R	
 	
 	
 	
 	
re   c                     | j         dk    rt          j        d           |                    d          }d}d}t	          |||d          }||z  dz  |z  }t          ||           d S )	Nr  r-  rZ   rx  rv  gustr   rT   )r  r,  r  r   r   r7   )r^   r_   ru   ra   r`   rv   r   s          rc   test_gust_scalarszTestFiltFilt.test_gust_scalars  s{     %%K>??? IIbMMQ1V,,,aC!8a<8$$$$$re   )r   r  Nr  NN)r0  r1  r2  r  r   r3  rd   r'  r)  r+  r1  r4  r   re   rc   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% % %re   r  zLsosfiltfilt directly sets shape attributes on arrays which dask doesn't likec                   d    e Zd ZdZ edd           edd          d                         ZdS )	TestSOSFiltFiltr  rI   r  rK   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  rS   rQ   ffffff?r  r%  r;  zorder=)r   err_msgN)r  r  r  r
  r\   r   r   r    r!   r"   r  r   r)   r7   )
r^   r_   ru   r  r  ra   r`   r  rv   y_soss
             rc   test_equivalencez TestSOSFiltFilt.test_equivalence  s     I!!!$$**400JJqMM1a[[ 	L 	LE-tE:::C3<DAq3-CBJAs44IAq#Aq!!AQ''EAu5:J5:J:JKKKKK	L 	Lre   N)r0  r1  r2  r  r3  r;  r   re   rc   r6  r6    sh         Mk*BCCCg&8999L L :9 DCL L Lre   r6  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.rS   Nr  r   r   rT   )r?  rc  r   r  sum)icsra   r`   ru   mz0fz0br[  y_fby_by_bfvalues               rc   filtfilt_gust_opt_funcz1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_func  s    AA!#"1"g!""gaA#&&&q)q!S2Y3///244R48aAdddG,,,Q/"5q!SS)))!,ta'((re   rS   Nr  r;  r"  TF)r  xtolftolmaxfunmaxiterfull_outputdispr   z3minimization failed in filtfilt_gust_opt: warnflag=r   r  )	r?  rc  r   r  r  r  r   r5  r   )ra   r`   ru   rG  r@  r  r?  r  optfoptniterfuncallswarnflagrA  rB  rD  rv   s                    rc   filtfilt_gust_optrS    s^      	CFFCFFaA	Aq		B
.!BQB%**,,r/1aRSS6;;==+;<
=
=C(#Q1I5"0 0 0F ,2(Cuh!||L(LL
 
 	
 bqb'C
abb'C !Q$$B$C
(
(
(
+DDbD
1C1cc"""1%Ac3;re   c                    t           j                            d           t          j        j        | }t	          | |||d|          }t          | ||||          \  }}}	t          j        ||d          }
|
j        d d         }t          j        |
          }t          t          |          t          |                     dz
  }t          j        ||fz             }t          j        ||fz             }t          d |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  r3  )r  r   r  )r  r  r   rS   c                 ,    g | ]}t          |          S r   )r   )r   r   s     rc   r   z'check_filtfilt_gust.<locals>.<listcomp>  s    666q%((666re   r  r  r  )r  r  r  r
  r   r2   r  r  
empty_liker?  rc  r  r   rS  r7   )ra   r`   r  r  r  ru   rv   ygzg1zg2xx	out_shaper  r@  zo1zo2indxs                    rc   check_filtfilt_gustr_    s   INN3
	A 	AqtF%@@@A "!QEBBBLBS
 
Qb	!	!B"I	r		BCFFCFFaA
(9t#
$
$C
(9t#
$
$C66I6667 K K):1aD)J)J&4#d)SYY	RT	"	"B
+c2t
$
$C
+c2t
$
$CAr40000BD1111C4d3333C4d333333re   rU   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  )rS   rT   )r   rQ   r   rj   T)rk   measure>   r   r   r   r   rU   
complex256
complex192r   l         @ )r  r  r
  r   r  dictkeysr{  r}  r'  r  r   )r_   rk   r
  r  r  true_methodru   rF  r   
method_trytimesnot_fft_conv_supps               rc   test_choose_conv_methodrk  &  s    * ? ? 	F 	FD .Aq+	1$+/A	1$+/A'14888F[(((( 21adD Q Q QJ!22222eT*****EJJLL((X-E-E-E-E-E!= 	G 	Gr,-- GGA%6777FFHH)!QT:::hFFFFHeWBH---FFHH!!QT222h>>>>>/? ?re   c                     t          j        g dt                    }t          j        g dt                    }t          j        d          5  t          ||           d d d            d S # 1 swxY w Y   d S r'  )r  r\   r+  r,  r-  r   )r_   r`   ra   s      rc   "test_choose_conv_dtype_deprecationrm  D  s     	
%%%V444A

...f===A		&E	F	F	F ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !r/  c                 t   dD ]}t          d          t          d          g}t          d          t          d          g}t          |||          dk    sJ d}d	D ]Y}t          t          |          rBt          j        ||
          }|                                }t          |||          dk    sJ Zd S )Nr  rN   rT   rS   rO   rj   r   rU   rb  r   )r   r   r{  r  r}  r'  )r_   rk   ru   rF  r  rj  s         rc   test_choose_conv_method_2ro  N  s     * 
G 
GQZZ$QZZ$!!QT222h>>>>!= 	G 	Gr,-- GGA%6777FFHH)!QT:::hFFFF		G
G 
Gre   c           	      Z   t          j        ddddd          \  }}}d}t          j        t          j        |                    }t          t          j        t          j        |          t          j        |          z                      }t          j        	                    d           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 )NrN   {Gz?x   gffffff?r  r%  r  r  rP   r   r   rT   r  )r   ellipr  r?  r9  rz  r  r  r  r  r!   r_  r   )r_   rw   pr  r"  r!  approx_impulse_lenra   r`   r  
signal_lenr  r  lengths                 rc   test_filtfilt_gustrx  ^  sH    l1dC>>>GAq! C
rvayyARWRVC[[26!99%<==>>INN3!Q??DAq*+ 
: 
:++
 	Aq:-E::: !HH 	: 	:DIIE$E$K1eT59999	: !!B&F1vi,>?????re   c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )TestDecimatec                     t          j        d          }t          t          t          j        |dd           t          t          t          j        |dd           d S )NrZ   r8  rS   )qr  rT   )r  r   r   r  r   decimater^   r_   ru   s      rc   test_bad_argszTestDecimate.test_bad_args  sK    IbMMi!sa@@@@i!qC@@@@@@re   c                     t          j        d          }t          j        |dddd                                          }t          ||d d d                             t                               d S )NrZ   rT   rS   iirFr  ftype
zero_phaser  r   r   r}  roundr8   r  r  r^   r_   ru   rv   s       rc   test_basic_IIRzTestDecimate.test_basic_IIR  a    IbMMOAqAUuEEEKKMM1SSqS6==//00000re   c                     t          j        d          }t          j        |dddd                                          }t          ||d d d                             t                               d S )NrZ   rT   rS   firFr  r  r  s       rc   test_basic_FIRzTestDecimate.test_basic_FIR  r  re   c                     t          j        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   rT   r   F)r  r  )r  r   rS   )r   r  )r  r  r   r}  r  )r^   r_   rw   d0d1s        rc   
test_shapezTestDecimate.test_shape  sm    HX_Qe<<<x8####_Qe<<<x8######re   c                     t                      5 }|                    t          d           |                     dd           d d d            d S # 1 swxY w Y   d S )NBadly conditioned filterr  Fr   r  r   rZ  r,   _test_phaseshiftr^   r_   r\  s      rc   test_phaseshift_FIRz TestDecimate.test_phaseshift_FIR  s       	BCJJ(BCCC!!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                      5 }|                    t          d           |                     dd           d d d            d S # 1 swxY w Y   d S )Nr  r  Tr  r  r  s      rc   test_zero_phase_FIRz TestDecimate.test_zero_phase_FIR  s       	ACJJ(BCCC!!4!@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ar  c                 4    |                      dd           d S )Nr  Fr  r  r$  s     rc   test_phaseshift_IIRz TestDecimate.test_phaseshift_IIR  s!    Uu=====re   c                 4    |                      dd           d S )Nr  Tr  r  r$  s     rc   test_zero_phase_IIRz TestDecimate.test_zero_phase_IIR  s!    Ut<<<<<re   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 )Nrr  )r  r  r   rO  r   rS   皙?rT   rt   皙?r  r   r  r  r  r  r   g?Fr  r  r   r  r8  r  ry  )r  r   r  r  r  r>  r=  r   windowstukeyr   dltir,  cheby1freqzr  denr9  r]  r}  r  r>  r  angler7   r  )r^   r   r  rD  rE  t_totr   rF  r   rG  r|  rH  d_tosr  systemwc_h_respsrJ  	h_resampssubnyqr  s                         rc   r  zTestDecimate._test_phaseshift  s   ###Id5jl##eDkk1 ""S(1,VFRUNU111bj=%99A=>>~##AFC001   #	2 #	2GA9WU]1_--g>DVFRUNU111bj=-AADHII~++DIs;;<E V]1q5"q&:C&E &E &EFHJ J5Yq[fmAtRX&F&FG U""#\&*fj*/*Q,ru*<> >
726'??*,u--1F3=? ? ?I uzz||i7bAAAI	***IS[(F XgllnnY677?FFBM&$9$9!%D2 2 2 2 2E#	2 #	2re   c                    d}d}t          j        |          |z  }t          j        d|z            t          j        dt           j        z  |dz  z  |z            z  }t          t           j                            |          dd           t          j	        |d	d
          }t           j                            |          dk     sJ d S )Ng      Y@r  rv  rT   g      >@r  r  r  r   r  )r  rq  )
r  r   sqrtr  r>  r7   linalgnormr   r}  )r^   r_   sfreqr  r   ru   x_outs          rc   test_auto_nzTestDecimate.test_auto_n  s     IaLL5 GBFOObfQY%#+%>%BCCC	q))2D99992U333y~~e$$t++++++re   c                     t          j        t          j        dt          j                  d          }t          t          j        |                    rJ d S )Nr"  r   rU   )r   r}  r  r}  r   r  isnanr~  s      rc   test_long_float32zTestDecimate.test_long_float32  sH     OBGF"*===rBBrx{{#######re   c                     t          j        t          j        dt          j                  d          }|j        j        t          j        k    sJ d S )Nr   r   rU   )r   r}  r  r}  r   r   r  r   r~  s      rc   test_float16_upcastz TestDecimate.test_float16_upcast  sA    OBGCrz:::B??w|rz))))))re   c                    d}d}d}t          j        ddt          j        z  |z  dz  d|          \  }}}|                    t
                    t          j        dt          j        z  |z  |z            z  }|                    t
                    t          j        dt          j        z  |z  |z            z  }t          j        |||          }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
        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  rP        @@rT   r  )r  fsrt   r&  r8  r  Fr  Tr  vIh%<=r  )r   r    r  r>  r  r{  r  r  r   r}  r   r!   r8   r   r7   )r^   r_   fcentrefwidthr  rw   rt  r  r  r   r   ynzpynzprefyzpyzprefs                  rc   test_complex_iir_dltiz"TestDecimate.test_complex_iir_dlti  s    -1RU76>!#3EbIII1aHHWrBEzG';B'> ? ??HHWrBEzG';B'> ? ??Q1%%IcNNR VBJ(1,--RVC"%K'1A56667 q!6eDDD. $&-1a"8"8 $!"$ $ $$'CaC) 	g&&&oa&TBBB $&-1a"8"8 $!"$ $ $$'CaC) 	V%e<<<<<<re   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  rP   r  r  rT   )r  rt   r   rS   r&  r8  r  Fr  )rK  rL  r   Tr  )r   r,  r  rootsr  r>  polyr  r   r}  upfirdnr8   r   )r^   r_   r  r  r  numtapsbbasezbasezrotbzr  r   r   r  r  r  r  s                    rc   test_complex_fir_dltiz"TestDecimate.test_complex_fir_dlti  sx    gvaxB777 rvb25j72256661X%R##IcNNR VBJ(1,--RVC"%K'1A56667 q!6eDDD.Q11555dsd;g&&&oa&TBBB%aAb999V$$$$$re   N)r0  r1  r2  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   re   rc   rz  rz    s        A A A
1 1 1
1 1 1
$ $ $B B B
A A A
> > >= = =/2 /2 /2b
, 
, 
,$ $ $* * *
= = =@"% "% "% "% "%re   rz  z)jax arrays do not support item assignmentc                   l    e 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  )r\   r   r   r   r   r~  s      rc   r  zTestHilbert.test_bad_args9  sS    JJ
|$$j'1---IIcNNj'1222222re   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   rT   r  r   rS   r  rN   )r>  r   r   r  r  r  r   r9  atan2r  r  r>   r}  r  )r^   r_   r  r>  r   rZ  a1a2a3r`   rF  h_absh_angleh_reals                 rc   test_hilbert_theoreticalz$TestHilbert.test_hilbert_theoretical?  si   UIIaRcI<<VVAYYVVAYYVVAE]]VVAE]]HHb"b"%&&AJJq		((2771::rwwqzz22 	FAw///E27717#3#3W=== 	GAttG,IIrcAgrAvrCxrzIRR#	% 	% 	%
 	AttGbii2rCxrziJJG	U 	U 	U 	GAttG,IIrcAgrAvrCxrzIRR#	% 	% 	% 	AttGbii2rCxrziJJG	U 	U 	U 	BGGAadG,,b':::::re   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 )Nr  r   )rN   rQ   r   r  r   r  r  )r  r  )rN   r  )r  rN   )y        Bm}ąy      ?a y?0fy      @Wa94y      @"nWy      @hIX@y<nm@yF8O2k{?yډoP?y̼YC?y433333<c4Qe?yȒ40p$?yESU?yffffff<?7?y433333<wEoy!5P{3'ſy        _N@տy<}ٿy<-cyF8<2OW\zN regression)r9  )r   r   r   r   r8   r  r>   r  r  r  r\   )r^   r_   r`   aaaana0hilbs         rc   test_hilbert_axisNzTestHilbert.test_hilbert_axisNi  s=   JJryy2:y66??QR   !,,,bd333GAadG,,bAAAh;;; a2B'''yG####qsbq)))/7::::  F F F G G( F##C111Ivr>JJJJJJre   r   r   r   c                     t          ||          }|                    d|          }|                    t          |                    j        |k    sJ d S )Nr   r   )r  r  r  r   r   r  s       rc   test_hilbert_typeszTestHilbert.test_hilbert_types  sT    E""88AU8++wwwx(())/5888888re   N)
r0  r1  r2  r  r  r  r,  r5  r  r  r   re   rc   r  r  5  sy        3 3 3(; (; (;T$K $K $KL [Wy)&<==9 9 >=9 9 9re   r  c                       e Zd Z edd          d             Zd Zej                            dddg          d	             Z	d
S )TestHilbert2Tlist inputs are numpy-specificr|   c                 0    t          g dg dg           d S )NrR   r   )r   r$  s     rc   r  zTestHilbert2.test_array_like  s#    )))YYY'(((((re   c                    |                     dgg          }t          t          t          |           |                    |                    d          d          }t          t          t          |           |                    |                    d          d          }t          t          t          |d           t          t          t          |d           t          t          t          |d	           d S )
Nr   rM  r   r   r  r   r  )rT   r   )rT   )r\   r   r   r   r   r   r~  s      rc   r  zTestHilbert2.test_bad_args  s    JJ~&&j(A... JJryy}}i00j(A... JJryy}}f--j(A3333j(A8888j(A666666re   r   r   r   c                     t          ||          }|                    d|          }|                    t          j        |                    j        |k    sJ d S )N)rT   rX   r   )r  r  r  r   r   r   r  s       rc   test_hilbert2_typesz TestHilbert2.test_hilbert2_types  sV    E""88G5811wwvx001175@@@@@@re   N)
r0  r1  r2  r3  r  r  r,  r5  r  r  r   re   rc   r  r    s         d+KLLL) ) ML)7 7 7 [Wy)&<==A A >=A A Are   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;  ry  r  r9  )rA   r   r7   )r  r  r[  r_   a_r_tols        rc   r  zTestEnvelope.assert_close  sh     'r**bj88 "5111!%t44 	
 	H@@7@@C@@@@@@re   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=.*r)  rN   rT   r  Nz&z.shape\[axis\] not > 0 for z.shape=.*)rN   r   rS   )r;  )r   rv  )Nrv  z, zbp_in=\(z\) isn't a 2-tuple of.*rO   )bp_inz)n_out=10.0 is not a positive integer or.*r6  )rZ  ))r   rN   r  )r   rU   z&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .*	undefinedresidual)	r,  r	   r   r   r  r}  joinr  r  )r^   r_   r  tss       rc    test_envelope_invalid_parametersz-TestEnvelope.test_envelope_invalid_parameters  s    ]:!KM M M 	) 	)RWQZZa((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ]:!JL L L 	. 	.RWWV__1----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 6 	2 	2E3sE??++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 	, 	, RWWQZZs++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 0 	2 	2E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RWWQZZ+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:rI   r  rK   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. )ry  rT   rT   rN   r   r   )ry  r   r   rQ   r   r   r   r   r   r  allTr  squaredrO   rT   r   r   r   Envelope calculation errorr[  r_   )rO   r   r   rN   r   Residual calculation errorFrT   z3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrN   )r  r  rZ  Nz(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorlowpassz/`residual='lowpass'` envelope calculation error)rO   r   r   r   r   z/`residual='lowpass'` residual calculation errorz*`residual=None` envelope calculation errorr&  rS   )r  zReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)rA   r   r   r   r\   r  irfftr  unstackr   r  rfftifftr  r  r   )r^   r_   r  r  ZZr_arw   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                        rc   test_envelope_verify_parametersz,TestEnvelope.test_envelope_verify_parameters  sK     ###rz11r||r}JJ(((J55zz444DzAALOOGAJ jj!VeT!R!R!RSSt&+e,,**___D*AA:r 	 	C 	C 	C 	&+d++**___D*AA:r 	 	C 	C 	C ZZFUE R R RSS
d$'5S 	 	! 	! 	! 	$S 	 	! 	! 	! jjQAaCHHH
 
t 	%!*eHR 	 	Q 	Q 	Q$sss)THR 	 	Q 	Q 	Q jj!ViQU!V!V!VWWt%OTV 	 	X 	X 	X&+d++**___D*AAOTV 	 	X 	X 	X FT4@@@%Jr 	 	S 	S 	S jjj&&ABB1k####"''#,,?B 	 	H 	H 	Hjj#vt!T!T!TUUt%5$!7!7Br 	 	K 	K 	K&*T**BJJt4J,H,HBr 	 	K 	K 	K 	K 	Kre   z@               Z,        bp_in,     Ze2_desired,      Zr_desired)rS   r   rT   rT   r   )rS   Nr  rS   r   r   r   r   )rO   r   rT   r   r   )r   Nr  )rO   r   r   rT   r   NN)r   r   rT   rT   r   r  )rT   r   r   r   r   )r   r   r   rT   r   )rO   r   rT   rT   r   )rN   )rO   r   rN   rO   r   )NrS   )r   r   rN   rO   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     rc   rm  z:TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>2  s*      !U!Ub&+b//!U!U!U!U!U!Ure   z+Envelope calculation error (residual='all')r  z+Residual calculation error (residual='all')rS   Nr   z/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))r\   r   r  r  r  r   r   r  )r^   r  r  Ze2_desired
Zr_desiredr_   rw   ze2zrze2_lpzr_lpZe2ZrZe2_lpZr_lps                  rc   test_envelope_real_signalsz'TestEnvelope.test_envelope_real_signals  s   ( JJq
J++jjBJj??ZZ
"*Z==
LOO**XaMMMNNR

8AuyRV#W#W#WXX!U!US"fe<T!U!U!URjjBMjBBZZ
"-Z@@
#{KPR 	 	T 	T 	T"jKPR 	 	T 	T 	T 8$%JuQxyy!&+OTV 	 	X 	X 	X%OTV 	 	X 	X 	X 	X 	Xre   zG               Z,        bp_in,         Ze2_desired,         Zr_desired)r   rP   r   rP   r   rP   r   rU   r   rP   )rS   rP   r   rP   rT   r   rT   rS   r   r   r   rT   )rS   rT   rQ   r   rQ   rN   )r   rQ   r   rZ   r   rQ   )rS   rT   r   r   r   rN   c                    |                     ||j                  }|                     ||j                  }|                     ||j                  }t          j        t          j        |                    }|                    t          ||dd                    \  }}d ||fD             \  }	}
|                     |	|d|           |                     |
|d|           d	S )
zTest 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   r  s     rc   rm  z=TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>U  s4      GGr6?6:b>>22GGGGGGre   r   r  r  N)	r\   r   r   r  r  	ifftshiftr  r   r  )r^   r  r  r   r!  r_   rw   r"  r#  r&  r'  s              rc   test_envelope_complex_signalsz*TestEnvelope.test_envelope_complex_signalsB  s    JJq
J++jjBMjBBZZ
"-Z@@
K(++,,**XaMMMNNRGGc2YGGGR#{:r 	 	C 	C 	C"j:r 	 	C 	C 	C 	C 	Cre   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   rT   rT   r   )r   r   rO   rO   r   r   r  )r   r   r   r   r   r  )r   r   r   r   r   TrS   )r  r  r   c              3   >   K   | ]}t          j        |          V  d S r  r  r  s     rc   rm  zCTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>i  s*      OOFKOOOOOOOOre   2d envelope calculation errorr  2d residual calculation error"Transposed 2d envelope calc. error"Transposed 2d residual calc. errorN)rA   r   r   r   r  r  r\   r  r   r  r  )r^   r_   r  r  rw   r   r!  r"  r#  ye2TyrTr&  Ye2r'  Yrs                  rc   #test_envelope_verify_axis_parameterz0TestEnvelope.test_envelope_verify_axis_parameter\  s     ###rz11r||r}L%6%6%6$HPTUUVVjj///3C3C3C!D'+ ! - -ZZ/// B$ZOO
**XaA>>>??RJJxTBBBCC	cOOsDFB6NOOOS"b#{0OTVWWW"j/NSUVVV"F2 	 	
 	
 	
 	
 D 	 	
 	
 	
 	
 	
re   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  rP   r   rP   rT   )rS   rU   r   rU   rT   r   rS   r  r+  )r  r   rO  r   r  r-  r,  r  T)r  r  r  r  r   c              3   f   K   | ],}t          j        t          j        |          d           V  -dS )rS   r  Nr0  r  s     rc   rm  zKTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>  sU       @ @ " #OFJrNNCCC @ @ @ @ @ @re   r6  r  r7  r8  r9  N)rA   r   r   r   r\   r  r  r2  re  r  r   r  r  )r^   r_   r  r  inprw   Ze2_desZr_deskwr"  r#  r:  r;  r&  r<  r'  r=  s                    rc   +test_envelope_verify_axis_parameter_complexz8TestEnvelope.test_envelope_verify_axis_parameter_complext  s     ###rz11r||r}jj+++->->->?tjLLK(155566**...0B0B0BDD*QQ___ooo>dKK%>>>**Xa66a626677RJJx::!:r::;;	c@ @'*DFB&>@ @ @S"b 	#w,KPRSSS"f*IbQQQC 	 	
 	
 	
 	"f+OTVWWWWWre   X)rO   r   r   rS   rT   )rO   r   r   rT   rS   rT   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  )r\   r   r  r  r9  r   r   r  )r^   rF  r_   ru   e_hile_envs         rc   test_compare_envelope_hilbertz*TestEnvelope.test_compare_envelope_hilbert  sx     JJq
J++LOOwqzz""L4888%,OTVWWWWWre   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   rQ   )r  r  )rZ  r  r   r;  r   r   N)
r  r  r   r  r   r7   r  r  r   r  )r^   x4x6y6y6_resz6z6_ress          rc   test_nyquistzTestEnvelope.test_nyquist  s     \)))$$_RQ'''bE:::
Fb2gQ???
FBHQKKe4444////BHQbh777eDDDD		"( 3 3%@@@@@@re   N)r0  r1  r2  __doc__staticmethodr  r  r3  r  r,  r5  r  r*  r3  r>  rE  rJ  rR  r   re   rc   r  r    s       >>A A \A7 7 76 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???4F4F4F"GHHX X IH CBXA A A A Are   r  c                       e Zd Zedd            Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )TestPartialFractionExpansionr   c                    t          j        |          }t          j        |          }t          j        t          |d d d f         |z
            t          | d d d f         |z
                      }t	          |          \  }}t          ||         ||         |           t          | |         ||         |           d S )Nr  )r  r\   hypotr9  r   r>   )r!  rt  r_truep_truer  distancerowscolss           rc   assert_rp_almost_equalz3TestPartialFractionExpansion.assert_rp_almost_equal  s    F##F##8C!!!T'
V 344!!!T'
V 3446 6 +844
dAdGVD\7CCCCAdGVD\7CCCCCCre   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 )NrR   r  rN   r   )rT   rT   rN   rS   )rS   rS   rS   rN   rT   )rS   rS   rS   rT   rT   )rS   rS   rS   rT   rT   rN   T)include_powersrQ   )rS   rS   rT   rT   rN   )rS   rT   rT   rN   )rS   rS   rS   rT   rN   rO   rP   )r3   rc  r>   r  r  )r^   r_   factorsr  s       rc   test_compute_factorsz1TestPartialFractionExpansion.test_compute_factors  s   (III>>7||q    GAJ			(:(:;;;GAJ(=(=>>>GAJ(@(@AAAD"'*<*<*<"="=>>>(III8<> > >7||q    GAJ(@(@AAAGAJ(=(=>>>GAJ			(:(:;;;GAJ(@(@AAAGAJ(=(=>>>GAJ(@(@AAAD"'*<*<*<"="=>>>>>re   c                 z    t          g ddd          \  }}t          |g d           t          |g d           d S )N)r  gjt?g?5^I?rv  g/$ @rx  r  rq  rz  r  )r4   r7   r^   r_   uniquemultiplicitys       rc   test_group_polesz-TestPartialFractionExpansion.test_group_poles  sQ    +000#u >  >000iii00000re   c                 N   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rP   rN   r  r   r  r   r   rN   )gZd;O?g9#Jg&䃞ͪrO   r  )g-1ڿgeagvq-?g      r  r   rS   rQ   r   ir  r   rS   )rS   r   r  rN   r   rT   )rT   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rS   rP   r   rO   )r   rS   rN   )r   r  r  )rN   gg)\(?g^I+g rh?)rS   gffffffgQg~jt?)r  rO   rS   )r'  g333333ӿr  )rS   rT   r  r.        пr  )rS   r   r  )rS   r   r   r   r   )rS   y              ?y             r   )r                r   rS   )rN   r   rQ   rS   rN   rN   rS   rR   r   r   r   )rS   r  rT   rP   )rT   rN   r   r  )r   rT   rN   r   r  E   r   rY   )rS   r  rO   r  )rO   y            @y            )rS         ?      rq   )r/   r>   r   r^  r^   r_   r!  rt  r  s        rc   test_residue_generalz1TestPartialFractionExpansion.test_residue_general  s    ---771aA9991EEEEA9991EEEEAy!44442q'999--1aA3x(((ABx(((v{{{{1a&+++..1aA1v&&&AAw'''v{{{{1a&"9"9"9::1a##q???)))	+ 	+ 	+ v{{{{1a&,,,//1a##Aq***lllCCCv{{{{8881113 31aAzzz***A///000A1v&&&1#zzz**1aAe}---A2w'''v{{{{***&6&6&6771a##Aq$8$8$8:J:J:J	L 	L 	Lv{{{{)))\\\221a##Aq)))\\\BBBv{{{{1b':::..1aAAw'''A1v&&&v{{{{***jjj111aABx(((A1v&&&As###---441aARy)))A1v&&&A2w'''***nnn551a##Aq*C*C*C$7$7$7	9 	9 	9v{{{{{{re   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 )Nri  rj  )r   rP   rN   r  r   )r   r  r   r   rN   )r   r   rP   rN   r  r   )r   r   r   r  r   r   rN   )r/   r>   r^   r_   r0p0k0r1p1k1r2p2k2r3p3k3s                 rc   test_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zeros  s   ]]]MMM::
B---}}}==
B]]],<,<,<==
B0002H2H2HII
BB###B###B###B###B###B###B###B###B#####re   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            d S # 1 swxY w Y   d S )Nr   rk  r  r  rS   Denominator `a` is zero.r)  )r/   r>   r   r,  r	   r   rr  s        rc   test_resiude_degeneratez4TestPartialFractionExpansion.test_resiude_degenerate$  s   1a&))),,1aA1v&&&ABx(((v{{{{!Q--1av{{{{v{{{{v{{{{]:-GHHH 	 	AqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    B>>CC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)rS   rQ   rQ   rT   )rS   y             r  rm  )y             @y      @      @y            ()r   rS   rS   rt   )rS   rT   rS   )rS   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿrO   r  gŏ1w@rS   r   )rS   r  rQ   rT   rN   r   r   rn  )rO   r  rN   ro  )rS   r  r  rO   )rT   r  r  r8  g      r@  r  )r  rN   r  r   )g
ףp=
?gQ?皙?)r8  UUUUUUտr  r  r.  g
gUUUUUU@rl  rS   r  rS   rm  r   )rS   r   r.  )rS   g      r  )rS   rQ   rT   r  r?  rQ   r  r   ir  rU   r  )rS   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿr  yjM?%uyjM?%u?)ySsA?ySsAr  y-?8gDio?y-?8gDio)r0   r^  r>   r   r  polymulrr  s        rc   test_residuez_generalz2TestPartialFractionExpansion.test_residuez_general3  sJ   <<<)F)F)FGG1a##Aq*G*G*G$.JJ	0 	0 	0At$$$999ooo661a##Aq%68I$J%2M$B,- 	$ 	/ 	/ 	/ 	Ax3333Ar7JJJ//1aAAw'''A1v&&&v{{{{999lll331a##Aq***lllCCCv{{{{???KKK881aAT{+++AAw'''ARy)))B4111a##Aq$5$5$57H7H7H	J 	J 	Jv{{{{Aq62:q$i!S#B#BCC1aAt}---As|,,,v{{{{:::2w//1aAs###As###A2w'''1q#h''1aAs###At$$$v{{{{1mmm,,1aA1v&&&ASz***v{{{{1...//1aAAw'''Ac{+++v{{{{999jjj111aAQx(((A1v&&&As###Aq6:::..1aAAw'''A1v&&&v{{{{<<<441aARy)))A1v&&&AAw'''999&9&9&9::1a##Aq%N %N %N%N %N %N,- 	$ 	/ 	/ 	/ v{{{{{{re   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 )Nri  rj  )rP   rN   r  r   r   )r  r   r   rN   r   )rP   rN   r  r   r   r   )r  r   r   rN   r   r   r   )r0   r>   ru  s                 rc   test_residuez_trailing_zerosz9TestPartialFractionExpansion.test_residuez_trailing_zeros  s    mmm]]];;
B...>>
Bmmm-=-=-=>>
B1113I3I3IJJ
BB###B###B###B###B###B###B###B###B#####re   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   rk  r  r  rS   r  r)  z6First coefficient of determinant `a` must be non-zero.r<  )r0   r>   r   r,  r	   r   rr  s        rc   test_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate  s   Aq6999--1aA1v&&&ABx(((v{{{{1a..1av{{{{v{{{{v{{{{]:-GHHH 	 	QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:"01 1 1 	& 	& Q%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s$    B==CC#DD
Dc                    g d}g d}g }g d}g d}dD ]r}t          ||||          \  }}	t          ||           t          |	|d           t          ||||          \  }}	t          ||           t          |	|d           sd S )	N)r9  UUUUUUſg)r   r  r  )r<  rS   rN   )rS   r   rU   r   avgr  rq  r  r?  r  rtypeFr  r#   r7   r$   )
r^   r_   r!  rt  r  
b_expected
a_expectedr  ra   r`   s
             rc   *test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  s    %%%KK [[
"]]
 I 	> 	>E!Q///DAqAz***Azu====1a%000DAqAz***Azu=====	> 	>re   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?g98ȿr  gll?r   r  r  r  )r<  r   rS   rN   )r  gUUUUUUgUUUUUU?rN   )rS   r?  rM  r  r   r  r  r   r   Fr  r  )r^   r_   r!  rt  r  r  b_expected_zr  r  ra   r`   s              rc   ,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  s    ---OO#^^
,,,&&&
H 	> 	>E!Q///DAqAz6666Azu====1a%000DAqA|%8888Azu=====	> 	>re   c                 4   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 ofr)  r  r  )r,  r	   r   r#   r$   rr  s        rc   test_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtype  s.   ---OO]:-EFFF 	, 	,1a(++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]:-EFFF 	- 	-Aq!8,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s#   AA
A
,BBBc                     dg}dg}dg}t          |||          \  }}t          |dg           t          |ddg           d S )NrS   rT   r   r  g       )r$   r7   )r^   r_   r!  rt  r  ra   r`   s          rc    test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bug  sX    CCCq!Q1A3C;'''''re   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 )NrS   r   rq  rT         ?      rS   r   rq   y      @      y      !      ?y      @      
@rS   y             y      ?       @y      ?      r8  rq  r  rR   )rS                     ?       r  rU   rS               rO   r   rT   r   r  rO   r  r   r   r   rN   rN   rN   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prS   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@r   rT   )rS   r   r  rs   r  )r#   r>   r^   r_   ra   r`   s       rc   test_invresz(TestPartialFractionExpansion.test_invres  s   qcA3##1As###A2w'''+++->->->CC1ADDDEEEACCCDDDsAh 0)))<<1AAAABBBA///000333R9 91A  9  9  9 	: 	: 	:A  7  7  7 	8 	8 	8 r2hAA//1A111222Azzz*****re   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 )NrS   r   r  r  r  r  r8  rq  r  rR   )g      @r  r  y            rZ   r  r  r  )rQ   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr  r   rT   )r   rS   r  rT   r  )r$   r>   r  s       rc   test_invreszz)TestPartialFractionExpansion.test_invresz  s   sQC$$1As###A2w''',,,.?.?.?DD1ADDDEEEACCCDDDQx&&!1999==1ABBBCCCA///111444b: :1A  9  9  9 	: 	: 	:A  7  7  7 	8 	8 	8 Bx!Q!Q001A~~~...Azzz*****re   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 )NrS   r   r   rT   )r#   r>   r$   r  s       rc   test_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_arguments  s    aA1A1v&&&A2w'''q!Q1A2w'''A2w'''''re   N)r   )r0  r1  r2  rT  r^  rb  rg  rs  r  r  r  r  r  r  r  r  r  r  r  r  r   re   rc   rV  rV    s       	D 	D 	D \	D? ? ?&1 1 1B B BH$ $ $   O O Ob$ $ $"& & &&> > >&> > >"- - -( ( (+ + +0+ + +0( ( ( ( (re   rV  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 )	Nr8  r  r  r  r   v!>abs_tolrT   r\   r%   r
  r  iscloser>  r^   r_   eventsperiodtarg_strength
targ_phasestrengthphases           rc   test_single_1dperiodz'TestVectorstrength.test_single_1dperiod  s    RD!!
(88%}!!!!zQ|HmVDDDDDD|E1tw;#;VLLLLLLLLre   r   zphase modulo 2*pirK   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 )Nr8  )rS   rT   r  r  rN   )r8  r.  r  rS   rT   )r\   r%   r
  r=   r>   r>  r  s           rc   test_single_2dperiodz'TestVectorstrength.test_single_2dperiod(  s    RD!!JJJ''

B4!8,,ZZ..
(88%}!!!!zQ!(M:::E1ru9z#9:::::re   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.  rT   r  r  r   r  r  r  r  s           rc   test_equal_1dperiodz&TestVectorstrength.test_equal_1dperiod6  s    :::;;
(88%}!!!!zQ|HmVDDDDDD|E1tw;#;VLLLLLLLLre   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  rS   rT   r  r.  r  r\   r%   r
  r>   r>  r  s           rc   test_equal_2dperiodz&TestVectorstrength.test_equal_2dperiodD  s    :::;;QH%%

B4!8,,ZZd,,
(88%}!!!!zQHm444E1ru9z#9:::::re   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$@rS   r  r  r   r  r  rT   r  r  r  s           rc   test_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiodQ  s    55566
(88%}!!!!zQ|HmVDDDDDD|E1tw;#;VLLLLLLLLre   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  rS   r8  r  rT   r  r'  r  g>)r\   r%   r
  r>   rA   r   r7   r>  )	r^   r_   r  r  r  r  r  r  rtol_kws	            rc   test_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod_  s    55566QG$$

B4!8,,ZZR))
(88%}!!!!zQHm444$4R$8$8BJ$F$F64..Bq25y:5AAAAAAAre   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.  r8        ?rS   UUUUUU?r8  r   rT   r  r  s           rc   test_partial_1dperiodz(TestVectorstrength.test_partial_1dperiodm  s    NNN++
(88%}!!!!zQ|Hm44444|E1tw;#;<<<<<<<re   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  rO   )r8  r8  r8  r8  rS   rT   r  r  s           rc   test_partial_2dperiodz(TestVectorstrength.test_partial_2dperiod|  s    NNN++,,,--

G9q=11ZZ 0 0 011
(88%}!!!!zQHm444E1ru9z#9:::::re   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.  r8  r  r  r   r  r  )r\   r%   r
  r  r  r^   r_   r  r  r  r  r  s          rc   test_opposite_1dperiodz)TestVectorstrength.test_opposite_1dperiod  s|    ---..(88%}!!!!zQ|HmVDDDDDDDDre   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  rU   r<  rS   )r\   r%   r
  r>   r  s          rc   test_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiod  s    ---..RD2I&&

B4"9--(88%}!!!!zQHm44444re   c                 r    |                     ddgg          }d}t          t          t          ||           d S )NrS   rT   r  r\   r   r   r%   r^   r_   r  r  s       rc   test_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueError  s8    aVH%%j.&&AAAAAre   c                 p    d}|                     dgg          }t          t          t          ||           d S )Nr  rS   r  r  s       rc   test_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueError  s6    aSE""j.&&AAAAAre   c                 F    d}d}t          t          t          ||           d S )Nr  r   r   r   r%   r  s       rc   test_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueError  s&    j.&&AAAAAre   c                 F    d}d}t          t          t          ||           d S )Nr  r   r  r  s       rc   test_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueError  s&    j.&&AAAAAre   N)r0  r1  r2  r  r4  r  r  r  r  r  r  r  r  r  r  r  r  r  r   re   rc   r  r    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re   r  rp  c                    t          d          t          d          t          d          g}t          d          t          d          t          d          g}t          d          t          d          t          d          g}t          j        |          }|j        j        dk    sJ t          t          j        |t                    t          j        |t                    |                    t                              }| t          u rt          ||z   g|          }nt          |||          }t          d |D                       sJ t          |                    t                    |                    t                               | t
          u rddg}nt          dd          g}t          j        t          d          5   | |d	di d d d            d S # 1 swxY w Y   d S )
NrS   rT   rN   r  c              3   @   K   | ]}t          |t                    V  d S r  )r  r   )r   ru   s     rc   rm  z)test_nonnumeric_dtypes.<locals>.<genexpr>  s,      66!z!W%%666666re   r  zmust be at least 1-Dr)  ru   )r   r  r  r   r  r   r  r  r(   r  r
   r'   r,  r	   r   )rp  r_   ru   ra   r`   r  r  r  s           rc   test_nonnumeric_dtypesr    s    
WQZZ,A	WQZZ,A	WQZZ,A
A7<3bhq%(("(1e*<*<ahhuooNNGw!a%!$$Aq!!66v66666666FMM%(('..*?*?@@@wBxr2	z)?	@	@	@  db                 s   	GG"%G")r   r   r   r   c                   8   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ej        j         ed          d                         ZdS )TestSOSFiltrI   zbuffer array is read-onlyrK   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   rP   rQ   r   rS   r   r8  r  r  r  )r  rS   r   )r  r   r   r   )rS   rQ   )r  rT   rT   rT   rT   rT   rT   rT   )r  r  r\   r  r  r'   r=   r(   r}  concatr   r7   )r^   re  r_   ru   ra   r`   r  bbr  r  rv   s              rc   
test_rank1zTestSOSFilt.test_rank1  s   R__KK1arK**JJ2wbJ))JJT{"J-- jj---Rj88RZ!Q((BRnnjjoo!'#q//3777 JJ1vRJ((JJ1vRJ((jj,,,Bj77RZ!Q((BRnnjjoo!'#q//3777JJ{{{##JJ{{{##GGAJJiiAjjf%%COO2::&@&@&@AABBBBBre   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   rS   r   r   r8  r  r  r  r  r  r  r  )r  r  r  r  r   r\   r  r  r'   r(   r=   )r^   re  r_   r  r  ru   ra   r`   r  r  r  r  r  rv   s                 rc   
test_rank2zTestSOSFilt.test_rank2  s   R__Ie$$	KK9q=)2K>>JJq%  JJ2wbJ))JJSzJ,,**iiiIIIyyyI!#  % % **iii]]])MM+24  6 6 RZ!Q((BRnnjjooC###!'1---RnnjjooC###!'1-----re   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                              4Qd S )Nr  r   rS   r   r   r8  .)r  r  r  r  r   r\   r  r  r'   r(   r   r  r=   r   )r^   re  r_   r  r  ru   ra   r`   r  r  r  rv   r   js                 rc   r  zTestSOSFilt.test_rank3  sH   R__Ie$$	KK9q=)44JJq%  JJ2wbJ))JJSzJ,, RZ!Q((BRnnjjooCOOqwqz"" 	U 	UA171:&& U U)!Aq#I,1a1c	l8S8STTTTU	U 	Ure   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 )NrT   r.  lowr  )r   r    r  r   r  r_r  r\   )r^   r_   b1r  b2r  b3r  ra   r`   r  s              rc   _get_ab_soszTestSOSFilt._get_ab_sos+  s    q$..Bq$..Bq$..BKB++R00KB++R00hb"fruRV}beBFmDEE
Q3K00	1c!Syre   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  rQ   r  r   r   r   r   Fr  )r  r  r  r  r  r\   r  r   r  r  r7   r(   r*   r}  )r^   re  r_   r`   ra   r  ru   y_truer  r:  rv   r  s               rc   test_initial_conditionsz#TestSOSFilt.test_initial_conditions6  s   $$R((	1cINN2%%b))JJqMMR__ Q1SbS6bhhqkk:::
FGAq!BCC&R$@$@$@$CDEE1a 0 0111C3B3BHHV,<,<===	r		5'#qv""="="=a"@ABB&&& __GGARG  Q2&&&22771::59999BE222222re   rI  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  r7  r   rS   r   )r   rS   rS   r  Fr  )r  r}  r  r*   r   r  r,  r	   r   r(   r?   r7   )
r^   re  r_   ru   r  r  r  zi_ndrv   r  s
             rc   test_initial_conditions_2z%TestSOSFilt.test_initial_conditions_2P  s     R__GGARG  $$R((	1c__ JJq&17*++]:&& 	# 	#Cr""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# r"""

528A;1bhrl"CDD]:&& 	: 	:CuQQQ111iii%789999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: Q5)))2$????111aAAA:>>>>>>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   rP   )rT   r  rN   r   rQ   r8  r  r%  rS   rT   r  r  r  r  r  )r  r  r  r2  r  r\   r   r    r"   r  r  r  r  r(   r  r7   r*   r   r!   r   r@   r   )r^   re  r_   ru   r  r  	nsectionsr  shpz0r  r  r`  r/  r  r0  rv   r  ra   r`   y_tfs                        rc    test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1h  s   
 I!!#&&..q!*.EEHHRLLJJqMM mAtE222smjjooIaL	  17mmD	YK#%&&XXc]] adr222B a2A2qqqk<<<Ba122qqqk<<<B IIr2hTI**2E6666BU7777 __ZZY1a011!AAAqsAAAI,C"---a0s|1zz!}}bjjmm11ZZQQ/00!AAAqsAAAI,q!QTb111!44e%888888re   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)rN   r  rN   r   )rO   rQ   )rO   rN   rN   rT   zshould be all onesr)  rS   )r  r  r  rN   zInvalid zi shape)r  r  r  r,  r	   r   r(   )r^   re  r_   ru   r  r  s         rc   test_bad_zi_shapezTestSOSFilt.test_bad_zi_shape  sn    R__ HHZrH**hhvXXl##]:-ABBB 	+ 	+Cr****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+AAAqD	]:-?@@@ 	+ 	+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 )NrQ   r'  r  r%  rO  r   r  r  Fr  r  rN   r   r  r  )r  r   r    r\   r*   r(   r}  r7   r  r>  r]  )r^   re  r_   r  r  rv   r  sss           rc   test_sosfilt_zizTestSOSFilt.test_sosfilt_zi  s    R__mAs5111jjoo__RWWRrW22r:::2BU>>>> WWRVVC2A2JRV00266#aaae*263N3NNOO2Q/e<<<<<<re   Tr!  c                 :   t          ||          }t          j        ddd          }|                    |          }t	          |          }t          ||                    d|          |                                          \  }}t          ||dd	
           d S )NrQ   r'  r  r%  rO  r   r  r  Fr  )	r  r   r    r\   r*   r(   r}  r3  r7   )r^   re  r_   r  r  r  r  s          rc   test_sosfilt_zi_2zTestSOSFilt.test_sosfilt_zi_2  s     R__mAs5111jjoo__RWWRrW22ryy{{CCC2BU>>>>>>re   c                    t          j        g dt                                        dd          }t          j        g dt                    }t	          j        d          5  t          ||           d d d            d S # 1 swxY w Y   d S )N)rS   rT   rN   rS   rP   rN   r   rS   rQ   r   r(  r)  )r  r\   r+  r   r,  r-  r(   )r^   re  r_   r  ru   s        rc   r.  z"TestSOSFilt.test_dtype_deprecation  s     j+++6:::BB1aHHJ222&AAA#*IJJJ 	 	COOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $BB	BN)r0  r1  r2  r3  r  r  r  r  r  r  r  r  r  r  r,  r5  r6  r.  r   re   rc   r  r    s5       
 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 =<32 k*;<<<(1OPPP? ? QP =<?, k*;<<<19 19 =<19f g&?@@@k*;<<<+ + =< A@+ k*;<<<= = =<= d###? ? $#? [d###  $#   re   r  z!lfilter is CPU-only compiled coder  r   c                   L    e Zd Z edd          d             Zd Zd Zd ZdS )	TestDeconvolveTr  r|   c                     g d}ddg}|                     g d          }t          j        ||          \  }}t          ||           d S )Nr<  rS   r   r   rS   rS   r   r   rT   rS   	r<  rT   rS   r   rT   rN   rS   r   r   )r\   r   
deconvolver7   r^   r_   originalimpulse_responserecorded	recovered	remainders          rc   r  zTestDeconvolve.test_array_like  s_     .--q6::;;;<<%0;KLL	9	8,,,,,re   c                     |                     g d|j                  }|                     ddg          }|                     g d          }t          j        ||          \  }}t	          ||           d S )Nr  r   rT   rS   r  )r\   r   r   r  r7   r  s          rc   rd   zTestDeconvolve.test_basic  s|    ::888
:KK::q!f--::;;;<<%0;KLL	9	8,,,,,re   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signal must be 1-D.r)  r\   r,  r	   r   r   r  r^   r_   r   r  quotientr"  s         rc   test_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signal  s    ::1v1v.//::q!f--]:-BCCC 	P 	P"("3H>N"O"OHi	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divisor must be 1-D.r)  r%  r&  s         rc   test_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisor  s    ::q!f%%::1v1v&677]:-CDDD 	P 	P"("3H>N"O"OHi	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Pr)  N)r0  r1  r2  r3  r  rd   r(  r+  r   re   rc   r  r    sw         d+KLLL- - ML-- - -P P PP P P P Pre   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 )NrR   r  )r-   r\   r=   )r^   r_   	detrendeddetrended_exacts       rc   rd   zTestDetrend.test_basic  sJ    BJJyyy1122	**YYY//!)_=====re   rI   zoverwrite_data not implementedrK   c                     |                     g d          }t          |d          }t          |d          }t          ||           d S )N)rS   333333?r@  g?g333333@F)overwrite_dataT)r\   r-   r=   )r^   r_   ru   
copy_arrayinplaces        rc   	test_copyzTestDetrend.test_copy  sT    JJ...//Qu555
!D111!*g66666re   r  linearr  r  r;  c                     |                     |                    d          d          }t          |||          }|j        |j        k    sJ d S )N   )rP   rQ   r   )r  r  )r   r   r-   r  )r^   r  r  r_   r  r/  s         rc   r)  zTestDetrend.test_axis  sR     zz"))E**I66Dt$777	$*,,,,,,re   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;  )rP   r   r  r  r7  rN   )r  bpr   r   rS   )r  r;  r  )r\   r-   r7   r  r   r   )r^   r_   r  r/  s       rc   test_bpzTestDetrend.test_bp  s<   yy???*zz$DxA666		2==#;#;%HHHH zz$aaa.DxAA>>>		2==#;#;%HHHH :&& 	/ 	/DxA....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   C""C&)C&r;  r   rT   c                    t           j                            d          }|                    d          }|                    |t          |                    }t          |t           j                  r|                    |          }n#t          |          st          j
        d           t          ||          }|                    g d          }t          |          |j        k    rdnd}t          |||	           d S )
Ni90  rU   r   zlist bp is numpy-only)r;  )
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿr  r   r   )r  r  r  r  r\   rA   r  ndarrayr9   r,  r  r-   r   r7   )r^   r;  r_   r  ru   r  res_scipy_191r   s           rc   test_detrend_array_bpz!TestDetrend.test_detrend_array_bp  s     i##E**HHRLLJJq 0 4 4J55b"*%% 	5BBBB<< 53444aB

 $O $O $O P P (++rz99ttu]666666re   N)r0  r1  r2  rd   r3  r6  r,  r5  r  r)  r<  r  r  r@  r   re   rc   r-  r-    s        > > >
 k*JKKK7 7 LK7 [Vh
%;<<[VYYY//- - 0/ =<-
/ / /  [THBHaV$4$4q!f#=>>7 7 ?>7 7 7re   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          j        t          |          t                               d S )N)rw  r  r9  r2  r6  r  r  r   r.   r>   r8   r  r}  rc  rz  r^   r_   rt  re  rf  s        rc   test_real_no_repeatz#TestUniqueRoots.test_real_no_repeat-  s]    (((+AFAr2222bgc!ffC&@&@&@AAAAAre   c                 p   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)rw  ffffff{Gz皙r8  r  ?r  rq  tolr  )rw  rI  r8  r  r  r  rT   rT   rS   rT   r?  )rH  rJ  r8  rK  r  )g333333g
ףp=
r8  gffffff?r.   r>   r8   rE  s        rc   test_real_repeatz TestUniqueRoots.test_real_repeat3  s    666+A4uEEEF$;$;$;RHHHHlll333+A4uEEEF$<$<$<bIIIIlll333+A4uEEEF$@$@$@"MMMMlll33333re   c                     g d}t          |          \  }}t          ||d           t          |t          j        t          |          t                               d S )N)rw  r         ?      ?r  r  r  r  r   rD  rE  s        rc   test_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeatB  s]    ===+AFAr2222bgc!ffC&@&@&@AAAAAre   c                 p   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)rw        𿚙?ffffff333333?333333?r<  rR  ??r  rq  rL  )rw  rV  r<  rX  r  r  rN  r?  )rU  rW  r<  rR  r  )y      𿚙?y333333?r<  yffffff??rO  rE  s        rc   test_complex_repeatz#TestUniqueRoots.test_complex_repeatH  s   ' ' '  ,A4uEEEF$L$L$L$&	( 	( 	( 	(lll333+A4uEEEFJJJ$&	( 	( 	( 	( 	lll333+A4uEEEHHH	 	 	 	 	lll33333re   c                 \   t          j        t          j        t          j        d          t          j        d                              }g d}t	          |          \  }}t          j        |          }t          t          j        |          |d           t          |g d           d S )NrP   )yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?r   r  )rT   rT   rT   rT   )r  r  r   r}  r.   sortr>   r8   )r^   r_   rt  
true_rootsre  rf  s         rc   test_gh_4915zTestUniqueRoots.test_gh_4915]  s    HR[RWQZZ8899KKK
+ABGFOOZCCCClll33333re   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  rT   rS   )rS   g_p   ?&.>      ?r  )rM  r_  rO  rd  s       rc   test_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extrag  s    +,<,<,<==FS$K<<<<q!f---+,D,D,D#NNNFS+$6CCCCq!f-----re   c                    t           j                            d          dt           j                            d          z  z   }t          |d          \  }}t	          |t          j        |          gd           t          |dg           d S )Nr   r   rT   r  r  )r  r  r  r.   r>   rq  r8   rE  s        rc   test_single_unique_rootz'TestUniqueRoots.test_single_unique_rootp  sx    INN3"ry~~c':':"::+Aq11FRVAYYK<<<<se,,,,,re   N)
r0  r1  r2  rF  rP  rS  rY  r]  r`  rb  r   re   rc   rB  rB  +  s        B B B4 4 4B B B4 4 4*4 4 4. . .- - - - -re   rB  c                      t          j        t          j        dt          j                  dd          } | j        t          j        k    sJ d S )Nr  r   rQ   rO   )r   r   r  r   r   r   )r  s    rc   test_gh_22684rd  w  sB    !")D"E"E"Eq!LLF<2<''''''re   r  )r|  r  concurrent.futuresr   r   r  r   	itertoolsr   r   r,  r	   r   numpy.testingr
   r   numpyr  numpy.exceptionsr   scipyr   r  r  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/   r0   scipy.signal.windowsr1   scipy.signal._signaltoolsr2   r3   r4   scipy.signal._upfirdnr5   
scipy._libr6   scipy._lib._array_apir7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   r5  r3  r4  rH   r8  r  r6  r?  rL  rO  rR  rr  r  r  r  r  r  r  r  rc  rg  r  ri  rm  ro  rq  rt  rw  r}  r  r  r  r  r  r  paramr  r  r  r  r  r  r  r6  rS  r_  	fail_slowrk  r6  rm  ro  rx  rz  r  r  r  rV  r  r  r  r  r-  rB  rd  r   re   rc   <module>rt     s`   



  ? ? ? ? ? ? ? ?                    * * * * * *            + + + + + +       % % % % % % 6 6 6 6 6 6 6 6                                                                        & % % % % %4 4 4 4 4 4 4 4 4 4 0 0 0 0 0 0 ! ! ! ! ! !                           
 ;/ K1  4VH555w w w w w w w 65wt 4VH555[" [" [" [" [" [" [" 65["| 4VH555nL nL nL nL nL nL nL 65nLb3 3 3  

C 
C 
C  
 +&8999<777W$ W$ W$ W$ W$ W$ W$ 87 :9W$t $'JKKKN" N" N" N" N" N" N" LKN"b 4VH555O* O* O* O* O* O* O* 65O*d 4VH555L L L L L L L 65L  CBB > ! ,'>???~, ~, ~, ~, ~, ~, ~, @?~,B
 $% % % % % % %  %@ 4VH555ZE ZE ZE ZE ZE ZE ZE 65ZEz 4VH555i( i( i( i( i( i( i( 65i(X    /       /    899$    $5     :9     1       !2    899$    &7     :9 899$777    /   87 :9 899$777    .   87 :9
 899$F F   :9F $K K  K
` ` ` ` ` ` ` `F   !  !  ! " "
 4VH555+&8999	 	 	 	 	* 	 	 :9 65" "	 899$777y))	 	 	 	 	1 	 	 *) 87 :9	8 8 8 8 8 8 8 8v $'IJJJ!:!:!:;;D%=11S$(4U6;CSBT(U(U(U(4U6;CSBT(U(U(U(W  + +	  21 <; KJ+2 $2 2  2
 4VH555[,$?@@u+ u+ u+ u+ u+ u+ u+ A@ 65u+p 4VH5556Q 6Q 6Q 6Q 6Q 6Q 6Q 656Qr 4   &!=>>>6 6 6 6 6 6 6 ?> ! 6@ 4VH555z% z% z% z% z% z% z% 65z%z 	"   4VH555L L L L Ll L L 65 L(* * *Z4 4 4 4@ 899$r? ?    :9?6 $! !   ! $899G G :9  G $r@ @   @> $r% r% r% r% r% r% r%  r%j +
57 7 7\9 \9 \9 \9 \9 \9 \97 7\9~ +
57 7 7A A A A A A A7 7A8sA sA sA sA sA sA sA sAj $k( k( k( k( k( k( k(  k(\ZB ZB ZB ZB ZB ZB ZB ZBz 899$'7!344  54   :9: 4   PPPQQt t t t t t t RQ ! tn 4(KLLL+&7888P P P P P P P 98 MLP@ 4VH55577 77 77 77 77 77 77 6577t $H- H- H- H- H- H- H-  H-V( ( ( ( (re   