
    xf'                       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  G d d      ZL G d deL      ZM G d d      ZN G d deN      ZO G d d      ZPd ZQd ZRd ZSd ZT G d  d!      ZU G d" d#      ZV G d$ d%      ZW G d& d'      ZXg d(ZYeYeIz  ZY G d) d*      ZZ G d+ d,      Z[ G d- d.      Z\ G d/ d0      Z] G d1 d2e]      Z^ G d3 d4e]      Z_ G d5 d6e]      Z` G d7 d8e]      Za G d9 d:e]      Zb G d; d<e]      Zc G d= d>e]      Zd G d? d@e]      ZedA ZfdB Zge
j                  j                  dCej                  ej                  ej                  ej                  ej                  eoej                  ej                  ej                  ej                  ej                  eg       G dD dE             Zt G dF dG      Zue
j                  j                  dHg dI      e
j                  j                  dJdKdLg      e
j                  j                  dMg dN      dO                      Zve
j                  j                  dCej                  ej                  ej                  g       G dP dQ             Zz G dR dS      Z{ G dT dU      Z| G dV dW      Z} G dX dYe}      Z~dZ Zdud[Zd\ Zd] Z G d^ d_      Z G d` da      Z G db dc      Z G dd de      Z G df dg      Zdh ZdvdiZe
j                  j                  dje9e.f      dk        Ze
j                  j                  dCdl       G dm dn             Z G do dp      Z G dq dr      Z G ds dt      Zy)w    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)
_testutilsc                   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)            rB   rA         r@   )r@   
             rJ         r   r   r   selfabcs       E/usr/lib/python3/dist-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r@   rA   rB   )rE   rF   r@   rA   samemode)rG   rH   "   rM   rN   s       rS   	test_samez_TestConvolve.test_same,   s)    Q'1eL12rU   c                 ^    g d}g d}t        ||d      }t        |t        g d             y )NrW   rD   rX   rY   )rG   rH   rH   rM   rN   s       rS   test_same_eqz_TestConvolve.test_same_eq2   s)    Q'1eL12rU   c                 ~    t        g d      }t        ddg      }t        ||      }t        |t        g d             y )N)      ?      ?       @      ?      @      ?r`   ra   )               @y       @      @y      @       @y      @      @)r   r   r   )rO   xyzs       rS   test_complexz_TestConvolve.test_complex8   s7    *+66"#QN1e$@ABrU   c                 B    d}d}t        ||      }t        |||z         y )Ni	  i  )r   r
   rN   s       rS   test_zero_rankz_TestConvolve.test_zero_rank>   s%    QNQArU   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   r@   rE   directmethodr   )npr   reshaperanger   r   )rO   rP   rQ   ib_shaperd   re   s          rS   test_broadcastablez _TestConvolve.test_broadcastableD   s    IIbM!!!Q*IIaLq 	"Ac!eGGAJAIIg.x@AAIIg.u=AAq!	"rU   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y Nig  iP  )r   r   r
   rN   s       rS   test_single_elementz!_TestConvolve.test_single_elementN   s1    4&M4&MQNQArU   c                 |    g dg dg}g dg dg}t        ||      }t        g dg dg dg      }t        ||       y NrD   rW   rF   r@   rA   rA   rB   rC   )rF            rL   )rG      >   :   &   )rL      r   1   r   r   r   r   rO   rP   rQ   rR   ds        rS   test_2d_arraysz_TestConvolve.test_2d_arraysT   sE    	"	"QN%'') * 	1a rU   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   rF                 ?rk   r@   )                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@fullrX   rE   r   valid)r   rp   r   r   r   )rO   smallbig	out_arrays       rS   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	5rU   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 NrW   rD   spamrY   eggsr   rZ   rn   hamrl   r   baconrX   assert_raises
ValueErrorr   rO   rP   rQ   s      rS   test_invalid_paramsz!_TestConvolve.test_invalid_params   sd    j(Aqv>j(AqveLj(AquXNj(AqvgNj(AqvgNrU   N)__name__
__module____qualname__rT   r\   r^   rg   ri   rt   rw   r   r   r    rU   rS   r>   r>   $   s8    F33C"!#5JOrU   r>   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)rE   rF   r@   rC   rB   r@   )	rF   r@   rA   rB   r@   rA   rF   rF   rE   )F   N   I   A   r   )y      ?      @       @      y      @               @            ?        y       @      $)r   r   rO   rP   rQ   expectedouts        rS   test_valid_mode2zTestConvolve.test_valid_mode2   s    '#q!W%3)q!W%3)$VG$q!W%3)q!W%3)rU   c                 `    g d}g d}t        ||d      }t        g d      }t        ||       y )N)rE   rF   r@   r@   rE   rF   )rE   rA   r@   rA   rB   rC   r|   rA   r@   rF   rE   rE   r@   rX   )9   =   ?   r   -   $   r   r   s        rS   test_same_modezTestConvolve.test_same_mode   s/    3Q6"*+1a rU   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 	NrE   r|   rF   r@   r   r@   rF   rZ   r   )ro   r   rp   r   r   r   r   s      rS   test_invalid_shapesz TestConvolve.test_invalid_shapes   ss     IIaO##F+IIb!$$V,j(IaVI7HIj(IaVI7HIrU   c                    t        t        j                  j                         D cg c]  \  }}|	 c}}g       }|D ch c]!  }t        j                  |      j
                  # }}dD ]  }||v s|j                  |        |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 c c}w c c}w )N)

complex256
complex192float128float96strvoidbytesobjectunicodestring)r   r   rX   *   r   rE   size)rr   frr   rQ   ur                 ?rR   )r   rl   )rn   rZ   r   rl   bool>   float32	complex64-C6?gư>rtolatolfloat16MbP?h㈵>:0yE>)sumro   sctypesitemsdtypenameremoverandomseedchoicerandnkindastyper   r
   r    anyr   )rO   n_ttypesr   t1t2rZ   argsarray_typesx1x2keyresultskwargss                   rS   test_convolve_methodz!TestConvolve.test_convolve_method   s   2::#3#3#5641aQ6;+01a!!!11M 	$E~U#	$
 */ F F2 F2+DF#' R F F F F
 			rII,,aV!,<IIOOA.0.9#.>>C;s+&s+d;s3C.CCC  	ILBDRXXb\../66r:BRXXb\../66r:B #45 HRCdCC 5G 5 --wx/@/F/FG|"/B7B B8DaA11DE"($7r2h&"&5 #'5GENGH,=HH1	I+ 71F5 Es   I
 &IIII
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)	rG      2   3   4   5   6   <   r   rF   r   r   rm   rl   r   )ro   r   int64r   r
   )rO   r   rf   r   rl   s        rS    test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_input   s     6 
	/A!Q$rxx0A1a.Ca84F 2vS&)S!ac(+VQ1X.
	/rU   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 NrE   rF   rl   rm   r   r@   r   rO   s    rS   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3rU   N)d   )	r   r   r   r   r   r   r   r   r  r   rU   rS   r   r      s#    *,!
J.I`/4rU   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 ry   r   r   r   )rO   rP   rQ   r   es        rS   r   z_TestConvolve2d.test_2d_arrays  sF    	"	"%'') * q!1a rU   c                     g dg dg}g dg dg}t        g dg      }t        ||d      }t        ||       t        ||d      }t        ||       y )NrF   r@   rA   rB   rC   r|   r   rA   rB   rC   r|   r   	   rG   rD   rW   r   P   b   t      r   r	  rO   r
  r   hgs        rS   test_valid_modez_TestConvolve2d.test_valid_mode  sW    "$:;	")*+q!W%1a  q!W%1a rU   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  rD   rW   r   r   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@r   )ro   r   complexr   r   r   r  s        rS   test_valid_mode_complxz&_TestConvolve2d.test_valid_mode_complx  sg    "$:;HHi+7;b@GHIq!W%!!Q' q!W%1a rU   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 )NrD   rW   rz   r{   rE   r   fill)      r   r[   rJ   )rI   (   r   @   r   )rJ   .   C   r   0   r   r   r   )rO   rP   rQ   fillvalrR   r   s         rS   test_fillvaluez_TestConvolve2d.test_fillvalue#  sQ    	"	"q!VVW5''') * 	1a rU   c                    d}t         j                  j                         5 }|j                  t         j                  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matchrE   rF   r   	fillvaluez,`fillvalue` must be scalar or an array with )ro   testingr   filterComplexWarningr   r   r   )rO   msgsups      rS   test_fillvalue_errorsz%_TestConvolve2d.test_fillvalue_errors-  s    BZZ))+ 	:sJJr((*BCz5 :QC5Aq6(b9:	:
 =:S1 	:u1vh1a&9	: 	:	: :	: 	:	: 	:s/   2B5B)'B5
C)B2	.B55B>C
c                 >    t        t        t        dggddggg        y )NrE   rF   r*  r   r   r   r  s    rS   test_fillvalue_emptyz$_TestConvolve2d.test_fillvalue_empty8  s    j*seq!fX "	$rU   c                     g dg dg}g dg dg}t        ||dd      }t        g dg dg dg      }t        ||       y )	NrD   rW   rz   r{   r   wrap)r  r  J   r  r  )D   r8  r   r8  r8  r$  r   s        rS   test_wrap_boundaryz"_TestConvolve2d.test_wrap_boundary=  sJ    	"	"q!VV,''') * 	1a rU   c                     g dg dg}g dg dg}t        ||dd      }t        g dg dg d	g      }t        ||       y )
NrD   rW   rz   r{   r   symm)r[   r   ,   r   B   )r   r#  r   r  T   )R   r   \   n   r   r$  r   s        rS   test_sym_boundaryz!_TestConvolve2d.test_sym_boundaryF  sJ    	"	"q!VV,'')+ , 	1a rU   funczboundary, expectedr;  )g     B@      E@      F@g     F@r6  )     E@rF  rE       C@c                     t        j                  g dg      }t        j                  d      } |||d|      }t        ||       y )N)       @            @      @)rE      rX   rZ   boundary)ro   r   onesr   )rO   rD  rP  r   imagekernelresults          rS   test_same_with_boundaryz'_TestConvolve2d.test_same_with_boundaryO  s@     /01!eV&8D 	68,rU   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   rE   r   r   rG   r@   e   rX   r6  rO  )r   r   )rZ   origin)	scipy.ndimagendimagero   r   floatrp   r   r   r   )rO   ndirP   rQ   rR   s        rS   test_boundary_extension_samez,_TestConvolve2d.test_boundary_extension_same`  sp     	$IIau-55b!<IIa.66r2>q!&6:1cll1afXlNOrU   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   rE   rG   r   r@   %   rC   r   r6  rO  )r@   r@   r`  rY   r   )
rY  rZ  ro   r   r[  rp   r   padr   r   )rO   r\  rP   rQ   rR   apads         rS   test_boundary_extension_fullz,_TestConvolve2d.test_boundary_extension_fullj  s     	$IIae,44Q:IIae,44Q:q!&6:vva)621cll4l@"crcJKrU   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   )ro   r   rp   r   r   r   r   s      rS   r   z#_TestConvolve2d.test_invalid_shapesu  ss     IIaO##F+IIb!$$V,j*K1vK&'9JKj*K1vK&'9JKrU   N)r   r   r   r   r  r  r&  r1  r4  r9  rC  pytestmarkparametrizer   r   rU  r]  rc  r   r   rU   rS   r  r     s    !
!
!!	:$
!! [[Vj+%>?[[1%(@'AB%(@'ABDE-E @-P	L
LrU   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 )NrD   rW   r  r  rX   )rH   rI   r[   )r  r  r  r$  )rO   r
  r   r  r  s        rS   r   zTestConvolve2d.test_same_mode  sC    	""$:;q!V$< " #1a rU   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 )NrD   rW   r  r  r  r   r`   r   rb         @        )r         @       @rl  )rl  y      @      ?y      @      y      ;@      y      G@       @)r   r   )rO   r
  r   r   r   s        rS   r   zTestConvolve2d.test_valid_mode2  s    	""$:;*+Aw'3)Aw'3)f/0%'?@h'(Aw'3) Aw'3)rU   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 )NrB   g	@gffffff?r@   r   r   rX   rY   )ro   r   r   r   r   r   squeezer   rO   rP   rQ   rZ   s       rS   test_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcs  s    IIaLHH]#- 	2DAqt < &14 @B

!!1#s6!81402	2rU   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 )Nr@   rA   r3  r  s    rS   test_invalid_dimsz TestConvolve2d.test_invalid_dims  s<    j*a3j*qcA37j*ug!w?rU   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          rF     g    .Ar   rE   )iH  r   )shapestridesr   )ro   r   itemsizer<   check_free_memoryzeroslibstride_tricks
as_stridedr   r   wherer   )rO   r   rP   countfailss        rS   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}}!!!rU   N)r   r   r   r   r   rs  ru  re  rf  slowxfail_on_32bitr  r   rU   rS   ri  ri    sN    !*.	2@
 [[[[ CD" E "rU   ri  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 )NrD   rE   rA   rG   rL         "@r  r  r   r   r   rO   r  rP   r   r   s        rS   	test_realzTestFFTConvolve.test_real  sB    )+,2:a#Ca.C!#x0rU   rE   c                     t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        |||      }t	        ||       y )NrD   r  rF   rE   r  r   ro   tiler   r   r  s        rS   test_real_axeszTestFFTConvolve.test_real_axes  sW    )+,GGA1v778aV,!QT*!#x0rU   c                     t        g d      }t        g d      }|dk(  rt        ||      }nt        |||      }t        ||       y )Nr`          @       @y      @      @rc   y               @y              4@y              8@y              2@r  r  r  r  s        rS   rg   zTestFFTConvolve.test_complex  sC    *+DE2:a#Ca.C!#x0rU   c                     t        g d      }t        g d      }t        j                  |ddg      }t        j                  |ddg      }t        |||      }t	        ||       y )Nr  r  rF   rE   r  r  r  s        rS   test_complex_axesz!TestFFTConvolve.test_complex_axes  sX    *+DEGGA1v778aV,!QT*!#x0rU   c                     t        g dg dg      }t        g dg dg dg      }|dk(  rt        ||      }nt        |||      }t        ||       y )NrD   r{   rE   rA   rG   rL   r  r   r  8   r   r   r}   r  r   r   r   r  r  r  r  s        rS   test_2d_real_samez!TestFFTConvolve.test_2d_real_same  s]     9 +-.0 1 2:a#Ca.C!#x0rU   rF   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 )NrD   r{   r  r  r  rF   rE   rE   r  r  r  s        rS   test_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axes
  sj     9 +-.0 1 GGAy!778Y/!QT*!#x0rU   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      @      @ra   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        rS   test_2d_complex_samez$TestFFTConvolve.test_2d_complex_same  s^     ++- .A(<  2:a#Ca.C!#x0rU   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        rS   test_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axes9  sk     ++- .A(<  GGAy!778Y/!QT*!#x0rU   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 )NrD   	r@   r@   rB   rC   r   r|   r  r   rE        A@     D@     G@	r  g      4@      9@r  r  r  rH  g      <@rJ  r  rX   r  r  rO   r  rP   rQ   
expected_1
expected_2r   s          rS   test_real_same_modez#TestFFTConvolve.test_real_same_modeP  s    )-.?+
FG
2:aF+CaF6C!#z22:aF+CaF6C!#z2rU   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 )	NrD   r  r  r  rF   rE   rX   r  r  r  s          rS   test_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axesc  s    )-.?+
FG
GGA1vGGA1vWWZ!Q0
WWZ!Q0
!QT2!#z2!QT2!#z2rU   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r@   rF   rE   r  g      8@g      ?@r  rG  g     H@r        (@r  r   r  r  rO   r  rP   rQ   r   r   s         rS   test_valid_mode_realz$TestFFTConvolve.test_valid_mode_realu  s     )-.<=2:aG,CaG$7C!#x02:aG,CaG$7C!#x0rU   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  rF   rE   r   r  r  r  s         rS   test_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axes  sz     )-.<=GGA1vGGA1v778aV,!Qd3!#x0rU   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   rm  y      @      y      @        y      @      y       @        y     F@      (@y      >@      7@y      H@      @@r  r   r  r  r  s         rS   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0rU   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  rF   rE   r   r  r  r  s         rS   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0rU   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        rS   test_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes  sx    )-.<=GGA1vGGA1v778aV,!Qa0!#x0rU   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   rB   rC   r|   )r   r   r   r  s    rS   
test_emptyzTestFFTConvolve.test_empty  sV    B#((A-.QFB',,12B$))Q./rU   c                 f    t        d      }t        d      }t        ||      }t        |||z         y rv   r   r   r
   rO   rP   rQ   r   s       rS   ri   zTestFFTConvolve.test_zero_rank  s.    $K$K!QS!a% rU   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y rv   r  r  s       rS   rw   z#TestFFTConvolve.test_single_element  s2    4&M4&M!QS!a% rU   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   )ro   r   r   randr   r   r   allcloser  s         rS   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7rU   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   rF   rE   r  r  r  )	ro   r   r   r  r   r  r   r   r  r  s         rS   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7rU   rA   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)){   rH   )      r  r   r   r   rF   rE   rA   )rF   rE   r@   rE   rE   )rF   rE   rE   rA   rE   )rF   rE   r@   rA   rE   r  r  r   )
ro   r   r   r  r   moveaxisswapaxesr  r   r   )rO   r  a_shapers   rP   rQ   r   r   s           rS   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>rU   r   r  rw  i  r  rx  '  rB   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  )ro   r   r  r   r   r   )rO   r   rP   rQ   r   r   s         rS   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2rU   c                 z   d}t         j                  j                  d      }|j                  |      }t         j                  t         j
                  fD ]Z  }||d<   t        j                  dd      }t        j                  t        d      5  t        j                  ||dd	
       d d d        \ y # 1 sw Y   gxY w)Nrw  l   [<zn( r     皙?zUse of fft convolutionr(  rX   r   r   )ro   r   default_rngstandard_normalnaninfr   firwinre  warnsRuntimeWarningr   )rO   r   rngsig_nanvalcoeffss         rS   test_fft_nanzTestFFTConvolve.test_fft_nan"  s    ii##K0%%a(FFBFF# 	LCGCL]]3,Fn4LM LfUKL L		LL Ls   B11B:	)%r   r   r   re  rf  rg  r  r  rg   r  r  r  r  r  r  r  r  r  r  r  r  r  ri   rw   r  r  r  r  listrq   ro   r   RandomStaterandinttolistr  r  r   rU   rS   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rU   r  c                      t        d      )NzFell back to fftconvolve)RuntimeError)r   r   s     rS   fftconvolve_errr  .  s    
1
22rU   c                 t    t        | d      D cg c]  \  }}t        ||z
        dkD  r||f c}}S c c}}w )NrF   repeatr@   )r   abssizesrP   rQ   s      rS   gen_oa_shapesr  2  s?    &uQ7 tq!1q5zA~ F   s   4c                 8   t        |       }t        |       }t        ||      D cg c]
  \  }}||z    }}}g d}t        ||      D cg c]<  \  }}|dk7  s,|d   |d   kD  r|d   |d   kD  s|d   |d   k  r|d   |d   k  r||fz   > c}}S c c}}w c c}}w )Nrp  r   r   rE   rF   r@   )r  zipr   )	r  shapes0shapes1ishapes0ishapes1shapesmodesishapesimodes	            rS   gen_oa_shapes_2dr  7  s    E"GE"G'7#%$6Hhhx %F % &E3:653I C%QZ'!*$gaj)@QZ'!*$gaj)@ UH C C	%Cs   BABc                 \    t        | d      D cg c]  \  }}||k\  r||f c}}S c c}}w )NrF   r  r   r  s      rS   gen_oa_shapes_eqr  D  s7    &uQ7 tq!Av F   s   (c                   X   e Zd Zej                  j                         ej                  j                  d e e e	d             e e	ddd            z               d               Z
ej                  j                  d eg d            ej                  j                  ddd	g      ej                  j                  d
g d      d                      Zej                  j                  dddg      ej                  j                  d eg d            ej                  j                  dddg      ej                  j                  dddg      ej                  j                  ddd	g      ej                  j                  d
g d      d                                           Zej                  j                  d eg d            ej                  j                  ddd	g      d               Zej                  j                  dddgddgddgg      ej                  j                  d eg d            ej                  j                  dddg      ej                  j                  dddg      ej                  j                  ddd	g      d                                    Zd Zd Zd Zy)TestOAConvolvezshape_a_0, shape_b_0r  rw  rK   c                     t         j                  j                  |      }t         j                  j                  |      }t        ||      }t	        ||      }t        ||       y N)ro   r   r  r   r   r   )rO   	shape_a_0	shape_b_0rP   rQ   r   r   s          rS   test_real_manylensz!TestOAConvolve.test_real_manylensJ  sJ     IINN9%IINN9%q!$A!#x0rU   )r   /   rC   rA   rE   
is_complexTFrZ   rp  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   rY   r   
ro   r   r  r   setattrr   _signaltoolsr  r   r   )
rO   r  r   r#  rZ   monkeypatchrP   rQ   r   r   s
             rS   test_1d_noaxeszTestOAConvolve.test_1d_noaxesX  s     IINN9%IINN9%Bryy~~i000ABryy~~i000Aq!$/F//+	-AD)!#x0rU   r  r   rE   )r   r"  rC   rA   shape_a_extrar@   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 )NrF   r   rZ   r  r   r&  )rO   r  r  r   r+  r,  r#  rZ   r)  ax_aax_brP   rQ   r   r   s                  rS   test_1d_axeszTestOAConvolve.test_1d_axesl  s     q q T
T
IINND!IINND!Bryy~~t,,,ABryy~~t,,,Aq!$T:F//+	-ADt4!#x0rU   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&  )rO   r  r   	shape_a_1	shape_b_1rZ   r#  r)  rP   rQ   r   r   s               rS   test_2d_noaxeszTestOAConvolve.test_2d_noaxes  s     IINN9i0IINN9i0Bryy~~i;;;ABryy~~i;;;Aq!$/F//+	-AD)!#x0rU   rF   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 )Nr@   r   rE   r   r.  r   r&  )rO   r  r  r   r3  r4  rZ   r+  r,  r#  r)  r/  r0  rP   rQ   r   r   s                    rS   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0rU   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    rS   r  zTestOAConvolve.test_empty  sV    
2r"''1,-
Aq62&++q01
2s#((A-.rU   c                 f    t        d      }t        d      }t        ||      }t        |||z         y rv   r   r   r
   r  s       rS   ri   zTestOAConvolve.test_zero_rank  s.    $K$KAS!a% rU   c                 j    t        dg      }t        dg      }t        ||      }t        |||z         y rv   r:  r  s       rS   rw   z"TestOAConvolve.test_single_element  s2    4&M4&MAS!a% rU   N)r   r   r   re  rf  r  rg  r  r   rq   r!  r  r*  r1  r  r5  r7  r  ri   rw   r   rU   rS   r  r  I  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/!!rU   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)NrE   r|   r   r   r   r   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr(  r   rY   )ro   r   rp   r   r   rO   r>  rP   rQ   s       rS   r   z(TestAllFreqConvolves.test_invalid_shapes  sm     IIaO##F+IIb!$$V,:"FG 	- AG,	- 	- 	-s   A11A:c                     t        j                  g d      }t        j                  g d      }t        t        d      5   |||ddg       d d d        y # 1 sw Y   y xY w)N)rB   rC   rF   rE   )rB   rC   r@   rE   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r(  r   rE   r  )ro   r}  r   r   r@  s       rS   test_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axes  sV     HH\"HH\":"67 	, AQF+		, 	, 	,s    AA za,brE   rF   r@   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   )rO   rP   rQ   r>  s       rS   r  z)TestAllFreqConvolves.test_mismatched_dims  s4     :"-. 	 A	 	 	s   
%.c                    t        t        d      5   |dgdgd       d d d        t        t        d      5   |dgdgg        d d d        t        t        d	      5   |dgdgddgd
dgg       d d d        t        t        d	      5   |dgdgg d       d d d        t        t        d      5   |dgdgdg       d d d        t        t        d      5   |dgdgdg       d d d        t        t        d      5   |dgdgddg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nz4acceptable mode flags are 'valid', 'same', or 'full'r(  rE   rF   chipsrY   z#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersr@   rA   )      ?rJ  rL  rM  z$axes exceeds dimensionality of inputr  zall axes must be uniquer   rD  )rO   r>  s     rS   test_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags  s    :"01 	1 !qc0	1
 :!FH 	,!qc+	, : .2 3 	:!qc!Q!Q(89	: : .2 3 	:!qc(89	: :!GI 	-!qc,	- :!GI 	.!qc-	. :!:< 	0!qcA/	0 	03	1 	1
	, 	,	: 	:	: 	:	- 	-	. 	.	0 	0sR   DD, D8E6EEE(D),D58EEEE%(E1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)rk   rk   )rA   rA   y        ?rl   rm   )ro   r   r   iscomplexobjr   r   r   r   )rO   r   rd   re   ress        rS   test_longdtype_inputz)TestAllFreqConvolves.test_longdtype_input  s    IIX&--e4IIV$++E2??57#HAHA!QXa8<=yyE!!!rU   N)r   r   r   re  rf  rg  r   r   r   rB  r  rH  ro   	longfloatlongcomplexrL  r   rU   rS   r=  r=    s&   [[^):68-8- [[^):68,8, [[U !sAh 1#h !saSEl,- [[^):688	- [[^):68080< [[Wr||R^^&DE	" F	"rU   r=  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
j                  ee
j"                  e
j"                  e
j$                  e
j&                  g
      d        Zd Zej                  j                  de
j,                  e
j.                  e
j0                  e
j2                  e
j4                  g      d        Z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@     rk   r   r!  )
r   r   r   r   r   r   H   M   r8  r=  )
r   r   r   r   r   r!  r"     r   rS  )
r   r   r   r   r   r         _   #   )
r   r   r   r   r   r!  r[   r  rN  r=  )
r   a   rI   r8  r   rS  r   r   G   r   )
r   r   r<  rV  r8  rJ   rT  r8  r  r>  )
r@   !   r   r"  rE   r   r7  7   rL   S   )
r|   r  r!  r   r   r"  r  +   r   r  )
rJ   r   X   r|   '   rA   r@  r   r   r   )
r   r   r   r   r   rU  rU  rQ  rk   r   )
r   r   r   r   r   r   rT  rN  rV  r   )
r   r   r   r   r   r"  r[   r[   r!  rX  )
r   r   r   r   r   r   r   r"  r   r   )
r   r   r   r   r   r   r!  r\  r   rX  )
r[  r   r   r   r   r"  r!  r^  r\  r  )
rJ   r   r   r   r   r"  r!  r   r\  r  )
r|   r!  r   r   r"  r!  r!  r^  r   rN  )
r   rJ   r[  r`  rJ   rJ   r^  r^  r^  r   )
r   r|   r  r|   rA   rA   rT  rT  r  r   r|   r@   c                     t        j                  | j                  | j                        }t        j                  t        j                  | j                  t              | j                        }t        || j                         t        ||       y r  )
r   medfiltINKERNEL_SIZE	medfilt2dro   r   r[  r   OUT)rO   r   r
  s      rS   rT   zTestMedFilt.test_basic;  s[    NN477D$4$45RXXdggu5t7G7GH1dhh'1a rU   r   c                     t        j                  | j                  |      }t        t	        j
                  |      j                  |       t        t	        j                  |      j                  |       y )Nr   )ro   r   rc  r
   r   rb  r   re  rO   r   in_typeds      rS   
test_typeszTestMedFilt.test_typesA  sL    
 88DGG51V^^H-33U;V%%h/55u=rU   c                    t         j                  }t        j                  | j                  |      }d}t	        j
                  |      5  t        t        j                  |      j                  |       d d d        t	        j
                  |      5  t        t        j                  |      j                  |       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)Nr   "Using medfilt with arrays of dtyper(  )ro   
longdoubler   rc  re  deprecated_callr
   r   rb  r   re  )rO   r   ri  r/  s       rS   test_types_deprecatedz!TestMedFilt.test_types_deprecatedJ  s    88DGG512###. 	@177?	@###. 	B))(3995A	B 	B	@ 	@	B 	Bs   
*C*CCCc                 Z   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)Nr   znot supportedr(  )	ro   r   rc  re  r	   r   r   rb  re  rh  s      rS   test_invalid_dtypeszTestMedFilt.test_invalid_dtypesT  s     88DGG51]]:_= 	%NN8$	% ]]:_= 	'X&	' 	'	% 	%	' 	's   B6B!B!B*c                 D   t        j                  t              5  t        t        t
        j                  d        d d d        t        j                  dt        j                        }|dd }d|_
        t        t        j                  |d      dk(         y # 1 sw Y   ]xY w)NrG   r   rB   rC   r}   rE         @)re  r  UserWarningr   	TypeErrorr   rb  ro   r   float64rz  r   )rO   dummyrP   s      rS   	test_nonezTestMedFilt.test_none^  ss    \\+& 	;)V^^T:	;
 		"BJJ/!AJ	q!$*+	; 	;s    BBc                    t        d      }t        j                  ||gt              }t	        t
        d      rdt        j                  |      z  }nd}t        j                  t              5  t        |      D ]  }t        j                  |        	 d d d        t	        t
        d      r!t        t        j                  |      |k         t        |||g       y # 1 sw Y   IxY w)Nr  r   getrefcountrF   rG   )r   ro   r   r   hasattrsysrz  re  r  rt  rq   r   rb  r   r
   )rO   rP   rd   r   js        rS   test_refcountingzTestMedFilt.test_refcountingj  s    CLHHaV6*3&COOA&&AA\\+& 	"1X "q!"	" 3&COOA&*+QA	" 	"s   -&CC%c                 F   d}t        j                  |      5  t        j                  | j                  t
              }t        j                  | j                  t
              }t        t        j                  || j                        |       d d d        y # 1 sw Y   y xY w)Nrl  r(  r   )re  rn  ro   r   rc  r   rf  r   r   rb  rd  )rO   r/  	in_object
out_objects       rS   test_objectzTestMedFilt.test_objectz  sp    2###. 	+7I$((&9Jv~~i9I9IJ)+	+ 	+ 	+s   A5BB 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   rF   rE   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   re  rd  )chunkMNMinMselMoutNinNselNout
chunk_datamedM1N1ri  offMoffNrO   s              rS   applyz2TestMedFilt.test_medfilt2d_parallel.<locals>.apply  s     DAqAvArDy)QQ|BIt,T4(RAvArDy)QQ|BIt,T4(R "#s(+J"":t/?/?@CtTz?D$..rU   rA   )max_workers>   rE   r   r   r   r   rE   rE   rE   )ro   r   rc  rf  ry  rd  
zeros_liker   submitr   rT  r   )rO   r   r   r  outputpoolchunksr  futuresfuturedataMsliceNslicer  r  ri  r  r  s   `            @@@@@rS   test_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallel  sC   88DGG5188DHHE2 ~~///
 ^^A!#^^A!#"a'!+"a'!+	/ 	/8 x(A. 	.$5F>DEUt{{5%0EGE 'w/ .'-}}$ff)-vv~&.	. 	68, F	. 	.s   	E&E?-EEEN) r   r   r   rc  rf  rd  rT   re  rf  rg  ro   ubytebyteushortshortuintint	ulonglongr   rv  rj  ro  bool_cfloatcdoubleclongdoubler   rq  rx  r~  r  r  r   rU   rS   rP  rP  !  s^   
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')wwR\\2<<')zz2::'? @>@>B [[WrxxBJJ')~~rzz'D E'E'
,  + [[WrxxRZZ&HI5- J5-rU   rP  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)rB   rC   rA   r@   )r@   rB   rC   rF   )rF   r@   rB   rC   )rE   rC   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@_)@rC   decimalr@   )mysize)r   r   r   wiener)rO   r  r  s      rS   rT   zTestWiener.test_basic  sn    <! #&' ILLMO P 	"&--"2AqA!&--!"<aKrU   Nr   r   r   rT   r   rU   rS   r  r    s    
LrU   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yorE   r   rF   r  padtyper  rG   )r  cval)rF   rE   r   axisr  )r  )ro   r   r   
get_windowr   r   resampleresample_polyr  r   ry  )rO   signumwinsig2s        rS   rT   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#$rU   r  )Nhammingr  )r   rT  r  )r  rW  rG   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   rG   F)endpointrF   g      @r  r   rE   r  &.>r  )	ro   linspacecosr   r   r  realr   sin)rO   r  r  r  rd   re   	y_complexs          rS   	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	rU   c                     t        j                  d      dz   }t        |      }d}t        t	        j
                  ||d      t	        j
                  ||d      d       y )Nr  r   freq)domaintimer  r  )ro   r   r   r   r   r  )rO   tsigfsigr  s       rS   test_input_domainzTestResample.test_input_domain  sM    yy~"4yOOD#f5OOD#f5	rU   nx)rE   rF   r@   rB   r   nyr   )r[  r  c                     t        j                  dg|z  |      }t        j                  ||      }t	        |dg|z         y )NrE   )ro   r   r   r  r   )rO   r  r  r   rd   re   s         rS   test_dczTestResample.test_dc  s:     HHaS2Xu%OOAr"A38$rU   r  c                     t        j                  d      }t         j                  j                  d      j	                  d      }|j                         }t        j                  |dd||       t        ||       y )Nr@   r   rF   rB   rE   r  r  )	ro   r}  r   r  r   copyr   r  r   )rO   r  impulser  window_origs        rS   test_mutable_windowz TestResample.test_mutable_window	  s[     ((1+&&q)//2kkmWa67K6;/rU   c                    t        j                  dt         j                        }t        j                  g dt         j                        }t	        j
                  |dd||      }|j                  t         j                  k(  sJ y )NrG   r   rE   rE   rE   rE   rF   r  )ro   r   r   r   r   r  r   )rO   r  rd   r  re   s        rS   test_output_float32z TestResample.test_output_float32  sZ     IIb

+HHYbjj1  AqGDww"**$$$rU   c                     t        j                  d|      }t        j                  |dd|      }|j                  |j                  k(  sJ y )NrG   r   rE   rF   r  )ro   r   r   r  r   )rO   r  r   rd   re   s        rS   test_output_match_dtypez$TestResample.test_output_match_dtype  s@     IIb&  Aq':ww!''!!!rU   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  rW     r     )rG        $@g      D@rF   r   r   r  rG  rG   rE   )r  rs  r  r  r  r        ?        )r  r  333333?r  r   r  gGz?)r/  r   r  r   r   rA   )r         ?        r   r  -q=)rG  r  r  r  )ro   r   r[  r   newaxisr  pir7   r   r  r   maxr  r  r  r  r   r   ry  corrcoefr   r   r  cumsumr   interp) rO   rn   extr  raterates_tor   freqsrd   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                                    rS   test_resample_methodsz"TestResample.test_resample_methods"  sd    < IIdOeDk)(BJJ7FF1ruu9u$q()DJ6 !	DG99W%g6DFF1ruu9u,t34tG}DE"OOAwR@	7d?GT*A AB19D"2t}Hx-C!H}H#]]1x<!+;S2ACF*0WEH )73H"00GT = =3;=	 ),E9e(D 
D$h3=(IIbM"88'$TB'$TB&tzz8>>B;;tX6t<DD4KdD'-BC
D/!	DH ii##A&J399T?33 	+G99W%g6D99T1a(D!??1g6!//7D8?Atzz8>>:;;tX.t4DD4KT*	+ U?66*+Boob!,GhhABGGW59,-Boob!,GhhBx(GGW59 rU   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  )rF   r  O   r   r   r   r   rG  r  r  constantr  rE   Hz>r   r   )ro   r   r  r  r   r   r[  r  r   r   
complex128r   r  r%   r   r  r   )rO   random_state	try_typesr   down_factorsr   rd   r  r  yfhcre   s               rS   test_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltt  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<	=	=rU   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)rF   rA   rE   r  )rJ   r[  r   r  rY   )r  r  r  )rq   ro   r   r   r   r  r   )rO   r  r  nweightsrd   weightsy_gy_ss           rS   test_correlate1dzTestResample.test_correlate1d  s     	6DAr4( 6 ( 6H		(("/A ii..{;G%a2ZHC ..ad7<C#C$K566	6rU   N)r   r   r   rT   re  rf  rg  r  r  r  padtype_optionsr  r  ro   r   rv  r  r   r   r  r(  r.  r   rU   rS   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	6rU   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)	rE   rF   r@   rA   r@   rF   rE   rF   rL  rE   r   r  )dxx0rG   rB   r  )r   r   lenr   	cspline1dcspline1d_evalr   )rO   re   rd   r3  cjr   y2s          rS   rT   zTestCSpline1DEval.test_basic  s    /03q6NqTAaD[a CFTM"T)""2rbQqT: 	""TrT(Aq9rU   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 )NrF   r   r  rG  rc   r  )ro   r   r}  ry  r   expr  r   r6  r   r7  r
   r   )rO   rd   re   Tr   cyxnewynews           rS   rg   zTestCSpline1DEval.test_complex  s    IIaLHHQWWBLL1!GFF4"%%<!#a'( a  xx$$R.TZZ)rU   N)r   r   r   rT   rg   r   rU   rS   r1  r1    s    
:*rU   r1  c                       e Zd Zd Zy)TestOrderFiltc                 R    t        t        j                  g dg dd      g d       y )NrD   rE   r   rE   rE   )rF   r@   rF   )r   r   order_filterr  s    rS   rT   zTestOrderFilt.test_basic  s    6..y)QG$	&rU   Nr  r   rU   rS   rA  rA    s    &rU   rA  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)_TestLinearFilterc                     t        j                  dt        j                  |      dz
  t        j                  |            j                  |      }| j	                  |      S )Nr   rE   )ro   r  prodrp   convert_dtype)rO   ry  rd   s      rS   generatez_TestLinearFilter.generate  sE    KK2775>A-rwwu~>FFuM!!!$$rU   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                   d	      S )
NOrefs_okzerosize_okreadonly	writeonlyr   .F)r  )r   ro   asarrayemptyry  nditertyper   )rO   arrr   iterrd   re   s         rS   rI  z_TestLinearFilter.convert_dtype  s    ::#&**S/C((399djj1C99c3Z)M)B${m46D *11R5)#*J88C%88rU   c                     | j                  d      }| j                  ddg      }| j                  ddg      }| j                  g d      }t        t        |||      |       y NrC   rE   r   r        ࿩r   rF   rA   rC   r   r  rJ  rI  r   r#   rO   rd   rQ   rP   y_rs        rS   test_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIR  s\    MM$2w'T{+  !56!'!Q"2C8rU   c                     | j                  d      }| j                  ddg      }| j                  dg      }| j                  g d      }t        t        |||      |       y )NrY  rE   r   rE   r@   rB   r|   r  r\  r]  s        rS   test_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIR  sZ    MM$1v&s#  !45!'!Q"2C8rU   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 )NrY  rE   r   r   r  rZ  rE   rF   )rE   rB   r     r~   rN  re  zirJ  rI  r#   r   	rO   rd   rQ   rP   rh  r^  zf_rre   zfs	            rS   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+rU   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 )NrY  r  rE   )rE   rF   r@   rC   r  r  r  rB   rg  ri  rj  s	            rS   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+rU   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rA   r@   rE   r   r  r   rF   rA   rC   rA   rF   r   r  ri  )rO   rd   rQ   rP   y_r2_a0re   s         rS   test_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0  sp    MM&!2w'Sz*$$iI&/&1 2Aq!!$!'1-rU   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 )
Nrq  rE   r   r  r   rF   r   rC   r  rC   rL   rf  rL   rQ  irQ  r  ri  )rO   rd   rQ   rP   y_r2_a1re   s         rS   test_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1  sp    MM&!2w'Sz*$$i])&+ ,Aq!!$!'1-rU   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 )Nrq  rE   r   r  )rA   rE   r  )r|   r|   )re  re  )rT  rT  )r~  r  iir  rh  )rJ  rI  ro   rQ  r  r#   r   )	rO   rd   rQ   rP   rh  	y_r2_a0_1rk  re   rl  s	            rS    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+rU   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 )Nrq  rE   r   r  )rE   r@   )rE   r@   rB   )rB   r@   rE   )r  r  r   r  )rJ  rI  ro   rQ  r#   r   )	rO   rd   rQ   rP   rh  	y_r2_a0_0rk  re   rl  s	            rS    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+rU   c                    | j                  d      }| j                  ddg      | j                  ddg      t        |j                        D ]7  }t	        ||      }t        j                  fd||      }t        ||       9 y )NrA   r@   rF   rE   r   r  c                     t        |       S r  r#   wrP   rQ   s    rS   <lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>+      1a0@ rU   rJ  rI  rq   ndimr#   ro   apply_along_axisr   rO   rd   r  re   r^  rP   rQ   s        @@rS   test_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIR$  s    MM)$2w'Sz*!&&M 	.D1a&A%%&@$JC%a-	.rU   c                    | j                  d      }| j                  ddg      | j                  ddg      t        |j                        D ]  }t	        |j
                        }d||<   | j                  t        j                  |            }| j                  dg      t        |||      \  }}fd}fd}t        j                  |||      }	t        j                  |||      }
t        ||	       t        ||
        y )Nr  rE   r   r  c                 (    t        |       d   S Nrg  r   r  r  rP   rQ   zi1s    rS   lf0z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf09      q!Q3/22rU   c                 (    t        |       d   S Nrg  rE   r  r  s    rS   lf1z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf1;  r  rU   rJ  rI  rq   r  r   ry  ro   rQ  r#   r  r   rO   rd   r  zi_shaperh  re   rl  r  r  r^  rk  rP   rQ   r  s              @@@rS   test_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_cond.  s    MM)$2w'Sz*!&&M 	0DAGG}HHTN##BGGH$56B$$aS)CAq!T2.EAr33%%c43C&&sD!4D%a-%b$/	0rU   c                    | j                  d      }| j                  g d      | j                  dg      t        |j                        D ]7  }t	        ||      }t        j                  fd||      }t        ||       9 y )Nr  rd  rE   c                     t        |       S r  r  r  s    rS   r  z3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>I  r  rU   r  r  s        @@rS   test_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIRB  sy    MM)$z*s#!&&M 	.D1a&A%%&@$JC%a-	.rU   c                    | j                  d      }| j                  g d      | j                  dg      t        |j                        D ]  }t	        |j
                        }d||<   | j                  t        j                  |            }| j                  ddg      t        |||      \  }}fd}fd}t        j                  |||      }	t        j                  |||      }
t        ||	       t        ||
        y )Nr  rd  rE   rF   c                 (    t        |       d   S r  r  r  s    rS   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0W  r  rU   c                 (    t        |       d   S r  r  r  s    rS   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1Y  r  rU   r  r  s              @@@rS   test_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_condL  s    MM)$z*s#!&&M 	0DAGG}HHTN##BGGH$56B$$aV,CAq!T2.EAr33%%c43C&&sD!4D%a-%b$/	0rU   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)rA   rB   r   r   r  bar  r   rE   rA   rB   rg  r   )rJ  r   r&   rI  ry  ro   rQ  r#   r   r   r   )rO   rd   rQ   rP   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings              rS   test_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcast`  s    MM*%mmAs40!q!q!''!*q. $$RWWaG_%=>$$RWWaG_%=>!!Qg6!!Qg6!&&1!'73 	j'1aB8HIrU   c                     | j                  d      }| j                  g d      }| j                  dg      }| j                  g d      }t        ||d   |      }t        ||       y )NrC   rd  rE   )r   rE   rF   rF   rF   rF   r   ri  )rO   rd   rQ   rP   r^  re   s         rS   test_scalar_az_TestLinearFilter.test_scalar_au  s_    MM!z*s#  !34AqtQ!!S)rU   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)r@   rF   rB   lrB   rE   r   r   )r@   rE   rA   rE   rF   r@   )r@   rF   rA   rA   r   r   )rI  ro   r}  rQ  r   r#   r   )rO   rd   rQ   rP   rh  zf_expected
y_expectedy_iirzf_iiry_firzf_firs              rS   test_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dims  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!&+6rU   c           	          | j                  |      }| j                  |      }| j                  |      }| j                  |      }t        t        t        |||||       y r  )rI  r   r   r#   )rO   rQ   rP   rd   r  rh  s         rS   base_bad_size_ziz"_TestLinearFilter.base_bad_size_zi  sV    q!q!q!#j'1aD"=rU   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 )NrC   rE   r   r   r   rE   rF   r  r   rE   rF   r@   rL   rq  rF   )r   rE   rF   r@   rA   rB   rW   r@   rA   rB   )rA   rB   rC   r|   )r   rE   rF   r@   rA   rB   rC   r|   r|   r   r  )ro   r   r  rp   )rO   r   r   s      rS   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XrU   c                 8   | j                  d      }| j                  dg      }| j                  dg      }| j                  g       }t        ||||      \  }}t        ||       t	        |j
                  | j
                         t	        |j                  d       y )N)rB   rE   rg  r   )rJ  rI  r#   r   r
   r   r   )rO   rd   rP   rQ   rh  re   rl  s          rS   test_empty_ziz_TestLinearFilter.test_empty_zi  s    MM$s#s##1aB'2!!Q'RXXtzz*RWWa rU   c                     | j                  dg      }| j                  dg      }t        ||ddg      }t        ||ddg      }t        ||ddg      }t        ||       t        ||       y )NrE   rG  r   TF)rI  r,   r   )rO   rP   rQ   rh  zi_1zi_2s         rS   test_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zi  sp    s#s#QB7#q!aV$q!dE]+2t$2t$rU   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 )	NrE   rd  rF   r|   rR  r7  rg  rI  r#   r   	rO   rP   rQ   rh  rd   yezfere   rl  s	            rS   test_short_x_FIRz"_TestLinearFilter.test_short_x_FIR  s     s#z*A't$%  !S*1aB'2!!R(!"c*rU   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 )
NrE   rd  rF   r|   rR  r7  ir  rg  r  r  s	            rS   test_short_x_IIRz"_TestLinearFilter.test_short_x_IIR$  s     1v&z*A't$%  #s,1aB'2!!R(!"c*rU   c                 :   | j                  d      }| j                  ddg      }|j                         }| j                  ddg      }|j                         }| j                  g d      }t        |||      }t	        ||       t        ||       t        ||       y rX  rJ  rI  r  r#   r   r
   rO   rd   rQ   b0rP   a0r^  y_fs           rS   test_do_not_modify_a_b_IIRz,_TestLinearFilter.test_do_not_modify_a_b_IIR1  s    MM$2w'VVXT{+VVX  !56aA!#s+QQrU   c                 8   | j                  d      }| j                  g d      }|j                         }| j                  dg      }|j                         }| j                  g d      }t        |||      }t	        ||       t        ||       t        ||       y )NrY  rC  rF   )r   r  rE   rF   r@   rM  r  r  s           rS   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rU   N)r   r   r   rJ  rI  r_  rb  rm  ro  ru  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rU   rS   rF  rF    s    %
999	,	,..,,.0(.0(J**76>^Y@	!	%++

rU   rF  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloat32r   Nr   r   r   ro   r   r   rU   rS   r  r  J      BHHSMErU   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloat64r   Nr  r   rU   rS   r  r  N  r  rU   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterFloatExtendedr  Nr  r   rU   rS   r  r  R  r  rU   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplex64FNr  r   rU   rS   r  r  V  r  rU   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplex128DNr  r   rU   rS   r  r  Z  r  rU   r  c                   0    e Zd Z ej                  d      Zy)TestLinearFilterComplexExtendedGNr  r   rU   rS   r  r  ^  r  rU   r  c                   6    e Zd Z ej                  d      Zd Zy)TestLinearFilterDecimalrL  c                 *    t        t        |            S r  )r   r   rO   rd   s     rS   rT  zTestLinearFilterDecimal.typed  s    s1vrU   N)r   r   r   ro   r   rT  r   rU   rS   r  r  a  s    BHHSMErU   r  c                   4    e Zd Z ej                  d      ZeZy)TestLinearFilterObjectrL  N)r   r   r   ro   r   r[  rT  r   rU   rS   r  r  h  s    BHHSMEDrU   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-dbgrG  )rG  NrJ  rG  rJ  rL  )r{  r|  r  re  skipr   ru  r#   r   rU   rS   test_lfilter_bad_objectr  m  sc     sJC3<<$7=>)WsecU4DE)WsedV_E)Wtfse_ErU   c                  >    t        t        t        ddgddgg d       y )NrF   r@   rA   rB   )rE   rF   r@   rA   rB   )r   NotImplementedErrorr#   r   rU   rS   !test_lfilter_notimplemented_inputr  w  s    %w1!ukJrU   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   r@   rA   rE   rF   )r   rF   rB   r   r@   )ro   r  r   r   rO   r  rP   rQ   r^  s        rS   _setup_rank1zTestCorrelateReal._setup_rank1  sa    KK1a ''+KK1a ''+hh'..r2!SyrU   c                     d}	 t        j                  |      }t        |d      r+t        dt        j                  |j
                        z        }|S # t        $ r Y |S w xY w)NrC   
resolutionrZ  )ro   finfor{  r  log10r  	Exception)rO   res_dtr  dt_infos       rS   equal_tolerancez!TestCorrelateReal.equal_tolerance  sb    	hhv&Gw-d288G,>,>#??@   		s   AA 	AAc                     |t         j                  k(  r| j                  t         j                        S | j                  |      S r  )ro   rm  r  double)rO   r	  s     rS   equal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fft  s6     R]]"''		22''//rU   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 )NrA   r@   rl   r   rm   r  )	r   r    r
   _setup_rank3r   r   r  r   r  )rO   r  rn   rP   rQ   r^  y_ffty_directs           rS   test_methodzTestCorrelateReal.test_method  s    ='wqzlCF*))"-IAq#a51E Ah7H%c5$:R:RSXS^S^:_`%c8T=Q=QRZR`R`=abb),rU   c                    | j                  |      \  }}}t        ||d      }t        ||dd        t        |j                  |       t        ||d      }t        ||dd d d d          t        |j                  |       y )Nr   rE   rA   r   r  r   r   r
   r   rO   r  rP   rQ   r^  re   s         rS   test_rank1_validz"TestCorrelateReal.test_rank1_valid  sz    %%b)	1caG$!!S1X.QWWb! aG$!!S1Xdd^4QWWb!rU   c                     | j                  |      \  }}}t        ||d      }t        ||d d        t        |j                  |       y )NrX   r   r  r  s         rS   test_rank1_samez!TestCorrelateReal.test_rank1_same  sD    %%b)	1caF#!!S"X.QWWb!rU   c                     | j                  |      \  }}}t        ||d      }t        ||       t        |j                  |       y )Nr   r  r  s         rS   test_rank1_fullz!TestCorrelateReal.test_rank1_full  s>    %%b)	1caF#!!S)QWWb!rU   c                 t   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|      }|||fS )Nr   r`  r  )rF   rA   rB   r  )orderrK   r  rz   )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     @rH  )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   )ro   r  rp   r   r   r  s        rS   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( ), !SyrU   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   rE   rF   rA   r@   rB   r   r  r   r   r
   r   r  s         rS   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!rU   c                     | j                  |      \  }}}t        ||d      }t        ||ddddddf          t        |j                  |       y )NrX   r   r   rE   r  r&  r  s         rS   test_rank3_samez!TestCorrelateReal.test_rank3_same  sV    %%b)	1caF#!!S2qtQrT)9%:;QWWb!rU   c                     | j                  |      \  }}}t        ||      }t        ||       t        |j                  |       y r  r&  r  s         rS   test_rank3_allz TestCorrelateReal.test_rank3_all  s;    %%b)	1caO!!S)QWWb!rU   N)r   r   r   r  r  r  r  r  r  r  r  r'  r)  r+  r   rU   rS   r   r   |  s9    
	0-	"""<	"""rU   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   )ro   r   rp   r   r   r   r   s      rS   r   z!TestCorrelate.test_invalid_shapes  ss     IIaO##F+IIb!$$V,j)Jq!fJ8IJj)Jq!fJ8IJrU   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      rS   r   z!TestCorrelate.test_invalid_params  sd    j)Q?j)QuMj)QhOj)QwOj)QwOrU   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  r0  r  s    rS   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!4rU   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 )NrD   rA   rB   rX   rY   )rB      rK   r{   )r~   rJ   rK   r   )rC   r~   rJ   rK   rL   r   rJ   )r   r   r   s      rS   test_numpy_fastpathz!TestCorrelate.test_numpy_fastpath  si    F	!QV4kB	!QV4lC	!QV46IJ	!QW5t<rU   N)r   r   r   r   r   r  r4  r   rU   rS   r-  r-    s    
KP5	=rU   r-  rZ   r   rX   r   behindTF
input_size)r  rW  rw  rx  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   rG   rY   )ro   r   r  r  r  concatenater   r   r   argmaxr
   ry  )rZ   r6  r7  r  in1offsetin2r   correlationlags	lag_indexs              rS   test_correlation_lagsrA  #  s    
 ))


"C


j
)CBFnnc11&93?@7 &'lC40KCHHchhT:D		+&Ii(+[../rU   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 )NrF   r@   )ro   r  r  r  r  	precision)rO   r  s     rS   r  zTestCorrelateComplex.decimalH  s:    B1rxx|---122rU   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  rG   r   r   rY   )ro   r   r   r   r   r   r  imag)rO   r  rZ   rP   rQ   r^  s         rS   r  z!TestCorrelateComplex._setup_rank1M  s!   
		qIIOOB&&r*	R"))//"%,,R000IIOOA%%b)	R"))//!$++B///d3d345;VBZ 	riT::qvvqvvD9: ; 	;!SyrU   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         rS   r  z%TestCorrelateComplex.test_rank1_validZ  s    %%b'2	1caG$!!S$,,r2BCQWWb! aG$!!S2Y^^%5t||B?OPQWWb!rU   c                     | j                  |d      \  }}}t        ||d      }t        ||| j                  |             t	        |j
                  |       y )NrX   r  r  r   r   r  r
   r   r  s         rS   r  z$TestCorrelateComplex.test_rank1_samee  K    %%b&1	1caF#!!S$,,r2BCQWWb!rU   c                     | j                  |d      \  }}}t        ||d      }t        ||| j                  |             t	        |j
                  |       y )Nr   r  rK  r  s         rS   r  z$TestCorrelateComplex.test_rank1_fullk  rL  rU   c                     t        j                  g d|      }t        j                  g d|      }t        ||      }t        |g d       y )Nr   r`   r  r   y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      )ro   r   r   r
   rO   r  r   kre   s        rS   test_swap_fullz#TestCorrelateComplex.test_swap_fullq  s:    HH-R8HH5R@aOQLMrU   c                 L    g d}g d}t        ||d      }t        |g d       y )NrO  rP  rX   rY   )rQ  rR  rS  )r   r
   rT  s        rS   test_swap_samez#TestCorrelateComplex.test_swap_samew  s%    $,a(Q34rU   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 )	NrG   r   rC   r   rA   r   rE   r  )ro   r   r   r   r   r  rG  r   r  r
   r   r  s         rS   
test_rank3zTestCorrelateComplex.test_rank3}  s<   IIOOB1%,,R0	R"))//"a+222666IIOOAq!$++B/	R"))//!Q*11"555(166166*+,2F2J 	ri//)AFFAFF2KKLLaF#!!S$,,r2BQ2FGQWWb!rU   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   rE   r  rc                 @rA   )ro   r   r   r   r   r   r  rG  r   r  r
   r   r  s         rS   
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+;<rU   N)r   r   r   r  r  r  r  r  rV  rX  rZ  r]  r   rU   rS   rC  rC  ?  s0    3
	"""N5"=rU   rC  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 )NrB   ro  rp  rY   r   )ro   r   r   r   r   r   rq  r   rr  s       rS    test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcs  s   IIaLHH]#- 	GDQ = & 0 0AD AC

6+=+=qcA3CG,I !J & 0 0AD AC
 w#BLLAD$A$*$4$4Q$EG#BJJv/A/A1#sGK0M %N$*$4$4Q$EG	GrU   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   )ro   r   rp   r   r   r   r   r   s      rS   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SrU   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 )NrE   rc                 r\  rC   rA   y              (@)r
   r   r   r  s    rS   test_complex_inputz"TestCorrelate2d.test_complex_input  s_    V''!v6<V''""7;V''"!6<rU   N)r   r   r   ra  r   re  r   rU   rS   r_  r_    s    G&
T=rU   r_  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)rG  rK  r  )rG  r  rJ  rs  rK  )ro   r   r$   r   )rO   rP   rQ   zi_expectedrh  s        rS   rT   zTestLFilterZI.test_basic  sG    HH%&HH_%hhT{+1!"k2rU   c                     t        j                  g d      }t        j                  g d      }t        ||      }t        d|z  d|z        }t        ||d       y )N)rF   r   rB   )rE   rE   r   rF   r   r  )ro   r   r$   r   )rO   rQ   rP   r  zi2s        rS   test_scale_invariancez#TestLFilterZI.test_scale_invariance  sL     HHYHHYA1ac"Su-rU   r   c                     t        j                  d|      }t        j                  dg|      }t        t        j                  t        j                  ||            j                  |       y )Nr   r   rE   )ro   r}  r   r
   r  r   r$   r   )rO   r   rQ   rP   s       rS   rj  zTestLFilterZI.test_types  sJ    HHa&HHaS&RWWV..q!45;;UCrU   N)r   r   r   rT   rl  re  rf  rg  ro   r   rv  rj  r   rU   rS   rg  rg    sA    3. [[Wrzz2::&>?D @DrU   rg  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 )Nrp  sos)filtfilt_kindr'   r%   r(   r/   )rO   zpkrd   r  r  padlenrn   irlenrQ   rP   rr  s              rS   r%   zTestFiltFilt.filtfilt  se    %3<DAqAq!T7FFEJJ5(3-CsAtWf== )rU   c                     t        g dg d      }| j                  |t        j                  d            }t	        |t        d      d       y )NrD   rL   g6{=r  )r1   r%   ro   r   r   )rO   rt  r   s      rS   rT   zTestFiltFilt.test_basic  s6    Y	*mmC2/VBZh7rU   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   rG  rE   rG   i  r         ?rt  r  r   )ru  r   ru  r  )ro   r  r  r  r&   r
  r  r  ceillogr%   r   vstackr
   ry  r<  )rO   r  r   xlowxhighrd   rt  repsr   re   errx2dy2dy2dts                  rS   	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$&&!rU   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     @rG   r  rL   r@   ry  rt  r  r   rz  rE   rF   )ro   r   rp   r&   r%   r  r   )rO   rd   rt  y0y1r9  s         rS   	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5rU   c                     | j                   dk7  ry t        j                  ddgdt        j                  d            }t        |t        j                  d      dd       y )Nrp  r  rE   rG   +=r   )rs  r   r%   ro   r   r   )rO   r   s     rS   test_acoeffzTestFiltFilt.test_acoeff	  sG    %oor2h299R=9RYYr]UCrU   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 )Nrp  $gust only implemented for TF systemsrG  rJ  r  rZ  r   r  r  rE         ?ry  )rs  re  r  ro   r   r8   r   )rO   rd   rQ   rP   re   z1z2s          rS   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rU   c                     | j                   dk7  rt        j                  d       t        j                  d      }d}d}t        |||d      }||z  dz  |z  }t        ||       y )	Nrp  r  rL   rL  rJ  gustrm   rF   )rs  re  r  ro   r   r%   r   )rO   rd   rQ   rP   re   r   s         rS   test_gust_scalarszTestFiltFilt.test_gust_scalars1	  sa    %KK>? IIbMQ1V,aC!8a<8$rU   )r   oddNra  N)r   r   r   rs  r%   rT   r  r  r  r  r  r   rU   rS   ro  ro    s3    M>B%)>8
 "D6DJ%rU   ro  c                       e Zd ZdZd Zy)TestSOSFiltFiltrr  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   rw  rE   rC   ffffff?rt  r  r   zorder=%s)r   err_msgN)ro   r   r  r   rq   r   r&   r'   r(   r%   r/   r   )	rO   rd   r  rt  rQ   rP   rr  re   y_soss	            rS   test_equivalencez TestSOSFiltFilt.test_equivalenceB	  s    II!!!$**401a[ 	NE--tE:C3<DAq3-CAq!AQ'EAu5*u:LM	NrU   N)r   r   r   rs  r  r   rU   rS   r  r  ?	  s    M	NrU   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 )aP  
    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 significanly 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.rE   Nrg  r   r   rF   )r  r5  r#   ro   r   )icsrQ   rP   rd   mz0fz0br  y_fby_by_bfvalues               rS   filtfilt_gust_opt_funcz1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_funcW	  s    AA!#"1g!"gaA#&q)q!S2Y3/24R48aAddG,Q/"5q!SS)!,ta'(rU   rE   Nr  r   r  TF)r   xtolftolmaxfunmaxiterfull_outputdispr   z5minimization failed in filtfilt_gust_opt: warnflag=%dr   rg  )	r  r5  r$   ro   r9  r  r   r  r#   )rQ   rP   rd   r  r  rh  r  rT  optfoptniterfuncallswarnflagr  r  r  re   s                    rS   filtfilt_gust_optr  N	  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;rU   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  rn   rv  )r  rv  r   rE   r   r  r   )ro   r   r   r   r%   r8   r  ry  
empty_liker  r5  rR  r   rq   r  r   )rQ   rP   ry  r  rv  rd   re   ygzg1zg2xx	out_shaper  r  zo1zo2r   indxs                     rS   check_filtfilt_gustr  z	  s   IINN3
		A 	AqtF%@A "!QEBLBS
 
Qb	!B"I	r	BCFCFaA
((9t#
$C
((9t#
$CI6q%(67 K):1aD)J&4#d)SYK	RT	"B
++c2t
$C
++c2t
$CAr40BD1C4d3C4d3 7s   8F2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        u        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 )Nr5  )rE   rF   )r   rC   rl   rY   T)rZ   measure>   r   rl   r   rl   rG   )r   r   r   l         @ r@   rF   rE   rA   )ro   r   r   r    r
   r   rT  dictkeysr{  rQ  r  r   r   r   )rZ   r  r   rU  true_methodrd   r  rn   
method_trytimesnot_fft_conv_supps              rS   test_choose_conv_methodr  	  s   ) D 	HD .Aq+		1$+/A		1$+/A'148F- 21adD QJJ"334DK4'(EUZZ\)Fh%**,.FG	H != 	Lr,-GGA%67FFH/14@(K		L HHeWBHH-FFH'148(CQZ$QZ$'148(C7DrU   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 )Nr@   {Gz?x   gffffff?rt  r  r  r  rB   r   )rF   rF   rF   rF   r   )r   ellipro   r  r
  r  r{  r|  r   r   r'   r  rq   )rf   prU  r  r  approx_impulse_lenrQ   rP   rv  
signal_lenr  ry  lengths                rS   test_filtfilt_gustr  	  s   ll1dC>GAq! C
rvvayARWWRVVC[266!9%<=>IINN3!Q?DAq*+ 
:++
 	Aq:-E: !H 	:DE$E$K1eT59	:
: !!B&F1vi,>?rU   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 )NrL   r  rE   )qr   rF   )ro   r   r   ru  r   decimater  s     rS   test_bad_argszTestDecimate.test_bad_args	  s7    IIbMi!sa@i!qC@rU   c                     t        j                  d      }t        j                  |dddd      j	                         }t        ||d d d          y )NrL   rF   rE   iirFr   ftype
zero_phasero   r   r   r  roundr   rO   rd   re   s      rS   test_basic_IIRzTestDecimate.test_basic_IIR	  @    IIbMOOAqAUuEKKM1a!f%rU   c                     t        j                  d      }t        j                  |dddd      j	                         }t        ||d d d          y )NrL   rF   rE   firFr  r  r  s      rS   test_basic_FIRzTestDecimate.test_basic_FIR	  r  rU   c                     t        j                  d      }t        j                  |ddd      }t	        |j
                  d       t        j                  |ddd      }t	        |j
                  d       y )	N)r   r   rF   r   F)r  r  )rU  r   rE   )r   rU  )ro   r}  r   r  r
   ry  )rO   rf   d0d1s       rS   
test_shapezTestDecimate.test_shape	  sT    HHX__Qe<RXXx(__Qe<RXXx(rU   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rn   r  r   r-  r2   _test_phaseshiftrO   r0  s     rS   test_phaseshift_FIRz TestDecimate.test_phaseshift_FIR	  sE      	BCJJ(BC!!5!A	B 	B 	B	   *>Ac                     t               5 }|j                  t        d       | j                  dd       d d d        y # 1 sw Y   y xY w)Nr  r  Tr  r  r  s     rS   test_zero_phase_FIRz TestDecimate.test_zero_phase_FIR	  sE      	ACJJ(BC!!4!@	A 	A 	Ar  c                 *    | j                  dd       y )Nr  Fr  r  r  s    rS   test_phaseshift_IIRz TestDecimate.test_phaseshift_IIR	  s    Uu=rU   c                 *    | j                  dd       y )Nr  Tr  r  r  s    rS   test_zero_phase_IIRz TestDecimate.test_zero_phase_IIR	  s    Ut<rU   c           	         d}g d}t        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  }t1        t        j2                  |j/                         |z        |   ddd       F y )Nr  )rU  r   r   r  r  rE   皙?rF   rc   皙?r  r   rG  r  r  r  r   g?Fr  r  r   r  r  r   r   r!  )r  ro   r   r[  r   r;  r  r  r   windowstukeyr   dltir  cheby1freqzr  denr
  	ones_liker  r  r   rI  r   angle)rO   rn   r  r  r	  t_totr   r
  r   r  r  r  d_tosr   systemwcr   h_respsr  	h_resampssubnyqs                        rS   r  zTestDecimate._test_phaseshift 
  sz   #CIId5jl#eDk1 "S(1,VVFRUUNU1bjj=%99A=>~~##AFFC01   "	2GA99WU]1_-g>DVVFRUUNU1bjj=-AADHI~~++DIIs;<E V]]1q5"q&:C&EFHJ5Yq[fmmAtRX&FG U"#\\&**fjj*/*Q,ruu*<>
7266'?*,,u-1F3=?I uzz|i7bAI	**IS[(F BHHW\\^I%=>vF!%D2C"	2rU   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@rw  rJ  rF   g      >@rG  r   r  r   r  )r  r  )ro   r   sqrtr  r  r   linalgnormr   r  r   )rO   sfreqr   r   rd   x_outs         rS   test_auto_nzTestDecimate.test_auto_n0
  s     IIaL5 GGBFObffQY%#+%>%BCC		q)2D92U3"))../6rU   c                     t        j                  t        j                  dt        j                        d      }t        t        j                  |            rJ y )Nr  r   rG   )r   r  ro   rQ  r   r   isnanr  s     rS   test_long_float32zTestDecimate.test_long_float32<
  s<     OOBGGF"**=rBrxx{####rU   c                     t        j                  t        j                  dt        j                        d      }|j
                  j                  t        j                  k(  sJ y )Nr  r   rG   )r   r  ro   rQ  r   r   rT  rv  r  s     rS   test_float16_upcastz TestDecimate.test_float16_upcastB
  s;    OOBGGCrzz:B?ww||rzz)))rU   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   rB        @@rF   rt  )r  fsrc   r  r  rd  Fr  Tr  vIh%<=r   )r   r&   ro   r  r   r  r;  r  r   r  r#   r'   r
   r%   r   )rO   fcentrefwidthr  rf   r  rU  r  r   r   ynzpynzprefyzpyzprefs                 rS   test_complex_iir_dltiz"TestDecimate.test_complex_iir_dltiG
  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<rU   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   rB   r  r   rF   )r  rc   r   rE   r  r  rd  Fr  )r  r  r  Tr  )r   r  ro   rootsr;  r  polyr  r   r  upfirdnr
   r  )rO   r  r  r  numtapsbbasezbasezrotbzr  r   r   r  r  r   r!  s                   rS   test_complex_fir_dltiz"TestDecimate.test_complex_fir_dltig
  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&!rU   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r"  r,  r   rU   rS   r  r  	  sM    A
&
&
)B
A
>=.2`
7$*
=@""rU   r  c                       e Zd Zd Zd Zd Zej                  j                  de	j                  e	j                  g      d        Zy)TestHilbertc                     t        j                  dg      }t        t        t        |       t        j
                  d      }t        t        t        |d       y )Nr   r  r   r  )ro   r   r   r   r!   r   r  s     rS   r  zTestHilbert.test_bad_args
  s9    HHj\"j'1-IIcNj'12rU   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 )Nr3  r   rF   r  rE   r  r@   )ro   r  r   r  r  r}  r!   r
  r  r  r   rQ  ry  rG  )rO   r  r  r   r  a1a2a3rP   r  h_absh_angleh_reals                rS   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3rU   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 )NrQ  r@   rC   r   r  r   r3  r   )r  r  )y        Bm}ąy      ?a y?0fy      @Wa94y      @"nWy      @hIX@y<nm@yF8O2k{?yډoP?y̼YC?y433333<c4Qe?yȒ40p$?yESU?yffffff<?7?y433333<wEoy!5P{3'ſy        _N@տy<}ٿy<-cyF8<2OW\zN regression)	ro   r   rp   r!   r
   r<  r   ry  r   )rO   rP   aaaana0hilbs        rS   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?rU   r   c                     t        j                  d|      }t        t        j                  t	        j
                  |            j                  |       y )Nr   r   )ro   r}  r
   r  r   r!   r   rh  s      rS   test_hilbert_typeszTestHilbert.test_hilbert_types
  s4    88AU+RWWV^^H56<<eDrU   N)r   r   r   r  r8  r=  re  rf  rg  ro   r   rv  r?  r   rU   rS   r.  r.  
  sI    3'4R#@J [[Wrzz2::&>?E @ErU   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  rF   r@   rA   r}   r   r0  )rF   r   )rF   )ro   r   r   r   r"   r   rp   r  s     rS   r  zTestHilbert2.test_bad_args
  s    HHzl^$j(A. IIbM!!!Q*j(A. IIbM!!!Q'j(A3j(A8j(A6rU   r   c                     t        j                  d|      }t        t        j                  t	        j
                  |            j                  |       y )N)rF   rJ   r   )ro   r}  r
   r  r   r"   r   rh  s      rS   test_hilbert2_typesz TestHilbert2.test_hilbert2_types
  s4    88G51RWWV__X67==uErU   N)r   r   r   r  re  rf  rg  ro   r   rv  rD  r   rU   rS   rA  rA  
  s<    7 [[Wrzz2::&>?F @FrU   rA  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  )ro   rQ  hypotr
  r   r   )r  r  r_truep_truer  distancerowscolss           rS   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CrU   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 )NrD   r  r@   r   )rF   rF   r@   rE   )rE   rE   rE   r@   rF   )rE   rE   rE   rF   rF   )rE   rE   rE   rF   rF   r@   T)include_powersrC   )rE   rE   rF   rF   r@   )rE   rF   rF   r@   )rE   rE   rE   rF   r@   rA   rB   )r9   r
   r5  r   ro   r%  )rO   factorsr%  s      rS   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"''*<"=>rU   c                 `    t        g ddd      \  }}t        |g d       t        |g d       y )N)rG  gjt?g?5^I?rJ  g/$ @rL  r  minr  r  )r:   r
   rO   uniquemultiplicitys      rS   test_group_polesz-TestPartialFractionExpansion.test_group_poles  s,    +0#u >V_-\9-rU   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rB   r@   r  r|   r  r   r   r@   )gZd;O?g9#Jg&䃞ͪrA   r  )g-1ڿgeagvq-?g      r  r   rE   rC   r   ir  r   rE   )rE   r   r  r@   r   rF   )rF   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rE   rB   r   rA   )r   rE   r@   )r   r  r  )r@   gg)\(?g^I+g rh?)rE   gffffffgQg~jt?)rA   rE   )r  g333333ӿr  )rE   rF   r]  r        пr]  )rE   r   r~  )rE   r   r   r   r   )rE   y              ?y             r   )r                r   rE   )r@   r   rC   rE   r@   r@   rE   rD   r   r   r   )rE   r]  rF   rB   )rF   r@   r   re  )r|   rF   r@   r   r  E   r|   rK   )rE   r]  rA   r  )rA   y            @y            )rE         ?      r`   )r5   r   r
   r   rN  rO   r  r  rU  s       rS   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&rU   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 )NrZ  r[  )r   rB   r@   r  r|   )r   r  r   r   r@   )r   r   rB   r@   r  r|   )r   r   r   r  r   r   r@   )r5   r   rO   r0p0k0r1p1k1r2p2k2r3p3k3s                rS   test_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zerosi  s    ]M:
B-}=
B],<=
B02HI
BB#B#B#B#B#B#B#B#B#rU   c                    t        ddgg d      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        dd      \  }}}t        |j                  d       t        |j                  d       t        |j                  d       t	        j
                  t        d      5  t        dd       d d d        y # 1 sw Y   y xY w)Nr   r\  r  r  rE   Denominator `a` is zero.r(  )r5   r   r
   r   re  r	   r   rd  s       rS   test_resiude_degeneratez4TestPartialFractionExpansion.test_resiude_degeneratey  s    1a&),1aA1v&ABx(QVVQ!Q-1aQVVQQVVQQVVQ]]:-GH 	AqM	 	 	s   4C

Cc                    t        g dg d      \  }}}| j                  ||g dg d       t        |dg       t        g dg d      \  }}}| j                  ||dd	gd
dgd       t        |dgd       t        ddgg d      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        g dg d      \  }}}| j                  ||g dg d       t        |j                  d       t        g dg d      \  }}}t        |ddg       t        |ddg       t        |ddg       t        dgg d      \  }}}| j                  ||g d g d!       t        |j                  d       t        ddgt        j                  dd"gdd#g            \  }}}t        |d$d%g       t        |d&dg       t        |j                  d       t        g d'ddg      \  }}}t        |dg       t        |dg       t        |ddg       t        ddd(g      \  }}}t        |dg       t        |d)g       t        |j                  d       t        dg d*      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        dg d+      \  }}}t        |ddg       t        |d#dg       t        |j                  d       t        g d,g d'      \  }}}t        |d-d.g       t        |ddg       t        |dg       t        d/dgg d'      \  }}}t        |d0d1g       t        |ddg       t        |j                  d       t        g dg d'      \  }}}t        |d2d3g       t        |ddg       t        |d4dg       t        g d5g d6      \  }}}| j                  ||g d7g d8d       t        |j                  d       y )9N)rE   rC   rC   rF   )rE   y             r  r_  )y             @y      @      @y            ()r   rE   rE   rc   )rE   rF   rE   )rE   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿrA   r  gŏ1w@rE   r   )rE   r~  rC   rF   r@   r   rz   r`  )rA   r~  r@   ra  )rE   rf  r  rA   )rF   r  r  r  g            ?rQ  )rQ  r@   r  r   )g
ףp=
?gQ?皙?)r  UUUUUUտr{  rZ  r  g
gUUUUUU@r^  rE   r  rE   r_  r   )rE   r   r  )rE   g      ry  )rE   rC   rF   rf  r  rC   r  r   irU  rG   rC  )rE   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿrz  yjM?%uyjM?%u?)ySsA?ySsArG  y-?8gDio?y-?8gDio)r6   rN  r   r
   r   ro   polymulrd  s       rS   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rU   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 )NrZ  r[  )rB   r@   r  r|   r   )r  r   r   r@   r   )rB   r@   r  r|   r   r   )r  r   r   r@   r   r   r   )r6   r   rg  s                rS   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#rU   c                 (   t        ddgg d      \  }}}t        |ddg       t        |ddg       t        |j                  d       t        dd      \  }}}t        |j                  d       t        |j                  d       t        |j                  d       t	        j
                  t        d      5  t        dd       d d d        t	        j
                  t        d      5  t        dg d	       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)
Nr   r\  r  r  rE   rv  r(  z6First coefficient of determinant `a` must be non-zero.r  )r6   r   r
   r   re  r	   r   rd  s       rS   test_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate  s    Aq69-1aA1v&ABx(QVVQ1a.1aQVVQQVVQQVVQ]]:-GH 	QN	 ]]:"01 	& Q%	& 	&	 		& 	&s   4C<$D<DDc                     g d}g d}g }g d}g d}dD ]V  }t        ||||      \  }}t        ||       t        ||       t        ||||      \  }}t        ||       t        ||       X y )N)r  UUUUUUſg)r   r  r~  )r   rE   r@   )rE   r|   rG   r   avgr  rT  r  r  r  rtyper)   r   r*   )	rO   r  r  rU  
b_expected
a_expectedr  rQ   rP   s	            rS   *test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  s}    %
"
 I 	+E!Q/DAqAz*Az*1a%0DAqAz*Az*	+rU   c                     g d}g d}g }g d}g d}g d}dD ]Z  }t        ||||      \  }}	t        ||d	       t        |	|       t        ||||      \  }}	t        ||d	       t        |	|       \ y )
Ng333333?g98ȿr  gll?r   r  r  r~  )r   r   rE   r@   )r  gUUUUUUgUUUUUU?r@   )rE   r  r  r   r   r  r  r  r  r  )
rO   r  r  rU  r  b_expected_zr  r  rQ   rP   s
             rS   ,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  s    -!
,&
H 	+E!Q/DAqAz6Az*1a%0DAqA|%8Az*	+rU   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  )re  r	   r   r)   r*   rd  s       rS   test_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtype!  sz    -]]:-EF 	,1a(+	,]]:-EF 	-Aq!8,	- 	-	, 	,	- 	-s   A2A>2A;>Bc                 l    dg}dg}dg}t        |||      \  }}t        |dg       t        |ddg       y )NrE   rF   r   rG  g       )r*   r   )rO   r  r  rU  rQ   rP   s         rS    test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bug*  sC    CCCq!Q1C5!C;'rU   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 )NrE   r   rc  rF         ?      rE   r   r`   y      @      y      !      ?y      @      
@rE   y             y      ?       @y      ?      r  rc  r  rD   )rE                     ?       r  rG   rE               rA   r   rF   r   r  rA   r  r   r   r   r@   r@   r@   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prE   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@r   rF   )rE   r   r  rb   r|  )r)   r   rO   rQ   rP   s      rS   test_invresz(TestPartialFractionExpansion.test_invres3  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*rU   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 )NrE   r   r  r  r  r  r  rc  r  rD   )g      @r  r  y            rL   r  r  r  )rC   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr  r   rF   )r   rE   r]  rF   r|  )r*   r   r  s      rS   test_invreszz)TestPartialFractionExpansion.test_invreszK  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*rU   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 )NrE   r   r   rF   )r)   r   r*   r  s      rS   test_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_argumentsc  s]    aA1A1v&A2w'q!Q1A2w'A2w'rU   N)r|   )r   r   r   staticmethodrN  rR  rX  re  rt  rw  r~  r  r  r  r  r  r  r  r  r  r   rU   rS   rF  rF  
  se    	D 	D?&.B'H$ O b$"&&+&+"-(+0+0(rU   rF  c                   `    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z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  rs  rG  r  r   rF   ro   r   r+   r
   r  r   r  rO   eventsperiodtarg_strength
targ_phasestrengthphases          rS   test_single_1dperiodz'TestVectorstrength.test_single_1dperiodo  sm    2$
(8%X]]A&UZZ#Hm4E1ruu9z#9:rU   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  )rE   rF   rs  rG  r@   )r  r  r  rE   rF   )ro   r   r+   r
   r  r   r   r  r  s          rS   test_single_2dperiodz'TestVectorstrength.test_single_2dperiod|  s|    2$qXXm,
(8%X]]A&UZZ#!(M:E1ruu9z#9:rU   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  rF   rG  ry  r   r  r  s          rS   test_equal_1dperiodz&TestVectorstrength.test_equal_1dperiod  sm    89
(8%X]]A&UZZ#Hm4E1ruu9z#9:rU   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  rE   rF   rG  r  ry  r  r  s          rS   test_equal_2dperiodz&TestVectorstrength.test_equal_2dperiod  s    89QqXXsDk*
(8%X]]A&UZZ#Hm4E1ruu9z#9:rU   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$@rE   rG  r  r   rF   r  r  s          rS   test_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiod  sm    34
(8%X]]A&UZZ#Hm4E1ruu9z#9:rU   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  rE   r  rG  rF   r  r  r  r  s          rS   test_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod  s    34RqXXr2h'
(8%X]]A&UZZ#Hm4E1ruu9z#9:rU   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        ?rE   UUUUUU?r  r   rF   r  r  s          rS   test_partial_1dperiodz(TestVectorstrength.test_partial_1dperiod  sl    .)
(8%X]]A&UZZ#Hm4E1ruu9z#9:rU   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  )rG  rG  rG  rG  r  rA   )r  r  r  r  rE   rF   r  r  s          rS   test_partial_2dperiodz(TestVectorstrength.test_partial_2dperiod  s|    .)! 	AXX./
(8%X]]A&UZZ#Hm4E1ruu9z#9:rU   c                     t        j                  g d      }d}d}t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       y )Nr   r  r  r  rG  r   ro   r   r+   r
   r  r   rO   r  r  r  r  r  s         rS   test_opposite_1dperiodz)TestVectorstrength.test_opposite_1dperiod  sQ    +,(8%X]]A&UZZ#Hm4rU   c                     t        j                  g d      }dgdz  }dgdz  }t        ||      \  }}t        |j                  d       t        |j                  d       t        ||       y )Nr  rG  rG   r  rE   r  r  s         rS   test_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiod  s]    +,r	(8%X]]A&UZZ#Hm4rU   c                 d    t        j                  ddgg      }d}t        t        t        ||       y )NrE   rF   rG  ro   r   r   r   r+   rO   r  r  s      rS   test_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueError  s)    Aq6(#j.&&ArU   c                 b    d}t        j                  dgg      }t        t        t        ||       y )NrG  rE   r  r  s      rS   test_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueError  s&    A3%j.&&ArU   c                 8    d}d}t        t        t        ||       y )NrG  r   r   r   r+   r  s      rS   test_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueError  s    j.&&ArU   c                 8    d}d}t        t        t        ||       y )NrG  r   r  r  s      rS   test_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueError  s    j.&&ArU   N)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rU   rS   r  r  m  sL    ;;;;;;;;	5	5B
B
B
BrU   r  c                    t        j                  |       j                  }t        j                  | t         j                        } t        j                  |t         j                        }t        | |      j                  |      S )zEConvert TF2SOS, casting to complex128 and back to the original dtype.)ro   rQ  r   r   r"  r-   r   )rQ   rP   r   s      rS   cast_tf2sosr    sV     JJqME
BMM"A
BMM"A!Q<u%%rU   c                     | j                   j                  dk(  rNt        j                  | j                  d         j                   }| j                  |      |j                  |      }} t        | |||       y)z1Wrap assert_allclose while casting object arrays.rL  r   N)r   r   ro   r   flatr   r   )actualdesiredr   r   r   s        rS   assert_allclose_castr    sY    ||CQ(.. --.u0EFGT40rU   rD  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)
NrE   rF   r@   rL  c              3   <   K   | ]  }t        |t                y wr  )
isinstancer   ).0rd   s     rS   	<genexpr>z)test_nonnumeric_dtypes.<locals>.<genexpr>$  s     6!z!W%6s   rG  zmust be at least 1-Dr(  rd   )r   ro   r   r   r   r#   r[  r   r.   allr   r-   re  r	   r   )rD  rd   rQ   rP   r  r  r   s          rS   test_nonnumeric_dtypesr    s?   	WQZ,A	WQZ,A	WQZ,A
A77<<3bhhq%("((1e*<ahhuoNGw!a%!$Aq!6v6666FMM%('..*?@wBxr2	z)?	@ db  s   	FFfdgFDGOc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestSOSFiltc                    t        j                  ddd      j                  |      }t        j                  ddg      j                  |      }t        j                  ddg      j                  |      }t        j                  g d      j                  |      }t	        ||      }|j
                  j                  |k(  sJ 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   rB   rC   rE   r   r  rZ  r[  ra  )rE   rE   r   r  r   )rE   rC   )rE   rF   rF   rF   rF   rF   rF   rF   )ro   r  r   r   r  r   charr   r.   rQ  r9  ry  r   )rO   r  rd   rQ   rP   r^  rr  re   s           rS   
test_rank1zTestSOSFilt.test_rank14  sc   KK1a ''+HHaW$$R(HHc4[!((, hh+,33B7!Qyy~~###!'+a*;Q"?E HHaV##B'HHaV##B'hh*+2226!'+a*;Q"?EGGAJnnaV$	CO34rU   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 )Nrq  r   rE   r   r  rr  rs  r   rw  rx  ry  rz  r  )	ro   r  rH  rp   r   r   r.   r  r   )	rO   r  ry  rd   rQ   rP   rt  r{  re   s	            rS   
test_rank2zTestSOSFilt.test_rank2N  s    KK2775>A-rwwu~>FFuMHHRLHHaW$$R(HHc3Z ''+((Iy)YG!#% ((Iz=)+246 K1%qq1!'1-K1%qq1!'1-rU   c                     d}t        j                  dt        j                  |      dz
  t        j                  |            j                  |      }t        j                  ddg      j                  |      }t        j                  ddg      j                  |      }t        t        ||      |      }t        |j                  d         D ]@  }t        |j                  d         D ]#  }t        |||f   t        |||||f                % B y )Nr  r   rE   r   r  )ro   r  rH  rp   r   r   r.   r  rq   ry  r   r#   )	rO   r  ry  rd   rQ   rP   re   rr   r}  s	            rS   rZ  zTestSOSFilt.test_rank3b  s    KK2775>A-rwwu~>FFuMHHaW$$R(HHc3Z ''+ K1%q)qwwqz" 	KA1771:& K)!AqD'71a1a43IJK	KrU   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 )NrF   r  lowr  r   r   rC   rg  r   r   r   r  rE   r   )r   rE   rE   r  )r   r&   ro   r   r   r_r   r  r   r#   r}  r  r.   r0   rQ  ry  r   r   r  )rO   r  b1r2  b2r3  b3r4  rQ   rP   rr  rd   y_truerh  r  re   rl  zi_nds                     rS   test_initial_conditionsz#TestSOSFilt.test_initial_conditionso  sv   q$.Bq$.Bq$.BKKB+R0KKB+R0hhb"fruuRV}beeBFmDEIINN2%%b) Q1Sb6bhhqk:
vwq!QrsV;A>>?VWQ1%56C3BBHHV,<=	reWS!BC&R8;;<VU+ _GGArNQ2&2Q
+R$ 177"j'3b9	xx{Aq"((2,7j'3q!Q	12	4Q5)2QtWbggaj1R1a
^R0rU   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   rB   )rF   rU  r@   r   rC   r  rt  r  rE   rF   r  r  r  r  r   )ro   r   r  r  r   r   r&   r(   ry  r   r}  r.   r9  r  r0   r'   r$   r   r#   )rO   r  rd   rt  rr  	nsectionsr  shpz0r&  rl  r  r  r9  r  re   rh  rQ   rP   y_tfs                       rS    test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1  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=rU   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)r@   rU  r@   )rA   rC   )rA   r@   r@   rF   zshould be all onesr(  rE   )rh  r  rG  r@   zInvalid zi shape)ro   rR  r}  re  r	   r   r.   )rO   r  rd   rr  rh  s        rS   test_bad_zi_shapezTestSOSFilt.test_bad_zi_shape  s     HHZ$hhvXXl#]]:-AB 	+Cr*	+AqD	]]:-?@ 	+Cr*	+ 	+	+ 	+	+ 	+s   B1B=1B:=Cc                    t        j                  ddd      }t        |      }t        |t	        j
                  d|      |      \  }}t        ||d       t	        j                  |d d d d	f   j                  d
      |d d d	d f   j                  d
      z        }t        ||d       t        |t	        j
                  d|      |j                               \  }}t        ||d       y )NrC   r  rr  r  r  rg  r  r  r@   r   r  )
r   r&   r0   r.   ro   rQ  r  rH  r   r  )rO   r  rr  rh  re   rl  ssr   s           rS   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%0rU   N)
r   r   r   r  r  rZ  r  r  r  r  r   rU   rS   r  r  0  s(    54.(K$1L,>\
+1rU   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   rE   r   r   rE   rE   r   r   rF   rE   )	r   rF   rE   r   rF   r@   rE   r   r   )r   
deconvolver   )rO   originalimpulse_responserecorded	recovered	remainders         rS   rT   zTestDeconvolve.test_basic  s8    +q6.%00;KL	9	8,rU   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(  re  r	   r   r   r
  rO   r  r  quotientr  s        rS   test_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signal  s^    FQF#q6]]:-BC 	P"("3"3H>N"OHi	P 	P 	P   AAc                     ddg}ddgddgg}t        j                  t        d      5  t        j                  ||      \  }}d d d        y # 1 sw Y   y xY w)Nr   zdivisor must be 1-D.r(  r  r  s        rS   test_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisor  s^    q6FQF+]]:-CD 	P"("3"3H>N"OHi	P 	P 	Pr  N)r   r   r   rT   r  r  r   rU   rS   r  r    s    -PPrU   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 )NrD   )r   r   r   )r3   r   r   )rO   	detrendeddetrended_exacts      rS   rT   zTestDetrend.test_basic  s%    E),-		*!)_=rU   c                 j    t        g d      }t        |d      }t        |d      }t        ||       y )N)rE   333333?ry  g?g333333@F)overwrite_dataT)r   r3   r   )rO   rd   
copy_arrayinplaces       rS   	test_copyzTestDetrend.test_copy  s/    )*Qu5
!D1!*g6rU   r   linearr  r  r  c                     t        j                  d      j                  ddd      }t        |||      }|j                  |j                  k(  sJ y )N   rB   rC   r|   )rT  r  )ro   r   rp   r3   ry  )rO   r  r   r  r  s        rS   r  zTestDetrend.test_axis  sE     yy''1a0Dt$7	$**,,,rU   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  )rB   r   r~  rf  r#  r@   )rT  bpr   r  r  rE   )rT  r'  r  )r3   r   ro   rQ  r   r   )rO   r  r  s      rS   test_bpzTestDetrend.test_bp
  s    ?*DxA6		151 zz$a.DxAA>		151 :& 	/DxA.	/ 	/ 	/s   /BBr'  r   rF   c                     t         j                  j                  d      }|j                  d      }t	        ||      }t        j
                  g d      }t        ||d       y )Ni90  rG   )r'  )
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿr  r  )ro   r   r  r  r3   r   r   )rO   r'  r  rd   rK  res_scipy_191s         rS   test_detrend_array_bpz!TestDetrend.test_detrend_array_bp  sV     ii##E*HHRL aB "O P 	]7rU   N)r   r   r   rT   r"  re  rf  rg  r  r(  ro   r   r+  r   rU   rS   r  r    s    >
7 [[Vh
%;<[[VY/- 0 =-
/ [[THBHHaV$4q!f#=>8 ?8rU   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)rK  rZ  r  r  r  rU  r  r4   r   r
   ro   rQ  r5  rO   r  rV  rW  s       rS   test_real_no_repeatz#TestUniqueRoots.test_real_no_repeat)  s7    (+AFAr2\2773q6?3rU   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)rK  ffffff{Gz皙r  rG  ?r  rT  tolr  )rK  r4  r  rG  rU  r  rF   rF   rE   rF   r  )r3  r5  r  r6  r  )g333333g
ףp=
r  gffffff?r4   r   r
   r0  s       rS   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\<0rU   c                     g d}t        |      \  }}t        ||d       t        |t        j                  t        |                   y )N)rK  r         ?      ?r  rm  rU  r  r/  r0  s       rS   test_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeat>  s7    =+AFAr2\2773q6?3rU   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)rK        𿚙?ffffff333333?333333?r  r=  ??r  rT  r7  )rK  rA  r  rC  rU  r  r9  r  )r@  rB  r  r=  r  )y      𿚙?y333333?r  yffffff??r:  r0  s       rS   test_complex_repeatz#TestUniqueRoots.test_complex_repeatD  s    '  ,A4uEF$L$&	(\<0+A4uEFJ$&	( 	\<0+A4uEH	 	\<0rU   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 )NrB   )yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?r|   r  )rF   rF   rF   rF   )ro   r$  r   rQ  r4   sortr   r
   )rO   r  
true_rootsrV  rW  s        rS   test_gh_4915zTestUniqueRoots.test_gh_4915Y  si    HHR[[RWWQZ89K
+ABGGFOZC\<0rU   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)rG  r   rG  rG  r   rU  r  rF   rE   )rE   g_p   ?&.>      ?r  )r8  rJ  r:  rU  s      rS   test_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extrac  sa    +,<=FS$K<\Aq6*+,D#NFS+$6C\Aq6*rU   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   rF   rU  r  )ro   r   r  r4   r   rT  r
   r0  s       rS   test_single_unique_rootz'TestUniqueRoots.test_single_unique_rootl  s^    IINN3"ryy~~c':"::+Aq1FRVVAYK<\C5)rU   N)
r   r   r   r1  r;  r>  rD  rH  rK  rM  r   rU   rS   r-  r-  (  s%    4141*1+*rU   r-  r  )r   r   )r|  concurrent.futuresr   r   r  r   	itertoolsr   mathr   re  r	   r   numpy.testingr
   r   r   r   r   r   r   r   numpyr   r   ro   	scipy.fftr   rY  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<   r>   r   r  ri  r  r  r  r  r  r  r=  rP  r  r/  r  r1  rA  rF  r  r  r  r  r  r  r  r  r  r  rf  rg  r  r  r  r  r  r  r  r   rv  rm  r   r-  rA  csingler  r  rC  r_  rg  ro  r  r  r  r  r  r  r.  rA  rF  r  r  r  r  r  r  r  r-  r   rU   rS   <module>r\     s   
 ?     *  
     % 6         &4 4 0 !eO eOPq4= q4hL LD?"_ ?"DhL hLT3

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

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

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