
    tKg$                    >   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@mAZA d dlBmCZC d dlDmEZEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZMmNZNmOZO  G d d      ZP G d deP      ZQ G d d      ZR G d deR      ZS G d d      ZTd ZUd ZVd ZWd  ZX G d! d"      ZY G d# d$      ZZ G d% d&      Z[ G d' d(      Z\g d)Z]e]eIz  Z] G d* d+      Z^ G d, d-      Z_ G d. d/      Z` G d0 d1      Za G d2 d3ea      Zb G d4 d5ea      Zc G d6 d7ea      Zd G d8 d9ea      Ze G d: d;ea      Zf G d< d=ea      Zg G d> d?ea      Zh G d@ dAea      ZidB ZjdC Zke
j                  j                  dDej                  ej                  ej                  ej                  eOeNej                  ej                  ej                  ej                  ej                  eg       G dE dF             Zv G dG dH      Zwe
j                  j                  dIg dJ      e
j                  j                  dKdLdMg      e
j                  j                  dNg dO      dP                      Zxe
j                  j                  dDej                  ej                  ej                  g       G dQ dR             Z| G dS dT      Z} G dU dV      Z~ G dW dX      Z G dY dZe      Zd[ Zdvd\Ze
j                  j                  d]      d^        Ze
j                  j                  d]      d_        Z G d` da      Z G db dc      Z G dd de      Z G df dg      Z G dh di      ZdwdjZe
j                  j                  dke9e.f      dl        Ze
j                  j                  dDdm       G dn do             Z G dp dq      Z G dr ds      Z G dt du      Zy)x    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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)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)            rE   rD         rC   )rC   
             rM         r   r   r   selfabcs       g/home/alanp/www/video.onchill/myenv/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rC   rD   rE   )rH   rI   rC   rD   samemode)rJ   rK   "   rP   rQ   s       rV   	test_samez_TestConvolve.test_same-   s)    Q'1eL12rX   c                 ^    g d}g d}t        ||d      }t        |t        g d             y )NrZ   rG   r[   r\   )rJ   rK   rK   rP   rQ   s       rV   test_same_eqz_TestConvolve.test_same_eq3   s)    Q'1eL12rX   c                 ~    t        g d      }t        ddg      }t        ||      }t        |t        g d             y )N)      ?      ?       @      ?      @      ?rc   rd   )               @y       @      @y      @       @y      @      @)r   r   r   )rR   xyzs       rV   test_complexz_TestConvolve.test_complex9   s7    *+66"#QN1e$@ABrX   c                 B    d}d}t        ||      }t        |||z         y )Ni	  i  )r   r
   rQ   s       rV   test_zero_rankz_TestConvolve.test_zero_rank?   s%    QNQArX   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   rC   rH   directmethodr   )npr   reshaperanger   r   )rR   rS   rT   ib_shaperg   rh   s          rV   test_broadcastablez _TestConvolve.test_broadcastableE   s    IIbM!!!Q*IIaLqAc!eGGAJAIIg.x@AAIIg.u=AAq! rX   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y Nig  iP  )r   r   r
   rQ   s       rV   test_single_elementz!_TestConvolve.test_single_elementO   s1    4&M4&MQNQArX   c                 |    g dg dg}g dg dg}t        ||      }t        g dg dg dg      }t        ||       y NrG   rZ   rI   rC   rD   rD   rE   rF   )rI            rO   )rJ      >   :   &   )rO      r   1   r   r   r   r   rR   rS   rT   rU   ds        rV   test_2d_arraysz_TestConvolve.test_2d_arraysU   sE    	"	"QN%'') * 	1a rX   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   rI                 ?rn   rC   )                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[   rH   r   valid)r   rs   r   r   r   )rR   smallbig	out_arrays       rV   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	5rX   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 NrZ   rG   spamr\   eggsr   r]   rq   hamro   r   baconr[   assert_raises
ValueErrorr   rR   rS   rT   s      rV   test_invalid_paramsz!_TestConvolve.test_invalid_params   sd    j(Aqv>j(AqveLj(AquXNj(AqvgNj(AqvgNrX   N)__name__
__module____qualname__rW   r_   ra   rj   rl   rw   rz   r   r   r    rX   rV   rA   rA   %   s8    F33C"!#5JOrX   rA   c                   2    e Zd Zd Zd Zd ZddZd Z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)rH   rI   rC   rF   rE   rC   )	rI   rC   rD   rE   rC   rD   rI   rI   rH   )F   N   I   A   r   )y      ?      @       @      y      @               @            ?        y       @      $)r   r   rR   rS   rT   expectedouts        rV   test_valid_mode2zTestConvolve.test_valid_mode2   s    '#q!W%3)q!W%3)$VG$q!W%3)q!W%3)rX   c                 `    g d}g d}t        ||d      }t        g d      }t        ||       y )N)rH   rI   rC   rC   rH   rI   )rH   rD   rC   rD   rE   rF   r   rD   rC   rI   rH   rH   rC   r[   )9   =   ?   r   -   $   r   r   s        rV   test_same_modezTestConvolve.test_same_mode   s/    3Q6"*+1a rX   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 	NrH   r   rI   rC   r   rC   rI   r]   r   )rr   r   rs   r   r   r   r   s      rV   test_invalid_shapesz TestConvolve.test_invalid_shapes   ss     IIaO##F+IIb!$$V,j(IaVI7HIj(IaVI7HIrX   c                    h d}|D cg c]  }|D ]  }dD ]  }|||f	   }}}}t         j                  j                  d       t         j                  j                  ddg|      t         j                  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   rH   size)ru   fru   rT   ur                 ?rU   )r   ro   )rq   r]   r   ro   r   >   r   r   -C6?gư>rtolatolr   MbP?h㈵>:0yE>)rr   randomseedchoicerandndtypekindastyper   r
   r    anyr   )rR   ntypest1t2r]   argsarray_typesx1x2keyresultstkwargss                 rV   test_convolve_methodz!TestConvolve.test_convolve_method   s   4 */ F22+D4 R+D  F
 			rII,,aV!,<IIOOA.0.9#.>>C;s+&s+d;s3C.CCC LBDRXXb\../66r:BRXXb\../66r:B #45"33 HRCdCC"3  5 --wx/@/F/FG|"/B7B B8D8aA118DE"($7r2h&"&5 #'5GENGH,=HH1 !F5 Es   GG	G
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)	rJ      2   3   4   5   6   <   r   rI   r   r   rp   ro   r   )rr   r   r   r   r
   )rR   r   ri   r   ro   s        rV    test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_input   s{     6A!Q$rxx0A1a.Ca84F 2vS&)S!ac(+VQ1X. 6rX   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 NrH   rI   ro   rp   r   rC   r   rR   s    rV   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3rX   N)d   )	r   r   r   r   r   r   r   r   r   r   rX   rV   r   r      s#    *,!
J*IX/4rX   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   )rR   rS   rT   r   es        rV   r   z_TestConvolve2d.test_2d_arrays   sF    	"	"%'') * q!1a rX   c                     g dg dg}g dg dg}t        g dg      }t        ||d      }t        ||       t        ||d      }t        ||       y )NrI   rC   rD   rE   rF   r   r   rD   rE   rF   r   r   	   rJ   rG   rZ   r   P   b   t      r   r  rR   r  r   hgs        rV   test_valid_modez_TestConvolve2d.test_valid_mode  sW    "$:;	")*+q!W%1a  q!W%1a rX   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	  rG   rZ   r   r   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@r   )rr   r   complexr   r   r   r  s        rV   test_valid_mode_complxz&_TestConvolve2d.test_valid_mode_complx  sg    "$:;HHi+7;b@GHIq!W%!!Q' q!W%1a rX   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 )NrG   rZ   r}   r~   rH   r   fill)      r   r^   rM   )rL   (   r   @   r   )rM   .   C   r   0   r   r   r   )rR   rS   rT   fillvalrU   r   s         rV   test_fillvaluez_TestConvolve2d.test_fillvalue   sQ    	"	"q!VVW5''') * 	1a rX   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 valuesmatchrH   rI   r   	fillvaluez,`fillvalue` must be scalar or an array with )rr   testingr   filterr=   r   r   r   )rR   msgsups      rV   test_fillvalue_errorsz%_TestConvolve2d.test_fillvalue_errors*  s    BZZ))+sJJ~'?@z5QC5Aq6(b9 6 ,
 =:S1u1vh1a&9 21	 65 ,+ 21s/   (B+	BB+ B7B(	$B++B47C c                 >    t        t        t        dggddggg        y )NrH   rI   r&  r   r   r   r   s    rV   test_fillvalue_emptyz$_TestConvolve2d.test_fillvalue_empty5  s    j*seq!fX "	$rX   c                     g dg dg}g dg dg}t        ||dd      }t        g dg dg dg      }t        ||       y )	NrG   rZ   r}   r~   r   wrap)r  r  J   r  r  )D   r3  r   r3  r3  r   r   s        rV   test_wrap_boundaryz"_TestConvolve2d.test_wrap_boundary:  sJ    	"	"q!VV,''') * 	1a rX   c                     g dg dg}g dg dg}t        ||dd      }t        g dg dg d	g      }t        ||       y )
NrG   rZ   r}   r~   r   symm)r^   r   ,   r   B   )r   r  r   r  T   )R   r   \   n   r   r   r   s        rV   test_sym_boundaryz!_TestConvolve2d.test_sym_boundaryC  sJ    	"	"q!VV,'')+ , 	1a rX   funczboundary, expectedr6  )g     B@      E@      F@g     F@r1  )     E@rA  r@       C@c                     t        j                  g dg      }t        j                  d      } |||d|      }t        ||       y )N)       @            @      @)rH      r[   r]   boundary)rr   r   onesr   )rR   r?  rK  r   imagekernelresults          rV   test_same_with_boundaryz'_TestConvolve2d.test_same_with_boundaryL  s@     /01!eV&8D 	68,rX   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   rH   r   r   rJ   rC   e   r[   r1  rJ  )r   r   )r]   origin)	scipy.ndimagendimagerr   r   floatrs   r   r   r   )rR   ndirS   rT   rU   s        rV   test_boundary_extension_samez,_TestConvolve2d.test_boundary_extension_same]  sp     	$IIau-55b!<IIa.66r2>q!&6:1cll1afXlNOrX   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   rH   rJ   r   rC   %   rF   r   r1  rJ  )rC   rC   r[  r\   r   )
rT  rU  rr   r   rV  rs   r   padr   r   )rR   rW  rS   rT   rU   apads         rV   test_boundary_extension_fullz,_TestConvolve2d.test_boundary_extension_fullg  s     	$IIae,44Q:IIae,44Q:q!&6:vva)621cll4l@"crcJKrX   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   )rr   r   rs   r   r   r   r   s      rV   r   z#_TestConvolve2d.test_invalid_shapesr  ss     IIaO##F+IIb!$$V,j*K1vK&'9JKj*K1vK&'9JKrX   N)r   r   r   r   r  r  r"  r,  r/  r4  r>  pytestmarkparametrizer   r   rP  rX  r^  r   r   rX   rV   r  r     s    !
!
!!	:$
!! [[Vj+%>?[[1%(@'AB%(@'ABDE-E @-P	L
LrX   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 )NrG   rZ   r  r	  r[   )rK   rL   r^   )r  r  r  r   )rR   r  r   r  r  s        rV   r   zTestConvolve2d.test_same_mode  sC    	""$:;q!V$< " #1a rX   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 )NrG   rZ   r  r	  r  r   rc   r   re         @        )r         @       @rg  )rg  y      @      ?y      @      y      ;@      y      G@       @)r   r   )rR   r  r   r   r   s        rV   r   zTestConvolve2d.test_valid_mode2  s    	""$:;*+Aw'3)Aw'3)f/0%'?@h'(Aw'3) Aw'3)rX   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 )NrE   g	@gffffff?rC   r   r   r[   r\   )rr   r   r   r   r   r   squeezer   rR   rS   rT   r]   s       rV   test_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcs  s    IIaLHH]#-DAqt < &14 @B

!!1#s6!81402 .rX   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 )NrC   rD   r.  r   s    rV   test_invalid_dimsz TestConvolve2d.test_invalid_dims  s<    j*a3j*qcA37j*ug!w?rX   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          rI     g    .Ar   rH   )iH  r   )shapestridesr   )rr   r   itemsizer<   check_free_memoryzeroslibstride_tricks
as_stridedr   r   wherer   )rR   r   rS   countfailss        rV   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}}!!!rX   N)r   r   r   r   r   rn  rp  r`  ra  slowxfail_on_32bitr  r   rX   rV   rd  rd    sN    !*.	2@
 [[[[ CD" E "rX   rd  c                   n   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#d) Z$y)*TestFFTConvolveaxes Nr   r   c                     t        g d      }t        g d      }|dk(  rt        ||      }nt        |||      }t        ||       y )NrG   rH   rD   rJ   rO         "@r  r  r   r   r   rR   r  rS   r   r   s        rV   	test_realzTestFFTConvolve.test_real  sB    )+,2:a#Ca.C!#x0rX   rH   c                     t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        |||      }t	        ||       y )NrG   r  rI   rH   r  r   rr   tiler   r   r  s        rV   test_real_axeszTestFFTConvolve.test_real_axes  sW    )+,GGA1v778aV,!QT*!#x0rX   c                     t        g d      }t        g d      }|dk(  rt        ||      }nt        |||      }t        ||       y )Nrc          @       @y      @      @rf   y               @y              4@y              8@y              2@r  r  r  r  s        rV   rj   zTestFFTConvolve.test_complex  sC    *+DE2:a#Ca.C!#x0rX   c                     t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        |||      }t	        ||       y )Nr  r  rI   rH   r  r  r  s        rV   test_complex_axesz!TestFFTConvolve.test_complex_axes  sX    *+DEGGA1v778aV,!QT*!#x0rX   c                     t        g dg dg      }t        g dg dg dg      }|dk(  rt        ||      }nt        |||      }t        ||       y )NrG   r~   rH   rD   rJ   rO   r
  r   r  8   r   r   r   r  r   r   r   r  r  r  r  s        rV   test_2d_real_samez!TestFFTConvolve.test_2d_real_same  s]     9 +-.0 1 2:a#Ca.C!#x0rX   rI   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 )NrG   r~   r  r  r  rI   rH   rH   r  r  r  s        rV   test_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axes  sj     9 +-.0 1 GGAy!778Y/!QT*!#x0rX   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      @      @rd   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        rV   test_2d_complex_samez$TestFFTConvolve.test_2d_complex_same  s^     ++- .A(<  2:a#Ca.C!#x0rX   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        rV   test_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axes6  sk     ++- .A(<  GGAy!778Y/!QT*!#x0rX   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 )NrG   	rC   rC   rE   rF   r   r   r
  r   rH        A@     D@     G@	r  g      4@      9@r  r  r  rC  g      <@rE  r  r[   r  r  rR   r  rS   rT   
expected_1
expected_2r   s          rV   test_real_same_modez#TestFFTConvolve.test_real_same_modeM  s    )-.?+
FG
2:aF+CaF6C!#z22:aF+CaF6C!#z2rX   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 )	NrG   r  r  r  rI   rH   r[   r  r  r  s          rV   test_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axes`  s    )-.?+
FG
GGA1vGGA1vWWZ!Q0
WWZ!Q0
!QT2!#z2!QT2!#z2rX   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rC   rI   rH   r  g      8@g      ?@r  rB  g     H@r        (@r  r   r  r  rR   r  rS   rT   r   r   s         rV   test_valid_mode_realz$TestFFTConvolve.test_valid_mode_realr  s     )-.<=2:aG,CaG$7C!#x02:aG,CaG$7C!#x0rX   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  rI   rH   r   r  r  r  s         rV   test_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axes  sz     )-.<=GGA1vGGA1v778aV,!Qd3!#x0rX   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   rh  y      @      y      @        y      @      y       @        y     F@      (@y      >@      7@y      H@      @@r  r   r  r  r  s         rV   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0rX   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  rI   rH   r   r  r  r  s         rV   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0rX   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        rV   test_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes  sx    )-.<=GGA1vGGA1v778aV,!Qa0!#x0rX   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   rE   rF   r   )r   r   r   r   s    rV   
test_emptyzTestFFTConvolve.test_empty  sV    B#((A-.QFB',,12B$))Q./rX   c                 f    t        d      }t        d      }t        ||      }t        |||z         y ry   r   r   r
   rR   rS   rT   r   s       rV   rl   zTestFFTConvolve.test_zero_rank  s.    $K$K!QS!a% rX   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y ry   r  r  s       rV   rz   z#TestFFTConvolve.test_single_element  s2    4&M4&M!QS!a% rX   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   )rr   r   r   randr   r   r   allcloser  s         rV   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7rX   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   rI   rH   r  r  r  )	rr   r   r   r  r   r  r   r   r  r  s         rV   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7rX   rD   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)){   rK   )      r  r   r   r   rI   rH   rD   )rI   rH   rC   rH   rH   )rI   rH   rH   rD   rH   )rI   rH   rC   rD   rH   r  r  r   )
rr   r   r   r  r   moveaxisswapaxesr  r   r   )rR   r  a_shaperv   rS   rT   r   r   s           rV   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>rX   r   r  rr  i  r  rs  '  rE   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  )rr   r   r  r   r   r   )rR   r   rS   rT   r   r   s         rV   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2rX   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)Nrr  l   [<zn( r     皙?z4Use of fft convolution.*|invalid value encountered.*r$  r[   r   r   )rr   r   default_rngstandard_normalnaninfr   firwinr`  warnsRuntimeWarningr   )rR   r   rngsig_nanvalcoeffsr*  s          rV   test_fft_nanzTestFFTConvolve.test_fft_nan  s    ii##K0%%a(FFBFF#CGCL]]3,FHCnC8fUK 98 $
 98s   B33B<	)%r   r   r   r`  ra  rb  r  r  rj   r  r  r  r  r  r  r  r  r  r  r  r  r  rl   rz   r  r  r  r  listrt   rr   r   RandomStaterandinttolistr  r  r   rX   rV   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rX   r  c                      t        d      )NzFell back to fftconvolve)RuntimeError)r   r   s     rV   fftconvolve_errr  ,  s    
1
22rX   c                 t    t        | d      D cg c]  \  }}t        ||z
        dkD  r||f c}}S c c}}w )NrI   repeatrC   )r   abssizesrS   rT   s      rV   gen_oa_shapesr  0  sE    &uQ7 7tq!1q5zA~ F7   s   4c                 8   t        |       }t        |       }t        ||      D cg c]
  \  }}||z    }}}g d}t        ||      D cg c]<  \  }}|dk7  s,|d   |d   kD  r|d   |d   kD  s|d   |d   k  r|d   |d   k  r||fz   > c}}S c c}}w c c}}w )Nrk  r   r   rH   rI   rC   )r  zipr   )	r  shapes0shapes1ishapes0ishapes1shapesmodesishapesimodes	            rV   gen_oa_shapes_2dr  5  s    E"GE"G'7#%# %7Hhhx#  % &E3:653I C3I%QZ'!*$gaj)@QZ'!*$gaj)@ UH3I C C	%Cs   BABc                 \    t        | d      D cg c]  \  }}||k\  r||f c}}S c c}}w )NrI   r  r   r  s      rV   gen_oa_shapes_eqr  B  s=    &uQ7 7tq!Av F7   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  rr  rN   c                     t         j                  j                  |      }t         j                  j                  |      }t        ||      }t	        ||      }t        ||       y N)rr   r   r  r   r   r   )rR   	shape_a_0	shape_b_0rS   rT   r   r   s          rV   test_real_manylensz!TestOAConvolve.test_real_manylensH  sJ     IINN9%IINN9%q!$A!#x0rX   )r   /   rF   rD   rH   
is_complexTFr]   rk  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   
rr   r   r  r   setattrr   _signaltoolsr  r   r   )
rR   r  r  r  r]   monkeypatchrS   rT   r   r   s
             rV   test_1d_noaxeszTestOAConvolve.test_1d_noaxesV  s     IINN9%IINN9%Bryy~~i000ABryy~~i000Aq!$/F//+	-AD)!#x0rX   r  r   rH   )r   r  rF   rD   shape_a_extrarC   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 )NrI   r   r]   r  r   r!  )rR   r  r  r  r&  r'  r  r]   r$  ax_aax_brS   rT   r   r   s                  rV   test_1d_axeszTestOAConvolve.test_1d_axesj  s     q q T
T
IINND!IINND!Bryy~~t,,,ABryy~~t,,,Aq!$T:F//+	-ADt4!#x0rX   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   r!  )rR   r  r  	shape_a_1	shape_b_1r]   r  r$  rS   rT   r   r   s               rV   test_2d_noaxeszTestOAConvolve.test_2d_noaxes  s     IINN9i0IINN9i0Bryy~~i;;;ABryy~~i;;;Aq!$/F//+	-AD)!#x0rX   rI   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 )NrC   r   rH   r   r)  r   r!  )rR   r  r  r  r.  r/  r]   r&  r'  r  r$  r*  r+  rS   rT   r   r   s                    rV   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0rX   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    rV   r  zTestOAConvolve.test_empty  sV    
2r"''1,-
Aq62&++q01
2s#((A-.rX   c                 f    t        d      }t        d      }t        ||      }t        |||z         y ry   r   r   r
   r  s       rV   rl   zTestOAConvolve.test_zero_rank  s.    $K$KAS!a% rX   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y ry   r5  r  s       rV   rz   z"TestOAConvolve.test_single_element  s2    4&M4&MAS!a% rX   N)r   r   r   r`  ra  r  rb  r  r  rt   r  r  r%  r,  r  r0  r2  r  rl   rz   r   rX   rV   r  r  G  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/!!rX   r  c                      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                  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)NrH   r   r   r   r   r   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr$  r   r\   )rr   r   rs   r   r   rR   r9  rS   rT   s       rV   r   z(TestAllFreqConvolves.test_invalid_shapes  sk     IIaO##F+IIb!$$V,:"FG AG,G G Gs   A11A:c                     t        j                  g d      }t        j                  g d      }t        t        d      5   |||ddg       d d d        y # 1 sw Y   y xY w)N)rE   rF   rI   rH   )rE   rF   rC   rH   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r$  r   rH   r  )rr   rx  r   r   r;  s       rV   test_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axes  sQ     HH\"HH\":"67 AQF+	7 7 7s    AA za,brH   rI   rC   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   )rR   rS   rT   r9  s       rV   r   z)TestAllFreqConvolves.test_mismatched_dims  s/     :"-. A. . .s   
%.c                    t        t        d      5   |dgdgd       d d d        t        t        d      5   |dgdgg        d d d        t        t        d	      5   |dgdgddgd
dgg       d d d        t        t        d	      5   |dgdgg d       d d d        t        t        d      5   |dgdgdg       d d d        t        t        d      5   |dgdgdg       d d d        t        t        d      5   |dgdgddg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nz4acceptable mode flags are 'valid', 'same', or 'full'r$  rH   rI   chipsr\   z#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersrC   rD   )      ?rE  rG  rH  z$axes exceeds dimensionality of inputr  zall axes must be uniquer   r?  )rR   r9  s     rV   test_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags  sz    :"01 !qc01
 :!FH!qc+H : .2 3!qc!Q!Q(893 : .2 3!qc(893 :!GI!qc,I :!GI!qc-I :!:<!qcA/< <31 1
H H3 33 3I II I< <sR   DD, D8E6EEE(D),D58EEEE%(E1r   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)rn   rn   )rD   rD   y        ?ro   rp   )rr   r   r   iscomplexobjr   r   r   r   )rR   r   rg   rh   ress        rV   test_longdtype_inputz)TestAllFreqConvolves.test_longdtype_input  s    IIX&--e4IIV$++E2??57#HAHA!QXa8<=yyE!!!rX   N)r   r   r   r`  ra  rb  r   r   r   r=  r   rC  rr   
longdoubleclongdoublerG  r   rX   rV   r8  r8    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	"rX   r8  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   r;     rn   r   r  )
r   r   r   r   r   r   H   M   r3  r8  )
r   r   r   r   r   r  r     r  rN  )
r   r   r   r   r   r         _   #   )
r   r   r   r   r   r  r^   r
  rI  r8  )
r   a   rL   r3  r   rN  r   r   G   r   )
r  r   r7  rQ  r3  rM   rO  r3  r  r9  )
rC   !   r   r  rH   r   r2  7   rO   S   )
r   r  r  r   r   r  r  +   r   r  )
rM   r   X   r   '   rD   r;  r  r   r   )
r   r   r   r   r   rP  rP  rL  rn   r   )
r   r   r   r   r   r   rO  rI  rQ  r   )
r   r   r   r   r   r  r^   r^   r  rS  )
r   r   r   r   r   r   r   r  r  r   )
r   r   r   r   r   r   r  rW  r  rS  )
rV  r   r   r   r   r  r  rY  rW  r  )
rM   r   r   r   r   r  r  r   rW  r  )
r   r  r   r   r  r  r  rY  r   rI  )
r   rM   rV  r[  rM   rM   rY  rY  rY  r   )
r   r   r  r   rD   rD   rO  rO  r  r   r   rC   c                     t        j                  | j                  | j                        }t        j                  t        j                  | j                  t              | j                        }t        || j                         t        ||       y r  )
r   medfiltINKERNEL_SIZE	medfilt2drr   r   rV  r   OUT)rR   r   r  s      rV   rW   zTestMedFilt.test_basic9  s[    NN477D$4$45RXXdggu5t7G7GH1dhh'1a rX   r   c                     t        j                  | j                  |      }t        t	        j
                  |      j                  |       t        t	        j                  |      j                  |       y )Nr   )rr   r   r^  r
   r   r]  r   r`  rR   r   in_typeds      rV   
test_typeszTestMedFilt.test_types?  sL    
 88DGG51V^^H-33U;V%%h/55u=rX   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)rf  rg  zPlatform does not support r   znot supportedr$  )rr   finforH  r   r`  skipr   r^  r	   r   r   r]  r`  rc  s      rV   test_invalid_dtypeszTestMedFilt.test_invalid_dtypesH  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   r]  )rR   r*  s     rV   	test_nonezTestMedFilt.test_noneY  s)    8:S1NN4  211s   3<c                     t        j                  dt         j                        }|dd }d|_        t	        t        j                  |d      dk(         y )NrJ   r   rE   rF   r   rH         @)rr   r   r   ru  r   r   r]  )rR   dummyrS   s      rV   test_odd_strideszTestMedFilt.test_odd_strides_  sB     		"BJJ/!AJ	q!$*+rX   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   rI   rH   c                    | \  }}|dk(  r)t        dz         }t        d       }t        d      }n't        z
  d       }t        d       }t        d       }|dk(  r)t        dz         }t        d       }t        d      }n't        z
  d       }t        d       }t        d       }||f   }	t        j                  |	j                        }
|
||f   ||fS )Nr   )slicer   r`  r_  )chunkMNMinMselMoutNinNselNout
chunk_datamedM1N1rd  offMoffNrR   s              rV   applyz2TestMedFilt.test_medfilt2d_parallel.<locals>.applyx  s     DAqAvArDy)QQ|BIt,T4(RAvArDy)QQ|BIt,T4(R "#s(+J"":t/?/?@CtTz?D$..rX   rD   )max_workers>   rH   r   r   r   r   rH   rH   rH   )rr   r   r^  ra  rt  r_  
zeros_liker   submitr   rO  r   )rR   r   r   r  outputpoolchunksru  futuresfuturedataMsliceNslicer  r  rd  r  r  s   `            @@@@@rV   test_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallelh  s8   88DGG5188DHHE2 ~~///
 ^^A!#^^A!#"a'!+"a'!+	/ 	/8 x(A.$5F>DEfUt{{5%0fGE 'w/'-}}$ff)-vv~& 0 / 	68, F /.s   	E&E?-EEEN)r   r   r   r^  ra  r_  rW   r`  ra  rb  rr   ubytebyteushortshortr?   r>   	ulonglongr   r   re  bool_r   r   rI  r   object_rk  rm  rq  r  r   rX   rV   rK  rK    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-rX   rK  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)rE   rF   rD   rC   )rC   rE   rF   rI   )rI   rC   rE   rF   )rH   rF   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@_)@rF   decimalrC   )mysize)r   r   r   wiener)rR   r  r  s      rV   rW   zTestWiener.test_basic  sn    <! #&' ILLMO P 	"&--"2AqA!&--!"<aKrX   Nr   r   r   rW   r   rX   rV   r  r    s    
LrX   r  )meanmedianminimummaximumlinec                   H   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                  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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yorH   r   rI   r  padtyper  rJ   )r  cval)rI   rH   r   axisr  )r  )rr   r   r   
get_windowr   r   resampleresample_polyr  r   rt  )rR   signumwinsig2s        rV   rW   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#$rX   r  )Nhammingrw  )r   rO  r  )r  rR  rJ   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   rJ   F)endpointrI   g      @r  r   rH   r  &.>r  )	rr   linspacecosr   r   r  realr   sin)rR   rw  r  r  rg   rh   	y_complexs          rV   	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	rX   c                     t        j                  d      dz   }t        |      }d}t        t	        j
                  ||d      t	        j
                  ||d      d       y )Nr  r   freq)domaintimer  r  )rr   r   r   r   r   r  )rR   tsigfsigr  s       rV   test_input_domainzTestResample.test_input_domain  sM    yy~"4yOOD#f5OOD#f5	rX   nx)rH   rI   rC   rE   r   nyr   )rV  r  c                     t        j                  dg|z  |      }t        j                  ||      }t	        |dg|z         y )NrH   )rr   r   r   r  r   )rR   r  r  r   rg   rh   s         rV   test_dczTestResample.test_dc  s:     HHaS2Xu%OOAr"A38$rX   r  c                     t        j                  d      }t         j                  j                  d      j	                  d      }|j                         }t        j                  |dd||       t        ||       y )NrC   r   rI   rE   rH   r  r  )	rr   rx  r   r  r   copyr   r  r   )rR   r  impulser  window_origs        rV   test_mutable_windowz TestResample.test_mutable_window  s[     ((1+&&q)//2kkmWa67K6;/rX   c                    t        j                  dt         j                        }t        j                  g dt         j                        }t	        j
                  |dd||      }|j                  t         j                  k(  sJ y )NrJ   r   rH   rH   rH   rH   rI   r  )rr   r   r   r   r   r  r   )rR   r  rg   r  rh   s        rV   test_output_float32z TestResample.test_output_float32  sZ     IIb

+HHYbjj1  AqGDww"**$$$rX   c                     t        j                  d|      }t        j                  |dd|      }|j                  |j                  k(  sJ y )NrJ   r   rH   rI   r  )rr   r   r   r  r   )rR   r  r   rg   rh   s        rV   test_output_match_dtypez$TestResample.test_output_match_dtype   s@     IIb&  Aq':ww!''!!!rX   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  rR     r     )rB        $@g      D@rI   r   r   r  rB  rJ   rH   )r  ro  r  r  r  r        ?        )r  r  333333?r  r   r  gGz?)r*  r   r  r   r   rD   )r         ?        r   r  -q=)rB  r  r  r  )rr   r   rV  r   newaxisr  pir7   r   r  r   maxr  r  r
  r  r   r   rt  corrcoefr   r   r  cumsumr   interp) rR   rq   extr  raterates_tor   freqsrg   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                                    rV   test_resample_methodsz"TestResample.test_resample_methods  sR    < IIdOeDk)(BJJ7FF1ruu9u$q()DJ6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$h3=(IIbM"88'$TB'$TB&tzz8>>B;;tX6t<DD4KdD'-BC )E/  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 rX   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  )rI   r  O   r   r   r   r   rB  r  r  constantr  rH   Hz>r   r   )rr   r   r  intr   r   rV  r  r   r   r   r   r  r%   r   r  r   )rR   random_state	try_typesr   down_factorsr   rg   r  r  yfhcrh   s               rV   test_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltZ  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< % rX   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)rI   rD   rH   r  )rM   rV  r   r
  r\   )r  r  r  )rt   rr   r   r   r   r  r   )rR   r  r  nweightsrg   weightsy_gy_ss           rV   test_correlate1dzTestResample.test_correlate1dv  s    DAr4( (H		(("/A ii..{;G%a2ZHC ..ad7<C#C$K5 !) ) rX   N)r   r   r   rW   r`  ra  rb  r  r  r  padtype_optionsr  r  rr   r   r   r  r  r   r  r  r  r   rX   rV   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	6rX   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)	rH   rI   rC   rD   rC   rI   rH   rI   rG  rH   r   r  )dxx0rJ   rE   r  )r   r   lenr   	cspline1dcspline1d_evalr   )rR   rh   rg   r  cjr   y2s          rV   rW   zTestCSpline1DEval.test_basic  s    /03q6NqTAaD[a CFTM"T)""2rbQqT: 	""TrT(Aq9rX   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 )NrI   r   r  rB  rf   r  )rr   r   rx  rt  r   expr  r   r!  r   r"  r
   r   )rR   rg   rh   Tr   cyxnewynews           rV   rj   zTestCSpline1DEval.test_complex  s    IIaLHHQWWBLL1!GFF4"%%<!#a'( a  xx$$R.TZZ)rX   N)r   r   r   rW   rj   r   rX   rV   r  r    s    
:*rX   r  c                       e Zd Zd Zy)TestOrderFiltc                 R    t        t        j                  g dg dd      g d       y )NrG   rH   r   rH   rH   )rI   rC   rI   )r   r   order_filterr   s    rV   rW   zTestOrderFilt.test_basic  s    6..y)QG$	&rX   Nr  r   rX   rV   r,  r,    s    &rX   r,  c            	       t   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!y)_TestLinearFilterc                     t        j                  dt        j                  |      dz
  t        j                  |            j                  |      }| j	                  |      S )Nr   rH   )rr   r  prodrs   convert_dtype)rR   rt  rg   s      rV   generatez_TestLinearFilter.generate  sE    KK2775>A-rwwu~>FFuM!!!$$rX   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   rr   asarrayemptyrt  nditertype)rR   arrr   iterrg   rh   s         rV   r4  z_TestLinearFilter.convert_dtype  s    ::#&**S/C((399djj1C99c3Z)M)B${m46D11R5)# J::c44rX   c                     | j                  d      }| j                  ddg      }| j                  ddg      }| j                  g d      }t        t        |||      |       y NrF   rH   r   r        ࿩r   rI   rD   rF   r   r  r5  r4  r   r#   rR   rg   rT   rS   y_rs        rV   test_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIR  s\    MM$2w'T{+  !56!'!Q"2C8rX   c                     | j                  d      }| j                  ddg      }| j                  dg      }| j                  g d      }t        t        |||      |       y )NrD  rH   r   rH   rC   rE   r   r  rG  rH  s        rV   test_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIR  sZ    MM$1v&s#  !45!'!Q"2C8rX   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 )NrD  rH   r   r   r  rE  rH   rI   )rH   rE   r
     r   rI  rP  zir5  r4  r#   r   	rR   rg   rT   rS   rS  rI  zf_rrh   zfs	            rV   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+rX   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 )NrD  r  rH   )rH   rI   rC   rF   r
  r  r
  rE   rR  rT  rU  s	            rV   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+rX   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rD   rC   rH   r   r  r   rI   rD   rF   rD   rI   r   r  rT  )rR   rg   rT   rS   y_r2_a0rh   s         rV   test_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0  sp    MM&!2w'Sz*$$iI&/&1 2Aq!!$!'1-rX   c                     | j                  d      }| j                  ddg      }| j                  ddg      }| j                  g dg dg dg dg      }t        |||d	      }t        ||       y )
Nr\  rH   r   r  r   rI   r   rF   r  rF   rO   rQ  rO   rL  irL  r  rT  )rR   rg   rT   rS   y_r2_a1rh   s         rV   test_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1  sp    MM&!2w'Sz*$$i])&+ ,Aq!!$!'1-rX   c                    | j                  d      }| j                  ddg      }| j                  ddg      }| j                  t        j                  d            }| j                  g dg dg dg d	g      }| j                  g d
      d d t        j                  f   }t        |||d|      \  }}t        ||       t        ||       y )Nr\  rH   r   r  )rD   rH   r  )r   r   )rP  rP  )rO  rO  )ri  rk  iir  rS  )r5  r4  rr   rL  r  r#   r   )	rR   rg   rT   rS   rS  	y_r2_a0_1rV  rh   rW  s	            rV    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+rX   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 )Nr\  rH   r   r  )rH   rC   )rH   rC   rE   )rE   rC   rH   )rp  rp  r   rl  )r5  r4  rr   rL  r#   r   )	rR   rg   rT   rS   rS  	y_r2_a0_0rV  rh   rW  s	            rV    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+rX   c                    | j                  d      }| j                  ddg      | j                  ddg      t        |j                        D ]7  }t	        ||      }t        j                  fd||      }t        ||       9 y )NrD   rC   rI   rH   r   r  c                     t        |       S r  r#   wrS   rT   s    rV   <lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>      1a0@rX   r5  r4  rt   ndimr#   rr   apply_along_axisr   rR   rg   r  rh   rI  rS   rT   s        @@rV   test_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIR
  sz    MM)$2w'Sz*!&&MD1a&A%%&@$JC%a- "rX   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 )Nrt  rH   r   r  c                 (    t        |       d   S NrR  r   rv  rx  rS   rT   zi1s    rV   lf0z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf0      q!Q3/22rX   c                 (    t        |       d   S NrR  rH   rv  r  s    rV   lf1z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf1!  r  rX   r5  r4  rt   r|  r  rt  rr   rL  r#   r}  r   rR   rg   r  zi_shaperS  rh   rW  r  r  rI  rV  rS   rT   r  s              @@@rV   test_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_cond  s    MM)$2w'Sz*!&&MDAGG}HHTN##BGGH$56B$$aS)CAq!T2.EAr33%%c43C&&sD!4D%a-%b$/ "rX   c                    | j                  d      }| j                  g d      | j                  dg      t        |j                        D ]7  }t	        ||      }t        j                  fd||      }t        ||       9 y )Nrt  rO  rH   c                     t        |       S r  rv  rw  s    rV   ry  z3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>/  rz  rX   r{  r~  s        @@rV   test_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIR(  st    MM)$z*s#!&&MD1a&A%%&@$JC%a- "rX   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 )Nrt  rO  rH   rI   c                 (    t        |       d   S r  rv  r  s    rV   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0=  r  rX   c                 (    t        |       d   S r  rv  r  s    rV   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1?  r  rX   r  r  s              @@@rV   test_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_cond2  s    MM)$z*s#!&&MDAGG}HHTN##BGGH$56B$$aV,CAq!T2.EAr33%%c43C&&sD!4D%a-%b$/ "rX   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)rD   rE   r   r   r  bar  r   rH   rD   rE   rR  r   )r5  r   r&   r4  rt  rr   rL  r#   r   r   r   )rR   rg   rT   rS   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings              rV   test_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcastF  s    MM*%mmAs40!q!q!''!*q. $$RWWaG_%=>$$RWWaG_%=>!!Qg6!!Qg6!&&1!'73 	j'1aB8HIrX   c                     | j                  d      }| j                  g d      }| j                  dg      }| j                  g d      }t        ||d   |      }t        ||       y )NrF   rO  rH   )r   rH   rI   rI   rI   rI   r   rT  )rR   rg   rT   rS   rI  rh   s         rV   test_scalar_az_TestLinearFilter.test_scalar_a[  s_    MM!z*s#  !34AqtQ!!S)rX   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)rC   rI   rE   lrE   rH   r   r   )rC   rH   rD   rH   rI   rC   )rC   rI   rD   rD   r   r   )r4  rr   rx  rL  r   r#   r   )rR   rg   rT   rS   rS  zf_expected
y_expectedy_iirzf_iiry_firzf_firs              rV   test_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dimse  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!&+6rX   c           	          | j                  |      }| j                  |      }| j                  |      }| j                  |      }t        t        t        |||||       y r  )r4  r   r   r#   )rR   rT   rS   rg   r  rS  s         rV   base_bad_size_ziz"_TestLinearFilter.base_bad_size_zi  sV    q!q!q!#j'1aD"=rX   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 )NrF   rH   r   r   r   rH   rI   r  r   rH   rI   rC   rO   r\  rI   )r   rH   rI   rC   rD   rE   rZ   rC   rD   rE   )rD   rE   rF   r   )r   rH   rI   rC   rD   rE   rF   r   r   r   r
  )rr   r   r  rs   )rR   r   r   s      rV   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XrX   c                 8   | j                  d      }| j                  dg      }| j                  dg      }| j                  g       }t        ||||      \  }}t        ||       t	        |j
                  | j
                         t	        |j                  d       y )N)rE   rH   rR  r   )r5  r4  r#   r   r
   r   r   )rR   rg   rS   rT   rS  rh   rW  s          rV   test_empty_ziz_TestLinearFilter.test_empty_zi  s    MM$s#s##1aB'2!!Q'RXXtzz*RWWa rX   c                     | j                  dg      }| j                  dg      }t        ||ddg      }t        ||ddg      }t        ||ddg      }t        ||       t        ||       y )NrH   rB  r   TF)r4  r,   r   )rR   rS   rT   rS  zi_1zi_2s         rV   test_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zi  sp    s#s#QB7#q!aV$q!dE]+2t$2t$rX   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 )	NrH   rO  rI   r   rM  r2  rR  r4  r#   r   	rR   rS   rT   rS  rg   yezferh   rW  s	            rV   test_short_x_FIRz"_TestLinearFilter.test_short_x_FIR  s     s#z*A't$%  !S*1aB'2!!R(!"c*rX   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 )
NrH   rO  rI   r   rM  r2  ir  rR  r  r  s	            rV   test_short_x_IIRz"_TestLinearFilter.test_short_x_IIR
  s     1v&z*A't$%  #s,1aB'2!!R(!"c*rX   c                 :   | j                  d      }| j                  ddg      }|j                         }| j                  ddg      }|j                         }| j                  g d      }t        |||      }t	        ||       t        ||       t        ||       y rC  r5  r4  r  r#   r   r
   rR   rg   rT   b0rS   a0rI  y_fs           rV   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rX   c                 8   | j                  d      }| j                  g d      }|j                         }| j                  dg      }|j                         }| j                  g d      }t        |||      }t	        ||       t        ||       t        ||       y )NrD  r.  rI   )r   r  rH   rI   rC   rH  r  r  s           rV   test_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIR#  s    MM$y)VVXs#VVX  !67aA!#s+QQrX   rS   rB  rT   c                     t         j                  j                  d      }t        t	        t        j
                  dg      t        j
                  dg      |      t	        |||             y )NrJ   rB  )rr   r   r   r   r#   r   )rR   rS   rT   r  s       rV   test_scalar_inputz#_TestLinearFilter.test_scalar_input/  sJ     yyr"BHHcUORXXse_d;Aq$	!rX   N)"r   r   r   r5  r4  rJ  rM  rX  rZ  r`  rg  rn  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r`  ra  rb  rr   r   r  r   rX   rV   r1  r1    s    %
599	,	,..,,.0(.0(J**76>^Y@	!	%++

 [[S3xrxx}"=>[[S3xrxx}"=>! ? ?!rX   r1  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloat32r   Nr   r   r   rr   r   r   rX   rV   r  r  8      BHHSMErX   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloat64r   Nr  r   rX   rV   r  r  <  r  rX   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloatExtendedr  Nr  r   rX   rV   r  r  @  r  rX   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplex64FNr  r   rX   rV   r  r  D  r  rX   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplex128DNr  r   rX   rV   r  r  H  r  rX   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplexExtendedGNr  r   rX   rV   r  r  L  r  rX   r  c                   6    e Zd Z ej                  d      Zd Zy)TestLinearFilterDecimalr7  c                 *    t        t        |            S r  )r   strrR   rg   s     rV   r?  zTestLinearFilterDecimal.typeR  s    s1vrX   N)r   r   r   rr   r   r?  r   rX   rV   r  r  O  s    BHHSMErX   r  c                   4    e Zd Z ej                  d      ZeZy)TestLinearFilterObjectr7  N)r   r   r   rr   r   rV  r?  r   rX   rV   r  r  V  s    BHHSMEDrX   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-dbgrB  )rB  NrE  rB  rE  rG  )hasattrsysr  r`  rj  r   	TypeErrorr#   r   rX   rV   test_lfilter_bad_objectr  [  sc     sJC3<<$7=>)WsecU4DE)WsedV_E)Wtfse_ErX   c                  >    t        t        t        ddgddgg d       y )NrI   rC   rD   rE   )rH   rI   rC   rD   rE   )r   NotImplementedErrorr#   r   rX   rV   !test_lfilter_notimplemented_inputr  e  s    %w1!ukJrX   dtc                   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   rC   rD   rH   rI   )r   rI   rE   r   rC   )rr   r  r   r   rR   r  rS   rT   rI  s        rV   _setup_rank1zTestCorrelateReal._setup_rank1o  sa    KK1a ''+KK1a ''+hh'..r2!SyrX   c                     d}	 t        j                  |      }t        |d      r+t        dt        j                  |j
                        z        }|S # t        $ r Y |S w xY w)NrF   
resolutionrE  )rr   ri  r  r  log10r  	Exception)rR   res_dtr  dt_infos       rV   equal_tolerancez!TestCorrelateReal.equal_tolerancev  sb    	hhv&Gw-d288G,>,>#??@   		s   AA 	AAc                     |t         j                  k(  r| j                  t         j                        S | j                  |      S r  )rr   rH  r  r   )rR   r  s     rV   equal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fft  s6     R]]"''

33''//rX   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 )NrD   rC   ro   r   rp   r  )	r   r    r
   _setup_rank3r   r   r  r   r  )rR   r  rq   rS   rT   rI  y_ffty_directs           rV   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),rX   c                    | j                  |      \  }}}t        ||d      }t        ||dd        t        |j                  |       t        ||d      }t        ||dd d d d          t        |j                  |       y )Nr   rH   rD   r   r  r   r   r
   r   rR   r  rS   rT   rI  rh   s         rV   test_rank1_validz"TestCorrelateReal.test_rank1_valid  sz    %%b)	1caG$!!S1X.QWWb! aG$!!S1Xdd^4QWWb!rX   c                     | j                  |      \  }}}t        ||d      }t        ||d d        t        |j                  |       y )Nr[   r   r  r  s         rV   test_rank1_samez!TestCorrelateReal.test_rank1_same  sD    %%b)	1caF#!!S"X.QWWb!rX   c                     | j                  |      \  }}}t        ||d      }t        ||       t        |j                  |       y )Nr   r  r  s         rV   test_rank1_fullz!TestCorrelateReal.test_rank1_full  s>    %%b)	1caF#!!S)QWWb!rX   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   r[  r  )rI   rD   rE   r  )orderrN   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     @rC  )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   )rr   r  rs   r   r   r   r  s        rV   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rX   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   rH   rI   rD   rC   rE   r   r  r   r   r
   r   r  s         rV   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!rX   c                     | j                  |      \  }}}t        ||d      }t        ||ddddddf          t        |j                  |       y )Nr[   r   r   rH   r  r  r  s         rV   test_rank3_samez!TestCorrelateReal.test_rank3_same  sV    %%b)	1caF#!!S2qtQrT)9%:;QWWb!rX   c                     | j                  |      \  }}}t        ||      }t        ||       t        |j                  |       y r  r  r  s         rV   test_rank3_allz TestCorrelateReal.test_rank3_all  s;    %%b)	1caO!!S)QWWb!rX   N)r   r   r   r  r  r  r  r  r  r	  r  r  r  r  r   rX   rV   r  r  j  s9    
	0-$	"""<	"""rX   r  c                   $    e Zd Zd Zd Zd Z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   )rr   r   rs   r   r   r   r   s      rV   r   z!TestCorrelate.test_invalid_shapes  ss     IIaO##F+IIb!$$V,j)Jq!fJ8IJj)Jq!fJ8IJrX   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      rV   r   z!TestCorrelate.test_invalid_params  sd    j)Q?j)QuMj)QhOj)QwOj)QwOrX   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    rV   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!4rX   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 )NrG   rD   rE   r[   r\   )rE      rN   r~   )r   rM   rN   r   )rF   r   rM   rN   rO   r   rM   )r   r   r   s      rV   test_numpy_fastpathz!TestCorrelate.test_numpy_fastpath	  si    F	!QV4kB	!QV4lC	!QV46IJ	!QW5t<rX   N)r   r   r   r   r   r   r"  r   rX   rV   r  r    s    
KP5	=rX   r  r]   r   r[   r   behindTF
input_size)r  rR  rr  rs  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   rJ   r\   )rr   r   r  r  r  concatenater   r   r   argmaxr
   rt  )r]   r$  r%  r  in1offsetin2r   correlationlags	lag_indexs              rV   test_correlation_lagsr/    s    
 ))


"C


j
)CBFnnc11&93?@7 &'lC40KCHHchhT:D		+&Ii(+[../rX   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 )NrI   rC   )rr   rI  cdoubler  ri  	precision)rR   r  s     rV   r  zTestCorrelateComplex.decimal:  s:    B1rxx|---122rX   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
  rJ   r   r   r\   )rr   r   r   r   r   r   r  imag)rR   r  r]   rS   rT   rI  s         rV   r  z!TestCorrelateComplex._setup_rank1?  s!   
		qIIOOB&&r*	R"))//"%,,R000IIOOA%%b)	R"))//!$++B///d3d345;VBZ 	riT::qvvqvvD9: ; 	;!SyrX   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         rV   r  z%TestCorrelateComplex.test_rank1_validL  s    %%b'2	1caG$!!S$,,r2BCQWWb! aG$!!S2Y^^%5t||B?OPQWWb!rX   c                     | j                  |d      \  }}}t        ||d      }t        ||| j                  |             t	        |j
                  |       y )Nr[   r  r  r   r   r  r
   r   r  s         rV   r  z$TestCorrelateComplex.test_rank1_sameW  K    %%b&1	1caF#!!S$,,r2BCQWWb!rX   c                     | j                  |d      \  }}}t        ||d      }t        ||| j                  |             t	        |j
                  |       y )Nr   r  r:  r  s         rV   r	  z$TestCorrelateComplex.test_rank1_full]  r;  rX   c                     t        j                  g d|      }t        j                  g d|      }t        ||      }t        |g d       y )Nr   rc   r  r   y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      )rr   r   r   r
   rR   r  r   krh   s        rV   test_swap_fullz#TestCorrelateComplex.test_swap_fullc  s:    HH-R8HH5R@aOQLMrX   c                 L    g d}g d}t        ||d      }t        |g d       y )Nr>  r?  r[   r\   )r@  rA  rB  )r   r
   rC  s        rV   test_swap_samez#TestCorrelateComplex.test_swap_samei  s%    $,a(Q34rX   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 )	NrJ   r   rF   r   rD   r   rH   r  )rr   r   r   r   r   r  r6  r   r  r
   r   r  s         rV   
test_rank3zTestCorrelateComplex.test_rank3o  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!rX   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   rH   r  rf                 @rD   )rr   r   r   r   r   r   r  r6  r   r  r
   r   r  s         rV   
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+;<rX   N)r   r   r   r  r  r  r  r	  rE  rG  rI  rL  r   rX   rV   r1  r1  1  s0    3
	"""N5"=rX   r1  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 )NrE   rj  rk  r\   r   )rr   r   r   r   r   r   rl  r   rm  s       rV    test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcs  s   IIaLHH]#-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 .rX   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   )rr   r   rs   r   r   r   r   r   s      rV   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SrX   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 )NrH   rf                 rK  rF   rD   y              (@)r
   r   r   r   s    rV   test_complex_inputz"TestCorrelate2d.test_complex_input  s_    V''!v6<V''""7;V''"!6<rX   N)r   r   r   rP  r   rT  r   rX   rV   rN  rN    s    G&
T=rX   rN  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)rB  rF  r  )rB  r  rE  ro  rF  )rr   r   r$   r   )rR   rS   rT   zi_expectedrS  s        rV   rW   zTestLFilterZI.test_basic  sG    HH%&HH_%hhT{+1!"k2rX   c                     t        j                  g d      }t        j                  g d      }t        ||      }t        d|z  d|z        }t        ||d       y )N)rI   r   rE   )rH   rH   r   rI   r  r  )rr   r   r$   r   )rR   rT   rS   r  zi2s        rV   test_scale_invariancez#TestLFilterZI.test_scale_invariance  sL     HHYHHYA1ac"Su-rX   r   c                     t        j                  d|      }t        j                  dg|      }t        t        j                  t        j                  ||            j                  |       y )Nr   r   rH   )rr   rx  r   r
   r  r   r$   r   )rR   r   rT   rS   s       rV   re  zTestLFilterZI.test_types  sJ    HHa&HHaS&RWWV..q!45;;UCrX   N)r   r   r   rW   r[  r`  ra  rb  rr   r   r   re  r   rX   rV   rV  rV    sA    3. [[Wrzz2::&>?D @DrX   rV  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(   r/   )rR   zpkrg   r  r  padlenrq   irlenrT   rS   ra  s              rV   r%   zTestFiltFilt.filtfilt  se    %3<DAqAq!T7FFEJJ5(3-CsAtWf== )rX   c                     t        g dg d      }| j                  |t        j                  d            }t	        |t        d      d       y )NrG   rO   g6{=r  )r1   r%   rr   r   r   )rR   rc  r   s      rV   rW   zTestFiltFilt.test_basic  s6    Y	*mmC2/VBZh7rX   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 )Ni  r   rB  rH   rJ   i  r         ?rc  r  r   )rd  r   rd  r  )rr   r  r  r  r&   r  r  r  ceillogr%   r   vstackr
   rt  r'  )rR   r  r   xlowxhighrg   rc  repsr   rh   errx2dy2dy2dts                  rV   	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$&&!rX   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     @rJ   r  rO   rC   rh  rc  r  r   ri  rH   rI   )rr   r   rs   r&   r%   r  r   )rR   rg   rc  y0y1r$  s         rV   	test_axiszTestFiltFilt.test_axis	  s    II()11"b"=Qe,]]3!!]4]]3Aq! 4QQ]G2r{{2q!45]]3Aq! 4QQ]G2r{{2q!45rX   c                     | j                   dk7  ry t        j                  ddgdt        j                  d            }t        |t        j                  d      dd       y )Nr_  r  rH   rJ   +=r   )rb  r   r%   rr   r   r   )rR   r   s     rV   test_acoeffzTestFiltFilt.test_acoeff	  sG    %oor2h299R=9RYYr]UCrX   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 systemsrB  rE  r  rE  r   r  r  rH         ?rh  )rb  r`  rj  rr   r   r8   r   )rR   rg   rT   rS   rh   z1z2s          rV   test_gust_simplezTestFiltFilt.test_gust_simple	  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rX   c                     | j                   dk7  rt        j                  d       t        j                  d      }d}d}t        |||d      }||z  dz  |z  }t        ||       y )	Nr_  r~  rO   rG  rE  gustrp   rI   )rb  r`  rj  rr   r   r%   r   )rR   rg   rT   rS   rh   r   s         rV   test_gust_scalarszTestFiltFilt.test_gust_scalars#	  sa    %KK>? IIbMQ1V,aC!8a<8$rX   )r   oddNr\  N)r   r   r   rb  r%   rW   ru  ry  r|  r  r  r   rX   rV   r^  r^    s3    M>B%)>8
 "D6DJ%rX   r^  c                       e Zd ZdZd Zy)TestSOSFiltFiltra  c                 .   t         j                  j                  d      j                  d      }t	        dd      D ]X  }t        j                  |dd      }t        | \  }}t        | }t        |||      }t        ||      }t        ||dd	|z  
       Z y)z1Test equivalence between sosfiltfilt and filtfiltr   rr  rH   rF   ffffff?rc  r  r  zorder=%s)r   err_msgN)rr   r   r  r   rt   r   r&   r'   r(   r%   r/   r   )	rR   rg   r  rc  rT   rS   ra  rh   y_soss	            rV   test_equivalencez TestSOSFiltFilt.test_equivalence4	  s    II!!!$**401a[E--tE:C3<DAq3-CAq!AQ'EAu5*u:LM !rX   N)r   r   r   rb  r  r   rX   rV   r  r  1	  s    M	NrX   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.rH   NrR  r   r   rI   )r  r   r#   rr   sum)icsrT   rS   rg   mz0fz0br  y_fby_by_bfvalues               rV   filtfilt_gust_opt_funcz1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_funcI	  s    AA!#"1g!"gaA#&q)q!S2Y3/24R48aAddG,Q/"5q!SS)!,ta'(rX   rH   Nr  r  r  TF)r   xtolftolmaxfunmaxiterfull_outputdispr   z5minimization failed in filtfilt_gust_opt: warnflag=%dr   rR  )	r  r   r$   rr   r'  r  r   r   r#   )rT   rS   rg   r  r  rS  r  rO  optfoptniterfuncallswarnflagr  r  r  rh   s                    rV   filtfilt_gust_optr  @	  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;rX   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  rq   re  )r  re  r   rH   r   r  r   )rr   r   r   r   r%   r8   r  rt  
empty_liker  r   r=  r   rt   r  r   )rT   rS   rt  r  re  rg   rh   ygzg1zg2xx	out_shaper  r  zo1zo2r   indxs                     rV   check_filtfilt_gustr  l	  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6Iq%(I67):1aD)J&4#d)SY 8	RT	"B
++c2t
$C
++c2t
$CAr40BD1C4d3C4d3 7s   8F2rE   c            	         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         d
}dD ]R  }
t        t         |
      st        j                  ||
      }|j                         }t	        t        |||       d	       T t        j                  dgt         j                        }|j                         }t	        t        |||       d	       t        d      t        d      g}t        d      t        d      g}t	        t        |||       d	        y )Nr#  )rH   rI   )r   rF   ro   r\   T)r]   measure>   r   ro   r   ro   rJ   )
complex256
complex192r   l         @ rC   rI   rH   rD   )rr   r   r   r    r
   r   
isinstancedictkeysr  rL  r  r   r   r   )r]   r|  r   rD  true_methodrg   r  rq   
method_trytimesnot_fft_conv_supps              rV   test_choose_conv_methodr  	  s{   )D .Aq+		1$+/A		1$+/A'148F- 21adD QJJ"334Jud+,EUZZ\)Fh%**,.FG  !=r,-GGA%67FFH/14@(K	 "> HHeWBHH-FFH'148(CQZ$QZ$'148(C7 *rX   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 )NrC   {Gz?x   gffffff?rc  r  r  r  rE   r   )rI   rI   rI   rI   r   )r   elliprr   r  r  r  rj  rk  r   r   r'   r  rt   )ri   prD  rp  ro  approx_impulse_lenrT   rS   re  
signal_lenr  rt  lengths                rV   test_filtfilt_gustr  	  s	    ll1dC>GAq! C
rvvayARWWRVVC[266!9%<=>IINN3!Q?DAq*+++
 	Aq:-E: !HDE$E$K1eT59  , !!B&F1vi,>?rX   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 )NrO   r  rH   )qr   rI   )rr   r   r   r  r   decimater  s     rV   test_bad_argszTestDecimate.test_bad_args	  s7    IIbMi!sa@i!qC@rX   c                     t        j                  d      }t        j                  |dddd      j	                         }t        ||d d d          y )NrO   rI   rH   iirFr   ftype
zero_phaserr   r   r   r  roundr   rR   rg   rh   s      rV   test_basic_IIRzTestDecimate.test_basic_IIR	  @    IIbMOOAqAUuEKKM1a!f%rX   c                     t        j                  d      }t        j                  |dddd      j	                         }t        ||d d d          y )NrO   rI   rH   firFr  r  r  s      rV   test_basic_FIRzTestDecimate.test_basic_FIR	  r  rX   c                     t        j                  d      }t        j                  |ddd      }t	        |j
                  d       t        j                  |ddd      }t	        |j
                  d       y )	N)r   r   rI   r   F)r  r  )rP  r   rH   )r   rP  )rr   rx  r   r  r
   rt  )rR   ri   d0d1s       rV   
test_shapezTestDecimate.test_shape	  sT    HHX__Qe<RXXx(__Qe<RXXx(rX   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rq   r  r   r)  r2   _test_phaseshiftrR   r+  s     rV   test_phaseshift_FIRz TestDecimate.test_phaseshift_FIR	  s8     CJJ(BC!!5!A !  	   *>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     rV   test_zero_phase_FIRz TestDecimate.test_zero_phase_FIR	  s8     CJJ(BC!!4!@ !  r  c                 *    | j                  dd       y )Nr  Fr  r  r   s    rV   test_phaseshift_IIRz TestDecimate.test_phaseshift_IIR	  s    Uu=rX   c                 *    | j                  dd       y )Nr  Tr  r  r   s    rV   test_zero_phase_IIRz TestDecimate.test_zero_phase_IIR	  s    Ut<rX   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  )rP  r   r   r  r  rH   皙?rI   rf   皙?r  r   rB  r  r  r  r   g?Fr  r  r   r  r  r   r   r  )rr   r   rV  r   r&  r  r  r   windowstukeyr   dltir  cheby1freqzr  denr  	ones_liker  r  r  r8  r   angle)rR   rq   r  r  r  t_totr   r  r   r  r  r  d_tosr   systemwc_h_respsr  	h_resampssubnyqs                        rV   r  zTestDecimate._test_phaseshift	  sq   #IId5jl#eDk1 "S(1,VVFRUUNU1bjj=%99A=>~~##AFFC01  G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  rX   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@rr  rE  rI   g      >@rB  r   r  r   r  )r  r  )rr   r   sqrtr  r  r   linalgnormr   r  r   )rR   sfreqr   r   rg   x_outs         rV   test_auto_nzTestDecimate.test_auto_n$
  s     IIaL5 GGBFObffQY%#+%>%BCC		q)2D92U3"))../6rX   c                     t        j                  t        j                  dt        j                        d      }t        t        j                  |            rJ y )Nr  r   rJ   )r   r  rr   rL  r   r   isnanr  s     rV   test_long_float32zTestDecimate.test_long_float320
  s<     OOBGGF"**=rBrxx{####rX   c                     t        j                  t        j                  dt        j                        d      }|j
                  j                  t        j                  k(  sJ y )Nr  r   rJ   )r   r  rr   rL  r   r   r?  r   r  s     rV   test_float16_upcastz TestDecimate.test_float16_upcast6
  s;    OOBGGCrzz:B?ww||rzz)))rX   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   rE        @@rI   rc  )r  fsrf   r  r  rS  Fr  Tr  vIh%<=r   )r   r&   rr   r  r   r  r&  r  r   r  r#   r'   r
   r%   r   )rR   fcentrefwidthr  ri   r  rD  r  r   r   ynzpynzprefyzpyzprefs                 rV   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<rX   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   rE   r  r   rI   )r  rf   r   rH   r  r  rS  Fr  )r  r  r  Tr  )r   r  rr   rootsr&  r  polyr  r   r  upfirdnr
   r  )rR   r  r  r  numtapsbbasezbasezrotbzr  r   r   r  r  r  r  s                   rV   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&!rX   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r	  r  r  r   r   rX   rV   r  r  	  sM    A
&
&
)B
A
>=.2`
7$*
=@""rX   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   rw  )rr   r   r   r   r!   r   r  s     rV   r  zTestHilbert.test_bad_args
  s9    HHj\"j'1-IIcNj'12rX   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   rI   r  rH   r  rC   )rr   r  r   r  r  rl  r!   r  r  r  r   rL  rt  r6  )rR   r  r  r   r  a1a2a3rS   r  h_absh_angleh_reals                rV   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3rX   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 )NrL  rC   rF   r   r  r   r!  r   )rw  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)	rr   r   rs   r!   r
   r'  r   rt  r   )rR   rS   aaaana0hilbs        rV   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?rX   r   c                     t        j                  d|      }t        t        j                  t	        j
                  |            j                  |       y )Nr   r   )rr   rx  r
   r  r   r!   r   rc  s      rV   test_hilbert_typeszTestHilbert.test_hilbert_types
  s4    88AU+RWWV^^H56<<eDrX   N)r   r   r   r  r,  r1  r`  ra  rb  rr   r   r   r3  r   rX   rV   r"  r"  
  sI    3'4R#@J [[Wrzz2::&>?E @ErX   r"  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  rI   rC   rD   r   r   r$  )rI   r   )rI   )rr   r   r   r   r"   r   rs   r  s     rV   r  zTestHilbert2.test_bad_args
  s    HHzl^$j(A. IIbM!!!Q*j(A. IIbM!!!Q'j(A3j(A8j(A6rX   r   c                     t        j                  d|      }t        t        j                  t	        j
                  |            j                  |       y )N)rI   rM   r   )rr   rx  r
   r  r   r"   r   rc  s      rV   test_hilbert2_typesz TestHilbert2.test_hilbert2_types
  s4    88G51RWWV__X67==uErX   N)r   r   r   r  r`  ra  rb  rr   r   r   r8  r   rX   rV   r5  r5  
  s<    7 [[Wrzz2::&>?F @FrX   r5  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  )rr   r<  hypotr  r   r   )ro  r  r_truep_truer  distancerowscolss           rV   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CrX   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 )NrG   r  rC   r   )rI   rI   rC   rH   )rH   rH   rH   rC   rI   )rH   rH   rH   rI   rI   )rH   rH   rH   rI   rI   rC   T)include_powersrF   )rH   rH   rI   rI   rC   )rH   rI   rI   rC   )rH   rH   rH   rI   rC   rD   rE   )r9   r
   r   r   rr   r  )rR   factorsr  s      rV   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"''*<"=>rX   c                 `    t        g ddd      \  }}t        |g d       t        |g d       y )N)rB  gjt?g?5^I?rE  g/$ @rG  r  minr  r  )r:   r
   rR   uniquemultiplicitys      rV   test_group_polesz-TestPartialFractionExpansion.test_group_poles  s,    +0#u >V_-\9-rX   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rE   rC   r  r   r  r   r   rC   )gZd;O?g9#Jg&䃞ͪrD   r  )g-1ڿgeagvq-?g      r  r   rH   rF   r   ir  r   rH   )rH   r   r  rC   r   rI   )rI   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rH   rE   r   rD   )r   rH   rC   )r   r  r  )rC   gg)\(?g^I+g rh?)rH   gffffffgQg~jt?)rD   rH   )r  g333333ӿr  )rH   rI   rQ  r        пrQ  )rH   r   ri  )rH   r   r   r   r   )rH   y              ?y             r   )r                r   rH   )rC   r   rF   rH   rC   rC   rH   rG   r   r   r   )rH   rQ  rI   rE   )rI   rC   r   rP  )r   rI   rC   r   rj  E   r   rN   )rH   rQ  rD   r  )rD   y            @y            )rH         ?      rc   )r5   r   r
   r   rB  rR   ro  r  rD  s       rV   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&rX   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 )NrN  rO  )r   rE   rC   r  r   )r   r  r   r   rC   )r   r   rE   rC   r  r   )r   r   r   r  r   r   rC   )r5   r   rR   r0p0k0r1p1k1r2p2k2r3p3k3s                rV   test_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zeros]  s    ]M:
B-}=
B],<=
B02HI
BB#B#B#B#B#B#B#B#B#rX   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   rP  r  r  rH   Denominator `a` is zero.r$  )r5   r   r
   r   r`  r	   r   rX  s       rV   test_resiude_degeneratez4TestPartialFractionExpansion.test_resiude_degeneratem  s    1a&),1aA1v&ABx(QVVQ!Q-1aQVVQQVVQQVVQ]]:-GHAqM IHHs   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)rH   rF   rF   rI   )rH   y             r  rS  )y             @y      @      @y            ()r   rH   rH   rf   )rH   rI   rH   )rH   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿrD   r  gŏ1w@rH   r   )rH   ri  rF   rI   rC   r   r}   rT  )rD   ri  rC   rU  )rH   rQ  r  rD   )rI   r  r  r  g            ?rL  )rL  rC   r  r   )g
ףp=
?gQ?皙?)r  UUUUUUտro  rE  r  g
gUUUUUU@rR  rH   r  rH   rS  r   )rH   r   r  )rH   g      rh  )rH   rF   rI   rQ  r
  rF   r  r   irP  rJ   r.  )rH   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿrn  yjM?%uyjM?%u?)ySsA?ySsArB  y-?8gDio?y-?8gDio)r6   rB  r   r
   r   rr   polymulrX  s       rV   test_residuez_generalz2TestPartialFractionExpansion.test_residuez_general|  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rX   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 )NrN  rO  )rE   rC   r  r   r   )r  r   r   rC   r   )rE   rC   r  r   r   r   )r  r   r   rC   r   r   r   )r6   r   r[  s                rV   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#rX   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   rP  r  r  rH   rj  r$  z6First coefficient of determinant `a` must be non-zero.r  )r6   r   r
   r   r`  r	   r   rX  s       rV   test_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate  s    Aq69-1aA1v&ABx(QVVQ1a.1aQVVQQVVQQVVQ]]:-GHQN I ]]:"01 Q%1 1 IH1 1s   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  ri  )r   rH   rC   )rH   r   rJ   r   avgr  rH  r  r  r  rtyper)   r   r*   )	rR   ro  r  rD  
b_expected
a_expectedr|  rT   rS   s	            rV   *test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  sy    %
"
 IE!Q/DAqAz*Az*1a%0DAqAz*Az* IrX   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ȿrx  gll?r   r  r  ri  )r   r   rH   rC   )rx  gUUUUUUgUUUUUU?rC   )rH   r
  r  r   r   ry  r{  r{  r  r}  )
rR   ro  r  rD  r~  b_expected_zr  r|  rT   rS   s
             rV   ,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  s    -!
,&
HE!Q/DAqAz6Az*1a%0DAqA|%8Az* IrX   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*   rX  s       rV   test_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtype  sk    -]]:-EF1a(+ G]]:-EFAq!8, GF GFFFs   A2A>2A;>Bc                 l    dg}dg}dg}t        |||      \  }}t        |dg       t        |ddg       y )NrH   rI   r   rB  g       )r*   r   )rR   ro  r  rD  rT   rS   s         rV    test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bug  sC    CCCq!Q1C5!C;'rX   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 )NrH   r   rW  rI         ?      rH   r   rc   y      @      y      !      ?y      @      
@rH   y             y      ?       @y      ?      r  rW  r  rG   )rH                     ?       r  rJ   rH               rD   r   rI   r   r  rD   r  r   r   r   rC   rC   rC   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prH   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@r   rI   )rH   r   r  re   rp  )r)   r   rR   rT   rS   s      rV   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*rX   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 )NrH   r   r  r  r  r  r  rW  r  rG   )g      @r  r  y            rO   r  r  r  )rF   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr  r   rI   )r   rH   rQ  rI   rp  )r*   r   r  s      rV   test_invreszz)TestPartialFractionExpansion.test_invresz?  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*rX   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 )NrH   r   r   rI   )r)   r   r*   r  s      rV   test_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_argumentsW  s]    aA1A1v&A2w'q!Q1A2w'A2w'rX   N)r   )r   r   r   staticmethodrB  rF  rL  rY  rh  rk  rr  rt  rv  r  r  r  r  r  r  r  r   rX   rV   r:  r:  
  se    	D 	D?&.B'H$ O b$"&&+&+"-(+0+0(rX   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  ro  rB  r  r   rI   rr   r   r+   r
   r|  r   r  rR   eventsperiodtarg_strength
targ_phasestrengthphases          rV   test_single_1dperiodz'TestVectorstrength.test_single_1dperiodc  sm    2$
(8%X]]A&UZZ#Hm4E1ruu9z#9:rX   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  )rH   rI   ro  rB  rC   )r  r  r  rH   rI   )rr   r   r+   r
   r|  r   r   r  r  s          rV   test_single_2dperiodz'TestVectorstrength.test_single_2dperiodp  s|    2$qXXm,
(8%X]]A&UZZ#!(M:E1ruu9z#9:rX   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  rI   rB  rh  r   r  r  s          rV   test_equal_1dperiodz&TestVectorstrength.test_equal_1dperiod}  sm    89
(8%X]]A&UZZ#Hm4E1ruu9z#9:rX   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 )Nr  rH   rI   rB  r  rh  r  r  s          rV   test_equal_2dperiodz&TestVectorstrength.test_equal_2dperiod  s    89QqXXsDk*
(8%X]]A&UZZ#Hm4E1ruu9z#9:rX   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$@rH   rB  r  r   rI   r  r  s          rV   test_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiod  sm    34
(8%X]]A&UZZ#Hm4E1ruu9z#9:rX   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 )Nr  rH   r  rB  rI   r  r  r  r  s          rV   test_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod  s    34RqXXr2h'
(8%X]]A&UZZ#Hm4E1ruu9z#9:rX   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        ?rH   UUUUUU?r  r   rI   r  r  s          rV   test_partial_1dperiodz(TestVectorstrength.test_partial_1dperiod  sl    .)
(8%X]]A&UZZ#Hm4E1ruu9z#9:rX   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  )rB  rB  rB  rB  r  rD   )r  r  r  r  rH   rI   r  r  s          rV   test_partial_2dperiodz(TestVectorstrength.test_partial_2dperiod  s|    .)! 	AXX./
(8%X]]A&UZZ#Hm4E1ruu9z#9:rX   c                     t        j                  g d      }d}d}t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       y )Nr   r  r  r  rB  r   rr   r   r+   r
   r|  r   rR   r  r  r  r  r  s         rV   test_opposite_1dperiodz)TestVectorstrength.test_opposite_1dperiod  sQ    +,(8%X]]A&UZZ#Hm4rX   c                     t        j                  g d      }dgdz  }dgdz  }t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       y )Nr  rB  rJ   r  rH   r  r  s         rV   test_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiod  s]    +,r	(8%X]]A&UZZ#Hm4rX   c                 d    t        j                  ddgg      }d}t        t        t        ||       y )NrH   rI   rB  rr   r   r   r   r+   rR   r  r  s      rV   test_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueError  s)    Aq6(#j.&&ArX   c                 b    d}t        j                  dgg      }t        t        t        ||       y )NrB  rH   r  r  s      rV   test_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueError  s&    A3%j.&&ArX   c                 8    d}d}t        t        t        ||       y )NrB  r   r   r   r+   r  s      rV   test_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueError  s    j.&&ArX   c                 8    d}d}t        t        t        ||       y )NrB  r   r  r  s      rV   test_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueError  s    j.&&ArX   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rX   rV   r  r  a  sL    ;;;;;;;;	5	5B
B
B
BrX   r  c                     | j                   j                  dk(  rNt        j                  | j                  d         j                   }| j                  |      |j                  |      }} t        | |||       y)z1Wrap assert_allclose while casting object arrays.r7  r   N)r   r   rr   r   flatr   r   )actualdesiredr   r   r   s        rV   assert_allclose_castr    sY    ||CQ(.. --.u0EFGT40rX   r?  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)
NrH   rI   rC   r7  c              3   <   K   | ]  }t        |t                y wr  )r  r   ).0rg   s     rV   	<genexpr>z)test_nonnumeric_dtypes.<locals>.<genexpr>
  s     6v!z!W%vs   rB  zmust be at least 1-Dr$  rg   )r   rr   r   r   r   r#   rV  r   r.   allr   r-   r`  r	   r   )r?  rg   rT   rS   r  r  r   s          rV   test_nonnumeric_dtypesr    s7   	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 
A	@	@s   	FFfdFDc                   6    e Zd Zd Zd Zd Zd Zd Zd Z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   rE   rF   rH   r   r  rE  rF  rL  )rH   rH   r   r  r   )rH   rF   )rH   rI   rI   rI   rI   rI   rI   rI   )rr   r  r   r   r-   r   r.   rL  r'  rt  r   )rR   r  rg   rT   rS   rI  ra  rh   s           rV   
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4rX   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 )Nr\  r   rH   r   r  r]  r^  r   rb  rc  rd  re  r  )	rr   r  r3  rs   r   r   r.   r-   r   )	rR   r  rt  rg   rT   rS   r_  rf  rh   s	            rV   
test_rank2zTestSOSFilt.test_rank23  s    KK2775>A-rwwu~>FFuMHHRLHHaW$$R(HHc3Z ''+((Iy)YG!#% ((Iz=)+246 F1aL!!,!'1-F1aL!!,!'1-rX   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 )Nrt  r   rH   r   r  )rr   r  r3  rs   r   r   r.   r-   rt   rt  r   r#   )	rR   r  rt  rg   rT   rS   rh   ru   js	            rV   rI  zTestSOSFilt.test_rank3G  s    KK2775>A-rwwu~>FFuMHHaW$$R(HHc3Z ''+ F1aL!$qwwqz"A1771:&)!AqD'71a1a43IJ ' #rX   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 )NrI   r  lowr  r   r   rF   rR  r   r   r   r  rH   r   )r   rH   rH   r  )r   r&   rr   r   r   r_r   r  r   r#   rx  r  r.   r0   rL  rt  r   r   r  )rR   r  b1r&  b2r'  b3r(  rT   rS   ra  rg   y_truerS  r  rh   rW  zi_nds                     rV   test_initial_conditionsz#TestSOSFilt.test_initial_conditionsT  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0rX   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   rE   )rI   rP  rC   r   rF   r  rc  r  rH   rI   rl  r  r  r  r   )rr   r   r  r  r   r   r&   r(   rt  r  rx  r.   r'  r  r0   r'   r$   r   r#   )rR   r  rg   rc  ra  	nsectionsr  shpz0r  rW  rx  r  r$  r  rh   rS  rT   rS   y_tfs                       rV    test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1z  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=rX   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)rC   rP  rC   )rD   rF   )rD   rC   rC   rI   zshould be all onesr$  rH   )rS  r  rB  rC   zInvalid zi shape)rr   r=  rx  r`  r	   r   r.   )rR   r  rg   ra  rS  s        rV   test_bad_zi_shapezTestSOSFilt.test_bad_zi_shape  s     HHZ$hhvXXl#]]:-ABCr* CAqD	]]:-?@Cr* A@ CB A@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 )NrF   r  ra  r  r  rR  r  r  rC   r   r  )
r   r&   r0   r.   rr   rL  r  r3  r  r  )rR   r  ra  rS  rh   rW  ssr  s           rV   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%0rX   N)
r   r   r   r  r  rI  r  r  r  r  r   rX   rV   r  r    s(    52.(K$1L,>\
+1rX   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   rH   r   r   rH   rH   r   r   rI   rH   )	r   rI   rH   r   rI   rC   rH   r   r   )r   
deconvolver   )rR   originalimpulse_responserecorded	recovered	remainders         rV   rW   zTestDeconvolve.test_basic  s8    +q6.%00;KL	9	8,rX   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  rR   r  r  quotientr   s        rV   test_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signal  sR    FQF#q6]]:-BC"("3"3H>N"OHi DCC   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        rV   test_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisor  sR    q6FQF+]]:-CD"("3"3H>N"OHi EDDr  N)r   r   r   rW   r  r  r   rX   rV   r  r    s    -PPrX   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 )NrG   )r   r   r   )r3   r   r   )rR   	detrendeddetrended_exacts      rV   rW   zTestDetrend.test_basic  s%    E),-		*!)_=rX   c                 j    t        g d      }t        |d      }t        |d      }t        ||       y )N)rH   333333?rm  g?g333333@F)overwrite_dataT)r   r3   r   )rR   rg   
copy_arrayinplaces       rV   	test_copyzTestDetrend.test_copy  s/    )*Qu5
!D1!*g6rX   r   linearr
  r  r  c                     t        j                  d      j                  ddd      }t        |||      }|j                  |j                  k(  sJ y )N   rE   rF   r   )r?  r  )rr   r   rs   r3   rt  )rR   r  r   r  r  s        rV   ry  zTestDetrend.test_axis  sE     yy''1a0Dt$7	$**,,,rX   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  )rE   r   ri  rQ  r  rC   )r?  bpr   r{  r  rH   )r?  r  r  )r3   r   rr   r<  r   r   )rR   r  r  s      rV   test_bpzTestDetrend.test_bp  s    ?*DxA6		151 zz$a.DxAA>		151 :&DxA. '&&s   /BBr  r   rI   c                     t         j                  j                  d      }|j                  d      }t	        ||      }t        j
                  g d      }t        ||d       y )Ni90  rJ   )r  )
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿr{  r  )rr   r   r  r  r3   r   r   )rR   r  r  rg   rF  res_scipy_191s         rV   test_detrend_array_bpz!TestDetrend.test_detrend_array_bp  sV     ii##E*HHRL aB "O P 	]7rX   N)r   r   r   rW   r  r`  ra  rb  ry  r  rr   r   r  r   rX   rV   r
  r
    s    >
7 [[Vh
%;<[[VY/- 0 =-
/ [[THBHHaV$4q!f#=>8 ?8rX   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)rF  rE  r  r  r  rP  r  r4   r   r
   rr   rL  r   rR   r  rJ  rK  s       rV   test_real_no_repeatz#TestUniqueRoots.test_real_no_repeat  s7    (+AFAr2\2773q6?3rX   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)rF  ffffff{Gz皙r  rB  ?r  rH  tolr|  )rF  r%  r  rB  rP  r  rI   rI   rH   rI   r  )r$  r&  r  r'  rz  )g333333g
ףp=
r  gffffff?r4   r   r
   r!  s       rV   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\<0rX   c                     g d}t        |      \  }}t        ||d       t        |t        j                  t        |                   y )N)rF  r         ?      ?r  rh  rP  r  r   r!  s       rV   test_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeat#  s7    =+AFAr2\2773q6?3rX   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)rF        𿚙?ffffff333333?333333?r  r.  ??r  rH  r(  )rF  r2  r  r4  rP  r  r*  r  )r1  r3  r  r.  rz  )y      𿚙?y333333?r  yffffff??r+  r!  s       rV   test_complex_repeatz#TestUniqueRoots.test_complex_repeat)  s    '  ,A4uEF$L$&	(\<0+A4uEFJ$&	( 	\<0+A4uEH	 	\<0rX   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 )NrE   )yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?r   r  )rI   rI   rI   rI   )rr   r  r   rL  r4   sortr   r
   )rR   r  
true_rootsrJ  rK  s        rV   test_gh_4915zTestUniqueRoots.test_gh_4915>  si    HHR[[RWWQZ89K
+ABGGFOZC\<0rX   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)rB  r   rB  rB  r   rP  r  rI   rH   )rH   g_p   ?&.>      ?r  )r)  r;  r+  rI  s      rV   test_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extraH  sa    +,<=FS$K<\Aq6*+,D#NFS+$6C\Aq6*rX   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   rI   rP  r  )rr   r   r  r4   r   rH  r
   r!  s       rV   test_single_unique_rootz'TestUniqueRoots.test_single_unique_rootQ  s^    IINN3"ryy~~c':"::+Aq1FRVVAYK<\C5)rX   N)
r   r   r   r"  r,  r/  r5  r9  r<  r>  r   rX   rV   r  r    s%    4141*1+*rX   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   rr   	scipy.fftr   rT  r   scipy.optimizer   r   scipyr   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   scipy.signal.windowsr7   scipy.signal._signaltoolsr8   r9   r:   scipy.signal._upfirdnr;   
scipy._libr<   scipy._lib._utilr=   r>   r?   rA   r   r  rd  r  r  r  r  r  r  r8  rK  r  r  r  r  r,  r1  r  r  r  r  r  r  r  r  r  r  ra  rb  r  r  r  r  r  r   r   rH  r  r  r/  csingler3  rI  r1  rN  rV  r^  r  r  r  	fail_slowr  r  r  r"  r5  r:  r  r  r  r  r  r
  r  r   rX   rV   <module>rO     s.   
 ?     *  
     % 6         &4 4 0 ! > >eO eOPm4= m4`L LD?"_ ?"DiL iLV3

C
E! E!PM" M"`- -DL L C > !K6 K6\* *>& &M! M!`/ / $5  1 !2 &7 / . 
FK
 "''299bhh ('2<< "

BJJ ' ) *w" w"	*w"t*= *=Z !:;D%=1'KL0 M 2 <02 

BJJGH\= \= I\=~$= $=ND D2]% ]%@Nl N)X4@ qD D> q@ @>q" q"hYE YExF F.k( k(\RB RBj1 '7!34 5. v&j1 j1 'j1ZP P./8 /8dH* H*rX   