
    e!h|W                    
   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mZmZmZmZmZ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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZFmGZGmHZH d dlImJZJ d dlKmLZL d dlMmNZN d dlOmPZPmQZQmRZR  G d d      ZS G d deS      ZT G d d      ZU G d deU      ZV G d d      ZWd ZXd ZYd  ZZd! Z[ G d" d#      Z\ G d$ d%      Z] G d& d'      Z^ G d( d)      Z_g d*Z`e`eJz  Z` G d+ d,      Za G d- d.      Zb G d/ d0      Zc G d1 d2      Zd G d3 d4ed      Ze G d5 d6ed      Zfe
j                  j                  d7       G d8 d9ed             Zi G d: d;ed      Zj G d< d=ed      Zke
j                  j                  d7       G d> d?ed             Zle
j                  j                  d7       G d@ dAed             Zme
j                  j                  d7       G dB dCed             Zne
j                  j                  d7      dD        Zoe
j                  j                  d7      ZpdE Zqe
j                  j                  dFej                  ej                  ej                  ej                  eReQej                  ej                  ej                  ej                   e
j                  ej                  epG       e
j                  eepG      g       G dH dI             Z| G dJ dK      Z}e
j                  j                  dLg dM      e
j                  j                  dNdOdPg      e
j                  j                  dQg dR      dS                      Z~dT Ze
j                  j                  dFej                   ej                   e
j                  ej                  epG      g       G dU dV             Z G dW dX      Z G dY dZ      Z G d[ d\      Z G d] d^e      Zd_ Zdd`Ze
j                  j                  da      db        Ze
j                  j                  dc        Ze
j                  j                  d7      dd        Ze
j                  j                  da      de        Z G df dg      Z G dh di      Z G dj dk      Z G dl dm      Z G dn do      Z G dp dq      ZddrZe
j                  j                  d7      e
j                  j                  dse:e/f      dt               Ze
j                  j                  dFdu       G dv dw             Z G dx dy      Z G dz d{      Z G d| d}      Zd~ Zy)    N)ThreadPoolExecutoras_completed)Decimalproduct)gcd)raises)assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_allcloseassert_assert_array_lesssuppress_warnings)arrayarange)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)ComplexWarningnp_longnp_ulongc                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)_TestConvolvec                 Z    g d}g d}t        ||      }t        |t        g d             y )N)            rH   rG         rF   )rF   
             rP         r   r   r   selfabcs       k/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/signal/tests/test_signaltools.py
test_basicz_TestConvolve.test_basic(   s'    QN1e$CDE    c                 ^    g d}g d}t        ||d      }t        |t        g d             y )NrF   rG   rH   rK   rL   rF   rG   samemode)rM   rN   "   rS   rT   s       rY   	test_samez_TestConvolve.test_same.   s)    Q'1eL12r[   c                 ^    g d}g d}t        ||d      }t        |t        g d             y )Nr]   rJ   r_   r`   )rM   rN   rN   rS   rT   s       rY   test_same_eqz_TestConvolve.test_same_eq4   s)    Q'1eL12r[   c                 ~    t        g d      }t        ddg      }t        ||      }t        |t        g d             y )N)      ?      ?       @      ?      @      ?rg   rh   )               @y       @      @y      @       @y      @      @)r   r   r   )rU   xyzs       rY   test_complexz_TestConvolve.test_complex:   s7    *+66"#QN1e$@ABr[   c                 B    d}d}t        ||      }t        |||z         y )Ni	  i  )r   r
   rT   s       rY   test_zero_rankz_TestConvolve.test_zero_rank@   s%    QNQAr[   c                 <   t        j                  d      j                  ddd      }t        j                  d      }t        d      D ]S  }dgdz  }d||<   t	        ||j                  |      d      }t	        ||j                  |      d      }t        ||       U y )N   rF   rK   directmethodr   )npr   reshaperanger   r   )rU   rV   rW   ib_shaperk   rl   s          rY   test_broadcastablez _TestConvolve.test_broadcastableF   s    IIbM!!!Q*IIaLq 	"Ac!eGGAJAIIg.x@AAIIg.u=AAq!	"r[   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y Nig  iP  )r   r   r
   rT   s       rY   test_single_elementz!_TestConvolve.test_single_elementP   s1    4&M4&MQNQAr[   c                 |    g dg dg}g dg dg}t        ||      }t        g dg dg dg      }t        ||       y NrJ   r]   rL   rF   rG   rG   rH   rI   )rL            rR   )rM      >   :   &   )rR      r   1   r   r   r   r   rU   rV   rW   rX   ds        rY   test_2d_arraysz_TestConvolve.test_2d_arraysV   sE    	"	"QN%'') * 	1a r[   c           
         t        d      j                  ddd      }dt        d      j                  ddd      z  }|t        d      d d d   j                  ddd      z  }t        g dg dg d	g d
gg dg dg dg dgg dg dg dg dgg dg dg dg dgg      }t        t	        ||d      |       t        t	        ||d      |       t        t	        ||d      |ddddddf          t        t	        ||d      |ddddddf          t        t	        ||d      |ddddddf          t        t	        ||d      |ddddddf          y )N   rL                 ?rr   rF   )                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@fullr_   rK   r   valid)r   rw   r   r   r   )rU   smallbig	out_arrays       rY   test_input_swappingz!_TestConvolve.test_input_swapping_   s   q	!!!Q*6":%%aA..vbz$B$''1a0016768
 :;==?
 ;>><>
 :<:8:;<	* 	8E37C8C7C8E37$QqS!A#qs]3	58C7$QqS!A#qs]3	58E38$QqS!A#qs]3	58C8$QqS!A#qs]3	5r[   c                    g d}g d}t        t        t        ||d       t        t        t        ||dd       t        t        t        ||dd	       t        t        t        ||d
d       t        t        t        ||dd       y Nr]   rJ   spamr`   eggsr   ra   ru   hamrs   r   baconr_   assert_raises
ValueErrorr   rU   rV   rW   s      rY   test_invalid_paramsz!_TestConvolve.test_invalid_params   sd    j(Aqv>j(AqveLj(AquXNj(AqvgNj(AqvgNr[   N)__name__
__module____qualname__rZ   rc   re   rn   rp   r{   r~   r   r   r    r[   rY   rD   rD   &   s8    F33C"!#5JOr[   rD   c                   j    e Zd Zd Zd Zd Zd	dZd Zd Ze	j                  j                  d        Zy)
TestConvolvec                     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        ||       y )	NrK   rL   rF   rI   rH   rF   	rL   rF   rG   rH   rF   rG   rL   rL   rK   )F   N   I   A   r   )y      ?      @       @      y      @               @            ?        y       @      $)r   r   rU   rV   rW   expectedouts        rY   test_valid_mode2zTestConvolve.test_valid_mode2   s    '#q!W%3)q!W%3)$VG$q!W%3)q!W%3)r[   c                 `    g d}g d}t        ||d      }t        g d      }t        ||       y )N)rK   rL   rF   rF   rK   rL   )rK   rG   rF   rG   rH   rI   r   rG   rF   rL   rK   rK   rF   r_   )9   =   ?   r   -   $   r   r   s        rY   test_same_modezTestConvolve.test_same_mode   s/    3Q6"*+1a r[   c                    t        j                  dd      j                  d      }t        j                  dd      j                  d      }t        t        t
        g||fi ddi t        t        t
        g||fi ddi y 	NrK   r   rL   rF   r   rF   rL   ra   r   )rv   r   rw   r   r   r   r   s      rY   test_invalid_shapesz TestConvolve.test_invalid_shapes   ss     IIaO##F+IIb!$$V,j(IaVI7HIj(IaVI7HIr[   c                 n   h d}|D cg c]  }|D ]  }dD ]  }|||f	   }}}}t         j                  j                  d      }|j                  ddg|      |j	                  |      d}|d   x|d	<   |d
<   |d   d|d   z  z   |d<   |D ]  \  }}}|t        j
                  |      j                     j                  |      }	|t        j
                  |      j                     j                  |      }
dD ci c]  }|t        |	|
||       }}t        |d   j
                  |d   j
                         d|v rd|v rt        t        |	|
      d       t        ||fD cg c]  }|dv  c}      rddd}nd||fv rddd}nddd}t        |d   |d   fi |  y c c}}}w c c}w c c}w )N>   boolint8int16int32int64uint8uint16uint32uint64float16float32float64	complex64
complex128)r   r   r_   *   r   rK   size)ry   fry   rW   ur                 ?rX   )r   rs   )ru   ra   r   rs   r   >   r   r   -C6?gư>rtolatolr   MbP?h㈵>:0yE>)rv   randomRandomStatechoicerandndtypekindastyper   r
   r    anyr   )rU   ntypest1t2ra   argsrngarray_typesx1x2keyresultstkwargss                  rY   test_convolve_methodz!TestConvolve.test_convolve_method   s   4 */ F F2 F2+DF#' R F F F F
 ii##B'JJ1vAJ6IIaL*.9#.>>C;s+&s+d;s3C.CCC  	ILBDRXXb\../66r:BRXXb\../66r:B #45 HRCdCC 5G 5 --wx/@/F/FG|"/B7B B8DaA11DE"($7r2h&"&5 #'5GENGH,=HH1	IF5 Es   F&=F-&F2
c                    dD ]}  }t        j                  d|z  gt         j                        }t        ||d      }t        ||d      }|dk  sNt	        ||       t	        |dd|z  z         t	        |dd|z  z          y )N)	rM      2   3   4   5   6   <   r   rL   r   r   rt   rs   r   )rv   r   r   r   r
   )rU   r   rm   r   rs   s        rY    test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_input   s     6 
	/A!Q$rxx0A1a.Ca84F 2vS&)S!ac(+VQ1X.
	/r[   c                 ,   t        t        t        dgdd       t        t        t        ddgd       t        t        t        dgdd       t        t        t        ddgd       t        t        t        dgdgg       t        t        t        dgd       y NrK   rL   rs   rt   r   rF   r   rU   s    rY   test_mismatched_dimsz!TestConvolve.test_mismatched_dims   sn    j(QC8Dj(As8Dj(QC5Aj(As5Aj(QC1#7j(QC3r[   c                     t        j                  g dt              }t        j                  g dt              }t        j                  d      5  t        ||       d d d        y # 1 sw Y   y xY wNr   r  r   dtype=object is not supportedmatch)rv   asarrayobjectpytestdeprecated_callr   r   s      rY   test_dtype_deprecationz#TestConvolve.test_dtype_deprecation   sS     JJ)8JJ2&A##*IJ 	QN	 	 	   A''A0N)d   )r   r   r   r   r   r   r   r  r  r  markthread_unsafer  r   r[   rY   r   r      sA    *,!
J*IX/4 [[ r[   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  d	eeg      ej                  j                  d
dg dgfdg dgfg      d               Zd Zd Zd Zy)_TestConvolve2dc                 |    g dg dg}g dg dg}t        g dg dg dg      }t        ||      }t        ||       y r   r   r   r   )rU   rV   rW   r   es        rY   r   z_TestConvolve2d.test_2d_arrays  sF    	"	"%'') * q!1a r[   c                     g dg dg}g dg dg}t        g dg      }t        ||d      }t        ||       t        ||d      }t        ||       y )NrL   rF   rG   rH   rI   r   r   rG   rH   rI   r   r   	   rM   rJ   r]   r   P   b   t      r   r  rU   r  r   hgs        rY   test_valid_modez_TestConvolve2d.test_valid_mode  sW    "$:;	")*+q!W%1a  q!W%1a r[   c                     g dg dg}t        j                  g dg dgt              dz   }t        g dg      }t        ||d      }t	        ||       t        ||d      }t        ||       y )	Nr  r  rJ   r]   r  r   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@r   )rv   r   complexr   r   r   r$  s        rY   test_valid_mode_complxz&_TestConvolve2d.test_valid_mode_complx  sg    "$:;HHi+7;b@GHIq!W%!!Q' q!W%1a r[   c                     g dg dg}g dg dg}d}t        ||dd|      }t        g dg d	g d
g      }t        ||       y )NrJ   r]   r   r   rK   r   fill)      r   rb   rP   )rO   (   r   @   r   )rP   .   C   r   0   r   r   r   )rU   rV   rW   fillvalrX   r   s         rY   test_fillvaluez_TestConvolve2d.test_fillvalue)  sQ    	"	"q!VVW5''') * 	1a r[   c                    d}t         j                  j                         5 }|j                  t        d       t        t        |      5  t        dggddggd       d d d        d d d        d}t        t        |      5  t        dggddggddg       d d d        y # 1 sw Y   CxY w# 1 sw Y   GxY w# 1 sw Y   y xY w)	Nz2could not cast `fillvalue` directly to the output zCasting complex valuesr  rK   rL   r   	fillvaluez,`fillvalue` must be scalar or an array with )rv   testingr   filterr@   r   r   r   )rU   msgsups      rY   test_fillvalue_errorsz%_TestConvolve2d.test_fillvalue_errors3  s    BZZ))+ 	:sJJ~'?@z5 :QC5Aq6(b9:	:
 =:S1 	:u1vh1a&9	: 	:	: :	: 	:	: 	:s/   (B+	BB+ B7B(	$B++B47C c                 >    t        t        t        dggddggg        y )NrK   rL   r8  r   r   r   r  s    rY   test_fillvalue_emptyz$_TestConvolve2d.test_fillvalue_empty>  s    j*seq!fX "	$r[   c                     g dg dg}g dg dg}t        ||dd      }t        g dg dg dg      }t        ||       y )	NrJ   r]   r   r   r   wrap)r   r   J   r   r   )D   rE  r   rE  rE  r4  r   s        rY   test_wrap_boundaryz"_TestConvolve2d.test_wrap_boundaryC  sJ    	"	"q!VV,''') * 	1a r[   c                     g dg dg}g dg dg}t        ||dd      }t        g dg dg d	g      }t        ||       y )
NrJ   r]   r   r   r   symm)rb   r   ,   r   B   )r   r3  r   r   T   )R   r   \   n   r   r4  r   s        rY   test_sym_boundaryz!_TestConvolve2d.test_sym_boundaryL  sJ    	"	"q!VV,'')+ , 	1a r[   funczboundary, expectedrH  )g     B@      E@      F@g     F@rC  )     E@rS  rR       C@c                     t        j                  g dg      }t        j                  d      } |||d|      }t        ||       y )N)       @            @      @)rK      r_   ra   boundary)rv   r   onesr   )rU   rQ  r]  r   imagekernelresults          rY   test_same_with_boundaryz'_TestConvolve2d.test_same_with_boundaryU  s@     /01!eV&8D 	68,r[   c           	         dd l m} t        j                  ddt              j                  dd      }t        j                  ddt              j                  dd      }t        ||dd	
      }t        ||j                  ||d	d             y )Nr   rK   r   r  rM   rF   e   r_   rC  r\  )r   r   )ra   origin)	scipy.ndimagendimagerv   r   floatrw   r   r   r   )rU   ndirV   rW   rX   s        rY   test_boundary_extension_samez,_TestConvolve2d.test_boundary_extension_samef  sp     	$IIau-55b!<IIa.66r2>q!&6:1cll1afXlNOr[   c                 Z   dd l m} t        j                  ddt              j                  dd      }t        j                  ddt              j                  dd      }t        ||dd	
      }t        j                  |dd	      }t        ||j                  ||d	      d dd df          y )Nr   rK   rM   r  rF   %   rI   r   rC  r\  )rF   rF   rm  r`   r   )
rf  rg  rv   r   rh  rw   r   padr   r   )rU   ri  rV   rW   rX   apads         rY   test_boundary_extension_fullz,_TestConvolve2d.test_boundary_extension_fullp  s     	$IIae,44Q:IIae,44Q:q!&6:vva)621cll4l@"crcJKr[   c                    t        j                  dd      j                  d      }t        j                  dd      j                  d      }t        t        t
        g||fi ddi t        t        t
        g||fi ddi y r   )rv   r   rw   r   r   r   r   s      rY   r   z#_TestConvolve2d.test_invalid_shapes{  ss     IIaO##F+IIb!$$V,j*K1vK&'9JKj*K1vK&'9JKr[   N)r   r   r   r   r'  r*  r6  r>  rA  rF  rP  r  r  parametrizer   r   rb  rj  rp  r   r   r[   rY   r  r    s    !
!
!!	:$
!! [[Vj+%>?[[1%(@'AB%(@'ABDE-E @-P	L
Lr[   r  c                       e Zd Zd Zd Zd Zd Zej                  j                  ej                  j                  d      d               Zy)TestConvolve2dc                 x    g dg dg}g dg dg}t        ||d      }t        g dg dg      }t        ||       y )NrJ   r]   r  r  r_   )rN   rO   rb   )r   r!  r"  r4  )rU   r  r   r&  r%  s        rY   r   zTestConvolve2d.test_same_mode  sC    	""$:;q!V$< " #1a r[   c                     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        ||       y )NrJ   r]   r  r  r  r   rg   r   ri         @        )r         @       @rw  )rw  y      @      ?y      @      y      ;@      y      G@       @)r   r   )rU   r  r   r   r   s        rY   r   zTestConvolve2d.test_valid_mode2  s    	""$:;*+Aw'3)Aw'3)f/0%'?@h'(Aw'3) Aw'3)r[   c           
      t   t        j                  d      }t        j                  g d      }dD ]  }t        t        j                  |||      t        j                  |||             t        t        j                  t        j                  |g|g|            t        j                  |||              y )NrH   g	@gffffff?rF   r   r   r_   r`   )rv   r   r   r   r   r   squeezer   rU   rV   rW   ra   s       rY   test_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcs  s    IIaLHH]#- 	2DAqt < &14 @B

!!1#s6!81402	2r[   c                     t        t        t        dd       t        t        t        dgdg       t        t        t        dgggdggg       y )NrF   rG   r@  r  s    rY   test_invalid_dimsz TestConvolve2d.test_invalid_dims  s<    j*a3j*qcA37j*ug!w?r[   z!Can't create large array for testc                    ddt        j                         j                  z  z  }t        j                  d|z  dz  t        j                         j                  z  dz         t        j
                  d|z  t         j                        }d|d d d<   t         j                  j                  j                  ||dfd	      }t        j                  |ddgg      }t        j                  |dkD        }|d
   j                  d
k(  sJ y )Nl          rL     g    .Ar  rK   )iH  r   )shapestridesr   )rv   r   itemsizer=   check_free_memoryzeroslibstride_tricks
as_stridedr   r   wherer   )rU   r   rV   countfailss        rY   test_large_arrayzTestConvolve2d.test_large_array  s     dRXXZ0001$$QUT\BHHJ4G4G%G#%MN HHTAXRXX.#A#FF  ++AaY	+R!!!q!fX.#Qx}}!!!r[   N)r   r   r   r   r   r~  r  r  r  slowxfail_on_32bitr  r   r[   rY   rt  rt    sN    !*.	2@
 [[[[ CD" E "r[   rt  c                      e Zd Zej                  j                  dddddgddgg      d        Zej                  j                  dddgddgg      d        Zej                  j                  dddddgddgg      d	        Zej                  j                  dddgddgg      d
        Z	ej                  j                  dddddgddgddgddgddgddgddgddgg
      d        Z
ej                  j                  dddgddgddgddgddgddgddgddgg      d        Zej                  j                  dddddgddgddgddgddgddgddgddgg
      d        Zej                  j                  dddgddgddgddgddgddgddgddgg      d        Zej                  j                  dddddgddgg      d        Zej                  j                  ddddgdgg      d        Zej                  j                  dddddgddgg      d        Zej                  j                  dddgg      d        Zej                  j                  dddddgddgg      d        Zej                  j                  dddgddgg      d        Zd Zd Zd Zd Zej                  j                  dddddgddgg      d        Zej                  j                  dddgddgg      d        Zej                  j                  dddgddgddgddgddgddgddgddgg      d        Zej                  j6                  ej                  j                  d  e edd!             e ed"d#            z   ej>                  jA                  d$      jC                  d%d&d'      jE                         z         d(               Z#ej                  jH                  d)        Z%y)*TestFFTConvolveaxes Nr   r   c                     t        g d      }t        g d      }|dk(  rt        ||      }nt        |||      }t        ||       y )NrJ   rK   rG   rM   rR         "@r  r  r   r   r   rU   r  rV   r   r   s        rY   	test_realzTestFFTConvolve.test_real  sB    )+,2:a#Ca.C!#x0r[   rK   c                     t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        |||      }t	        ||       y )NrJ   r  rL   rK   r  r   rv   tiler   r   r  s        rY   test_real_axeszTestFFTConvolve.test_real_axes  sW    )+,GGA1v778aV,!QT*!#x0r[   c                     t        g d      }t        g d      }|dk(  rt        ||      }nt        |||      }t        ||       y )Nrg          @       @y      @      @rj   y               @y              4@y              8@y              2@r  r  r  r  s        rY   rn   zTestFFTConvolve.test_complex  sC    *+DE2:a#Ca.C!#x0r[   c                     t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        |||      }t	        ||       y )Nr  r  rL   rK   r  r  r  s        rY   test_complex_axesz!TestFFTConvolve.test_complex_axes  sX    *+DEGGA1v778aV,!QT*!#x0r[   c                     t        g dg dg      }t        g dg dg dg      }|dk(  rt        ||      }nt        |||      }t        ||       y )NrJ   r   rK   rG   rM   rR   r  r   r.  8   r   r   r   r/  r   r  r   r  r  r  r  s        rY   test_2d_real_samez!TestFFTConvolve.test_2d_real_same  s]     9 +-.0 1 2:a#Ca.C!#x0r[   rL   c                     t        g dg dg      }t        g dg dg dg      }t        j                  |g d      }t        j                  |g d      }t        |||      }t	        ||       y )NrJ   r   r  r  r  rL   rK   rK   r  r  r  s        rY   test_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axes  sj     9 +-.0 1 GGAy!778Y/!QT*!#x0r[   c                     t        g dg dg      }t        g dg dg dg      }|dk(  rt        ||      }nt        |||      }t        ||       y )N      ?       @      @      @y      @      @rh   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  s        rY   test_2d_complex_samez$TestFFTConvolve.test_2d_complex_same%  s^     ++- .A(<  2:a#Ca.C!#x0r[   c                     t        g dg dg      }t        g dg dg dg      }t        j                  |g d      }t        j                  |g d      }t        |||      }t	        ||       y )Nr  r  r  r  r  r  r  r  r  s        rY   test_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axes?  sk     ++- .A(<  GGAy!778Y/!QT*!#x0r[   c                 $   t        g d      }t        g d      }t        g d      }t        g d      }|dk(  rt        ||d      }nt        ||d|      }t        ||       |dk(  rt        ||d      }nt        ||d|      }t        ||       y )NrJ   	rF   rF   rH   rI   r   r   r  r   rK        A@     D@     G@	r  g      4@      9@r  r  r  rU  g      <@rW  r  r_   r  r  rU   r  rV   rW   
expected_1
expected_2r   s          rY   test_real_same_modez#TestFFTConvolve.test_real_same_modeV  s    )-.?+
FG
2:aF+CaF6C!#z22:aF+CaF6C!#z2r[   c                    t        g d      }t        g d      }t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        j                  |ddg      }t        j                  |ddg      }t        ||d|      }t	        ||       t        ||d|      }t	        ||       y )	NrJ   r  r  r  rL   rK   r_   r  r  r  s          rY   test_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axesi  s    )-.?+
FG
GGA1vGGA1vWWZ!Q0
WWZ!Q0
!QT2!#z2!QT2!#z2r[   c                 
   t        g d      }t        g d      }t        g d      }|dk(  rt        ||d      }nt        ||d|      }t        ||       |dk(  rt        ||d      }nt        ||d|      }t        ||       y )NrF   rL   rK   r  g      8@g      ?@r  rT  g     H@r        (@r  r   r  r  rU   r  rV   rW   r   r   s         rY   test_valid_mode_realz$TestFFTConvolve.test_valid_mode_real{  s     )-.<=2:aG,CaG$7C!#x02:aG,CaG$7C!#x0r[   c                    t        g d      }t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        j                  |ddg      }t        ||d|      }t	        ||       y Nr  r  r  rL   rK   r   r  r  r  s         rY   test_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axes  sz     )-.<=GGA1vGGA1v778aV,!Qd3!#x0r[   c                 
   t        g d      }t        g d      }t        g d      }|dk(  rt        ||d      }nt        ||d|      }t        ||       |dk(  rt        ||d      }nt        ||d|      }t        ||       y )N      @      y       @      @r   rx  y      @      y      @        y      @      y       @        y     F@      (@y      >@      7@y      H@      @@r  r   r  r  r  s         rY   test_valid_mode_complexz'TestFFTConvolve.test_valid_mode_complex  s    *+:;<=2:aG,CaG$7C!#x02:aG,CaG$7C!#x0r[   c                 N   t        g d      }t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        j                  |ddg      }t        ||d|      }t	        ||       t        ||d|      }t	        ||       y )Nr  r  r  rL   rK   r   r  r  r  s         rY   test_valid_mode_complex_axesz,TestFFTConvolve.test_valid_mode_complex_axes  s    *+:;<=GGA1vGGA1v778aV,!Qd3!#x0!Qd3!#x0r[   c                    t        g d      }t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        j                  |ddg      }t        ||dd      }t	        ||       y r  r  r   s        rY   test_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes  sx    )-.<=GGA1vGGA1v778aV,!Qa0!#x0r[   c                     t        t        g g       j                  dk(         t        t        ddgg       j                  dk(         t        t        g dg      j                  dk(         y Nr   rH   rI   r   )r   r   r   r  s    rY   
test_emptyzTestFFTConvolve.test_empty  sV    B#((A-.QFB',,12B$))Q./r[   c                 f    t        d      }t        d      }t        ||      }t        |||z         y r}   r   r   r
   rU   rV   rW   r   s       rY   rp   zTestFFTConvolve.test_zero_rank  s.    $K$K!QS!a% r[   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y r}   r  r  s       rY   r~   z#TestFFTConvolve.test_single_element  s2    4&M4&M!QS!a% r[   c                    t         j                  j                  d       t         j                  j                  d      dt         j                  j                  d      z  z   }t         j                  j                  d      dt         j                  j                  d      z  z   }t        j                  ||d      }|dk(  rt        ||d      }nt        ||d|      }t        t        j                  ||d	             y )
N    r   )  r   r  r  绽|=r   )rv   r   seedrandr   r   r   allcloser  s         rY   test_random_dataz TestFFTConvolve.test_random_data  s    
		tIINN4 2		t(<#<<IINN4 2		t(<#<<;;q!V,2:aF+CaF6CC67r[   c                 h   t         j                  j                  d       t         j                  j                  d      dt         j                  j                  d      z  z   }t         j                  j                  d      dt         j                  j                  d      z  z   }t        j                  ||d      }t        j
                  |ddg      }t        j
                  |ddg      }t        j
                  |ddg      }t        ||d|      }t        t        j                  ||d	
             y )Nr  r  r   r  r   rL   rK   r  r  r  )	rv   r   r  r  r   r  r   r   r  r  s         rY   test_random_data_axesz%TestFFTConvolve.test_random_data_axes  s    
		tIINN4 2		t(<#<<IINN4 2		t(<#<<;;q!V,GGA1vGGA1v778aV,!QT2C67r[   rG   c                 `   d\  }}t         j                  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   }t        j
                  |j                  dd      dd      }t        j
                  |j                  dd      dd      }t        j
                  |j                  dd      dd      }t        j                  |g d	      }t        j                  |g d
      }t        j                  |g d      }t        ||d|      }t        ||dd       y )N)){   rN   )      r  r   r   r   rL   rK   rG   )rL   rK   rF   rK   rK   )rL   rK   rK   rG   rK   )rL   rK   rF   rG   rK   r  r  r   )
rv   r   r  r  r   moveaxisswapaxesr  r   r   )rU   r  a_shaperz   rV   rW   r   r   s           rY   test_random_data_multidim_axesz.TestFFTConvolve.test_random_data_multidim_axes  sf    0
		tIINNG$rBIINNG,D'DDIINNG$rBIINNG,D'DDaF+aD$$%aD$$%Aq$d23KK

1a(!Q/KK

1a(!Q/;;x00A61= GGA'GGA'778_5!QT2XE>r[   r   r  r  i  r  r  '  rH   c                    t         j                  j                  |      dt         j                  j                  |      z  z   }t         j                  j                  |      dt         j                  j                  |      z  z   }t        j                  ||d      }t	        ||d      }t        ||d       t	        ||ddg      }t        ||d       y )Nr   r   r  r   r   r  )rv   r   r  r   r   r   )rU   r   rV   rW   r   r   s         rY   test_many_sizeszTestFFTConvolve.test_many_sizes  s     IINN1RYY^^A%6 66IINN1RYY^^A%6 66;;q!V,!Q'XE2!QaS1XE2r[   c                 ~   d}t         j                  j                  d      }|j                  |      }t         j                  t         j
                  fD ]\  }||d<   t        j                  dd      }d}t        j                  t        |      5  t        j                  ||dd	
       d d d        ^ y # 1 sw Y   ixY w)Nr  l   [<zn( r     皙?z4Use of fft convolution.*|invalid value encountered.*r  r_   r   r   )rv   r   default_rngstandard_normalnaninfr   firwinr  warnsRuntimeWarningr   )rU   r   r   sig_nanvalcoeffsr<  s          rY   test_fft_nanzTestFFTConvolve.test_fft_nan(  s    ii##K0%%a(FFBFF# 	LCGCL]]3,FHCnC8 LfUKL L	L
L Ls   B33B<	)&r   r   r   r  r  rr  r  r  rn   r  r  r  r  r  r  r  r  r  r  r  r  r  rp   r~   r  r  r  r  listrx   rv   r   r   randinttolistr  r  r
  r   r[   rY   r  r    s    [[Vb$A3RD%AB	1 C	1 [[Va!b2$%781 91 [[Vb$A3RD%AB1 C1 [[Va!b2$%781 91 [[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11 [[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11 [[Vb$A3RD%AB3 C3$ [[VaaS2$%783 93" [[Vb$A3RD%AB1 C1$ [[Va!X.1 /1 [[Vb$A3RD%AB1 C1" [[Va!b2$%781 9110!! [[Vb$A3RD%AB
8 C
8 [[Va!b2$%788 98 [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1?1?. [[[[U1c]U4	 
		d#++D%;BBD	EF
	3F 	3 [[L Lr[   r  c                      t        d      )NzFell back to fftconvolve)RuntimeError)r   r   s     rY   fftconvolve_errr  6  s    
1
22r[   c                 t    t        | d      D cg c]  \  }}t        ||z
        dkD  r||f c}}S c c}}w )NrL   repeatrF   )r   abssizesrV   rW   s      rY   gen_oa_shapesr  :  s?    &uQ7 tq!1q5zA~ F   s   4c                 8   t        |       }t        |       }t        ||      D cg c]
  \  }}||z    }}}g d}t        ||      D cg c]<  \  }}|dk7  s,|d   |d   kD  r|d   |d   kD  s|d   |d   k  r|d   |d   k  r||fz   > c}}S c c}}w c c}}w )Nr{  r   r   rK   rL   rF   )r  zipr   )	r  shapes0shapes1ishapes0ishapes1shapesmodesishapesimodes	            rY   gen_oa_shapes_2dr"  ?  s    E"GE"G'7#%$6Hhhx %F % &E3:653I C%QZ'!*$gaj)@QZ'!*$gaj)@ UH C C	%Cs   BABc                 \    t        | d      D cg c]  \  }}||k\  r||f c}}S c c}}w )NrL   r  r   r  s      rY   gen_oa_shapes_eqr$  L  s7    &uQ7 tq!Av F   s   (c                   X   e Zd Zej                  j                         ej                  j                  d e e e	d             e e	ddd            z               d               Z
ej                  j                  d eg d            ej                  j                  ddd	g      ej                  j                  d
g d      d                      Zej                  j                  dddg      ej                  j                  d eg d            ej                  j                  dddg      ej                  j                  dddg      ej                  j                  ddd	g      ej                  j                  d
g d      d                                           Zej                  j                  d eg d            ej                  j                  ddd	g      d               Zej                  j                  dddgddgddgg      ej                  j                  d eg d            ej                  j                  dddg      ej                  j                  dddg      ej                  j                  ddd	g      d                                    Zd Zd Zd Zy)TestOAConvolvezshape_a_0, shape_b_0r  r  rQ   c                     t         j                  j                  |      }t         j                  j                  |      }t        ||      }t	        ||      }t        ||       y N)rv   r   r  r   r   r   )rU   	shape_a_0	shape_b_0rV   rW   r   r   s          rY   test_real_manylensz!TestOAConvolve.test_real_manylensR  sJ     IINN9%IINN9%q!$A!#x0r[   )r   /   rI   rG   rK   
is_complexTFra   r{  c                    t         j                  j                  |      }t         j                  j                  |      }|rJ|dt         j                  j                  |      z  z   }|dt         j                  j                  |      z  z   }t        |||      }|j	                  t
        j                  dt               t        |||      }	t        |	|       y Nr   r`   r   
rv   r   r  r   setattrr   _signaltoolsr  r   r   )
rU   r)  r*  r-  ra   monkeypatchrV   rW   r   r   s
             rY   test_1d_noaxeszTestOAConvolve.test_1d_noaxes`  s     IINN9%IINN9%Bryy~~i000ABryy~~i000Aq!$/F//+	-AD)!#x0r[   r  r   rK   )r   r,  rI   rG   shape_a_extrarF   shape_b_extrac	                    |gdz  }	|gdz  }
||	|<   ||
|<   t        j                  j                  |	 }t        j                  j                  |
 }|rD|dt        j                  j                  |	 z  z   }|dt        j                  j                  |
 z  z   }t        ||||      }|j	                  t
        j                  dt               t        ||||      }t        ||       y )NrL   r   ra   r  r   r0  )rU   r  r)  r*  r5  r6  r-  ra   r3  ax_aax_brV   rW   r   r   s                  rY   test_1d_axeszTestOAConvolve.test_1d_axest  s     q q T
T
IINND!IINND!Bryy~~t,,,ABryy~~t,,,Aq!$T:F//+	-ADt4!#x0r[   z0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec                    t         j                  j                  ||      }t         j                  j                  ||      }	|rL|dt         j                  j                  ||      z  z   }|	dt         j                  j                  ||      z  z   }	t        ||	|      }
|j	                  t
        j                  dt               t        ||	|      }t        ||
       y r/  r0  )rU   r)  r*  	shape_a_1	shape_b_1ra   r-  r3  rV   rW   r   r   s               rY   test_2d_noaxeszTestOAConvolve.test_2d_noaxes  s     IINN9i0IINN9i0Bryy~~i;;;ABryy~~i;;;Aq!$/F//+	-AD)!#x0r[   rL   c                    |gdz  }|gdz  }|||d   <   |||d   <   |||d   <   |||d   <   t        j                  j                  | }t        j                  j                  | }|	rD|dt        j                  j                  | z  z   }|dt        j                  j                  | z  z   }t        ||||      }|
j	                  t
        j                  dt               t        ||||      }t        ||       y )NrF   r   rK   r   r8  r   r0  )rU   r  r)  r*  r=  r>  ra   r5  r6  r-  r3  r9  r:  rV   rW   r   r   s                    rY   test_2d_axeszTestOAConvolve.test_2d_axes  s     q q !T!W!T!W!T!W!T!WIINND!IINND!Bryy~~t,,,ABryy~~t,,,Aq!$T:F//+	-ADt4!#x0r[   c                     t        t        g g       j                  dk(         t        t        ddgg       j                  dk(         t        t        g dg      j                  dk(         y r  )r   r   r   r  s    rY   r  zTestOAConvolve.test_empty  sV    
2r"''1,-
Aq62&++q01
2s#((A-.r[   c                 f    t        d      }t        d      }t        ||      }t        |||z         y r}   r   r   r
   r  s       rY   rp   zTestOAConvolve.test_zero_rank  s.    $K$KAS!a% r[   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y r}   rD  r  s       rY   r~   z"TestOAConvolve.test_single_element  s2    4&M4&MAS!a% r[   N)r   r   r   r  r  r  rr  r$  r  rx   r+  r  r4  r;  r"  r?  rA  r  rp   r~   r   r[   rY   r&  r&  Q  s   [[[[3-d5:.>.25dB3G.H/I J1	 
1 [[3*+<=?[[\D%=9[[V%>?1 @ :?1  [[VaV,[[3*>:<[[_q!f5[[_q!f5[[\D%=9[[V%>?1 @ : 6 6< -1, [[ :-n=? [[\D%=91 :?1" [[Vq!fq!fq!f%=>[[ :-n=? [[_q!f5[[_q!f5[[\D%=91 : 6 6? ?12/!!r[   r&  c                   2   e Zd Zej                  j                  deeg      d        Zej                  j                  deeg      d        Z	ej                  j                  ddgdfddgfdgdggfg      ej                  j                  deeg      d               Z
ej                  j                  deeg      d	        Zej                  j                  d
      ej                  j                  dej                  ej                  g      d               Zy)TestAllFreqConvolvesconvapproachc                     t        j                  dd      j                  d      }t        j                  dd      j                  d      }t        t        d      5   |||d	
       d d d        y # 1 sw Y   y xY w)NrK   r   r   r   r   r   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr  r   r`   )rv   r   rw   r   r   rU   rH  rV   rW   s       rY   r   z(TestAllFreqConvolves.test_invalid_shapes  sm     IIaO##F+IIb!$$V,:"FG 	- AG,	- 	- 	-s   A11A:c                     t        j                  g d      }t        j                  g d      }t        t        d      5   |||ddg       d d d        y # 1 sw Y   y xY w)N)rH   rI   rL   rK   )rH   rI   rF   rK   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r  r   rK   r  )rv   r  r   r   rJ  s       rY   test_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axes  sV     HH\"HH\":"67 	, AQF+		, 	, 	,s    AA za,brK   rL   rF   c                 b    t        t        d      5   |||       d d d        y # 1 sw Y   y xY w)Nz/in1 and in2 should have the same dimensionalityr  r   r   )rU   rV   rW   rH  s       rY   r  z)TestAllFreqConvolves.test_mismatched_dims  s4     :"-. 	 A	 	 	s   
%.c                    t        t        d      5   |dgdgd       d d d        t        t        d      5   |dgdgg        d d d        t        t        d	      5   |dgdgddgd
dgg       d d d        t        t        d	      5   |dgdgg d       d d d        t        t        d      5   |dgdgdg       d d d        t        t        d      5   |dgdgdg       d d d        t        t        d      5   |dgdgddg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nz4acceptable mode flags are 'valid', 'same', or 'full'r  rK   rL   chipsr`   z#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersrF   rG   )      ?rW  rY  rZ  z$axes exceeds dimensionality of inputr  zall axes must be uniquer   rN  )rU   rH  s     rY   test_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags  s    :"01 	1 !qc0	1
 :!FH 	,!qc+	, : .2 3 	:!qc!Q!Q(89	: : .2 3 	:!qc(89	: :!GI 	-!qc,	- :!GI 	.!qc-	. :!:< 	0!qcA/	0 	03	1 	1
	, 	,	: 	:	: 	:	- 	-	. 	.	0 	0sR   DD, D8E6EEE(D),D58EEEE%(E1ignore::DeprecationWarningr   c                 n   t         j                  j                  d      j                  |      }t         j                  j                  d      j                  |      }t        j                   |             r
|dz  }|dz  }t	        ||      }t        |t        ||d             |j                  |k(  sJ y )N)rr   rr   )rG   rG   y        ?rs   rt   )rv   r   r   iscomplexobjr   r   r   r   )rU   r   rk   rl   ress        rY   test_longdtype_inputz)TestAllFreqConvolves.test_longdtype_input  s     IIX&--e4IIV$++E2??57#HAHA!QXa8<=yyE!!!r[   N)r   r   r   r  r  rr  r   r   r   rL  r  rR  filterwarningsrv   
longdoubleclongdoublerW  r   r[   rY   rG  rG    s>   [[^):68-8- [[^):68,8, [[U !sAh 1#h !saSEl,- [[^):688	- [[^):68080< [[ <=[[Wr}}bnn&EF	" G >	"r[   rG  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                  j                  de
j                  e
j                  e
j                  e
j                  eee
j"                  e
j"                  e
j$                  e
j&                  g
      d        Zej                  j                  de
j*                  e
j,                  e
j.                  e
j0                  e
j2                  e
j4                  ddg      d        Zd Zd Zej                  j                  de
j                  e
j$                  e
j&                  g      d        Zy )!TestMedFilt)
r   r   r   r   r   rM     rr   r   r1  )
r   r   r   r   r   r   H   M   rE  rJ  )
r   r   r   r   r   r1  r,     r0  r_  )
r   r   r   r   r   r         _   #   )
r   r   r   r   r   r1  rb   r  r[  rJ  )
r   a   rO   rE  r   r_  r   r   G   r   )
r0  r   rI  rb  rE  rP   r`  rE  r-  rK  )
rF   !   r   r2  rK   r   rD  7   rR   S   )
r   r  r1  r   r  r,  r-  +   r   r.  )
rP   r   X   r   '   rG   rM  r0  r   r   )
r   r   r   r   r   ra  ra  r]  rr   r   )
r   r   r   r   r   r   r`  r[  rb  r   )
r   r   r   r   r   r,  rb   rb   r1  rd  )
r   r   r   r   r   r   r   r,  r0  r   )
r   r   r   r   r   r   r1  rh  r0  rd  )
rg  r   r   r   r   r,  r1  rj  rh  r.  )
rP   r   r   r   r   r,  r1  r   rh  r.  )
r   r1  r   r   r,  r1  r1  rj  r   r[  )
r   rP   rg  rl  rP   rP   rj  rj  rj  r   )
r   r   r  r   rG   rG   r`  r`  r-  r   r   rF   c                     t        j                  | j                  | j                        }t        j                  t        j                  | j                  t              | j                        }t        || j                         t        ||       y r(  )
r   medfiltINKERNEL_SIZE	medfilt2drv   r   rh  r   OUT)rU   r   r  s      rY   rZ   zTestMedFilt.test_basicD  s[    NN477D$4$45RXXdggu5t7G7GH1dhh'1a r[   r   c                     t        j                  | j                  |      }t        t	        j
                  |      j                  |       t        t	        j                  |      j                  |       y )Nr  )rv   r   ro  r
   r   rn  r   rq  rU   r   in_typeds      rY   
test_typeszTestMedFilt.test_typesJ  sL    
 88DGG51V^^H-33U;V%%h/55u=r[   float96float128c                    |dv rHt        j                  t         j                        j                  |k7  rt	        j
                  d|        t        j                  | j                  |      }t	        j                  t        d      5  t        j                  |       d d d        t	        j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)N)rw  rx  zPlatform does not support r  znot supportedr  )rv   finforY  r   r  skipr   ro  r	   r   r   rn  rq  rt  s      rY   test_invalid_dtypeszTestMedFilt.test_invalid_dtypesS  s     ,,HHR]]+11U:KK4UG<=88DGG51]]:_= 	%NN8$	% ]]:_= 	'X&	' 	'	% 	%	' 	's   	C!C-!C*-C6c                 ~    d}t        t        |      5  t        j                  d        d d d        y # 1 sw Y   y xY w)Nz(dtype=object is not supported by medfiltr  )r   r   r   rn  )rU   r<  s     rY   	test_nonezTestMedFilt.test_noned  s2    8:S1 	!NN4 	! 	! 	!s   3<c                     t        j                  dt         j                        }|dd }d|_        t	        t        j                  |d      dk(         y )NrM   r  rH   rI   r   rK         @)rv   r   r   r  r   r   rn  )rU   dummyrV   s      rY   test_odd_strideszTestMedFilt.test_odd_stridesj  sB     		"BJJ/!AJ	q!$*+r[   c                     t        j                   j                  |      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        j                  |      }t        d      5 }h d}|D ch c]  }|j                  ||       }}t        |      D ]  }	|	j                         \  }
}}|
|||f<    	 d d d        t        ||       y c c}w # 1 sw Y   xY w)	Nr  r   rL   rK   c                    | \  }}|dk(  r)t        dz         }t        d       }t        d      }n't        z
  d       }t        d       }t        d       }|dk(  r)t        dz         }t        d       }t        d      }n't        z
  d       }t        d       }t        d       }||f   }	t        j                  |	j                        }
|
||f   ||fS Nr   )slicer   rq  rp  )chunkMNMinMselMoutNinNselNout
chunk_datamedM1N1ru  offMoffNrU   s              rY   applyz2TestMedFilt.test_medfilt2d_parallel.<locals>.apply  s     DAqAvArDy)QQ|BIt,T4(RAvArDy)QQ|BIt,T4(R "#s(+J"":t/?/?@CtTz?D$..r[   rG   )max_workers>   rK   r   r   r   r   rK   rK   rK   )rv   r   ro  rr  r  rp  
zeros_liker   submitr   ra  r   )rU   r   r   r  outputpoolchunksr  futuresfuturedataMsliceNslicer  r  ru  r  r  s   `            @@@@@rY   test_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallels  sC   88DGG5188DHHE2 ~~///
 ^^A!#^^A!#"a'!+"a'!+	/ 	/8 x(A. 	.$5F>DEUt{{5%0EGE 'w/ .'-}}$ff)-vv~&.	. 	68, F	. 	.s   	E&E?-EEEN)r   r   r   ro  rr  rp  rZ   r  r  rr  rv   ubytebyteushortshortrB   rA   	ulonglongr   r   rv  bool_r   r   rZ  r   object_r|  r~  r  r  r   r[   rY   r\  r\  *  sW   
2
1
2
2
1
2
2
0
1
0	
2B 213333321-	/C Q%K! [[Wrxx"))RXX'/",,')zz2::'? @>@> [[Wrxxr}}')~~rzz2::'0*'> ?'?'!, [[WrxxRZZ&HI5- J5-r[   r\  c                       e Zd Zd Zy)
TestWienerc                     t        g dg dg dg dgd      }t        g dg dg dg d	g      }t        t        j                  |      |d
       t        t        j                  |d      |d
       y )N)rH   rI   rG   rF   )rF   rH   rI   rL   )rL   rF   rH   rI   )rK   rI   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@_)@rI   decimalrF   )mysize)r   r   r   wiener)rU   r&  r%  s      rY   rZ   zTestWiener.test_basic  sn    <! #&' ILLMO P 	"&--"2AqA!&--!"<aKr[   Nr   r   r   rZ   r   r[   rY   r  r    s    
Lr[   r  )meanmedianminimummaximumlinec                      e Zd Zd Zej
                  j                  dd      ej
                  j                  dd      ej
                  j                  dd      d                      Zd	 Zej
                  j                  d
d      ej
                  j                  dd      ej
                  j                  dd      d                      Z	ej
                  j                  ej
                  j                  de      d               Zej
                  j                  de      d        Zej
                  j                  de      ej
                  j                  dej                  ej                   g      d               Zej
                  j                  ddg e edgddge            z         d        Zd Zd Zej
                  j                  dej.                  ej                  g      d        Zy)TestResamplec           	      h   t        j                  d      }d}t        j                  dd      }t	        t
        t        j                  |||       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        j                  t        j                  d      d      }t        j                  ||d|       t        |j                  dk(         y )N      )kaiser       @   windowyorK   r   rL   r  padtyper  rM   )r  cval)rL   rK   r   axisr  )r  )rv   r   r   
get_windowr   r   resampleresample_polyr  r   r  )rU   signumwinsig2s        rY   rZ   zTestResample.test_basic  s    
 iin5j&//3CH 	j&"6"6T1Ej&"6"6QBj&"6"6Q2Nj&"6"6Q$2	/ wwryy~v.c37		V#$r[   r  )Nhammingr  )r   r`  r  )r  rd  rM   r  c           	      $   t        j                  dd|d      }t        j                  |dz   dz        }t        t	        j
                  |||      t	        j
                  |dz   ||      j                         t        j                  t        j                  |dz   dz        t        j                  |dz   dz        g      }|dz   }t        t	        j
                  ||d	|
      t	        j
                  ||d	|
      j                  d       y )Nr   rM   F)endpointrL   g      @r  r   rK   r  &.>r  )	rv   linspacecosr   r   r  realr   sin)rU   r  r  r  rk   rl   	y_complexs          rY   	test_rfftzTestResample.test_rfft  s     KK2q51FFAqD593v>BFCHH	J HHbffadU3Y'Ac	):;<F	OOAs6:OOIs6BGG	r[   c                     t        j                  d      dz   }t        j                  |      }d}t	        t        j                  ||d      t        j                  ||d      d       y )Nr  r   freq)domaintimer  r  )rv   r   sp_fftr   r   r   r  )rU   tsigfsigr  s       rY   test_input_domainzTestResample.test_input_domain  sR    yy~"zz$OOD#f5OOD#f5	r[   nx)rK   rL   rF   rH   r   nyr   )rh  r)  c                     t        j                  dg|z  |      }t        j                  ||      }t	        |dg|z         y NrK   )rv   r   r   r  r   )rU   r  r  r   rk   rl   s         rY   test_dczTestResample.test_dc  s:     HHaS2Xu%OOAr"A38$r[   r  c                     t        j                  d      }t         j                  j                  d      j	                  d      }|j                         }t        j                  |dd||       t        ||       y )NrF   r   rL   rH   rK   r  r  )	rv   r  r   r   r   copyr   r  r   )rU   r  impulser  window_origs        rY   test_mutable_windowz TestResample.test_mutable_window  s[     ((1+&&q)//2kkmWa67K6;/r[   c                    t        j                  dt         j                        }t        j                  g dt         j                        }t	        j
                  |dd||      }|j                  t         j                  k(  sJ y )NrM   r  rK   rK   rK   rK   rL   r  )rv   r   r   r   r   r  r   )rU   r  rk   r%  rl   s        rY   test_output_float32z TestResample.test_output_float32  sZ     IIb

+HHYbjj1  AqGDww"**$$$r[   c                     t        j                  d|      }t        j                  |dd|      }|j                  |j                  k(  sJ y )NrM   r  rK   rL   r  )rv   r   r   r  r   )rU   r  r   rk   rl   s        rY   test_output_match_dtypez$TestResample.test_output_match_dtype  s@     IIb&  Aq':ww!''!!!r[   zmethod, ext, padtype)r   FN	polyphaseFTc                    d}g d}t        j                  |      t        |      z  }t        j                  d      d d t         j                  f   }t        j
                  dt         j                  z  |z  |z        t        |      z  }|D ]  }	t        j                  |	      t        |	      z  }
t        j
                  dt         j                  z  |z  |
z        t        |	      z  }|dk(  rt        j                  ||	d      }nu|rU|	|k7  rPt        |	|      }|	|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        |||      D ]  \  }}}|d|	z  k\  r3|j                  d       |dv rt!        ||d       3t!        ||d       Bt#        |j$                  |j$                         t        j&                  ||      d   }t)        |dkD  |||	f         t         j*                  j-                  d      }t        |      t        j.                  |j1                  |            z  }|D ]  }	t        j                  |	      t        |	      z  }
t        j2                  |
||      }|dk(  rt        j                  ||	      }nt        j                  ||	||      }t#        |j$                  |j$                         t        j&                  ||      d   }t)        |dkD  |        |dk(  rt        j                  ddg      }t        j                  |d      }t        j                  g d      }t!        ||d       t        j                  g d       }t        j                  |d      }t        j                  ddg      }t!        ||d       y y )!Nr  )	r   r   r   c   r  rd     r     )rQ        $@g      D@rL   r   r   r  rQ  rM   rK   )r  r  r  r  r  r        ?        )r  r  333333?r  r   r  gGz?r<  r   r  r   r   rG   )r         ?        r   r  -q=)rQ  r  r  r  )rv   r   rh  r   newaxisr  pir8   r   r  r   maxr  r  r  r,  r   r   r  corrcoefr   r   r   cumsumr   interp) rU   ru   extr  raterates_tor   freqsrk   rate_tot_toy_tos	y_resampsr&  updownmax_ratef_chalf_lenr  polyargsy_toy_resampr  corrr   r   y1_testy1_truer   y2_testy2_trues                                    rY   test_resample_methodsz"TestResample.test_resample_methods  sd    < IIdOeDk)(BJJ7FF1ruu9u$q()DJ6 !	DG99W%g6DFF1ruu9u,t34tG}DE"OOAwR@	7d?GT*A AB19D"2t}Hx-C!H}H#]]1x<!+;S2ACF*0WEH )73H"00GT = =3;=	 ),E9e(D 
D$h3=(IIbM"88'$TB'$TB&tzz8>>B;;tX6t<DD4KdD'-BC
D/!	DH ii##A&J399T?33 	+G99W%g6D99T1a(D!??1g6!//7D8?Atzz8>>:;;tX.t4DD4KT*	+ U?66*+Boob!,GhhABGGW59,-Boob!,GhhBx(GGW59 r[   c           	      b   t         j                  j                  d      }t        t         j                  t         j
                  t        t        f}d}g d}|D ]  }|j                  |      j                  |      }|t         j
                  t         j                  fv r|d|j                  |      z  z  }d|d<   d|d<   |D ]l  }t        j                  dd|z  d	
      }t        |d|d      d d |   }	t        ||d d d         }
t        j                  |d||

      }t!        |	|dd       n  y )Nr   r  )rL   r  O   r   r   r   r   rQ  r  r  constantr  rK   Hz>r   r   )rv   r   r   intr   r   rh  r)  r   r   r   r   r  r&   r   r  r   )rU   random_state	try_typesr   down_factorsr   rk   r  r%  yfhcrl   s               rY   test_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltf  s   yy,,R0"**bllE7C	" 	=E""4(//6Ar}}55R,,,T222 AaDAbE$ 	=MM"b4i	Baa<VtVD
 a4R4)((AtB?ADt<	=	=r[   c           
      B   dD ]  }t        dd|      D ]  }dD ]  }t        j                  j                  |f      }t        j                  j                  |f      }t        ||d d d   d      }t	        j
                  |d||      }t        |d d |   |          y )	N)rL   rG   rK   r/  )rP   rg  r   r  r`   )r  r  r  )rx   rv   r   r   r   r  r   )rU   r  r  nweightsrk   weightsy_gy_ss           rY   test_correlate1dzTestResample.test_correlate1d  s     	6DAr4( 6 ( 6H		(("/A ii..{;G%a2ZHC ..ad7<C#C$K566	6r[   c                     t        j                  g d|      }t        j                  |ddd      }t        j                  |      dkD  sJ y )N)r   rK   rL   rF   rL   rK   r   r  rL   rK   smooth)r  r  r  r   )rv   r   r   r  count_nonzero)rU   r   r  actuals       rY   test_gh_15620zTestResample.test_gh_15620  sI    xx-U;%%d)*+,.68 '!+++r[   N)r   r   r   rZ   r  r  rr  r  r  r  r  padtype_optionsr  r  rv   r   r   r  r  r   r  r(  r.  r   r3  r   r[   rY   r  r    s   %, [[X'89[[S(+[[U$67 8 , : [[T?3[[T?3[[W&:;% < 4 4%
 [[[[Y80 9 0 [[Y8% 9% [[Y8[[Wrzz2::&>?" @ 9" [[	
t}o
	
G:G:R=8	6 [[Wrxx&<=, >,r[   r  c                       e Zd Zd Zd Zy)TestCSpline1DEvalc                    t        g d      }t        t        |            }|d   |d   z
  }t        j                  |      }t        t        |      dz        dz  }t        j
                  ||||d         }t        |d d d   |d       y )	N)	rK   rL   rF   rG   rF   rL   rK   rL   rY  rK   r   r  )dxx0rM   rH   r  )r   r   lenr   	cspline1dcspline1d_evalr   )rU   rl   rk   r8  cjr   y2s          rY   rZ   zTestCSpline1DEval.test_basic  s    /03q6NqTAaD[a CFTM"T)""2rbQqT: 	""TrT(Aq9r[   c                    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                  ||      }t        |j                  |j                         y )NrL   r  r  rQ  rj   r  )rv   r   r  r  r   expr  r   r;  r   r<  r
   r   )rU   rk   rl   Tr   cyxnewynews           rY   rn   zTestCSpline1DEval.test_complex  s    IIaLHHQWWBLL1!GFF4"%%<!#a'( a  xx$$R.TZZ)r[   N)r   r   r   rZ   rn   r   r[   rY   r6  r6    s    
:*r[   r6  c                       e Zd Zd Zy)TestOrderFiltc                 R    t        t        j                  g dg dd      g d       y )NrJ   rK   r   rK   rK   )rL   rF   rL   )r   r   order_filterr  s    rY   rZ   zTestOrderFilt.test_basic  s    6..y)QG$	&r[   Nr  r   r[   rY   rF  rF    s    &r[   rF  c            	          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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej:                  j=                  dddg ej@                  d      g      ej:                  j=                  dddg ej@                  d      g      d               Z!ej:                  jD                  d        Z#y) _TestLinearFilterc                     t        j                  dt        j                  |      dz
  t        j                  |            j                  |      }| j	                  |      S )Nr   rK   )rv   r  prodrw   convert_dtype)rU   r  rk   s      rY   generatez_TestLinearFilter.generate  sE    KK2775>A-rwwu~>FFuM!!!$$r[   c                    | j                   t        j                   d      k(  rt        j                  |      }t        j                  |j                  | j                         }t        j
                  ||gddgdgdgg      }|D ]  \  }}| j                  |d         |d<    |S t        j                  || j                         S )	NOrefs_okzerosize_okreadonly	writeonlyr   .r  )r   rv   r  emptyr  nditertype)rU   arrr   iterrk   rl   s         rY   rN  z_TestLinearFilter.convert_dtype  s    ::#&**S/C((399djj1C99c3Z)M)B${m46D *11R5)#*J::c44r[   c                     | j                  d      }| j                  ddg      }| j                  ddg      }| j                  g d      }t        t        |||      |       y NrI   rK   r   r        ࿩r   rL   rG   rI   r   r  rO  rN  r   r$   rU   rk   rW   rV   y_rs        rY   test_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIR  s\    MM$2w'T{+  !56!'!Q"2C8r[   c                     | j                  d      }| j                  ddg      }| j                  dg      }| j                  g d      }t        t        |||      |       y )Nr]  rK   r   rK   rF   rH   r   r  r`  ra  s        rY   test_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIR  sZ    MM$1v&s#  !45!'!Q"2C8r[   c                 8   | j                  d      }| j                  g d      }| j                  ddg      }| j                  ddg      }| j                  g d      }| j                  dd	g      }t        ||||
      \  }}t        ||       t        ||       y )Nr]  rK   r   r   r  r^  rK   rL   )rK   rH   r     r   r[  ri  zirO  rN  r$   r   	rU   rk   rW   rV   rl  rb  zf_rrl   zfs	            rY   test_rank_1_IIR_init_condz+_TestLinearFilter.test_rank_1_IIR_init_cond  s    MM$z*T{+A'  !67!!2s),1aB'2!!S)!"d+r[   c                 6   | j                  d      }| j                  g d      }| j                  dg      }| j                  ddg      }| j                  g d      }| j                  ddg      }t        ||||      \  }}t        ||       t        ||       y )Nr]  r  rK   )rK   rL   rF   rI   r  r  r  rH   rk  rm  rn  s	            rY   test_rank_1_FIR_init_condz+_TestLinearFilter.test_rank_1_FIR_init_cond  s    MM$y)s#A'  !56!!1a&)1aB'2!!S)!"d+r[   c                     | j                  d      }| j                  ddg      }| j                  ddg      }| j                  g dg dg dg dg      }t        |||d      }t        ||       y )	NrG   rF   rK   r   r  r   rL   rG   rI   rG   rL   r   r  rm  )rU   rk   rW   rV   y_r2_a0rl   s         rY   test_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0  sp    MM&!2w'Sz*$$iI&/&1 2Aq!!$!'1-r[   c                     | j                  d      }| j                  ddg      }| j                  ddg      }| j                  g dg dg dg dg      }t        |||d	      }t        ||       y )
Nru  rK   r   r  r   rL   r   rI   r  rI   rR   rj  rR   r]  ir]  r  rm  )rU   rk   rW   rV   y_r2_a1rl   s         rY   test_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1  sp    MM&!2w'Sz*$$i])&+ ,Aq!!$!'1-r[   c                    | j                  d      }| j                  ddg      }| j                  ddg      }| j                  t        j                  d            }| j                  g dg dg dg d	g      }| j                  g d
      d d t        j                  f   }t        |||d|      \  }}t        ||       t        ||       y )Nru  rK   r   r  )rG   rK   r  )r   r   )ri  ri  )r`  r`  )r  r  iir  rl  )rO  rN  rv   r^  r  r$   r   )	rU   rk   rW   rV   rl  	y_r2_a0_1ro  rl   rp  s	            rY    test_rank_2_IIR_axis_0_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_0_init_cond  s    MM&!2w'Sz*/&&	:}+(- .	!!"56q"**}E1aaB/2!)Q/!"d+r[   c                 r   | j                  d      }| j                  ddg      }| j                  ddg      }| j                  t        j                  d            }| j                  g dg dg dg dg      }| j                  g dg      }t	        |||d	|
      \  }}t        ||       t        ||       y )Nru  rK   r   r  rK   rF   )rK   rF   rH   )rH   rF   rK   )r  r  r   r  )rO  rN  rv   r^  r$   r   )	rU   rk   rW   rV   rl  	y_r2_a0_0ro  rl   rp  s	            rY    test_rank_2_IIR_axis_1_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_1_init_cond  s    MM% 2w'Sz*/&&	9(19(> ?	!!?"341aaB/2!)Q/!"d+r[   c                    | j                  d      }| j                  ddg      | j                  ddg      t        |j                        D ]7  }t	        ||      }t        j                  fd||      }t        ||       9 y )NrG   rF   rL   rK   r   r  c                     t        |       S r(  r$   wrV   rW   s    rY   <lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>&      1a0@ r[   rO  rN  rx   ndimr$   rv   apply_along_axisr   rU   rk   r  rl   rb  rV   rW   s        @@rY   test_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIR  s    MM)$2w'Sz*!&&M 	.D1a&A%%&@$JC%a-	.r[   c                    | j                  d      }| j                  ddg      | j                  ddg      t        |j                        D ]  }t	        |j
                        }d||<   | j                  t        j                  |            }| j                  dg      t        |||      \  }}fd}fd}t        j                  |||      }	t        j                  |||      }
t        ||	       t        ||
        y )Nr  rK   r   r  c                 (    t        |       d   S Nrk  r   r  r  rV   rW   zi1s    rY   lf0z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf04      q!Q3/22r[   c                 (    t        |       d   S Nrk  rK   r  r  s    rY   lf1z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf16  r  r[   rO  rN  rx   r  r  r  rv   r^  r$   r  r   rU   rk   r  zi_shaperl  rl   rp  r  r  rb  ro  rV   rW   r  s              @@@rY   test_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_cond)  s    MM)$2w'Sz*!&&M 	0DAGG}HHTN##BGGH$56B$$aS)CAq!T2.EAr33%%c43C&&sD!4D%a-%b$/	0r[   c                    | j                  d      }| j                  g d      | j                  dg      t        |j                        D ]7  }t	        ||      }t        j                  fd||      }t        ||       9 y )Nr  rh  rK   c                     t        |       S r(  r  r  s    rY   r  z3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>D  r  r[   r  r  s        @@rY   test_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIR=  sy    MM)$z*s#!&&M 	.D1a&A%%&@$JC%a-	.r[   c                    | j                  d      }| j                  g d      | j                  dg      t        |j                        D ]  }t	        |j
                        }d||<   | j                  t        j                  |            }| j                  ddg      t        |||      \  }}fd}fd}t        j                  |||      }	t        j                  |||      }
t        ||	       t        ||
        y )Nr  rh  rK   rL   c                 (    t        |       d   S r  r  r  s    rY   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0R  r  r[   c                 (    t        |       d   S r  r  r  s    rY   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1T  r  r[   r  r  s              @@@rY   test_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_condG  s    MM)$z*s#!&&M 	0DAGG}HHTN##BGGH$56B$$aV,CAq!T2.EAr33%%c43C&&sD!4D%a-%b$/	0r[   c                 0   | j                  d      }t        j                  ddd      \  }}| j                  |      }| j                  |      }|j                  d   dz
  }| j                  t        j                  dd	|f            }| j                  t        j                  dd|f            }t        ||||
      \  }}t        ||||
      \  }	}
t        |	|       t        ||
       t        t        t        |||dt        j                  |             y )N)rG   rH   r   r   r  bar  r   rK   rG   rH   rk  r   )rO  r   r'   rN  r  rv   r^  r$   r   r   r   )rU   rk   rW   rV   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings              rY   test_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcast[  s    MM*%mmAs40!q!q!''!*q. $$RWWaG_%=>$$RWWaG_%=>!!Qg6!!Qg6!&&1!'73 	j'1aB8HIr[   c                     | j                  d      }| j                  g d      }| j                  dg      }| j                  g d      }t        ||d   |      }t        ||       y )NrI   rh  rK   )r   rK   rL   rL   rL   rL   r   rm  )rU   rk   rW   rV   rb  rl   s         rY   test_scalar_az_TestLinearFilter.test_scalar_ap  s_    MM!z*s#  !34AqtQ!!S)r[   c                    | j                  t        j                  dd            }| j                  t        j                  dd            }| j                  t        j                  g d            }t        j                  dd      }|dd d d d fxx   dz  cc<   |dd d d d fxx   dz  cc<   | j                  |      }| j                  t        j                  d	d            }t        j                  dd      }dggdggdggg|d d d d d d
f<   | j                  |      }t        |||d|      \  }}t        ||       t        ||       t        ||d   |d|      \  }	}
t        |	|       t        |
|       y )N)rF   rL   rH   lrH   rK   r   r   )rF   rK   rG   rK   rL   rF   )rF   rL   rG   rG   r   r   )rN  rv   r  r^  r   r$   r   )rU   rk   rW   rV   rl  zf_expected
y_expectedy_iirzf_iiry_firzf_firs              rY   test_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dimsz  sV    rxx56rwwq#/rxx01WWWc"
1Qq5	Q	
1Qq5	Q	#(('3)?@XXgs+
 !seqcUaSE2
1Qrr6''
3
  1aR0v!%4!&+6  1Q4B3v!%4!&+6r[   c           	          | j                  |      }| j                  |      }| j                  |      }| j                  |      }t        t        t        |||||       y r(  )rN  r   r   r$   )rU   rW   rV   rk   r  rl  s         rY   base_bad_size_ziz"_TestLinearFilter.base_bad_size_zi  sV    q!q!q!#j'1aD"=r[   c                 P   t        j                  d      }| j                  dgdg|ddg       | j                  ddgdg|dddg       | j                  ddgdg|ddgg       | j                  ddgdg|dg d       | j                  g ddg|ddgg       | j                  g ddg|dg d       | j                  dgddg|dddg       | j                  dgddg|ddgg       | j                  dgddg|dg d       | j                  g dddg|ddg       | j                  g dddg|ddgdgg       | j                  g dddg|dg d       | j                  g dddg|dg d       | j                  ddgg d|ddg       | j                  ddgg d|ddgdgg       | j                  ddgg d|dg d       | j                  ddgg d|dg d       t        j                  d      j                  d	      }| j                  dgdg|ddg       | j                  ddgdg|dg d       | j                  ddgdg|dg dgg       | j                  ddgdg|ddgdgd
gg       | j                  ddgdg|dddgg       | j                  ddgdg|dg dg       | j                  g ddg|dg d       | j                  g ddg|dg dg dgg       | j                  g ddg|dddgd
dgddgg       | j                  g ddg|dddgd
dgg       | j                  g ddg|dg dg dg       | j                  dgddg|dg d       | j                  dgddg|dg dgg       | j                  dgddg|ddgdgd
gg       | j                  dgddg|dddgg       | j                  dgddg|dg dg       | j                  dgg d|dg d       | j                  dgg d|dg dg dgg       | j                  dgg d|dddgd
dgddgg       | j                  dgg d|dddgd
dgg       | j                  dgg d|dg dg dg       | j                  g dddg|dg d       | j                  g dddg|dg dg dgg       | j                  g dddg|dddgd
dgddgg       | j                  g dddg|dddgd
dgg       | j                  g dddg|dg dg dg       | j                  dgdg|ddg       | j                  ddgdg|dg d       | j                  ddgdg|ddgdgd
gdggg       | j                  ddgdg|dg dg       | j                  ddgdg|ddgdgd
gg       | j                  ddgdg|ddgdgd
gdgdgg       | j                  g ddg|dg d       | j                  g ddg|dddgd
dgddgddggg       | j                  g ddg|dg dg dg       | j                  g ddg|dddgd
dgddgg       | j                  g ddg|dddgd
dgddgddgddgg       | j                  dgddg|dg d       | j                  dgddg|ddgdgd
gdggg       | j                  dgddg|dg dg       | j                  dgddg|ddgdgd
gg       | j                  dgddg|ddgdgd
gdgdgg       | j                  dgg d|dg d       | j                  dgg d|dddgd
dgddgddggg       | j                  dgg d|dg dg dg       | j                  dgg d|dddgd
dgddgg       | j                  dgg d|dddgd
dgddgddgddgg       | j                  g dddg|dg d       | j                  g dddg|dddgd
dgddgddggg       | j                  g dddg|dg dg dg       | j                  g dddg|dddgd
dgddgg       | j                  g dddg|dddgd
dgddgddgddgg       y )NrI   rK   r   r   r   rK   rL   r  r   rK   rL   rF   rR   ru  rL   )r   rK   rL   rF   rG   rH   r]   rF   rG   rH   )rG   rH   rI   r   )r   rK   rL   rF   rG   rH   rI   r   r   r   r  )rv   r   r  rw   )rU   r   r   s      rY   test_bad_size_ziz"_TestLinearFilter.test_bad_size_zi  s	   YYq\qcA3B4q!fqc2rAq6:q!fqc2rQC59q!fqc2r9=i!b"se<i!b"i@qcAq62rAq6:qcAq62rQC59qcAq62r9=i!QR!=i!QR1#sDi!QRCi!QRFq!fiR!=q!fiR1#sDq!fiRCq!fiRF YYr]""5)qcA3As3 	q!fqc2q':q!fqc2qG9+>q!fqc2qA3aS/Bq!fqc2qAa5':q!fqc2q9+>i!b!]Ci!b!ww6G5HIi!b!qeQqE1Q%5HIi!b!qeQqE]Ci!b!i	5JKqcAq62q':qcAq62qG9+>qcAq62qA3aS/BqcAq62qAa5':qcAq62q9+>qc9b!]Cqc9b!ww6G5HIqc9b!qeQqE1Q%5HIqc9b!qeQqE]Cqc9b!i	5JKi!QQFi!QQ''9J8KLi!QQ!A!uaU8KLi!QQ!A!uFi!QQ98MN 	qcA3As3q!fqc2q)<q!fqc2qQCQC3D2EFq!fqc2q<.Aq!fqc2qA3sA3-@q!fqc2qA3sA3sA32GHi!b!5FGi!b!!uaUAa5!A6O5PQi!b!i	5JKi!b!qeQqE1Q%5HIi!b!qeQqE1Q%1qQRe5TUqcAq62q)<qcAq62qQCQC3D2EFqcAq62q<.AqcAq62qA3sA3-@qcAq62qA3sA3sA32GHqc9b!5FGqc9b!!uaUAa5!A6O5PQqc9b!i	5JKqc9b!qeQqE1Q%5HIqc9b!qeQqE1Q%1qQRe5TUi!QQ8IJi!QQ1Q%1qeQqE9R8STi!QQ98MNi!QQ!A!uaU8KLi!QQ!A!uaUAa5RSTUQV8WXr[   c                 8   | j                  d      }| j                  dg      }| j                  dg      }| j                  g       }t        ||||      \  }}t        ||       t	        |j
                  | j
                         t	        |j                  d       y )N)rH   rK   rk  r   )rO  rN  r$   r   r
   r   r   )rU   rk   rV   rW   rl  rl   rp  s          rY   test_empty_ziz_TestLinearFilter.test_empty_zi  s    MM$s#s##1aB'2!!Q'RXXtzz*RWWa r[   c                     | j                  dg      }| j                  dg      }t        ||ddg      }t        ||ddg      }t        ||ddg      }t        ||       t        ||       y )NrK   rQ  r   TF)rN  r-   r   )rU   rV   rW   rl  zi_1zi_2s         rY   test_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zi  sp    s#s#QB7#q!aV$q!dE]+2t$2t$r[   c                 6   | j                  dg      }| j                  g d      }| j                  ddg      }| j                  dg      }| j                  dg      }| j                  ddg      }t        ||||      \  }}t        ||       t        ||       y )	NrK   rh  rL   r   r^  rD  rk  rN  r$   r   	rU   rV   rW   rl  rk   yezferl   rp  s	            rY   test_short_x_FIRz"_TestLinearFilter.test_short_x_FIR  s     s#z*A't$%  !S*1aB'2!!R(!"c*r[   c                 8   | j                  ddg      }| j                  g d      }| j                  ddg      }| j                  dg      }| j                  dg      }| j                  ddg      }t        ||||	      \  }}t        ||       t        ||       y )
NrK   rh  rL   r   r^  rD  ir  rk  r  r  s	            rY   test_short_x_IIRz"_TestLinearFilter.test_short_x_IIR  s     1v&z*A't$%  #s,1aB'2!!R(!"c*r[   c                 :   | j                  d      }| j                  ddg      }|j                         }| j                  ddg      }|j                         }| j                  g d      }t        |||      }t	        ||       t        ||       t        ||       y r\  rO  rN  r  r$   r   r
   rU   rk   rW   b0rV   a0rb  y_fs           rY   test_do_not_modify_a_b_IIRz,_TestLinearFilter.test_do_not_modify_a_b_IIR,  s    MM$2w'VVXT{+VVX  !56aA!#s+QQr[   c                 8   | j                  d      }| j                  g d      }|j                         }| j                  dg      }|j                         }| j                  g d      }t        |||      }t	        ||       t        ||       t        ||       y )Nr]  rH  rL   )r   r  rK   rL   rF   rZ  r  r  s           rY   test_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIR8  s    MM$y)VVXs#VVX  !67aA!#s+QQr[   rV   rQ  rW   c                     t         j                  j                  d      }t        t	        t        j
                  dg      t        j
                  dg      |      t	        |||             y )NrM   rQ  )rv   r   r   r   r$   r   )rU   rV   rW   r  s       rY   test_scalar_inputz#_TestLinearFilter.test_scalar_inputD  sJ     yyr"BHHcUORXXse_d;Aq$	!r[   c                     t        j                  g dt              }t        j                  g dt              }t        j                  d      5  t        ||g d       d d d        y # 1 sw Y   y xY w)Nr   r  r   r
  r  r^   )rv   r  r  r  r  r$   r   s      rY   r  z(_TestLinearFilter.test_dtype_deprecationL  sV     JJ)8JJ2&A##*IJ 	(Aq,'	( 	( 	(s   A**A3N)$r   r   r   rO  rN  rc  rf  rq  rs  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rr  rv   r   r  r  r  r   r[   rY   rK  rK    s   %
599	,	,..,,.0(.0(J**76>^Y@	!	%++

 [[S3xrxx}"=>[[S3xrxx}"=>! ? ?! [[( (r[   rK  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloat32r   Nr   r   r   rv   r   r   r[   rY   r  r  U      BHHSMEr[   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloat64r   Nr  r   r[   rY   r  r  Y  r  r[   r  rS  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloatExtendedr&  Nr  r   r[   rY   r  r  ]      BHHSMEr[   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplex64FNr  r   r[   rY   r  r  b  r  r[   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplex128DNr  r   r[   rY   r  r  f  r  r[   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplexExtendedGNr  r   r[   rY   r  r  j  r  r[   r  c                   6    e Zd Z ej                  d      Zd Zy)TestLinearFilterDecimalrQ  c                 *    t        t        |            S r(  )r   strrU   rk   s     rY   rX  zTestLinearFilterDecimal.types  s    s1vr[   N)r   r   r   rv   r   rX  r   r[   rY   r  r  o  s    BHHSMEr[   r  c                   4    e Zd Z ej                  d      ZeZy)TestLinearFilterObjectrQ  N)r   r   r   rv   r   rh  rX  r   r[   rY   r  r  w  s    BHHSMEDr[   r  c                     t        t        d      r'dt        j                  v rt        j                  d       t        t        t        dgdgg d       t        t        t        dgd gg d       t        t        t        d gdgg d       y )Nabiflagsr   z'test is flaky when run with python3-dbgrQ  )rQ  NrW  rQ  rW  rY  )hasattrsysr  r  r{  r   	TypeErrorr$   r   r[   rY   test_lfilter_bad_objectr  }  sc     sJC3<<$7=>)WsecU4DE)WsedV_E)Wtfse_Er[   c                  >    t        t        t        ddgddgg d       y )NrL   rF   rG   rH   )rK   rL   rF   rG   rH   )r   NotImplementedErrorr$   r   r[   rY   !test_lfilter_notimplemented_inputr	    s    %w1!ukJr[   dt)marksc                   N    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y)TestCorrelateRealc                     t        j                  ddd      j                  |      }t        j                  ddd      j                  |      }t        j                  g d      j                  |      }|||fS )Nr   rF   rG   rK   rL   )r   rL   rH   r   rF   )rv   r  r   r   rU   r
  rV   rW   rb  s        rY   _setup_rank1zTestCorrelateReal._setup_rank1  sa    KK1a ''+KK1a ''+hh'..r2!Syr[   c                     d}	 t        j                  |      }t        |d      r+t        dt        j                  |j
                        z        }|S # t        $ r Y |S w xY w)NrI   
resolutionr^  )rv   rz  r  r"  log10r  	Exception)rU   res_dtr  dt_infos       rY   equal_tolerancez!TestCorrelateReal.equal_tolerance  sb    	hhv&Gw-d288G,>,>#??@   		s   AA 	AAc                     |t         j                  k(  r| j                  t         j                        S | j                  |      S r(  )rv   rY  r  r   )rU   r  s     rY   equal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fft  s6     R]]"''

33''//r[   c                    |t         k(  r-t        t        d      gt        d      g      }t        |d       y | j                  |      \  }}}t	        ||d      }t	        ||d      }t        ||| j                  |j                               t        ||| j                  |j                               t        |j                  |       t        |j                  |       y )NrG   rF   rs   r   rt   r  )	r   r    r
   _setup_rank3r   r   r  r   r  )rU   r
  ru   rV   rW   rb  y_ffty_directs           rY   test_methodzTestCorrelateReal.test_method  s    ='wqzlCF*))"-IAq#a51E Ah7H%c&+.2.F.Fu{{.SV &c&..2.B.B8>>.RU b),r[   c                    | j                  |      \  }}}t        ||d      }t        ||dd        t        |j                  |       t        ||d      }t        ||dd d d d          t        |j                  |       y )Nr   rK   rG   r   r  r   r   r
   r   rU   r
  rV   rW   rb  rl   s         rY   test_rank1_validz"TestCorrelateReal.test_rank1_valid  sz    %%b)	1caG$!!S1X.QWWb! aG$!!S1Xdd^4QWWb!r[   c                     | j                  |      \  }}}t        ||d      }t        ||d d        t        |j                  |       y )Nr_   r   r   r!  s         rY   test_rank1_samez!TestCorrelateReal.test_rank1_same  sD    %%b)	1caF#!!S"X.QWWb!r[   c                     | j                  |      \  }}}t        ||d      }t        ||       t        |j                  |       y )Nr   r   r!  s         rY   test_rank1_fullz!TestCorrelateReal.test_rank1_full  s>    %%b)	1caF#!!S)QWWb!r[   c                    t        j                  ddd      j                  dd      j                  |      }t        j                  ddd      j                  d	d      j                  |      }t	        g d
g dg dg dg dg dgg dg dg dg dg dg dgg dg dg dg dg dg dggt         j
                        j                  |      }|||fS )Nr   rl  r/  )rL   rG   rH   r  )orderrQ   r-  r   )r  g      g@g     @g     @     @@g     @g     }@g      d@)g      G@g      {@g     @g     @g     @     @g      @g     p@)     `@g      @g     @g     @     @g     @g     @@g     s@)g     @p@g     @g     0@g     @g     p@g     (@g     `@g     t@)g     @i@g     @     (@g      @g      @g     ؘ@g     @@g     b@)g     \@g     u@g     @g      @g      @g     @g     r@g      C@)g      7@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     @rU  )g      6@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  )rv   r  rw   r   r   r   r  s        rY   r  zTestCorrelateReal._setup_rank3  s    KK2r"**9C*@GGKK2r"**9C*@GG EIKKJFH JKLLLIK GIKLIEGH( **)&( '-fRj) 	, !Syr[   c           	      8   | j                  |      \  }}}t        ||d      }t        ||ddddddf          t        |j                  |       t        ||d      }t        ||ddddddf   d d dd d dd d df          t        |j                  |       y )Nr   rK   rL   rG   rF   rH   r   r  r   r   r
   r   r!  s         rY   test_rank3_validz"TestCorrelateReal.test_rank3_valid  s    %%b)	1caG$!!S1ac1Q3%78QWWb! aG$!!S1ac1Q3%7"ddDbD8H%IJQWWb!r[   c                     | j                  |      \  }}}t        ||d      }t        ||ddddddf          t        |j                  |       y )Nr_   r   r   rK   r  r1  r!  s         rY   test_rank3_samez!TestCorrelateReal.test_rank3_same  sV    %%b)	1caF#!!S2qtQrT)9%:;QWWb!r[   c                     | j                  |      \  }}}t        ||      }t        ||       t        |j                  |       y r(  r1  r!  s         rY   test_rank3_allz TestCorrelateReal.test_rank3_all  s;    %%b)	1caO!!S)QWWb!r[   N)r   r   r   r  r  r  r  r"  r$  r&  r  r2  r4  r6  r   r[   rY   r  r    s9    	0-$	"""<	"""r[   r  c                   \    e Zd Zd Zd Zd Zd Zej                  j                  d        Z
y)TestCorrelatec                    t        j                  dd      j                  d      }t        j                  dd      j                  d      }t        t        t
        g||fi ddi t        t        t
        g||fi ddi y r   )rv   r   rw   r   r   r   r   s      rY   r   z!TestCorrelate.test_invalid_shapes  ss     IIaO##F+IIb!$$V,j)Jq!fJ8IJj)Jq!fJ8IJr[   c                    g d}g d}t        t        t        ||d       t        t        t        ||dd       t        t        t        ||dd	       t        t        t        ||d
d       t        t        t        ||dd       y r   r   r   r   r   s      rY   r   z!TestCorrelate.test_invalid_params  sd    j)Q?j)QuMj)QhOj)QwOj)QwOr[   c                 ,   t        t        t        dgdd       t        t        t        ddgd       t        t        t        dgdd       t        t        t        ddgd       t        t        t        dgdgg       t        t        t        dgd       y r  r;  r  s    rY   r  z"TestCorrelate.test_mismatched_dims'  sn    j)aS!HEj)QHEj)aS!EBj)QEBj)aSA3%8j)aS!4r[   c                     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       y )NrJ   rG   rH   r_   r`   )rH      rQ   r   )r   rP   rQ   r   )rI   r   rP   rQ   rR   r   rP   )r   r   r   s      rY   test_numpy_fastpathz!TestCorrelate.test_numpy_fastpath0  si    F	!QV4kB	!QV4lC	!QV46IJ	!QW5t<r[   c                     t        j                  g dt              }t        j                  g dt              }t        j                  d      5  t        ||       d d d        y # 1 sw Y   y xY wr	  )rv   r  r  r  r  r   r   s      rY   r  z$TestCorrelate.test_dtype_deprecation;  sS     JJ)8JJ2&A##*IJ 	aO	 	 	r  N)r   r   r   r   r   r  r?  r  r  r  r  r   r[   rY   r8  r8    s6    
KP5	= [[ r[   r8  ra   r   r_   r   behindTF
input_size)r  rd  r  r  r  i'  c                    t         j                  j                  d      }|j                  |      }t	        |dz        }|r*t        j
                  |j                  |      |g      }| }n||d  }|}t        |||       }t        |j                  |j                  |       }	t        j                  |      }
t        |	|
   |       t        |	j                  |j                         y )Nr   rM   r`   )rv   r   r   r  r"  concatenater   r   r   argmaxr
   r  )ra   rB  rC  r   in1offsetin2r   correlationlags	lag_indexs              rY   test_correlation_lagsrM  D  s    
 ))


"C


j
)CBFnnc11&93?@7 &'lC40KCHHchhT:D		+&Ii(+[../r[   c                      t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)NzMode asdfgh is invalidr  r  asdfghr`   )r  r	   r   r   r   r[   rY   "test_correlation_lags_invalid_moderP  `  s2    	z)A	B 2c12 2 2s   4=c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestCorrelateComplexc                     |t         j                  k(  rt         j                  }t        dt        j                  |      j
                  z  dz        S )NrL   rF   )rv   rZ  cdoubler"  rz  	precision)rU   r
  s     rY   r  zTestCorrelateComplex.decimalo  s:    B1rxx|---122r[   c                    t         j                  j                  d       t         j                  j                  d      j	                  |      }|dt         j                  j                  d      j	                  |      z  z  }t         j                  j                  d      j	                  |      }|dt         j                  j                  d      j	                  |      z  z  }t        |j                  |j                  |      t        |j                  |j                  |      z   j	                  |      }|dt        |j                  |j                  |       t        |j                  |j                  |      z   z  z  }|||fS )Nr  rM   r   r   r`   )rv   r   r  r   r   r   r  imag)rU   r
  ra   rV   rW   rb  s         rY   r  z!TestCorrelateComplex._setup_rank1t  s!   
		qIIOOB&&r*	R"))//"%,,R000IIOOA%%b)	R"))//!$++B///d3d345;VBZ 	riT::qvvqvvD9: ; 	;!Syr[   c                 X   | j                  |d      \  }}}t        ||d      }t        ||| j                  |             t	        |j
                  |       t        ||d      }t        ||d d d   j                         | j                  |             t	        |j
                  |       y )Nr   r  r   )r  r   r   r  r
   r   conjr!  s         rY   r"  z%TestCorrelateComplex.test_rank1_valid  s    %%b'2	1caG$!!S$,,r2BCQWWb! aG$!!S2Y^^%5t||B?OPQWWb!r[   c                     | j                  |d      \  }}}t        ||d      }t        ||| j                  |             t	        |j
                  |       y )Nr_   r  r  r   r   r  r
   r   r!  s         rY   r$  z$TestCorrelateComplex.test_rank1_same  K    %%b&1	1caF#!!S$,,r2BCQWWb!r[   c                     | j                  |d      \  }}}t        ||d      }t        ||| j                  |             t	        |j
                  |       y )Nr   r  r[  r!  s         rY   r&  z$TestCorrelateComplex.test_rank1_full  r\  r[   c                     t        j                  g d|      }t        j                  g d|      }t        ||      }t        |g d       y )Nr   rg   r  r  y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      )rv   r   r   r
   rU   r
  r   krl   s        rY   test_swap_fullz#TestCorrelateComplex.test_swap_full  s:    HH-R8HH5R@aOQLMr[   c                 L    g d}g d}t        ||d      }t        |g d       y )Nr_  r`  r_   r`   )ra  rb  rc  )r   r
   rd  s        rY   test_swap_samez#TestCorrelateComplex.test_swap_same  s%    $,a(Q34r[   c                 R   t         j                  j                  ddd      j                  |      }|dt         j                  j                  ddd      j                  |      z  z  }t         j                  j                  ddd      j                  |      }|dt         j                  j                  ddd      j                  |      z  z  }t	        |j
                  |j
                        t	        |j                  |j                        z   j                  |      }|dt	        |j
                  |j                         t	        |j                  |j
                        z   z  z  }t	        ||d      }t        ||| j                  |      dz
         t        |j                  |       y )	NrM   r   rI   r   rG   r   rK   r  )rv   r   r   r   r   r  rW  r   r  r
   r   r!  s         rY   
test_rank3zTestCorrelateComplex.test_rank3  s<   IIOOB1%,,R0	R"))//"a+222666IIOOAq!$++B/	R"))//!Q*11"555(166166*+,2F2J 	ri//)AFFAFF2KKLLaF#!!S$,,r2BQ2FGQWWb!r[   c           	         t        j                  t         j                  j                               j	                  |      }|dt        j                  t         j                  j                               j	                  |      z  z  }t        j                  t         j                  j                               j	                  |      }|dt        j                  t         j                  j                               j	                  |      z  z  }t        |j                  |j                        t        |j                  |j                        z   j	                  |      }|dt        j                  t        |j                  |j                         t        |j                  |j                        z         z  z  }t        ||d      }t        ||| j                  |      dz
         t        |j                  |       t        t        dgdg      t        dd             t        t        dgdg      t        dd             t        t        dgdg      t        dd             y )Nr   r   rK   r  rj                 @rG   )rv   r   r   r   r   r   r  rW  r   r  r
   r   r!  s         rY   
test_rank0zTestCorrelateComplex.test_rank0  s   HHRYY__&'..r2	R"((299??,-44R888HHRYY__&'..r2	R"((299??,-44R888(166166*+,2F2J 	rBHHi77&qvvqvv67 8 8 	8 aF#!!S$,,r2BQ2FGQWWb!YsRD)9Q+;<YtbT*Ib",=>YtaS)9R+;<r[   N)r   r   r   r  r  r"  r$  r&  rf  rh  rj  rm  r   r[   rY   rR  rR  e  s0    3
	"""N5"=r[   rR  c                       e Zd Zd Zd Zd Zy)TestCorrelate2dc           
         t        j                  d      }t        j                  g d      }dD ]  }t        t        j                  |||      t        j                  |||             t        t        j                  t        j                  |g|g|            t        j                  |||             |dk(  st        t        j                  |||      t        j                  |||             t        t        j                  t        j                  |g|g|            t        j                  |||              y )NrH   rz  r{  r`   r   )rv   r   r   r   r   r   r|  r   r}  s       rY    test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcs  s   IIaLHH]#- 	GDQ = & 0 0AD AC

6+=+=qcA3CG,I !J & 0 0AD AC
 w#BLLAD$A$*$4$4Q$EG#BJJv/A/A1#sGK0M %N$*$4$4Q$EG	Gr[   c                 0   t        j                  dd      j                  d      }t        j                  dd      j                  d      }t        t        t
        j                  g||fi ddi t        t        t
        j                  g||fi ddi y r   )rv   r   rw   r   r   r   r   r   s      rY   r   z#TestCorrelate2d.test_invalid_shapes  s     IIaO##F+IIb!$$V,j&"4"4S1vS&'ARSj&"4"4S1vS&'ARSr[   c                     t        t        j                  dggdgg      d       t        t        j                  dggdgg      d       t        t        j                  dggdgg      d       y )NrK   rj                 rl  rI   rG   y              (@)r
   r   r   r  s    rY   test_complex_inputz"TestCorrelate2d.test_complex_input  s_    V''!v6<V''""7;V''"!6<r[   N)r   r   r   rq  r   ru  r   r[   rY   ro  ro    s    G&
T=r[   ro  c                       e Zd Zd Zd Zej                  j                  dej                  ej                  g      d        Zy)TestLFilterZIc                     t        j                  g d      }t        j                  g d      }t        j                  ddg      }t        ||      }t        ||       y )N)rQ  rX  r  )rQ  r  rW  r  rX  )rv   r   r%   r   )rU   rV   rW   zi_expectedrl  s        rY   rZ   zTestLFilterZI.test_basic  sG    HH%&HH_%hhT{+1!"k2r[   c                     t        j                  g d      }t        j                  g d      }t        ||      }t        d|z  d|z        }t        ||d       y )N)rL   r   rH   )rK   rK   r   rL   r   r  )rv   r   r%   r   )rU   rW   rV   r  zi2s        rY   test_scale_invariancez#TestLFilterZI.test_scale_invariance  sL     HHYHHYA1ac"Su-r[   r   c                     t        j                  d|      }t        j                  dg|      }t        t        j                  t        j                  ||            j                  |       y )Nr   r  rK   )rv   r  r   r
   r  r   r%   r   )rU   r   rW   rV   s       rY   rv  zTestLFilterZI.test_types  sJ    HHa&HHaS&RWWV..q!45;;UCr[   N)r   r   r   rZ   r|  r  r  rr  rv   r   r   rv  r   r[   rY   rw  rw    sA    3. [[Wrzz2::&>?D @Dr[   rw  c                   @    e Zd ZdZ	 	 d
dZd Zd Zd Zd Zd Z	d	 Z
y)TestFiltFilttfNc           
          | j                   dk(  rt        | \  }}	t        ||	||||||      S | j                   dk(  rt        | }
t	        |
||||      S y )Nr  sos)filtfilt_kindr(   r&   r)   r0   )rU   zpkrk   r  r  padlenru   irlenrW   rV   r  s              rY   r&   zTestFiltFilt.filtfilt		  se    %3<DAqAq!T7FFEJJ5(3-CsAtWf== )r[   c                     t        g dg d      }| j                  |t        j                  d            }t	        |t        d      d       y )NrJ   rR   g6{=r  )r2   r&   rv   r   r   )rU   r  r   s      rY   rZ   zTestFiltFilt.test_basic	  s6    Y	*mmC2/VBZh7r[   c                    d}t        j                  dd|dz         }t        j                  dt         j                  z  |z        }t        j                  dt         j                  z  |z        }||z   }t	        ddd	
      }t        j
                  |d         j                         }d}t        t        j                  t        j                  |      t        j                  |      z              }	| j                  |||	      }
t        j
                  |
|z
        j                         }t        |dk         t        j                  |||z   g      }| j                  |||	d      }t        |j                  |j                         t        j
                  ||z
        j                         }t        |dk         | j                  ||j                  |	d      }t        ||j                         y )N  r   rQ  rK   rM   i  r         ?r  r  r   )r  r   r  r  )rv   r  r  r  r'   r  r  r"  ceillogr&   r   vstackr
   r  rA  )rU   r  r   xlowxhighrk   r  repsr   rl   errx2dy2dy2dts                  rY   	test_sinezTestFiltFilt.test_sine	  s   KK3q)vvebeema'(w*+5LQe,FF3q6N  sbffQi/01 MM#qM+ffQX""$d
 iite|,-mmCQQm7SYY		*ffS4Z $$&d
 }}S#%%}:S$&&!r[   c                    t        j                  d      j                  ddd      }t        ddd      }| j	                  ||d	d	
      }| j	                  |t        j
                  |d	d      d	d
      }t        |t        j
                  |d	d             | j	                  |t        j
                  |d	d      d	d
      }t        |t        j
                  |d	d             y )Ng     @rM   r  rR   rF   r  r  r  r   r  rK   rL   )rv   r   rw   r'   r&   r  r   )rU   rk   r  y0y1r>  s         rY   	test_axiszTestFiltFilt.test_axis9	  s    II()11"b"=Qe,]]3!!]4]]3Aq! 4QQ]G2r{{2q!45]]3Aq! 4QQ]G2r{{2q!45r[   c                     | j                   dk7  ry t        j                  ddgdt        j                  d            }t        |t        j                  d      dd       y )Nr  r  rK   rM   +=r   )r  r   r&   rv   r   r   )rU   r   s     rY   test_acoeffzTestFiltFilt.test_acoeffC	  sG    %oor2h299R=9RYYr]UCr[   c                    | j                   dk7  rt        j                  d       t        j                  ddg      }t        j                  dg      }t        j                  ddg      }t        |||      \  }}}t        |d   |d   gd|d   z  d	|d
   z  z   d	|d   z  d|d
   z  z   g       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       y )Nr  $gust only implemented for TF systemsrQ  rW  r  r^  r   r  r  rK         ?r  )r  r  r{  rv   r   r9   r   )rU   rk   rW   rV   rl   z1z2s          rY   test_gust_simplezTestFiltFilt.test_gust_simpleJ	  s   %KK>? HHc3Z HHcUOHHc4[!"1a+	2rA1QqTC!H,c!A$hQqT.AB	DBqEDAJ.ad:U1Q4ZG AJA.qt;d1Q4iGI 	Jr[   c                     | j                   dk7  rt        j                  d       t        j                  d      }d}d}t        |||d      }||z  dz  |z  }t        ||       y )	Nr  r  rR   rY  rW  gustrt   rL   )r  r  r{  rv   r   r&   r   )rU   rk   rW   rV   rl   r   s         rY   test_gust_scalarszTestFiltFilt.test_gust_scalarsX	  sa    %KK>? IIbMQ1V,aC!8a<8$r[   )r   oddNrn  N)r   r   r   r  r&   rZ   r  r  r  r  r  r   r[   rY   r  r  	  s3    M>B%)>8
 "D6DJ%r[   r  c                       e Zd ZdZd Zy)TestSOSFiltFiltr  c                 .   t         j                  j                  d      j                  d      }t	        dd      D ]X  }t        j                  |dd      }t        | \  }}t        | }t        |||      }t        ||      }t        ||dd	| 
       Z y)z1Test equivalence between sosfiltfilt and filtfiltr   r  rK   rI   ffffff?r  r  r   zorder=)r   err_msgN)rv   r   r   r   rx   r   r'   r(   r)   r&   r0   r   )	rU   rk   r(  r  rW   rV   r  rl   y_soss	            rY   test_equivalencez TestSOSFiltFilt.test_equivalencei	  s    II!!!$**401a[ 	LE--tE:C3<DAq3-CAq!AQ'EAu5F5':JK	Lr[   N)r   r   r   r  r  r   r[   rY   r  r  f	  s    M	Lr[   r  c                    d }t        t        |      t        |             dz
  }t        | |      }t        j                  |d| j                         |z  || d j                         |z  f      }t        ||| ||fdddddd		      }|\  }}	}
}}|d
kD  rt        d|z        |d| }||d }t        | ||ddd   |      d
   ddd   }t        | |||      d
   }|||fS )aQ  
    An alternative implementation of filtfilt with Gustafsson edges.

    This function computes the same result as
    `scipy.signal._signaltools._filtfilt_gust`, but only 1-d arrays
    are accepted.  The problem is solved using `fmin` from `scipy.optimize`.
    `_filtfilt_gust` is significantly faster than this implementation.
    c                 R   t        t        |      t        |            dz
  }| d| }| |d }t        ||||      d   }t        |||ddd   |      d   ddd   }t        |||ddd   |      d   ddd   }	t        |||	|      d   }
t        j                  ||
z
  dz        }|S )z-Objective function used in filtfilt_gust_opt.rK   Nrk  r   r   rL   )r  r:  r$   rv   sum)icsrW   rV   rk   mz0fz0br  y_fby_by_bfvalues               rY   filtfilt_gust_opt_funcz1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_func~	  s    AA!#"1g!"gaA#&q)q!S2Y3/24R48aAddG,Q/"5q!SS)!,ta'(r[   rK   Nr  r   r  TF)r   xtolftolmaxfunmaxiterfull_outputdispr   z5minimization failed in filtfilt_gust_opt: warnflag=%dr   rk  )	r  r:  r%   rv   rE  r  r   r  r$   )rW   rV   rk   r  r  rl  r  ra  optfoptniterfuncallswarnflagr  r  r  rl   s                    rY   filtfilt_gust_optr  u	  s    	CFCFaA	Aq	B
..!BQ%**,r/1aRS6;;=+;<
=C(#Q1I5"0F ,2(Cuh!| )+34 5 	5
bq'C
ab'C !Q$B$C
(
+DbD
1C1cc"1%Ac3;r[   c                 n   t         j                  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 cg c]  }t        |       c} D ]  }t        | ||
|         \  ||<   ||<   ||<   ! t        j                  |d|      }t        j                  |d|      }t        j                  |d|      }t        ||dd	       t        ||dd	       t        ||dd	       t        |	|dd	       y c c}w )
Nr  r  )r  ru   r  )r  r  r   rK   r   r  r   )rv   r   r  r   r&   r9   r  r  
empty_liker  r:  rV  r   rx   r  r   )rW   rV   r  r  r  rk   rl   ygzg1zg2xx	out_shaper  r  zo1zo2r   indxs                     rY   check_filtfilt_gustr  	  s   IINN3
		A 	AqtF%@A "!QEBLBS
 
Qb	!B"I	r	BCFCFaA
((9t#
$C
((9t#
$CI6q%(67 K):1aD)J&4#d)SYK	RT	"B
++c2t
$C
++c2t
$CAr40BD1C4d3C4d3 7s   8F2rM   c                  N   dD ]  } dD ]  }d\  }}}t        j                  j                  |f|z   }t        j                  j                  |f|z   }t        |||       }t	        ||       t        ||| d      \  }}	t        |dv        t        t        |	t                     t        d|	j                         v xr d	|	j                         v         t        j                  d
gt         j                        }|j                         }t	        t        |||       d	       " y )NrA  )rK   rL   )r   rI   rs   r`   T)ra   measure>   r   rs   r   rs   l         @ r  )rv   r   r   r    r
   r   
isinstancedictkeysr   r   r  )
ra   r  r   re  true_methodrk   r%  ru   
method_trytimess
             rY   test_choose_conv_methodr  	  s   ) D 	HD .Aq+		1$+/A		1$+/A'148F- 21adD QJJ"334Jud+,EUZZ\)Fh%**,.FG	H HHeWBHH-FFH'148(C!Dr[   c                      t        j                  g dt              } t        j                  g dt              }t        j                  d      5  t        | |       d d d        y # 1 sw Y   y xY wr	  )rv   r  r  r  r  r    )rV   rW   s     rY   "test_choose_conv_dtype_deprecationr  	  sT     	

%V4A


.f=A			&E	F !1a ! ! !r  c            	      L   dD ]  } t        d      t        d      g}t        d      t        d      g}t        t        |||       d       d}d	D ]R  }t        t        |      st	        j
                  ||
      }|j                         }t        t        |||       d       T  y )NrA  rF   rL   rK   rG   r`   rs   rM   )
complex256
complex192r  )r   r
   r    r  rv   r^  r  )ra   rk   r%  r   not_fft_conv_supps        rY   test_choose_conv_method_2r  	  s    ) 
LQZ$QZ$'148(C!= 	Lr,-GGA%67FFH/14@(K		L
Lr[   c            	      <   t        j                  ddddd      \  } }}d}t        j                  t        j                  |            }t        t        j                  t        j                  |      t        j                  |      z              }t        j                  j                  d       t        | ||      \  }}d |fD ]?  }d	|z  }	t        |||	fd
|       t        d      D ]  }
g d}|	||
<   t        ||||
|        A d|z  dz
  }t        |||fd
|       y )NrF   {Gz?x   gffffff?r  r  r  r  rH   r   )rL   rL   rL   rL   r   )r   elliprv   r  r  r"  r  r  r   r  r(   r  rx   )rm   pre  r  r  approx_impulse_lenrW   rV   r  
signal_lenr  r  lengths                rY   test_filtfilt_gustr  	  s    ll1dC>GAq! C
rvvayARWWRVVC[266!9%<=>IINN3!Q?DAq*+ 
:++
 	Aq:-E: !H 	:DE$E$K1eT59	:
: !!B&F1vi,>?r[   c                   `    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y)TestDecimatec                     t        j                  d      }t        t        t        j
                  |dd       t        t        t        j
                  |dd       y )NrR   r  rK   )qr   rL   )rv   r   r   r  r   decimater  s     rY   test_bad_argszTestDecimate.test_bad_args
  s7    IIbMi!sa@i!qC@r[   c                     t        j                  d      }t        j                  |dddd      j	                         }t        ||d d d          y )NrR   rL   rK   iirFr   ftype
zero_phaserv   r   r   r  roundr   rU   rk   rl   s      rY   test_basic_IIRzTestDecimate.test_basic_IIR
  @    IIbMOOAqAUuEKKM1a!f%r[   c                     t        j                  d      }t        j                  |dddd      j	                         }t        ||d d d          y )NrR   rL   rK   firFr  r  r  s      rY   test_basic_FIRzTestDecimate.test_basic_FIR
  r  r[   c                     t        j                  d      }t        j                  |ddd      }t	        |j
                  d       t        j                  |ddd      }t	        |j
                  d       y )	N)r   r   rL   r   F)r  r  )ra  r   rK   )r   ra  )rv   r  r   r  r
   r  )rU   rm   d0d1s       rY   
test_shapezTestDecimate.test_shape
  sT    HHX__Qe<RXXx(__Qe<RXXx(r[   c                     t               5 }|j                  t        d       | j                  dd       d d d        y # 1 sw Y   y xY w)NBadly conditioned filterr  Fru   r  r   r;  r3   _test_phaseshiftrU   r=  s     rY   test_phaseshift_FIRz TestDecimate.test_phaseshift_FIR&
  sE      	BCJJ(BC!!5!A	B 	B 	B	   *>Ac                     t               5 }|j                  t        d       | j                  dd       d d d        y # 1 sw Y   y xY w)Nr  r  Tr  r  r  s     rY   test_zero_phase_FIRz TestDecimate.test_zero_phase_FIR+
  sE      	ACJJ(BC!!4!@	A 	A 	Ar
  c                 *    | j                  dd       y )Nr  Fr  r  r  s    rY   test_phaseshift_IIRz TestDecimate.test_phaseshift_IIR0
  s    Uu=r[   c                 *    | j                  dd       y )Nr  Tr  r  r  s    rY   test_zero_phase_IIRz TestDecimate.test_zero_phase_IIR3
  s    Ut<r[   c           	         d}g d}d}t        j                  ||z  dz         t        |      z  }t        j                  |      dz  dz  }t        j                  dt         j
                  z  |d d t         j                  f   z  |z        t        j                  j                  |j                  d      z  }|D ]C  }	||	z  }
t        j                  |	|z  dz         t        |	      z  }t        j                  dt         j
                  z  |d d t         j                  f   z  |z        t        j                  j                  |j                  d      z  }|d	k(  r5d
}t        j                  t        j                  |dz   d|
z  d      d      }nU|dk(  rPd}dt         j
                  z  |
z  }t        j                  t        j                  |d|t         j
                  z         }|du r^t        j                  j                  |j                   ||z  dz  t         j
                  z        \  }}|t        j"                  |      z  }nt        j$                  |      }t        j&                  |j(                  |
|      }t        j*                  |j-                         |z  d      }|t        j"                  |      z  }|d|	z  k  }t/        t        j0                  |j-                         |z        |   ddd       F y )Nr  )ra  r   r   r/  r  rK   皙?rL   rj   皙?r  r   rQ  r  r  r  r   g?Fr  r  r   r  r  r   r   r!  )rv   r   rh  r   r@  r  r  r   windowstukeyr   dltir  cheby1freqzr  denr  	ones_liker  r  r  rY  r   angle)rU   ru   r  r  r	  t_totr   r
  r   r  r  r  d_tosr   systemwc_h_respsr  	h_resampssubnyqs                        rY   r  zTestDecimate._test_phaseshift6
  sv   #IId5jl#eDk1 "S(1,VVFRUUNU1bjj=%99A=>~~##AFFC01   "	2GA99WU]1_-g>DVVFRUUNU1bjj=-AADHI~~++DIIs;<E V]]1q5"q&:C&EFHJ5Yq[fmmAtRX&FG U"#\\&**fjj*/*Q,ruu*<>
7266'?*,,u-1F3=?I uzz|i7bAI	**IS[(F BHHW\\^I%=>vF!%D2C"	2r[   c                    d}d}t        j                  |      |z  }t        j                  d|z        t        j                  dt         j                  z  |dz  z  |z        z  }t        t         j                  j                  |      dd       t        j                  |d	d
      }t        t         j                  j                  |      d       y )Ng      Y@r  rW  rL   g      >@rQ  r   r  r   r  )r  r  )rv   r   sqrtr  r  r   linalgnormr   r  r   )rU   sfreqr   r   rk   x_outs         rY   test_auto_nzTestDecimate.test_auto_nf
  s     IIaL5 GGBFObffQY%#+%>%BCC		q)2D92U3"))../6r[   c                     t        j                  t        j                  dt        j                        d      }t        t        j                  |            rJ y )Nr  r  rM   )r   r  rv   r^  r   r   isnanr  s     rY   test_long_float32zTestDecimate.test_long_float32r
  s<     OOBGGF"**=rBrxx{####r[   c                     t        j                  t        j                  dt        j                        d      }|j
                  j                  t        j                  k(  sJ y )Nr  r  rM   )r   r  rv   r^  r   r   rX  r   r  s     rY   test_float16_upcastz TestDecimate.test_float16_upcastx
  s;    OOBGGCrzz:B?ww||rzz)))r[   c                    d}d}d}t        j                  ddt        j                  z  |z  dz  d|      \  }}}|j	                  t
              t        j                  dt        j                  z  |z  |z        z  }|j	                  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                  |||      |	 d d d   }t        |
|       t        j                  |	d|d      }t        j                  g t        j                  |||      |	 d d d   }t        ||dd       y )Nr   rH        @@rL   r  )r  fsrj   r  r  rt  Fr  Tr  vIh%<=r   )r   r'   rv   r  r   r)  r@  r  r   r  r$   r(   r
   r&   r   )rU   fcentrefwidthr4  rm   r  re  r   r   r   ynzpynzprefyzpyzprefs                 rY   test_complex_iir_dltiz"TestDecimate.test_complex_iir_dlti}
  s    --1RUU76>!#3EbI1aHHWrBEEzG';B'> ??HHWrBEEzG';B'> ??Q1%IIcNR VVBJ(1,-RVVC"%%K'1A5667 q!6eD.. $&--1a"8 $!"$$'aC) 	T7#ooa&TB $&--1a"8 $!"$$'aC) 	V%e<r[   c                    d}d}d}d}t        j                  ||dz  |      }t        j                  |      }|t        j                  dt        j
                  z  |z  |z        z  }|d   t        j                  |      z  }t        j                  |d	      }	t        j                  d
      |z  }
t        j                  dt        j
                  z  |z  |
z        dt        j                  dt        j
                  z  |z  |
z        z  z   }t        j                  |d|	d      }t        j                  ||d	d      d d }t        ||       t        j                  |d|	d      }t        j                  |d	d|      }t        ||       y )Nr   rH   r3  r   rL   )r4  rj   r   rK   r  r  rt  Fr  )r  r  r  Tr  )r   r  rv   rootsr@  r  polyr  r   r  upfirdnr
   r  )rU   r6  r7  r4  numtapsbbasezbasezrotbzr   r   r   r8  r9  r:  r;  s                   rY   test_complex_fir_dltiz"TestDecimate.test_complex_fir_dlti
  sS    gvaxB7 rvvb255j7225661X%R#IIcNR VVBJ(1,-RVVC"%%K'1A5667 q!6eD..Q115ds;T7#ooa&TB%%aAb9S&!r[   N)r   r   r   r  r  r  r  r	  r  r  r  r  r,  r/  r1  r<  rF  r   r[   rY   r  r  
  sM    A
&
&
)B
A
>=.2`
7$*
=@""r[   r  c                       e Zd Zd Zd Zd Zej                  j                  de	j                  e	j                  g      d        Zy)TestHilbertc                     t        j                  dg      }t        t        t        |       t        j
                  d      }t        t        t        |d       y )Nr   r  r   r  )rv   r   r   r   r"   r   r  s     rY   r  zTestHilbert.test_bad_args
  s9    HHj\"j'1-IIcNj'12r[   c           	         d}t         j                  }t        j                  dd|z  |dz        }t        j                  |      }t        j                  |      }t        j                  d|z        }t        j                  d|z        }t        j
                  ||||g      }t        |      }	t        j                  |	      }
t        j                  |	      }t        j                  |	      }t        |||       t        |
t        j                  |j                        |       t        |dd df   t        j                  | dz  |dz  |dz        |       t        |dd df   t        j                  d||dz        |       t        |dd df   t        j                  | dz  |dz  |dz        |       t        |dd df   t        j                  d||dz        |       t        |	d   j                  ||       y )Nr>  r   rL   r  rK   r  rF   )rv   r  r   r  r  r  r"   r  r  r  r   r^  r  rW  )rU   r  r  r   r  a1a2a3rV   r%  h_absh_angleh_reals                rY   test_hilbert_theoreticalz$TestHilbert.test_hilbert_theoretical
  s   UUIIaRc*VVAYVVAYVVAE]VVAE]IIr2r2&'AJq	((1+ 	FAw/E277177#3W= 	GAttG,IIrcAgrAvrCx@#	%
 	AttGbii2rCx8'	C 	GAttG,IIrcAgrAvrCx@#	% 	AttGbii2rCx8'	C 	AaDIIr73r[   c                    t        j                  d      j                  dd      }t        |d      }t	        t        |j
                  d      |j
                         t        t        |d         |d   d       t        |dd	      }t	        |j                  ddg       t	        t        |j
                  dd	      j                  ddg       t        j                  g d
      }t        |d   |dd       y )Nr]  rF   rI   r   r  r   r>  r   )r  r  )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)	rv   r   rw   r"   r
   rA  r   r  r   )rU   rV   aaaana0hilbs        rY   test_hilbert_axisNzTestHilbert.test_hilbert_axisN
  s    IIbM!!!Q'QR WQSSq)2440GAaDM2a5"5 a2B'SYYB(WQSSBQ/55Aw?  F G( 	CFFB?r[   r   c                     t        j                  d|      }t        t        j                  t	        j
                  |            j                  |       y )Nr   r  )rv   r  r
   r  r   r"   r   rt  s      rY   test_hilbert_typeszTestHilbert.test_hilbert_types  s4    88AU+RWWV^^H56<<eDr[   N)r   r   r   r  rR  rW  r  r  rr  rv   r   r   rY  r   r[   rY   rH  rH  
  sI    3'4R#@J [[Wrzz2::&>?E @Er[   rH  c                       e Zd Zd Zej
                  j                  dej                  ej                  g      d        Z
y)TestHilbert2c                    t        j                  dgg      }t        t        t        |       t        j
                  d      j                  ddd      }t        t        t        |       t        j
                  d      j                  dd      }t        t        t        |d       t        t        t        |d	       t        t        t        |d
       y )Nr   r-  rL   rF   rG   r   r   rJ  )rL   r   )rL   )rv   r   r   r   r#   r   rw   r  s     rY   r  zTestHilbert2.test_bad_args   s    HHzl^$j(A. IIbM!!!Q*j(A. IIbM!!!Q'j(A3j(A8j(A6r[   r   c                     t        j                  d|      }t        t        j                  t	        j
                  |            j                  |       y )N)rL   rP   r  )rv   r  r
   r  r   r#   r   rt  s      rY   test_hilbert2_typesz TestHilbert2.test_hilbert2_types/  s4    88G51RWWV__X67==uEr[   N)r   r   r   r  r  r  rr  rv   r   r   r^  r   r[   rY   r[  r[    s<    7 [[Wrzz2::&>?F @Fr[   r[  c                      e Zd ZdZed        Zd Zd Zej                  j                  dg ddg dg d	fg d
dg d
g dfg ddg dg dfg ddg dg dfg ddg d
g dfg ddg dg dfg ddg dg dfg      d        Zej                  j                  dg ddg dg dfg ddg dg dfg d dg d!g d"fg      d#        Zd$ Zd% Zej                  j                  d&g d'g d(g      d)        Zy*)+TestEnvelopez4Unit tests for function `._signaltools.envelope()`. c                 $    t        | |dd|       y)z9Little helper to compare to arrays with proper tolerancesr   )r   r   r  Nr>   )r2  desiredr<  s      rY   assert_closezTestEnvelope.assert_close8  s     	e%Mr[   c                 ,   t        j                  t        d      5  t        t	        j
                  d      d       ddd       t        j                  t        d      5  t        t	        j
                  d      d	       ddd       d
D ]i  }dj                  t        t        |            }t        j                  t        d| d      5  t        t	        j
                  d      |       ddd       k t        j                  t        d      5  t        t	        j
                  d      d       ddd       dD ]F  }t        j                  t        d      5  t        t	        j
                  d      |       ddd       H t        j                  t        d      5  t        t	        j
                  d      d       ddd       y# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   dxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)z[For `envelope()` Raise all exceptions that are used to verify function
        parameters. z'Invalid parameter axis=2 for z.shape=.*r  rF   rL   r  Nz&z.shape\[axis\] not > 0 for z.shape=.*)rF   r   rK   )r  )r   rW  )NrW  z, zbp_in=\(z\) isn't a 2-tuple of.*rG   )bp_inz)n_out=10.0 is not a positive integer or.*r  )n_out))r   rF   r  )r   rM   z&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .*	undefinedresidual)	r  r	   r   r!   rv   r^  joinmapr  )rU   re  tss      rY    test_envelope_invalid_parametersz-TestEnvelope.test_envelope_invalid_parameters=  s    ]]:!KM 	)RWWQZa(	) ]]:!JL 	.RWWV_1-	. 6 	2E3sE?+Bz(04K%LN 2 512 2	2 ]]:!LN 	, RWWQZs+	, 0 	2Ez%NP 2512 2	2 ]]:-MN 	7RWWQZ+6	7 	7)	) 	)	. 	.
2 2	, 	,
2 2	7 	7sG   !G !G!G%!G2!G>!!H
GG"%G/	2G;>H	
Hc                    g dg d}}t        j                  |      }t        |      }t        |ddd      \  }}| j	                  t        j
                  |      t        j                  g d      j                  t              d	       | j	                  t        j
                  |      t        j                  g d
      j                  t              d	       t        |ddd      \  }}| j	                  |dz  |d	       | j	                  ||d	       t        |dddd|z        \  }	}
| j	                  |	ddd   |d	       | j	                  |
ddd   |d	       t        |ddd      \  }}| j	                  ||d	       | j	                  t        j
                  |      t        j                  g d      j                  t              d	       t        |ddd      }| j	                  ||d	       t        j                  |      }|ddxxx dz  ccc t        j                  ||      }| j	                  |j                  |d	       t        |ddd      \  }}| j	                  ||j                  t              d	       | j	                  t        j                  |      t        j                  |      j                  t              d	       y)zEEnsure that the various parametrizations produce compatible results. )rG   rL   rL   rF   r   )rG   r   r   rI   r   r   r   r   r  allTri  squaredrG   rL   r   r   r   Envelope calculation errorr  )rG   r   r   rF   r   Residual calculation errorFrL   z3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrF   )ri  rq  rf  Nz(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorlowpassz/`residual='lowpass'` envelope calculation error)rG   r   r   r   r   z/`residual='lowpass'` residual calculation errorz*`residual=None` envelope calculation errorrK   )r   zReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)r  irfftr:  r!   rc  rfftrv   r   r   r)  r  ifftr  r   )rU   ZZr_arm   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                     rY   test_envelope_verify_parametersz,TestEnvelope.test_envelope_verify_parametersX  s   !#;4LLOF q&5$Gt&++e,bhh.G.N.Nw.W: 	 	<&++d+RXXo-F-M-Mg-V: 	 	< a%G
d$'5S 	 	U$S 	 	U q&5$aPQcRt%!*eH 	 	J$ss)TH 	 	J q&9dKt%O 	 	Q&++d+RXXo-F-M-Mg-VO 	 	Q FT4@%J 	 	L ggajAB1kk###((A? 	 	AsFUDIt%g!6B 	 	D&**T*BHHTN,A,A',JB 	 	Dr[   z@               Z,        bp_in,     Ze2_desired,      Zr_desiredrK   r   rL   rL   r   )rK   Nrr  rK   r   r   r   r   )rG   r   rL   r   r   )r   N)r   r   r   r   r   )rG   r   r   rL   r   NN)r   r   rL   rL   r   r  )rL   r   r   r   r   )r   r   r   rL   r   )rG   r   rL   rL   r   )rF   )rG   r   rF   rG   r   r  )r   r   rF   rG   r   r  c                    t        j                  |      }t        ||dd      \  }}t        ||dd      \  }}	d ||||	fD        \  }
}}}t        j                  |      j                  t              }t        j                  |      j                  t              }| j                  |
|d       | j                  ||d       |d	   d||d	   d
 | j                  ||d       | j                  ||d       y
)a  Test envelope calculation with real-valued test signals.

        The comparisons are performed in the Fourier space, since it makes evaluating
        the bandpass filter behavior straightforward. Note that also the squared
        envelope can be easily calculated by hand, if one recalls that coefficients of
        a complex-valued Fourier series representing the signal can be directly
        determined by an FFT and that the absolute square of a Fourier series is again
        a Fourier series.
        ro  Trp  ru  c              3   F   K   | ]  }t        j                  |        y wr(  r  rw  .0z_s     rY   	<genexpr>z:TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>  s     !Ub&++b/!U   !z+Envelope calculation error (residual='all')r  z+Residual calculation error (residual='all')rK   Nr   z/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))r  rv  r!   rv   r   r   r)  rc  )rU   ry  re  Ze2_desired
Zr_desiredrm   ze2zrze2_lpzr_lpZe2ZrZe2_lpZr_lps                 rY   test_envelope_real_signalsz'TestEnvelope.test_envelope_real_signals  s   & LLO1eeTBR EItL!US"fe<T!URhh{+227;XXj)009
#{K 	 	M"jK 	 	M 8$%JuQxy!&+O 	 	Q%O 	 	Qr[   zG               Z,        bp_in,         Ze2_desired,         Zr_desired)r   rH   r   rH   r   rH   r   rM   r   rH   rK   rH   r   rH   rL   r   rL   rK   r   r   r   rL   )rK   rL   rI   r   rI   rF   )r   rI   r   rR   r   rI   )rK   rL   r   r   r   rF   c                 |   t        j                  t        j                  |            }t        ||dd      \  }}d ||fD        \  }}	| j	                  |t        j                  |      j                  t              d       | j	                  |	t        j                  |      j                  t              d       y)	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.
        ro  Trp  c              3   l   K   | ],  }t        j                  t        j                  |             . y wr(  r  fftshiftr   r  s     rY   r  z=TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>  s!     Gr6??6::b>2Gs   24rs  r  rt  N)	r  rx  	ifftshiftr!   rc  rv   r   r   r)  )
rU   ry  re  r  r  rm   r  r  r  r  s
             rY   test_envelope_complex_signalsz*TestEnvelope.test_envelope_complex_signals  s     KK((+,1eeTBRGc2YGR#rxx4;;GD: 	 	<"bhhz299'B: 	 	<r[   c                    t        j                  g dg dg      }t        j                  g dg dgt              }t        j                  g dg dgt              }t        |dd	
      \  }}t        |j                  dd
      \  }}d ||j                  ||j                  fD        \  }}	}
}| j                  ||d       | j                  |
|d       | j                  |	|d       | j                  ||d       y)z.Test for multi-channel envelope calculations. r  )r   r   rG   rG   r   rr  )r   r   r   r   r   r  r  )r   r   r   r   r   TrK   )rq  r  r   c              3   F   K   | ]  }t        j                  |        y wr(  r  r  s     rY   r  zCTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>  s     OFKKOOr  2d envelope calculation errorr  2d residual calculation error"Transposed 2d envelope calc. error"Transposed 2d residual calc. errorN)r  rv  rv   r   r)  r!   rA  rc  )rU   rm   r  r  r  r  ye2TyrTr  Ye2r  Yrs               rY   #test_envelope_verify_axis_parameterz0TestEnvelope.test_envelope_verify_axis_parameter  s    LL/?;<hh1AB%,.XX@P
1d3RQSS$Q7	cOsDFFB6NOS"b#{0OP"j/NO#{0TU"j.RSr[   c                 H   t        j                  t        j                  g dg dgd            }t        j                  g dg dgt
              }t        j                  g dg dgt
              }t        d	d
d      }t        |fddi|\  }}t        |j                  fddi|\  }}d ||j                  ||j                  fD        \  }	}
}}| j                  |	|d       | j                  ||d       | j                  |
|d       | j                  ||d       y)zBTest for multi-channel envelope calculations with complex values. r  )rK   rM   r   rM   rL   rK   r  r  )r   r   r/  r   r   r  r  r  ro  T)re  ri  rq  r  r   c              3   p   K   | ].  }t        j                  t        j                  |      d        0 yw)rK   r  Nr  r  s     rY   r  zKTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>  s0      @ " #OOFJJrNCC @s   46r  r  r  r  r  N)
r  rx  r  rv   r   r)  r  r!   rA  rc  )rU   rm   Ze2_desZr_deskwr  r  r  r  r  r  r  r  s                rY   +test_envelope_verify_axis_parameter_complexz8TestEnvelope.test_envelope_verify_axis_parameter_complex  s   KK((/;L)MTUVW((,.@B!(*?O<GL%>1+1++RQSS/q/B/	c@'*DFFB&>@S"b 	#w,KL"f*IJ#w-QR"f+OPr[   X)rG   r   r   rK   rL   )rG   r   r   rL   rK   rL   c                     t        j                  |      }t        j                  t	        |            }t        |dd      }| j                  ||d       y)z0Compare output of `envelope()` and `hilbert()`. r  Nrh  z!Hilbert-Envelope comparison errorr  )r  rv  rv   r  r"   r!   rc  )rU   r  rk   e_hile_envs        rY   test_compare_envelope_hilbertz*TestEnvelope.test_compare_envelope_hilbert  sG     LLOwqz"L48%,OPr[   N)r   r   r   __doc__staticmethodrc  rm  r  r  r  rr  r  r  r  r  r  r   r[   rY   r`  r`  5  s6   >N N76-D^ [[J
i/	J
i/	J
</	J
/	J
/	J
i/	J
i/	J	LMQMQ: [[Q
<,<	Q
,<	Q
)<>P	Q	<<T Q$ [[S?4F"GHQ IQr[   r`  c                   x    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y)TestPartialFractionExpansionc                 <   t        j                  |      }t        j                  |      }t        j                  t        |d d d f   |z
        t        | d d d f   |z
              }t	        |      \  }}t        ||   ||   |       t        | |   ||   |       y )Nr  )rv   r  hypotr  r   r   )r  r  r_truep_truer  distancerowscolss           rY   assert_rp_almost_equalz3TestPartialFractionExpansion.assert_rp_almost_equal  s    F#F#88C!T'
V 34!T'
V 346 +84
dAdGVD\7CAdGVD\7Cr[   c                    t        g dg d      \  }}t        t        |      d       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        t        |      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        |d   t	        j
                  g d	             t        |t	        j
                  g d
             y )NrJ   r  rF   r   )rL   rL   rF   rK   )rK   rK   rK   rF   rL   )rK   rK   rK   rL   rL   )rK   rK   rK   rL   rL   rF   T)include_powersrI   )rK   rK   rL   rL   rF   )rK   rL   rL   rF   )rK   rK   rK   rL   rF   rG   rH   )r:   r
   r:  r   rv   r?  )rU   factorsr?  s      rY   test_compute_factorsz1TestPartialFractionExpansion.test_compute_factors  s:   (I>S\1%GAJ	(:;GAJ(=>GAJ(@AD"''*<"=>(I8<>S\1%GAJ(@AGAJ(=>GAJ	(:;GAJ(@AGAJ(=>GAJ(@AD"''*<"=>r[   c                 `    t        g ddd      \  }}t        |g d       t        |g d       y )N)rQ  gjt?g?5^I?rW  g/$ @rY  r  minr  r  )r;   r
   rU   uniquemultiplicitys      rY   test_group_polesz-TestPartialFractionExpansion.test_group_poles  s,    +0#u >V_-\9-r[   c                    t        g dg d      \  }}}t        |g dd       t        |g dd       t        |dgd       t        dd	gg d
      \  }}}t        |d	dg       t        |ddg       t        |j                  d       t        ddgg d      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        ddgg d      \  }}}| j	                  ||g dg d       t        |j                  d       t        ddgg d      \  }}}| j	                  ||g dg d       t        |j                  d       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       t        |j                  d       t        g d!g d"      \  }}}| j	                  ||g d#g d$       t        |j                  d       t        g d%g d&      \  }}}| j	                  ||g d'g d(       t        |j                  d       t        ddgg d)      \  }}}t        |dd*g       t        |ddg       t        |j                  d       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      \  }}}| j	                  ||g d3g d4       t        |j                  d       y )5NrH   rF   r  r   r  r   r   rF   )gZd;O?g9#Jg&䃞ͪrG   r  )g-1ڿgeagvq-?g      r  r   rK   rI   r   ir  r   rK   )rK   r   r  rF   r   rL   )rL   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rK   rH   r   rG   )r   rK   rF   )r   r  r  )rF   gg)\(?g^I+g rh?)rK   gffffffgQg~jt?)r  rG   rK   )r  g333333ӿr  )rK   rL   r  r        пr  )rK   r   r  )rK   r   r   r   r   )rK   y              ?y             r   )r                r   rK   )rF   r   rI   rK   rF   rF   rK   rJ   r   r   r   )rK   r  rL   rH   )rL   rF   r   ri  )r   rL   rF   r   r  E   r   rQ   )rK   r  rG   r  )rG   y            @y            )rK         ?      rg   )r6   r   r
   r   r  rU   r  r  re  s       rY   test_residue_generalz1TestPartialFractionExpansion.test_residue_general  s	    -71aA91EA91EAy!42q'9-1aA3x(ABx(QVVQ1a&+.1aA1v&AAw'QVVQ1a&"9:1a##q?)	+ 	QVVQ1a&,/1a##Aq*lCQVVQ8131aAz*A/0A1v&1#z*1aAe}-A2w'QVVQ*&671a##Aq$8:J	LQVVQ)\21a##Aq)\BQVVQ1b':.1aAAw'A1v&QVVQ*j11aABx(A1v&As#-41aARy)A1v&A2w'*n51a##Aq*C$7	9AFFA&r[   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        ||       y )Nr  r  )r   rH   rF   r  r   )r   r  r   r   rF   )r   r   rH   rF   r  r   )r   r   r   r  r   r   rF   )r6   r   rU   r0p0k0r1p1k1r2p2k2r3p3k3s                rY   test_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zerosW  s    ]M:
B-}=
B],<=
B02HI
BB#B#B#B#B#B#B#B#B#r[   c                    t        ddgg d      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        dd      \  }}}t        |j                  d       t        |j                  d       t        |j                  d       t	        j
                  t        d      5  t        dd       d d d        y # 1 sw Y   y xY w)Nr   r  r  r  rK   Denominator `a` is zero.r  )r6   r   r
   r   r  r	   r   r  s       rY   test_resiude_degeneratez4TestPartialFractionExpansion.test_resiude_degenerateg  s    1a&),1aA1v&ABx(QVVQ!Q-1aQVVQQVVQQVVQ]]:-GH 	AqM	 	 	s   4C

Cc                    t        g dg d      \  }}}| j                  ||g dg d       t        |dg       t        g dg d      \  }}}| j                  ||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       t        |j                  d       t        g dg d      \  }}}| j                  ||g dg d       t        |j                  d       t        g dg d      \  }}}t        |ddg       t        |ddg       t        |ddg       t        dgg d      \  }}}| j                  ||g d g d!       t        |j                  d       t        ddgt        j                  dd"gdd#g            \  }}}t        |d$d%g       t        |d&dg       t        |j                  d       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       t        |j                  d       t        dg d*      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        dg d+      \  }}}t        |ddg       t        |d#dg       t        |j                  d       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       t        |j                  d       t        g dg d'      \  }}}t        |d2d3g       t        |ddg       t        |d4dg       t        g d5g d6      \  }}}| j                  ||g d7g d8d       t        |j                  d       y )9N)rK   rI   rI   rL   )rK   y             r  r  )y             @y      @      @y            ()r   rK   rK   rj   )rK   rL   rK   )rK   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿrG   r  gŏ1w@rK   r   )rK   r  rI   rL   rF   r   r   r  )rG   r  rF   r  )rK   rj  r  rG   )rL   r  r  r  g            ?r]  )r]  rF   r  r   )g
ףp=
?gQ?皙?)r  UUUUUUտr  r^  r  g
gUUUUUU@r  rK   r  rK   r  r   )rK   r   r  )rK   g      r  )rK   rI   rL   rj  r  rI   r  r   ira  rM   rH  )rK   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿr  yjM?%uyjM?%u?)ySsA?ySsArQ  y-?8gDio?y-?8gDio)r7   r  r   r
   r   rv   polymulr  s       rY   test_residuez_generalz2TestPartialFractionExpansion.test_residuez_generalv  s   <)FG1a##Aq*G$.	0At$9o61a##Aq%68I$J%2M$B,- 	$ 	/ 	Ax3Ar7J/1aAAw'A1v&QVVQ9l31a##Aq*lCQVVQ?K81aAT{+AAw'ARy)B411a##Aq$57H	JQVVQAq62::q$i!S#BC1aAt}-As|,QVVQ:2w/1aAs#As#A2w'1q#h'1aAs#At$QVVQ1m,1aA1v&ASz*QVVQ1./1aAAw'Ac{+QVVQ9j11aAQx(A1v&As#Aq6:.1aAAw'A1v&QVVQ<41aARy)A1v&AAw'9&9:1a##Aq%N%N,- 	$ 	/ 	QVVQr[   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        ||       y )Nr  r  )rH   rF   r  r   r   )r  r   r   rF   r   )rH   rF   r  r   r   r   )r  r   r   rF   r   r   r   )r7   r   r  s                rY   test_residuez_trailing_zerosz9TestPartialFractionExpansion.test_residuez_trailing_zeros  s     m];
B.>
Bm-=>
B13IJ
BB#B#B#B#B#B#B#B#B#r[   c                 (   t        ddgg d      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        dd      \  }}}t        |j                  d       t        |j                  d       t        |j                  d       t	        j
                  t        d      5  t        dd       d d d        t	        j
                  t        d      5  t        dg d	       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)
Nr   r  r  r  rK   r  r  z6First coefficient of determinant `a` must be non-zero.r  )r7   r   r
   r   r  r	   r   r  s       rY   test_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate  s    Aq69-1aA1v&ABx(QVVQ1a.1aQVVQQVVQQVVQ]]:-GH 	QN	 ]]:"01 	& Q%	& 	&	 		& 	&s   4C<$D<DDc                     g d}g d}g }g d}g d}dD ]V  }t        ||||      \  }}t        ||       t        ||       t        ||||      \  }}t        ||       t        ||       X y )N)r  UUUUUUſg)r   r  r  )r   rK   rF   )rK   r   rM   r   avgr  r  r  r  r  rtyper*   r   r+   )	rU   r  r  re  
b_expected
a_expectedr  rW   rV   s	            rY   *test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  s}    %
"
 I 	+E!Q/DAqAz*Az*1a%0DAqAz*Az*	+r[   c                     g d}g d}g }g d}g d}g d}dD ]Z  }t        ||||      \  }}	t        ||d	       t        |	|       t        ||||      \  }}	t        ||d	       t        |	|       \ y )
Ng333333?g98ȿr   gll?r   r  r  r  )r   r   rK   rF   )r   gUUUUUUgUUUUUU?rF   )rK   r  r-  r   r   r  r  r  r  r  )
rU   r  r  re  r  b_expected_zr  r  rW   rV   s
             rY   ,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  s    -!
,&
H 	+E!Q/DAqAz6Az*1a%0DAqA|%8Az*	+r[   c                    g d}g d}g }t        j                  t        d      5  t        |||d       d d d        t        j                  t        d      5  t	        |||d       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)Nr
  r  z`rtype` must be one ofr  r  r  )r  r	   r   r*   r+   r  s       rY   test_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtype  sz    -]]:-EF 	,1a(+	,]]:-EF 	-Aq!8,	- 	-	, 	,	- 	-s   A2A>2A;>Bc                 l    dg}dg}dg}t        |||      \  }}t        |dg       t        |ddg       y )NrK   rL   r   rQ  g       )r+   r   )rU   r  r  re  rW   rV   s         rY    test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bug  sC    CCCq!Q1C5!C;'r[   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       y )NrK   r   r  rL         ?      rK   r   rg   y      @      y      !      ?y      @      
@rK   y             y      ?       @y      ?      r  r  r  rJ   )rK                     ?       r  rM   rK               rG   r   rL   r   r  rG   r  r   r   r   rF   rF   rF   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prK   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@r   rL   )rK   r   r  ri   r  )r*   r   rU   rW   rV   s      rY   test_invresz(TestPartialFractionExpansion.test_invres!  s    qcA3#1As#A2w'+->C1ADEACDsAh 0)<1AABA/03R91A  9 	:A  7 	8 r2hAA/1A12Az*r[   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       y )NrK   r   r  r  r  r  r  r  r  rJ   )g      @r  r  y            rR   r  r  r  )rI   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr  r   rL   )r   rK   r  rL   r  )r+   r   r  s      rY   test_invreszz)TestPartialFractionExpansion.test_invresz9  s    sQC$1As#A2w',.?D1ADEACDQx&&!19=1ABCA/14b:1A  9 	:A  7 	8 Bx!Q!Q01A~.Az*r[   c                     t        ddd      \  }}t        |ddg       t        |ddg       t        ddd      \  }}t        |ddg       t        |ddg       y )NrK   r   r   rL   )r*   r   r+   r  s      rY   test_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_argumentsQ  s]    aA1A1v&A2w'q!Q1A2w'A2w'r[   N)r   )r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r$  r   r[   rY   r  r    se    	D 	D?&.B'H$ O b$"&&+&+"-(+0+0(r[   r  c                   `    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y)TestVectorstrengthc                 
   t        j                  dg      }d}d}d}t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr  r  rQ  r  r   rL   rv   r   r,   r
   r  r   r  rU   eventsperiodtarg_strength
targ_phasestrengthphases          rY   test_single_1dperiodz'TestVectorstrength.test_single_1dperiod]  sm    2$
(8%X]]A&UZZ#Hm4E1ruu9z#9:r[   c                 @   t        j                  dg      }g d}dgdz  }t        j                  g d      }t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr  )rK   rL   r  rQ  rF   )r  r  r  rK   rL   )rv   r   r,   r
   r  r   r   r  r)  s          rY   test_single_2dperiodz'TestVectorstrength.test_single_2dperiodj  s|    2$qXXm,
(8%X]]A&UZZ#!(M:E1ruu9z#9:r[   c                    t        j                  g d      }d}d}d}t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr  r  r  r  r  r  rL   rQ  r  r   r(  r)  s          rY   test_equal_1dperiodz&TestVectorstrength.test_equal_1dperiodw  sm    89
(8%X]]A&UZZ#Hm4E1ruu9z#9:r[   c                 B   t        j                  g d      }ddg}dgdz  }t        j                  ddg      }t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr4  rK   rL   rQ  r  r  r(  r)  s          rY   test_equal_2dperiodz&TestVectorstrength.test_equal_2dperiod  s    89QqXXsDk*
(8%X]]A&UZZ#Hm4E1ruu9z#9:r[   c                    t        j                  g d      }d}d}d}t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr  g?g @gffffff@g333333$@rK   rQ  r  r   rL   r(  r)  s          rY   test_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiod  sm    34
(8%X]]A&UZZ#Hm4E1ruu9z#9:r[   c                 B   t        j                  g d      }ddg}dgdz  }t        j                  ddg      }t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr9  rK   r  rQ  rL   r  r  r(  r)  s          rY   test_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod  s    34RqXXr2h'
(8%X]]A&UZZ#Hm4E1ruu9z#9:r[   c                    t        j                  g d      }d}d}d}t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr  r        ?rK   UUUUUU?r  r   rL   r(  r)  s          rY   test_partial_1dperiodz(TestVectorstrength.test_partial_1dperiod  sl    .)
(8%X]]A&UZZ#Hm4E1ruu9z#9:r[   c                 B   t        j                  g d      }g d}dgdz  }t        j                  g d      }t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       t        |dt         j                  z  |z         y )Nr>  )rQ  rQ  rQ  rQ  r@  rG   )r  r  r  r  rK   rL   r(  r)  s          rY   test_partial_2dperiodz(TestVectorstrength.test_partial_2dperiod  s|    .)! 	AXX./
(8%X]]A&UZZ#Hm4E1ruu9z#9:r[   c                     t        j                  g d      }d}d}t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       y )Nr   r  r  r?  rQ  r   rv   r   r,   r
   r  r   rU   r*  r+  r,  r.  r/  s         rY   test_opposite_1dperiodz)TestVectorstrength.test_opposite_1dperiod  sQ    +,(8%X]]A&UZZ#Hm4r[   c                     t        j                  g d      }dgdz  }dgdz  }t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       y )NrE  rQ  rM   r  rK   rF  rG  s         rY   test_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiod  s]    +,r	(8%X]]A&UZZ#Hm4r[   c                 d    t        j                  ddgg      }d}t        t        t        ||       y )NrK   rL   rQ  rv   r   r   r   r,   rU   r*  r+  s      rY   test_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueError  s)    Aq6(#j.&&Ar[   c                 b    d}t        j                  dgg      }t        t        t        ||       y )NrQ  rK   rL  rM  s      rY   test_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueError  s&    A3%j.&&Ar[   c                 8    d}d}t        t        t        ||       y )NrQ  r   r   r   r,   rM  s      rY   test_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueError  s    j.&&Ar[   c                 8    d}d}t        t        t        ||       y )NrQ  r   rR  rM  s      rY   test_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueError  s    j.&&Ar[   N)r   r   r   r0  r2  r5  r7  r:  r<  rA  rC  rH  rJ  rN  rP  rS  rU  r   r[   rY   r&  r&  [  sL    ;;;;;;;;	5	5B
B
B
Br[   r&  c                     | j                   j                  dk(  rNt        j                  | j                  d         j                   }| j                  |      |j                  |      }} t        | |||       y)z1Wrap assert_allclose while casting object arrays.rQ  r   N)r   r   rv   r   flatr   r   )r2  rb  r   r   r   s        rY   assert_allclose_castrX    sY    ||CQ(.. --.u0EFGT40r[   rQ  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              |j                  t                    }| t        u rt        ||z   g|      }nt        |||      }t        d |D              sJ t        |j                  t              |j                  t                     | t
        u rddg}nt        dd      g}t        j                  t        d      5   | |d	di d d d        y # 1 sw Y   y xY w)
NrK   rL   rF   rQ  c              3   <   K   | ]  }t        |t                y wr(  )r  r   )r  rk   s     rY   r  z)test_nonnumeric_dtypes.<locals>.<genexpr>  s     6!z!W%6s   rQ  zmust be at least 1-Dr  rk   )r   rv   r   r   r   r$   rh  r   r/   ro  r   r.   r  r	   r   )rQ  rk   rW   rV   rb  r2  r   s          rY   test_nonnumeric_dtypesr[    sA    
WQZ,A	WQZ,A	WQZ,A
A77<<3bhhq%("((1e*<ahhuoNGw!a%!$Aq!6v6666FMM%('..*?@wBxr2	z)?	@ db  s   	FFfdFDc                   n    e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Zy	)
TestSOSFiltc                 Z   t        j                  ddd      j                  |      }t        j                  ddg      j                  |      }t        j                  ddg      j                  |      }t        j                  g d      j                  |      }t	        ||      }t        t        t	        ||      |      |       t        j                  ddg      j                  |      }t        j                  ddg      j                  |      }t        j                  g d	      j                  |      }t        t        t	        ||      |      |       g d
}g d}t        j                  d      }t        j                  ||f      }d|_	        t        ||      }t        |g d       y )Nr   rH   rI   rK   r   r  r^  r_  re  )rK   rK   r   r  r   )rK   rI   )rK   rL   rL   rL   rL   rL   rL   rL   )rv   r  r   r   r.   r   r/   r^  rE  r  r   )rU   r
  rk   rW   rV   rb  r  rl   s           rY   
test_rank1zTestSOSFilt.test_rank1  sJ   KK1a ''+HHaW$$R(HHc4[!((, hh+,33B7Ql!'&A,":C@ HHaV##B'HHaV##B'hh*+2226!'&A,":C@GGAJnnaV$	CO34r[   c                 |   d}t        j                  dt        j                  |      dz
  t        j                  |            j                  |      }|j	                  |      }t        j
                  ddg      j	                  |      }t        j
                  ddg      j	                  |      }t        j
                  g dg dg dg dg|      }t        j
                  g d	g d
g dg dg|      }t        t        ||      |d      }t        ||       t        t        ||      |d      }t        ||       y )Nru  r   rK   r   r  rv  rw  r  r{  r|  r}  r~  r  )	rv   r  rM  rw   r   r   r/   r.   r   )	rU   r
  r  rk   rW   rV   rx  r  rl   s	            rY   
test_rank2zTestSOSFilt.test_rank2.  s    KK2775>A-rwwu~>FFuMHHRLHHaW$$R(HHc3Z ''+((Iy)YG!#% ((Iz=)+246 F1aL!!,!'1-F1aL!!,!'1-r[   c                     d}t        j                  dt        j                  |      dz
  t        j                  |            j                  |      }t        j                  ddg      j                  |      }t        j                  ddg      j                  |      }t        t        ||      |      }t        |j                  d         D ]@  }t        |j                  d         D ]#  }t        |||f   t        |||||f                % B y )Nr  r   rK   r   r  )rv   r  rM  rw   r   r   r/   r.   rx   r  r   r$   )	rU   r
  r  rk   rW   rV   rl   ry   js	            rY   rj  zTestSOSFilt.test_rank3B  s    KK2775>A-rwwu~>FFuMHHaW$$R(HHc3Z ''+ F1aL!$qwwqz" 	KA1771:& K)!AqD'71a1a43IJK	Kr[   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                  j                  d      j                  |      }t        ||	|d d t        j                  d            \  }}t        j
                  |t        ||	|dd  |      d	   f   }t        |t        ||	|             t        |
|d d t        j                  d
            \  }}t        j
                  |t        |
|dd  |      d	   f   }t        ||       t        |
      }t        j                  d|      }t        |
||      \  }}t        |t        j                  d             t        ||       d|j                  z   |_        t!        t"        t        |
||       |j%                         }|j                  d	   dd|j                  d   f|_        t!        t"        t        |
||d d d d d d g df          t        |
||      \  }}t        |d   t        j                  d             t        |d d d	d	d d f   |       y )NrL   r  lowr?  r   r   rI   rk  r   r   r   r  rK   r   )r   rK   rK   r  )r   r'   rv   r   r   r_r   r  r   r$   r  rX  r/   r1   r^  r  r   r   r  )rU   r
  b1rL  b2rM  b3rN  rW   rV   r  rk   y_truerl  r  rl   rp  zi_nds                     rY   test_initial_conditionsz#TestSOSFilt.test_initial_conditionsO  sv   q$.Bq$.Bq$.BKKB+R0KKB+R0hhb"fruuRV}beeBFmDEIINN2%%b) Q1Sb6bhhqk:
vwq!QrsV;A>>?VWQ1%56C3BBHHV,<=	reWS!BC&R8;;<VU+ _GGArNQ2&2Q
+R$ 177"j'3b9	xx{Aq"((2,7j'3q!Q	12	4Q5)2QtWbggaj1R1a
^R0r[   c                    t         j                  j                  d      j                  ddd      }|j	                  |      }t        j                  ddd	      }t        | }|j                  d   }d
}t        |j                        }d||<   |g|z   }t        j                  |      }t        ||||      \  }	}
t        ||d d d dd d f   ||      \  }}t        ||d d dd d d f   ||      \  }}t        j                  ||f|      }t        ||	dd       t        ||
dd       t        |      }|d
dd
g|_        ||d d dd
d d f   z  }t        ||||      d   }t        | \  }}t!        ||      }d
|j"                  d
g|_        ||d d dd
d d f   z  }t%        |||||      d   }t        ||dd       y )N   r   rH   )rL   ra  rF   r   rI   r  r  r  rK   rL   r  r  r  r5  r   )rv   r   r   r  r   r   r'   r)   r  r  r  r/   rE  rX  r1   r(   r%   r   r$   )rU   r
  rk   r  r  	nsectionsr  shpz0r&  rp  r  r  r>  r  rl   rl  rW   rV   y_tfs                       rY    test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1u  s    II!!#&..q!*.EHHRL mmAtE2smIIaL	  177mD	kCXXc] adr2B a2A2qk<Ba12qk<B NNB8$/QU;R%e< _q!Q'!AqsAI,C"-a0s|11rww?!AqsAI,q!QTb1!4Q5u=r[   c                    t        j                  d|      }t        j                  d      }t        j                  d      }t        j                  t
        d      5  t        |||d       d d d        d|d d d	f<   t        j                  t
        d
      5  t        |||d       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)N)rF   ra  rF   )rG   rI   )rG   rF   rF   rL   zshould be all onesr  rK   )rl  r  rQ  rF   zInvalid zi shape)rv   rV  r  r  r	   r   r/   )rU   r
  rk   r  rl  s        rY   test_bad_zi_shapezTestSOSFilt.test_bad_zi_shape  s     HHZ$hhvXXl#]]:-AB 	+Cr*	+AqD	]]:-?@ 	+Cr*	+ 	+	+ 	+	+ 	+s   B1B=1B:=Cc                    t        j                  ddd      }t        |      }t        |t	        j
                  d|      |      \  }}t        ||d       t	        j                  |d d d d	f   j                  d
      |d d d	d f   j                  d
      z        }t        ||d       t        |t	        j
                  d|      |j                               \  }}t        ||d       y )NrI   r  r  r  r/  rk  r5  r  rF   r   r  )
r   r'   r1   r/   rv   r^  rX  rM  r  r  )rU   r
  r  rl  rl   rp  ssr"  s           rY   test_sosfilt_zizTestSOSFilt.test_sosfilt_zi  s    mmAs51_RWWR_42R%0 WWSBQBZ^^^,s1ab5z~~2~/FFGQ/ RWWR_=2R%0r[   c                    t        j                  g dt              j                  dd      }t        j                  g dt              }t	        j
                  d      5  t        ||       d d d        y # 1 sw Y   y xY w)N)rK   rL   rF   rK   rH   rF   r  rK   rI   r   r
  r  )rv   r  r  rw   r  r  r/   )rU   r
  r  rk   s       rY   r  z"TestSOSFilt.test_dtype_deprecation  s`     jj+6:BB1aHJJ2&A##*IJ 	CO	 	 	s   !A77B N)r   r   r   r`  rb  rj  rm  rt  rv  ry  r  r  r  r  r   r[   rY   r^  r^    sF    52.(K$1L,>\
+1 [[ r[   r^  c                       e Zd Zd Zd Zd Zy)TestDeconvolvec                 f    g d}ddg}g d}t        j                  ||      \  }}t        ||       y )N)r   rK   r   r   rK   rK   r   r   rL   rK   )	r   rL   rK   r   rL   rF   rK   r   r   )r   
deconvolver   )rU   originalimpulse_responserecorded	recovered	remainders         rY   rZ   zTestDeconvolve.test_basic  s8    +q6.%00;KL	9	8,r[   c                     ddgddgg}ddg}t        j                  t        d      5  t        j                  ||      \  }}d d d        y # 1 sw Y   y xY w)Nr   zsignal must be 1-D.r  r  r	   r   r   r~  rU   r  r  quotientr  s        rY   test_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signal  s^    FQF#q6]]:-BC 	P"("3"3H>N"OHi	P 	P 	P   AAc                     ddg}ddgddgg}t        j                  t        d      5  t        j                  ||      \  }}d d d        y # 1 sw Y   y xY w)Nr   zdivisor must be 1-D.r  r  r  s        rY   test_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisor  s^    q6FQF+]]:-CD 	P"("3"3H>N"OHi	P 	P 	Pr  N)r   r   r   rZ   r  r  r   r[   rY   r|  r|    s    -PPr[   r|  c                      e Zd Zd Zd Zej                  j                  dddg      ej                  j                  dg d      d               Zd	 Z	ej                  j                  d
 e
j                  ddg      ddgg      d        Zy)TestDetrendc                 b    t        t        g d            }t        g d      }t        ||       y )NrJ   )r   r   r   )r4   r   r   )rU   	detrendeddetrended_exacts      rY   rZ   zTestDetrend.test_basic  s%    E),-		*!)_=r[   c                 j    t        g d      }t        |d      }t        |d      }t        ||       y )N)rK   333333?r  g?g333333@F)overwrite_dataT)r   r4   r   )rU   rk   
copy_arrayinplaces       rY   	test_copyzTestDetrend.test_copy  s/    )*Qu5
!D1!*g6r[   r   linearr  r  r  c                     t        j                  d      j                  ddd      }t        |||      }|j                  |j                  k(  sJ y )N   rH   rI   r   )rX  r  )rv   r   rw   r4   r  )rU   r  r   r  r  s        rY   r  zTestDetrend.test_axis  sE     yy''1a0Dt$7	$**,,,r[   c                 &   g dg dz   }t        |dd      }t        |dd       t        j                  |      d d d d f   }t        |ddd	
      }t        |dd       t	        t
              5  t        |dd       d d d        y # 1 sw Y   y xY w)Nr  )rH   r   r  rj  r  rF   )rX  bpr   r  r  rK   )rX  r  r  )r4   r   rv   r  r   r   )rU   r  r  s      rY   test_bpzTestDetrend.test_bp  s    ?*DxA6		151 zz$a.DxAA>		151 :& 	/DxA.	/ 	/ 	/s   /BBr  r   rL   c                     t         j                  j                  d      }|j                  d      }t	        ||      }t        j
                  g d      }t        ||d       y )Ni90  rM   )r  )
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿr  r  )rv   r   r   r  r4   r   r   )rU   r  r   rk   rV  res_scipy_191s         rY   test_detrend_array_bpz!TestDetrend.test_detrend_array_bp  sV     ii##E*HHRL aB "O P 	]7r[   N)r   r   r   rZ   r  r  r  rr  r  r  rv   r   r  r   r[   rY   r  r    s    >
7 [[Vh
%;<[[VY/- 0 =-
/ [[THBHHaV$4q!f#=>8 ?8r[   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestUniqueRootsc                     g d}t        |      \  }}t        ||d       t        |t        j                  t        |                   y )N)rX  r^  r  r  r  ra  r  r5   r   r
   rv   r^  r:  rU   r  r  r  s       rY   test_real_no_repeatz#TestUniqueRoots.test_real_no_repeat  s7    (+AFAr2\2773q6?3r[   c                 &   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       y )N)rX  ffffff{Gz皙r  rQ  ?r  r  tolr  )rX  r  r  rQ  ra  r  rL   rL   rK   rL   r  )r  r  r  r  r  )g333333g
ףp=
r  gffffff?r5   r   r
   r  s       rY   test_real_repeatz TestUniqueRoots.test_real_repeat  s    6+A4uEF$;RH\<0+A4uEF$<bI\<0+A4uEF$@"M\<0r[   c                     g d}t        |      \  }}t        ||d       t        |t        j                  t        |                   y )N)rX  r         ?      ?r  rx  ra  r  r  r  s       rY   test_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeat&  s7    =+AFAr2\2773q6?3r[   c                 &   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       y )N)rX        𿚙?ffffff333333?333333?r  r  ??r  r  r  )rX  r  r  r  ra  r  r  r  )r  r  r  r  r  )y      𿚙?y333333?r  yffffff??r  r  s       rY   test_complex_repeatz#TestUniqueRoots.test_complex_repeat,  s    '  ,A4uEF$L$&	(\<0+A4uEFJ$&	( 	\<0+A4uEH	 	\<0r[   c                 N   t        j                  t        j                  t        j                  d      t        j                  d                  }g d}t	        |      \  }}t        j
                  |      }t        t        j
                  |      |d       t        |g d       y )NrH   )yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?r   r  )rL   rL   rL   rL   )rv   r>  r   r^  r5   sortr   r
   )rU   r  
true_rootsr  r  s        rY   test_gh_4915zTestUniqueRoots.test_gh_4915A  si    HHR[[RWWQZ89K
+ABGGFOZC\<0r[   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       y )N)rQ  r   rQ  rQ  r   ra  r  rL   rK   )rK   g_p   ?&.>      ?r  )r  r  r  r  s      rY   test_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extraK  sa    +,<=FS$K<\Aq6*+,D#NFS+$6C\Aq6*r[   c                    t         j                  j                  d      dt         j                  j                  d      z  z   }t        |d      \  }}t	        |t        j
                  |      gd       t        |dg       y )Nr  r   rL   ra  r  )rv   r   r  r5   r   r  r
   r  s       rY   test_single_unique_rootz'TestUniqueRoots.test_single_unique_rootT  s^    IINN3"ryy~~c':"::+Aq1FRVVAYK<\C5)r[   N)
r   r   r   r  r  r  r  r  r  r  r   r[   rY   r  r    s%    4141*1+*r[   r  c                      t        j                  t        j                  dt        j                        dd      } | j
                  t        j                  k(  sJ y )Nr  r  rI   rG   )r   r  rv   r   r   r   )r2  s    rY   test_gh_22684r  [  s;    !!"))D"Eq!LF<<2<<'''r[   r(  )r   r   )r  concurrent.futuresr   r   r  r   	itertoolsr   mathr   r  r	   r   numpy.testingr
   r   r   r   r   r   r   r   numpyr   r   rv   scipyr   r  rf  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/   r0   r1   r2   r3   r4   r5   r6   r7   scipy.signal.windowsr8   scipy.signal._signaltoolsr9   r:   r;   scipy.signal._upfirdnr<   
scipy._libr=   scipy._lib._array_apir?   scipy._lib._utilr@   rA   rB   rD   r   r  rt  r  r  r  r"  r$  r&  rG  r\  r  r4  r  r6  rF  rK  r  r  r  rX  r  r  r  r  r  r  r  _pmfr	  rr  r  r  r  r  r  r   r   paramrY  r  r8  rM  rP  csinglerT  rZ  rR  ro  rw  r  r  r  r  	fail_slowr  r  r  r  r  r  rH  r[  r`  r  r&  rX  r[  r^  r|  r  r  r  r   r[   rY   <module>r     s   
 ?     *  
     % 6          &4 4 0 ! 1 > >eO eOPu= upL LD?"_ ?"DjL jLX3

C
E! E!PN" N"b- -DL L C > !U, U,p* *>& &U( U(p/ /  89$5  : 1 !2  89&7  : 89/  : 89.  :
 89F :F {{!!">?K
 "''299bhh ('2<< "

BJJ ,R]]$ G ,WD A	 C w" w"w"t2 2j !:;D%=1'KL0 M 2 <022
 

BJJ ,R^^4 H J K\= \=K\=~$= $=ND D2]% ]%@Ll L)X4@ rD D( ! ! 89L :L r@ @>q" q"hYE YExF F.uQ uQpk( k(\RB RBj1 89'7!34 5 :. v&r r 'rjP P./8 /8dH* H*V(r[   