
    (ph|W                    
   S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
r
S SK
Jr  S SKJrJrJrJrJrJrJrJr  S SKJrJr  S SKrS S	KJr  S S
KJr  S SKJ r J!r!  S SKJ"r"  S SK#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrB  S SKCJDrD  S SKEJFrFJGrGJHrH  S SKIJJrJ  S SKKJLrL  S SKMJNrN  S SKOJPrPJQrQJRrR   " S S5      rS " S S\S5      rT " S S5      rU " S S\U5      rV " S S5      rWS rXS rYS  rZS! r[ " S" S#5      r\ " S$ S%5      r] " S& S'5      r^ " S( S)5      r_/ S*Qr`\`\J-  r` " S+ S,5      ra " S- S.5      rb " S/ S05      rc " S1 S25      rd " S3 S4\d5      re " S5 S6\d5      rf\
R                  R                  S75       " S8 S9\d5      5       ri " S: S;\d5      rj " S< S=\d5      rk\
R                  R                  S75       " S> S?\d5      5       rl\
R                  R                  S75       " S@ SA\d5      5       rm\
R                  R                  S75       " SB SC\d5      5       rn\
R                  R                  S75      SD 5       ro\
R                  R                  S75      rpSE rq\
R                  R                  SF\R                  \R                  \R                  \R                  \R\Q\R                  \R                  \R                  \R                  \
R                  " \R                  \pSG9\
R                  " \\pSG9/5       " SH SI5      5       r| " SJ SK5      r}\
R                  R                  SL/ SMQ5      \
R                  R                  SNSOSP/5      \
R                  R                  SQ/ SRQ5      SS 5       5       5       r~ST r\
R                  R                  SF\GR                   \GR                  \
R                  " \GR                  \pSG9/5       " SU SV5      5       r " SW SX5      r " SY SZ5      r " S[ S\5      r " S] S^\5      rS_ rSS` jr\
R                  GR                  Sa5      Sb 5       r\
R                  GR                  Sc 5       r\
R                  R                  S75      Sd 5       r\
R                  GR                  Sa5      Se 5       r " Sf Sg5      r " Sh Si5      r " Sj Sk5      r " Sl Sm5      r " Sn So5      r " Sp Sq5      rSSr jr\
R                  R                  S75      \
R                  R                  Ss\:\/45      St 5       5       r\
R                  R                  SFSu5       " Sv Sw5      5       r " Sx Sy5      r " Sz S{5      r " S| S}5      rS~ rg)    N)ThreadPoolExecutoras_completed)Decimalproduct)gcd)raises)assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_allcloseassert_assert_array_lesssuppress_warnings)arrayarange)fft)correlate1d)fminlinear_sum_assignment)signal)	correlatecorrelate2dcorrelation_lagsconvolve
convolve2dfftconvolve
oaconvolvechoose_conv_methodenvelopehilberthilbert2lfilter
lfilter_zifiltfiltbutterzpk2tfzpk2sosinvresinvreszvectorstrengthlfiltictf2sossosfiltsosfiltfilt
sosfilt_zitf2zpkBadCoefficientsdetrendunique_rootsresidueresiduez)hann)_filtfilt_gust_compute_factors_group_poles)_upfirdn_modes)
_testutilsxp_assert_close)ComplexWarningnp_longnp_ulongc                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)_TestConvolve&   c                 X    / SQn/ SQn[        X5      n[        U[        / SQ5      5        g )N)            rI   rH         rG   )rG   
             rQ         r   r   r   selfabcs       V/var/www/html/venv/lib/python3.13/site-packages/scipy/signal/tests/test_signaltools.py
test_basic_TestConvolve.test_basic(   s%    QN1e$CDE    c                 V    / SQn/ SQn[        XSS9n[        U[        / SQ5      5        g )NrG   rH   rI   rL   rM   rG   rH   samemode)rN   rO   "   rT   rU   s       rZ   	test_same_TestConvolve.test_same.   s'    Q'1eL12r]   c                 V    / SQn/ SQn[        XSS9n[        U[        / SQ5      5        g )Nr_   rK   ra   rb   )rN   rO   rO   rT   rU   s       rZ   test_same_eq_TestConvolve.test_same_eq4   s'    Q'1eL12r]   c                 |    [        / SQ5      n[        SS/5      n[        X5      n[        U[        / SQ5      5        g )N)      ?      ?       @      ?      @      ?rk   rl   )               @y       @      @y      @       @y      @      @)r   r   r   )rV   xyzs       rZ   test_complex_TestConvolve.test_complex:   s5    *+66"#QN1e$@ABr]   c                 >    SnSn[        X5      n[        X1U-  5        g )Ni	  i  )r   r
   rU   s       rZ   test_zero_rank_TestConvolve.test_zero_rank@   s!    QNQAr]   c                 0   [         R                  " S5      R                  SSS5      n[         R                  " S5      n[        S5       HJ  nS/S-  nSXC'   [	        XR                  U5      SS9n[	        XR                  U5      SS9n[        XV5        ML     g )N   rG   rL   directmethodr   )npr   reshaperanger   r   )rV   rW   rX   ib_shapero   rp   s          rZ   test_broadcastable _TestConvolve.test_broadcastableF   s}    IIbM!!!Q*IIaLqAc!eGGJIIg.x@AIIg.u=AA! r]   c                 f    [        S/5      n[        S/5      n[        X5      n[        X1U-  5        g Nig  iP  )r   r   r
   rU   s       rZ   test_single_element!_TestConvolve.test_single_elementP   s-    4&M4&MQNQAr]   c                 x    / SQ/ SQ/n/ SQ/ SQ/n[        X5      n[        / SQ/ SQ/ SQ/5      n[        X45        g NrK   r_   rM   rG   rH   rH   rI   rJ   )rM            rS   )rN      >   :   rE   )rS      r   1   r   r   r   r   rV   rW   rX   rY   ds        rZ   test_2d_arrays_TestConvolve.test_2d_arraysV   sA    	"	"QN%'') * 	1 r]   c           
         [        S5      R                  SSS5      nS[        S5      R                  SSS5      -  nU[        S5      S S S2   R                  SSS5      -  n[        / SQ/ SQ/ S	Q/ S
Q// SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ//5      n[        [	        XS5      U5        [        [	        X!S5      U5        [        [	        XS5      USS2SS2SS24   5        [        [	        X!S5      USS2SS2SS24   5        [        [	        XS5      USS2SS2SS24   5        [        [	        X!S5      USS2SS2SS24   5        g )N   rM                 ?rx   rG   )                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@fullra   rL   r   valid)r   r}   r   r   r   )rV   smallbig	out_arrays       rZ   test_input_swapping!_TestConvolve.test_input_swapping_   s   q	!!!Q*6":%%aA..vbz$B$''1a0016768
 :;==?
 ;>><>
 :<:8:;<	* 	8E7C8C7C8E7$QqS!A#qs]3	58C7$QqS!A#qs]3	58E8$QqS!A#qs]3	58C8$QqS!A#qs]3	5r]   c           	          / SQn/ SQn[        [        [        XSS9  [        [        [        XSSS9  [        [        [        XSS	S9  [        [        [        XS
SS9  [        [        [        XSSS9  g Nr_   rK   spamrb   eggsr   rc   r{   hamry   r   baconra   assert_raises
ValueErrorr   rV   rW   rX   s      rZ   test_invalid_params!_TestConvolve.test_invalid_params   sZ    j(Av>j(AveLj(AuXNj(AvgNj(AvgNr]    N)__name__
__module____qualname____firstlineno__r[   re   rh   rr   ru   r   r   r   r   r   __static_attributes__r   r]   rZ   rD   rD   &   s8    F33C"!#5JOr]   rD   c                   t    \ rS rSrS rS rS rSS jrS rS r	\
R                  R                  S 5       rS	rg
)TestConvolve   c                     / SQn/ SQn/ SQn[        XS5      n[        XC5        [        X!S5      n[        XC5        / SQnSS/nSS/n[        XS5      n[        XC5        [        X!S5      n[        XC5        g )	NrL   rM   rG   rJ   rI   rG   	rM   rG   rH   rI   rG   rH   rM   rM   rL   )F   N   I   A   r   )y      ?      @       @      y      @               @            ?        y       @      $)r   r   rV   rW   rX   expectedouts        rZ   test_valid_mode2TestConvolve.test_valid_mode2   sz    '#qW%3)qW%3)$VG$qW%3)qW%3)r]   c                 \    / SQn/ SQn[        XS5      n[        / SQ5      n[        X45        g )N)rL   rM   rG   rG   rL   rM   )rL   rH   rG   rH   rI   rJ   r   rH   rG   rM   rL   rL   rG   ra   )9   =   ?   r   -   $   r   r   s        rZ   test_same_modeTestConvolve.test_same_mode   s+    3Q6"*+1 r]   c                    [         R                  " SS5      R                  S5      n[         R                  " SS5      R                  S5      n[        [        [
        /X4Q70 SS0D6  [        [        [
        /X!4Q70 SS0D6  g 	NrL   r   rM   rG   r   rG   rM   rc   r   )r|   r   r}   r   r   r   r   s      rZ   test_invalid_shapes TestConvolve.test_invalid_shapes   so     IIaO##F+IIb!$$V,j(IaVI7HIj(IaVI7HIr]   c                    1 SknU VVVs/ s H  o2  H  nS  H  nX4U4PM	     M     M     nnnn[         R                  R                  S5      nUR                  SS/US9UR	                  U5      S.nUS   =US	'   US
'   US   SUS   -  -   US'   U GH  u  p4nU[         R
                  " U5      R                     R                  U5      n	U[         R
                  " U5      R                     R                  U5      n
S Vs0 s H  nU[        XXS9_M     nn[        US   R
                  US   R
                  5        SU;   a  SU;   a  [        [        X5      S5        M  [        X44 Vs/ s H  oS;   PM	     sn5      (       a  SSS.nOSX44;   a  SSS.nOSSS.n[        US   US   40 UD6  GM!     g s  snnnf s  snf s  snf )N>   boolint8int16int32int64uint8uint16uint32uint64float16float32float64	complex64
complex128)r   r   ra   *   r   rL   size)r   fr   rX   ur                 ?rY   )r   ry   )r{   rc   r   ry   r   >   r   r   -C6?gư>rtolatolr   MbP?h㈵>:0yE>)r|   randomRandomStatechoicerandndtypekindastyper   r
   r    anyr   )rV   ntypest1t2rc   argsrngarray_typesx1x2keyresultstkwargss                  rZ   test_convolve_method!TestConvolve.test_convolve_method   s   4 */ F22+D4 +D  F
 ii##B'JJ1vAJ6IIaL*.9#.>>C;s+&s+d;s3C.CCC LBDRXXb\../66r:BRXXb\../66r:B #45"33 HRCCC"3  5 --wx/@/F/FG|"/7B B8D8a118DEE"($7rh&"&5 #'5GENGH,=HH1 !F5 Es   !F7F>,G
c                     S Hu  n[         R                  " SU-  /[         R                  S9n[        X"SS9n[        X"SS9nUS:  d  MF  [	        X45        [	        USSU-  -  5        [	        USSU-  -  5        Mw     g )N)	rN      2   3   4   5   6   <   r   rM   r   r   rz   ry   r  )r|   r   r   r   r
   )rV   r   rq   r   ry   s        rZ    test_convolve_method_large_input-TestConvolve.test_convolve_method_large_input   su     6A!Q$rxx0A1.Ca84F 2vS)S!ac(+VQ1X. 6r]   c                    [        [        [        S/SSS9  [        [        [        SS/SS9  [        [        [        S/SSS9  [        [        [        SS/SS9  [        [        [        S/S//5        [        [        [        S/S5        g NrL   rM   ry   rz   r   rG   r   rV   s    rZ   test_mismatched_dims!TestConvolve.test_mismatched_dims   sn    j(QC8Dj(As8Dj(QC5Aj(As5Aj(QC1#7j(QC3r]   c                     [         R                  " / SQ[        S9n[         R                  " / SQ[        S9n[        R                  " SS9   [        X5        S S S 5        g ! , (       d  f       g = fNr   r  r   dtype=object is not supportedmatch)r|   asarrayobjectpytestdeprecated_callr   r   s      rZ   test_dtype_deprecation#TestConvolve.test_dtype_deprecation   sI     JJ)8JJ2&A##*IJQN KJJ   A  
A.r   N)d   )r   r   r   r   r   r   r   r	  r  r  r"  markthread_unsafer$  r   r   r]   rZ   r   r      sA    *,!
J*IX/4 [[ r]   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
\\/5      \R                  R                  SS/ SQ/4S/ SQ/4/5      S 5       5       rS rS rS rSrg)_TestConvolve2di  c                 x    / SQ/ SQ/n/ SQ/ SQ/n[        / SQ/ SQ/ SQ/5      n[        X5      n[        XC5        g r   r   r   r   )rV   rW   rX   r   es        rZ   r   _TestConvolve2d.test_2d_arrays  sB    	"	"%'') * q1 r]   c                     / SQ/ SQ/n/ SQ/ SQ/n[        / SQ/5      n[        XS5      n[        XC5        [        X!S5      n[        XC5        g )NrM   rG   rH   rI   rJ   r   r   rH   rI   rJ   r   r   	   rN   rK   r_   r   P   b   t      r   r-  rV   r.  r   hgs        rZ   test_valid_mode_TestConvolve2d.test_valid_mode  sO    "$:;	")*+qW%1  qW%1 r]   c                     / SQ/ SQ/n[         R                  " / SQ/ SQ/[        S9S-   n[        / SQ/5      n[        XS5      n[	        XC5        [        X!S5      n[        XC5        g )	Nr1  r2  rK   r_   r  r   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@r   )r|   r   complexr   r   r   r9  s        rZ   test_valid_mode_complx&_TestConvolve2d.test_valid_mode_complx  s_    "$:;HHi+7;b@GHIqW%!!' qW%1 r]   c                     / SQ/ SQ/n/ SQ/ SQ/nSn[        XSSU5      n[        / SQ/ S	Q/ S
Q/5      n[        XE5        g )NrK   r_   r   r   rL   r   fill)      r   rd   rQ   )rP   (   r   @   r  )rQ   .   C   r   0   r   r   r   )rV   rW   rX   fillvalrY   r   s         rZ   test_fillvalue_TestConvolve2d.test_fillvalue)  sM    	"	"qVVW5''') * 	1 r]   c                    Sn[         R                  R                  5        nUR                  [        S5        [        [        US9   [        S//SS//SS9  S S S 5        S S S 5        Sn[        [        US9   [        S//SS//SS/S9  S S S 5        g ! , (       d  f       NB= f! , (       d  f       NK= f! , (       d  f       g = f)	Nz2could not cast `fillvalue` directly to the output zCasting complex valuesr  rL   rM   r   	fillvaluez,`fillvalue` must be scalar or an array with )r|   testingr   filterr@   r   r   r   )rV   msgsups      rZ   test_fillvalue_errors%_TestConvolve2d.test_fillvalue_errors3  s    BZZ))+sJJ~'?@z5QC5Aq6(b9 6 ,
 =:S1u1vh1a&9 21	 65 ,+ 21s/   %B$BB$7B5
B!	B$$
B25
Cc                 8    [        [        [        S//SS/// S9  g )NrL   rM   rP  r   r   r   r  s    rZ   test_fillvalue_empty$_TestConvolve2d.test_fillvalue_empty>  s    j*seq!fX "	$r]   c                 |    / SQ/ SQ/n/ SQ/ SQ/n[        XSS5      n[        / SQ/ SQ/ SQ/5      n[        X45        g )	NrK   r_   r   r   r   wrap)r5  r5  J   r5  r5  )D   r_  r   r_  r_  rK  r   s        rZ   test_wrap_boundary"_TestConvolve2d.test_wrap_boundaryC  sF    	"	"qVV,''') * 	1 r]   c                 |    / SQ/ SQ/n/ SQ/ SQ/n[        XSS5      n[        / SQ/ SQ/ S	Q/5      n[        X45        g )
NrK   r_   r   r   r   symm)rd   r   ,   r   B   )r  rJ  r   r5  T   )R   r   \   n   r   rK  r   s        rZ   test_sym_boundary!_TestConvolve2d.test_sym_boundaryL  sF    	"	"qVV,'')+ , 	1 r]   funczboundary, expectedrc  )g     B@      E@      F@g     F@r]  )     E@ro  rn       C@c                     [         R                  " / SQ/5      n[         R                  " S5      nU" XESUS9n[        Xc5        g )N)       @            @      @)rL      ra   rc   boundary)r|   r   onesr   )rV   rm  ry  r   imagekernelresults          rZ   test_same_with_boundary'_TestConvolve2d.test_same_with_boundaryU  s<     /01!e&8D 	6,r]   c           
         SS K Jn  [        R                  " SS[        S9R                  SS5      n[        R                  " SS[        S9R                  SS5      n[        X#SS	S
9n[        XAR                  X#S	SS95        g )Nr   rL   r   r  rN   rG   e   ra   r]  rx  )r   r   )rc   origin)	scipy.ndimagendimager|   r   floatr}   r   r   r   )rV   ndirW   rX   rY   s        rZ   test_boundary_extension_same,_TestConvolve2d.test_boundary_extension_samef  sj     	$IIau-55b!<IIa.66r2>q&6:1ll1fXlNOr]   c           	      B   SS K Jn  [        R                  " SS[        S9R                  SS5      n[        R                  " SS[        S9R                  SS5      n[        X#SS	S
9n[        R                  " USS	5      n[        XAR                  XSS	S9S S2S S24   5        g )Nr   rL   rN   r  rG   %   rJ   r   r]  rx  )rG   rG   r  rb   r   )
r  r  r|   r   r  r}   r   padr   r   )rV   r  rW   rX   rY   apads         rZ   test_boundary_extension_full,_TestConvolve2d.test_boundary_extension_fullp  s     	$IIae,44Q:IIae,44Q:q&6:vva)621ll4l@"crcJKr]   c                    [         R                  " SS5      R                  S5      n[         R                  " SS5      R                  S5      n[        [        [
        /X4Q70 SS0D6  [        [        [
        /X!4Q70 SS0D6  g r   )r|   r   r}   r   r   r   r   s      rZ   r   #_TestConvolve2d.test_invalid_shapes{  so     IIaO##F+IIb!$$V,j*KvK&'9JKj*KvK&'9JKr]   r   N)r   r   r   r   r   r<  r@  rM  rV  rZ  r`  rk  r"  r(  parametrizer   r   r~  r  r  r   r   r   r]   rZ   r+  r+    s    !
!
!!	:$
!! [[Vj+%>?[[1%(@'AB%(@'ABDE-E @-P	L
Lr]   r+  c                       \ rS rSrS rS rS rS r\R                  R                  \R                  R                  S5      S 5       5       rSrg	)
TestConvolve2di  c                 t    / SQ/ SQ/n/ SQ/ SQ/n[        XS5      n[        / SQ/ SQ/5      n[        X45        g )NrK   r_   r1  r2  ra   )rO   rP   rd   )r5  r6  r7  rK  )rV   r.  r   r;  r:  s        rZ   r   TestConvolve2d.test_same_mode  s?    	""$:;qV$< " #1 r]   c                    / SQ/ SQ/n/ SQ/ SQ/n/ SQ/n[        XS5      n[        XC5        [        X!S5      n[        XC5        SS/S	S
//n/ SQ/ SQ/nSS//n[        XS5      n[        XC5        [        X!S5      n[        XC5        g )NrK   r_   r1  r2  r4  r   rk   r   rm         @        )r         @       @r  )r  y      @      ?y      @      y      ;@      y      G@       @)r   r   )rV   r.  r   r   r   s        rZ   r   TestConvolve2d.test_valid_mode2  s    	""$:;*+w'3)w'3)f/0%'?@h'(w'3) w'3)r]   c                 h   [         R                  " S5      n[         R                  " / SQ5      nS H~  n[        [         R                  " XUS9[
        R                  " XUS95        [        [         R                  " [
        R                  " U/U/US95      [
        R                  " XUS95        M     g )NrI   g	@gffffff?rG   r   r   ra   rb   )r|   r   r   r   r   r   squeezer   rV   rW   rX   rc   s       rZ   test_consistency_convolve_funcs.TestConvolve2d.test_consistency_convolve_funcs  s    IIaLHH]#-DAt < &4 @B

!!1#s6!8402 .r]   c                     [        [        [        SS5        [        [        [        S/S/5        [        [        [        S///S///5        g )NrG   rH   rY  r  s    rZ   test_invalid_dims TestConvolve2d.test_invalid_dims  s<    j*a3j*qcA37j*ug!w?r]   z!Can't create large array for testc                    SS[         R                  " 5       R                  -  -  n[        R                  " SU-  S-  [         R                  " 5       R                  -  S-  5        [         R
                  " SU-  [         R                  S9nSUS S S2'   [         R                  R                  R                  X!S4SS	9n[        R                  " USS//5      n[         R                  " US:  5      nUS
   R                  S
:X  d   eg )Nl          rM     g    .Ar  rL   )iH  r   )shapestridesr   )r|   r   itemsizer=   check_free_memoryzeroslibstride_tricks
as_stridedr   r   wherer   )rV   r   rW   countfailss        rZ   test_large_arrayTestConvolve2d.test_large_array  s     dRXXZ0001$$QUT\BHHJ4G4G%G#%MN HHTAXRXX.#A#FF  ++AY	+R!!!q!fX.#Qx}}!!!r]   r   N)r   r   r   r   r   r   r  r  r"  r(  slowxfail_on_32bitr  r   r   r]   rZ   r  r    sN    !*.	2@
 [[[[ CD" E "r]   r  c                      \ rS rSr\R
                  R                  SSSSS/SS//5      S 5       r\R
                  R                  SSS/SS//5      S	 5       r\R
                  R                  SSSSS/SS//5      S
 5       r	\R
                  R                  SSS/SS//5      S 5       r
\R
                  R                  SSSSS/SS/SS/SS/SS/SS/SS/SS//
5      S 5       r\R
                  R                  SSS/SS/SS/SS/SS/SS/SS/SS//5      S 5       r\R
                  R                  SSSSS/SS/SS/SS/SS/SS/SS/SS//
5      S 5       r\R
                  R                  SSS/SS/SS/SS/SS/SS/SS/SS//5      S 5       r\R
                  R                  SSSSS/SS//5      S 5       r\R
                  R                  SSSS/S//5      S 5       r\R
                  R                  SSSSS/SS//5      S 5       r\R
                  R                  SSS//5      S 5       r\R
                  R                  SSSSS/SS//5      S 5       r\R
                  R                  SSS/SS//5      S 5       rS rS rS rS r\R
                  R                  SSSSS/SS//5      S 5       r\R
                  R                  SSS/SS//5      S 5       r\R
                  R                  SSS/SS/SS/SS/SS/SS/SS/SS//5      S  5       r\R
                  R8                  \R
                  R                  S!\" \" SS"5      5      \" \" S#S$5      5      -   \R@                  RC                  S%5      RE                  S&S'S(5      RG                  5       -   5      S) 5       5       r$\R
                  RJ                  S* 5       r&S+r'g),TestFFTConvolvei  axes Nr   r   c                     [        / SQ5      n[        / SQ5      nUS:X  a  [        X"5      nO
[        X"US9n[        XC5        g )NrK   rL   rH   rN   rS         "@r  r  r   r   r   rV   r  rW   r   r   s        rZ   	test_realTestFFTConvolve.test_real  s<    )+,2:a#Ca.C!#0r]   rL   c                     [        / SQ5      n[        / SQ5      n[        R                  " USS/5      n[        R                  " USS/5      n[        X"US9n[	        XC5        g )NrK   r  rM   rL   r  r   r|   tiler   r   r  s        rZ   test_real_axesTestFFTConvolve.test_real_axes  sS    )+,GGA1v778aV,!T*!#0r]   c                     [        / SQ5      n[        / SQ5      nUS:X  a  [        X"5      nO
[        X"US9n[        XC5        g )Nrk          @       @y      @      @rn   y               @y              4@y              8@y              2@r  r  r  r  s        rZ   rr   TestFFTConvolve.test_complex  s=    *+DE2:a#Ca.C!#0r]   c                     [        / SQ5      n[        / SQ5      n[        R                  " USS/5      n[        R                  " USS/5      n[        X"US9n[	        XC5        g )Nr  r  rM   rL   r  r  r  s        rZ   test_complex_axes!TestFFTConvolve.test_complex_axes  sT    *+DEGGA1v778aV,!T*!#0r]   c                     [        / SQ/ SQ/5      n[        / SQ/ SQ/ SQ/5      nUS:X  a  [        X"5      nO
[        X"US9n[        XC5        g )NrK   r   rL   rH   rN   rS   r3  r   rE  8   r  r   r   rF  r   r  r   r  r  r  r  s        rZ   test_2d_real_same!TestFFTConvolve.test_2d_real_same  sW     9 +-.0 1 2:a#Ca.C!#0r]   rM   c                     [        / SQ/ SQ/5      n[        / SQ/ SQ/ SQ/5      n[        R                  " U/ SQ5      n[        R                  " U/ SQ5      n[        X"US9n[	        XC5        g )NrK   r   r  r  r  rM   rL   rL   r  r  r  s        rZ   test_2d_real_same_axes&TestFFTConvolve.test_2d_real_same_axes  sf     9 +-.0 1 GGAy!778Y/!T*!#0r]   c                     [        / SQ/ SQ/5      n[        / SQ/ SQ/ SQ/5      nUS:X  a  [        X"5      nO
[        X"US9n[        XC5        g )N      ?       @      @      @y      @      @rl   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        rZ   test_2d_complex_same$TestFFTConvolve.test_2d_complex_same%  sX     ++- .A(<  2:a#Ca.C!#0r]   c                     [        / SQ/ SQ/5      n[        / SQ/ SQ/ SQ/5      n[        R                  " U/ SQ5      n[        R                  " U/ SQ5      n[        X"US9n[	        XC5        g )Nr  r  r  r  r  r  r  r  r  s        rZ   test_2d_complex_same_axes)TestFFTConvolve.test_2d_complex_same_axes?  sg     ++- .A(<  GGAy!778Y/!T*!#0r]   c                    [        / SQ5      n[        / SQ5      n[        / SQ5      n[        / SQ5      nUS:X  a  [        X#S5      nO[        X#SUS9n[        Xd5        US:X  a  [        X2S5      nO[        X2SUS9n[        Xe5        g )NrK   	rG   rG   rI   rJ   r   r   r3  r   rL        A@     D@     G@	r  g      4@      9@r  r  r  rq  g      <@rs  r  ra   r  r  rV   r  rW   rX   
expected_1
expected_2r   s          rZ   test_real_same_mode#TestFFTConvolve.test_real_same_modeV  s~    )-.?+
FG
2:aF+CaF6C!#22:aF+CaF6C!#2r]   c                    [        / SQ5      n[        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  " USS/5      n[        R                  " USS/5      n[        R                  " USS/5      n[        R                  " USS/5      n[        X#SUS9n[	        Xd5        [        X2SUS9n[	        Xe5        g )	NrK   r  r  r  rM   rL   ra   r  r  r  s          rZ   test_real_same_mode_axes(TestFFTConvolve.test_real_same_mode_axesi  s    )-.?+
FG
GGA1vGGA1vWWZ!Q0
WWZ!Q0
!T2!#2!T2!#2r]   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      nUS:X  a  [        X#S5      nO[        X#SUS9n[        XT5        US:X  a  [        X2S5      nO[        X2SUS9n[        XT5        g )NrG   rM   rL   r  g      8@g      ?@r  rp  g     H@r        (@r  r   r  r  rV   r  rW   rX   r   r   s         rZ   test_valid_mode_real$TestFFTConvolve.test_valid_mode_real{  sv     )-.<=2:aG,CaG$7C!#02:aG,CaG$7C!#0r]   c                    [        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  " USS/5      n[        R                  " USS/5      n[        R                  " USS/5      n[        X#SUS9n[	        XT5        g Nr  r  r  rM   rL   r   r  r  r  s         rZ   test_valid_mode_real_axes)TestFFTConvolve.test_valid_mode_real_axes  sv     )-.<=GGA1vGGA1v778aV,!d3!#0r]   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      nUS:X  a  [        X#S5      nO[        X#SUS9n[        XT5        US:X  a  [        X2S5      nO[        X2SUS9n[        XT5        g )N      @      y       @      @r   r  y      @      y      @        y      @      y       @        y     F@      (@y      >@      7@y      H@      @@r  r   r  r  r  s         rZ   test_valid_mode_complex'TestFFTConvolve.test_valid_mode_complex  su    *+:;<=2:aG,CaG$7C!#02:aG,CaG$7C!#0r]   c                 @   [        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  " USS/5      n[        R                  " USS/5      n[        R                  " USS/5      n[        X#SUS9n[	        XT5        [        X2SUS9n[	        XT5        g )Nr  r  r  rM   rL   r   r  r  r  s         rZ   test_valid_mode_complex_axes,TestFFTConvolve.test_valid_mode_complex_axes  s    *+:;<=GGA1vGGA1v778aV,!d3!#0!d3!#0r]   c                    [        / SQ5      n[        / SQ5      n[        / SQ5      n[        R                  " USS/5      n[        R                  " USS/5      n[        R                  " USS/5      n[        XSSS9n[	        XC5        g r  r  r   s        rZ   test_valid_mode_ignore_nonaxes.TestFFTConvolve.test_valid_mode_ignore_nonaxes  st    )-.<=GGA1vGGA1v778aV,!a0!#0r]   c                     [        [        / / 5      R                  S:H  5        [        [        SS// 5      R                  S:H  5        [        [        / S/5      R                  S:H  5        g Nr   rI   rJ   r   )r   r   r   r  s    rZ   
test_emptyTestFFTConvolve.test_empty  sV    B#((A-.QFB',,12B$))Q./r]   c                 b    [        S5      n[        S5      n[        X5      n[        X1U-  5        g r   r   r   r
   rV   rW   rX   r   s       rZ   ru   TestFFTConvolve.test_zero_rank  s*    $K$K!Sa% r]   c                 f    [        S/5      n[        S/5      n[        X5      n[        X1U-  5        g r   r  r  s       rZ   r   #TestFFTConvolve.test_single_element  s.    4&M4&M!Sa% r]   c                    [         R                  R                  S5        [         R                  R                  S5      S[         R                  R                  S5      -  -   n[         R                  R                  S5      S[         R                  R                  S5      -  -   n[         R                  " X#S5      nUS:X  a  [        X#S5      nO[        X#SUS9n[        [         R                  " XTSS	95        g )
N    r   )  r   r  r  绽|=r   )r|   r   seedrandr   r   r   allcloser  s         rZ   test_random_data TestFFTConvolve.test_random_data  s    
		tIINN4 2		t(<#<<IINN4 2		t(<#<<;;qV,2:aF+CaF6CC67r]   c                 `   [         R                  R                  S5        [         R                  R                  S5      S[         R                  R                  S5      -  -   n[         R                  R                  S5      S[         R                  R                  S5      -  -   n[         R                  " X#S5      n[         R
                  " USS/5      n[         R
                  " USS/5      n[         R
                  " USS/5      n[        X#SUS9n[        [         R                  " XTS	S
95        g )Nr  r  r   r  r   rM   rL   r  r  r   )	r|   r   r!  r"  r   r  r   r   r#  r  s         rZ   test_random_data_axes%TestFFTConvolve.test_random_data_axes  s    
		tIINN4 2		t(<#<<IINN4 2		t(<#<<;;qV,GGA1vGGA1v778aV,!T2C67r]   rH   c                 `   Su  p#[         R                  R                  S5        [         R                  R                  " U6 S[         R                  R                  " U6 -  -   n[         R                  R                  " U6 S[         R                  R                  " U6 -  -   n[	        XES5      nUS S 2S S 2S S S 4   nUS S 2S S 2S S S 4   nUS S 2S S 2S S S 4   n[         R
                  " UR                  SS5      SS5      n[         R
                  " UR                  SS5      SS5      n[         R
                  " UR                  SS5      SS5      n[         R                  " U/ S	Q5      n[         R                  " U/ S
Q5      n[         R                  " U/ SQ5      n[        XESUS9n[        XvSSS9  g )N)){   rO   )      r  r   r   r   rM   rL   rH   )rM   rL   rG   rL   rL   )rM   rL   rL   rH   rL   )rM   rL   rG   rH   rL   r  r  r   )
r|   r   r!  r"  r   moveaxisswapaxesr  r   r   )rV   r  a_shaper   rW   rX   r   r   s           rZ   test_random_data_multidim_axes.TestFFTConvolve.test_random_data_multidim_axes  s^    0
		tIINNG$rBIINNG,D'DDIINNG$rBIINNG,D'DDaF+aD$$%aD$$%Aq$d23KK

1a(!Q/KK

1a(!Q/;;x00A61= GGA'GGA'778_5!T2E>r]   r   r'  r  i  r  r  '  rI   c                    [         R                  R                  U5      S[         R                  R                  U5      -  -   n[         R                  R                  U5      S[         R                  R                  U5      -  -   n[         R                  " X#S5      n[	        X#S5      n[        XTSS9  [	        X#SS/S9n[        XTSS9  g )Nr   r   r  r   r   r  )r|   r   r"  r   r   r   )rV   r   rW   rX   r   r   s         rZ   test_many_sizesTestFFTConvolve.test_many_sizes  s     IINN1RYY^^A%6 66IINN1RYY^^A%6 66;;qV,!'E2!aS1E2r]   c           	         Sn[         R                  R                  S5      nUR                  U5      n[         R                  [         R
                  4 HX  nXCS'   [        R                  " SS5      nSn[        R                  " [        US9   [        R                  " X5SS	S
9  S S S 5        MZ     g ! , (       d  f       Ml  = f)Nr  l   [<zn( r'     皙?z4Use of fft convolution.*|invalid value encountered.*r  ra   r   r   )r|   r   default_rngstandard_normalnaninfr   firwinr"  warnsRuntimeWarningr   )rV   r   r  sig_nanvalcoeffsrT  s          rZ   test_fft_nanTestFFTConvolve.test_fft_nan(  s    ii##K0%%a(FFBFF#CCL]]3,FHCnC8fUK 98 $
 98s   B00
B?	r   )(r   r   r   r   r"  r(  r  r  r  rr   r  r  r  r  r  r  r  r  r  r	  r  r  r  ru   r   r$  r'  r1  r  listr~   r|   r   r   randinttolistr6  r)  rE  r   r   r]   rZ   r  r    s    [[Vb$A3RD%AB	1 C	1 [[Va!b2$%781 91 [[Vb$A3RD%AB1 C1 [[Va!b2$%781 91 [[Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	11	11 [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1111 [[Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	11	11  [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1111 [[Vb$A3RD%AB3 C3$ [[VaaS2$%783 93" [[Vb$A3RD%AB1 C1$ [[Va!X.1 /1 [[Vb$A3RD%AB1 C1" [[Va!b2$%781 9110!! [[Vb$A3RD%AB
8 C
8 [[Va!b2$%788 98 [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1?1?. [[[[U1c]U4	 
		d#++D%;BBD	EF
	3F 	3 [[L Lr]   r  c                      [        S5      e)NzFell back to fftconvolve)RuntimeError)r   r  s     rZ   fftconvolve_errrL  6  s    
1
22r]   c                 t    [        U SS9 VVs/ s H  u  p[        X-
  5      S:  d  M  X4PM     snn$ s  snnf )NrM   repeatrG   )r   abssizesrW   rX   s      rZ   gen_oa_shapesrS  :  sA    &uQ7 7tq15zA~ QF7   s   44c                 J   [        U 5      n[        U 5      n[        X5       VVs/ s H	  u  p4X4-   PM     nnn/ SQn[        XV5       VVs/ s HD  u  pxUS:w  d4  US   US   :  a  US   US   :  d  US   US   :  d  M1  US   US   :  d  M?  Xx4-   PMF     snn$ s  snnf s  snnf )Nr  r   r   rL   rM   rG   )rS  zipr   )	rR  shapes0shapes1ishapes0ishapes1shapesmodesishapesimodes	            rZ   gen_oa_shapes_2dr^  ?  s    E"GE"G'#%# %7Hh#  % &E3:63I C3IQZ'!*$gaj)@QZ'!*$  *1gaj)@ GH3I C C	%Cs   B
0B>
B	Bc                 \    [        U SS9 VVs/ s H  u  pX:  d  M  X4PM     snn$ s  snnf )NrM   rN  r   rQ  s      rZ   gen_oa_shapes_eqr`  L  s9    &uQ7 7tqv QF7   s   ((c                   `   \ rS rSr\R
                  R                  5       \R
                  R                  S\" \	" \
" S5      5      \	" \
" SSS5      5      -   5      5      S 5       5       r\R
                  R                  S\" / SQ5      5      \R
                  R                  SS	S
/5      \R
                  R                  S/ SQ5      S 5       5       5       r\R
                  R                  SSS/5      \R
                  R                  S\" / SQ5      5      \R
                  R                  SSS/5      \R
                  R                  SSS/5      \R
                  R                  SS	S
/5      \R
                  R                  S/ SQ5      S 5       5       5       5       5       5       r\R
                  R                  S\" / SQ5      5      \R
                  R                  SS	S
/5      S 5       5       r\R
                  R                  SSS/SS/SS//5      \R
                  R                  S\" / SQ5      5      \R
                  R                  SSS/5      \R
                  R                  SSS/5      \R
                  R                  SS	S
/5      S 5       5       5       5       5       rS rS rS rSrg)TestOAConvolveiQ  zshape_a_0, shape_b_0r'  r  rR   c                     [         R                  R                  U5      n[         R                  R                  U5      n[        X45      n[	        X45      n[        Xe5        g N)r|   r   r"  r   r   r   )rV   	shape_a_0	shape_b_0rW   rX   r   r   s          rZ   test_real_manylens!TestOAConvolve.test_real_manylensR  sD     IINN9%IINN9%q$!#0r]   )r  /   rJ   rH   rL   
is_complexTFrc   r  c                    [         R                  R                  U5      n[         R                  R                  U5      nU(       aJ  US[         R                  R                  U5      -  -   nUS[         R                  R                  U5      -  -   n[        XgUS9nUR	                  [
        R                  S[        5        [        XgUS9n	[        X5        g Nr   rb   r   
r|   r   r"  r   setattrr   _signaltoolsrL  r   r   )
rV   re  rf  rj  rc   monkeypatchrW   rX   r   r   s
             rZ   test_1d_noaxesTestOAConvolve.test_1d_noaxes`  s     IINN9%IINN9%Bryy~~i000ABryy~~i000Aq$/F//+	-D)!#0r]   r  r   rL   )r  ri  rJ   rH   shape_a_extrarG   shape_b_extrac	                    U/S-  n	U/S-  n
X)U'   X:U'   [         R                  R                  " U	6 n[         R                  R                  " U
6 nU(       aF  US[         R                  R                  " U	6 -  -   nUS[         R                  R                  " U
6 -  -   n[        XXqS9nUR	                  [
        R                  S[        5        [        XXqS9n[        X5        g )NrM   r   rc   r  r   rm  )rV   r  re  rf  rs  rt  rj  rc   rp  ax_aax_brW   rX   r   r   s                  rZ   test_1d_axesTestOAConvolve.test_1d_axest  s     q q T
T
IINND!IINND!Bryy~~t,,,ABryy~~t,,,Aq$:F//+	-D4!#0r]   z0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec                    [         R                  R                  X5      n[         R                  R                  X$5      n	U(       aJ  US[         R                  R                  X5      -  -   nU	S[         R                  R                  X$5      -  -   n	[        XUS9n
UR	                  [
        R                  S[        5        [        XUS9n[        X5        g rl  rm  )rV   re  rf  	shape_a_1	shape_b_1rc   rj  rp  rW   rX   r   r   s               rZ   test_2d_noaxesTestOAConvolve.test_2d_noaxes  s     IINN90IINN90Bryy~~i;;;ABryy~~i;;;Aq$/F//+	-D)!#0r]   rM   c                    U/S-  nU/S-  nX+US   '   X<US   '   XKUS   '   X\US   '   [         R                  R                  " U6 n[         R                  R                  " U6 nU	(       aF  US[         R                  R                  " U6 -  -   nUS[         R                  R                  " U6 -  -   n[        XXaS9nU
R	                  [
        R                  S[        5        [        XXaS9n[        UU5        g )NrG   r   rL   r   rv  r   rm  )rV   r  re  rf  r|  r}  rc   rs  rt  rj  rp  rw  rx  rW   rX   r   r   s                    rZ   test_2d_axesTestOAConvolve.test_2d_axes  s     q q !T!W!T!W!T!W!T!WIINND!IINND!Bryy~~t,,,ABryy~~t,,,Aq$:F//+	-D4!#x0r]   c                     [        [        / / 5      R                  S:H  5        [        [        SS// 5      R                  S:H  5        [        [        / S/5      R                  S:H  5        g r  )r   r   r   r  s    rZ   r  TestOAConvolve.test_empty  sV    
2r"''1,-
Aq62&++q01
2s#((A-.r]   c                 b    [        S5      n[        S5      n[        X5      n[        X1U-  5        g r   r   r   r
   r  s       rZ   ru   TestOAConvolve.test_zero_rank  s*    $K$KSa% r]   c                 f    [        S/5      n[        S/5      n[        X5      n[        X1U-  5        g r   r  r  s       rZ   r   "TestOAConvolve.test_single_element  s.    4&M4&MSa% r]   r   N)r   r   r   r   r"  r(  r  r  r`  rG  r~   rg  rS  rq  ry  r^  r~  r  r  ru   r   r   r   r]   rZ   rb  rb  Q  s   [[[[3-d5:.>.25dB3G.H/I J1	 
1 [[3*+<=?[[\D%=9[[V%>?1 @ :?1  [[VaV,[[3*>:<[[_q!f5[[_q!f5[[\D%=9[[V%>?1 @ : 6 6< -1, [[ :-n=? [[\D%=91 :?1" [[Vq!fq!fq!f%=>[[ :-n=? [[_q!f5[[_q!f5[[\D%=91 : 6 6? ?12/!!r]   rb  c                   :   \ rS rSr\R
                  R                  S\\/5      S 5       r	\R
                  R                  S\\/5      S 5       r
\R
                  R                  SS/S4SS/4S/S//4/5      \R
                  R                  S\\/5      S	 5       5       r\R
                  R                  S\\/5      S
 5       r\R
                  R                  S5      \R
                  R                  S\R                  \R                   /5      S 5       5       rSrg)TestAllFreqConvolvesi  convapproachc                     [         R                  " SS5      R                  S5      n[         R                  " SS5      R                  S5      n[        [        SS9   U" X#S	S
9  S S S 5        g ! , (       d  f       g = f)NrL   r   r   r   r   r   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr  r   rb   )r|   r   r}   r   r   rV   r  rW   rX   s       rZ   r   (TestAllFreqConvolves.test_invalid_shapes  si     IIaO##F+IIb!$$V,:"FG G,G G Gs   A,,
A:c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        [        SS9   U" X#SS/S9  S S S 5        g ! , (       d  f       g = f)N)rI   rJ   rM   rL   )rI   rJ   rG   rL   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r  r   rL   r  )r|   r  r   r   r  s       rZ   test_invalid_shapes_axes-TestAllFreqConvolves.test_invalid_shapes_axes  sO     HH\"HH\":"67 QF+	7 7 7s   
A
A za,brL   rM   rG   c                 d    [        [        SS9   U" X5        S S S 5        g ! , (       d  f       g = f)Nz/in1 and in2 should have the same dimensionalityr  r   r   )rV   rW   rX   r  s       rZ   r  )TestAllFreqConvolves.test_mismatched_dims  s-     :"-. . . .s   	!
/c                    [        [        SS9   U" S/S/SS9  S S S 5        [        [        SS9   U" S/S// S9  S S S 5        [        [        S	S9   U" S/S/SS/S
S//S9  S S S 5        [        [        S	S9   U" S/S// SQS9  S S S 5        [        [        SS9   U" S/S/S/S9  S S S 5        [        [        SS9   U" S/S/S/S9  S S S 5        [        [        SS9   U" S/S/SS/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz4acceptable mode flags are 'valid', 'same', or 'full'r  rL   rM   chipsrb   z#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersrG   rH   )      ?rs  ru  rv  z$axes exceeds dimensionality of inputr  zall axes must be uniquer   r  )rV   r  s     rZ   test_invalid_flags'TestAllFreqConvolves.test_invalid_flags  sz    :"01 !qc01
 :!FH!qc+H : .2 3!qc!Q!Q(893 : .2 3!qc(893 :!GI!qc,I :!GI!qc-I :!:<!qcA/< <31 1
H H3 33 3I II I< <sR   C5DD8D(D9=E
E5
D
D
D%(
D69
E

E
E)ignore::DeprecationWarningr   c           	      r   [         R                  R                  S5      R                  U5      n[         R                  R                  S5      R                  U5      n[         R                  " U" 5       5      (       a
  US-  nUS-  n[	        X#5      n[        U[        X#SS95        UR                  U:X  d   eg )N)rx   rx   )rH   rH   y        ?ry   rz   )r|   r   r   iscomplexobjr   r   r   r   )rV   r   ro   rp   ress        rZ   test_longdtype_input)TestAllFreqConvolves.test_longdtype_input  s     IIX&--e4IIV$++E2??57##HAHA!Xa8<=yyE!!!r]   r   N)r   r   r   r   r"  r(  r  r   r   r   r  r  r  filterwarningsr|   
longdoubleclongdoubler  r   r   r]   rZ   r  r    s>   [[^):68-8- [[^):68,8, [[U !sAh 1#h !saSEl,- [[^):688	- [[^):68080< [[ <=[[Wr}}bnn&EF	" G >	"r]   r  c                      \ rS rSr/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/
r/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
rSS/rS r\R                  R                  S\R                  \R                  \R                  \R                  \\\R$                  \R$                  \R&                  \R(                  /
5      S 5       r\R                  R                  S\R,                  \R.                  \R0                  \R2                  \R4                  \R6                  SS/5      S 5       rS rS r\R                  R                  S\R                  \R&                  \R(                  /5      S  5       rS!r g")#TestMedFilti*  )
r  r  r  r  r  rh     rx   r   rH  )
r  r  r  r  r  r   H   M   r_  re  )
r  r  r  r  r  rH  ri     rG  r  )
r  r  r  r  r  r         _   #   )
r  r  r  r  r  rH  rd   r3  rw  re  )
r   a   rP   r_  r   r  r   r   G   r   )
rG  r  rd  r  r_  rQ   r  r_  rD  rf  )
rG   !   r  rI  rL   r   r^  7   rS   S   )
r   r-  rH  r   r  ri  rD  +   r   rE  )
rQ   r   X   r   '   rH   rh  rG  r   r   )
r   r  r  r  r   r  r  r  rx   r   )
r   r  r  r  r  r   r  rw  r  r   )
r  r  r  r  r  ri  rd   rd   rH  r  )
r  r  r  r  r  r  r   ri  rG  r   )
r  r  r  r  r  r  rH  r  rG  r  )
r  r  r  r  r  ri  rH  r  r  rE  )
rQ   r  r  r  r  ri  rH  r   r  rE  )
r   rH  r  r  ri  rH  rH  r  r   rw  )
r   rQ   r  r  rQ   rQ   r  r  r  r   )
r   r   r-  r   rH   rH   r  r  rD  r   r   rG   c                 "   [         R                  " U R                  U R                  5      n[         R                  " [
        R                  " U R                  [        5      U R                  5      n[        XR                  5        [        X5        g rd  )
r   medfiltINKERNEL_SIZE	medfilt2dr|   r   r  r   OUT)rV   r   r.  s      rZ   r[   TestMedFilt.test_basicD  sW    NN477D$4$45RXXdggu5t7G7GH1hh'1 r]   r   c                     [         R                  " U R                  US9n[        [        R
                  " U5      R                  U5        [        [        R                  " U5      R                  U5        g )Nr  )r|   r   r  r
   r   r  r   r  rV   r   in_typeds      rZ   
test_typesTestMedFilt.test_typesJ  sL    
 88DGG51V^^H-33U;V%%h/55u=r]   float96float128c                    US;   aK  [         R                  " [         R                  5      R                  U:w  a  [        R
                  " SU 35        [         R                  " U R                  US9n[        R                  " [        SS9   [        R                  " U5        S S S 5        [        R                  " [        SS9   [        R                  " U5        S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)N)r  r  zPlatform does not support r  znot supportedr  )r|   finfor  r   r"  skipr   r  r	   r   r   r  r  r  s      rZ   test_invalid_dtypesTestMedFilt.test_invalid_dtypesS  s     ,,HHR]]+11U:KK4UG<=88DGG51]]:_=NN8$ > ]]:_=X& >= >= >=s   
C"C3"
C03
Dc                     Sn[        [        US9   [        R                  " S 5        S S S 5        g ! , (       d  f       g = f)Nz(dtype=object is not supported by medfiltr  )r   r   r   r  )rV   rT  s     rZ   	test_noneTestMedFilt.test_noned  s)    8:S1NN4  211s   1
?c                     [         R                  " S[         R                  S9nUSS nSUl        [	        [
        R                  " US5      S:H  5        g )NrN   r  rI   rJ   r   rL         @)r|   r   r   r  r   r   r  )rV   dummyrW   s      rZ   test_odd_stridesTestMedFilt.test_odd_stridesj  sB     		"BJJ/!AJ	q!$*+r]   c                   ^ ^^^^^ [         R                  " T R                  US9m[         R                  " T R                  US9nTR                  UR                  :X  d   eUR                  S   S-  mUR                  S   S-  mT R
                  S   S-  S-   mT R
                  S   S-  S-   mUUUUUU 4S jn[         R                  " U5      n[        SS9 n1 SknU Vs1 s H  ouR                  X75      iM     nn[        U5       H  n	U	R                  5       u  pnXX4'   M     S S S 5        [        XB5        g s  snf ! , (       d  f       N= f)	Nr  r   rM   rL   c                   > U u  pUS:X  a)  [        STT-   5      n[        ST* 5      n[        ST5      nO'[        TT-
  S 5      n[        TS 5      n[        TS 5      nUS:X  a)  [        STT-   5      n[        ST* 5      n[        ST5      nO'[        TT-
  S 5      n[        TS 5      n[        TS 5      nTX64   n	[        R                  " U	TR                  5      n
XU4   XX4$ Nr   )slicer   r  r  )chunkMNMinMselMoutNinNselNout
chunk_datamedM1N1r  offMoffNrV   s              rZ   apply2TestMedFilt.test_medfilt2d_parallel.<locals>.apply  s     DAAvArDy)QQ|BIt,T4(RAvArDy)QQ|BIt,T4(R "#(+J"":t/?/?@CTz?D..r]   rH   )max_workers>   r   r   r   rL   rL   rL   rL   r   )r|   r   r  r  r  r  
zeros_liker   submitr   r}  r   )rV   r   r   r  outputpoolchunksr  futuresfuturedataMsliceNslicer  r  r  r  r  s   `            @@@@@rZ   test_medfilt2d_parallel#TestMedFilt.test_medfilt2d_parallels  s,   88DGG5188DHHE2 ~~///
 ^^A!#^^A!#"a'!+"a'!+	/ 	/8 x(A.$5F>DEfU{{50fGE 'w/'-}}$f)-v~& 0 / 	6, F /.s   	E"D<<,E<E
Er   N)!r   r   r   r   r  r  r  r[   r"  r(  r  r|   ubytebyteushortshortrB   rA   	ulonglongr   r   r  bool_r   r   r  r   object_r  r  r  r  r   r   r]   rZ   r  r  *  sW   
2
1
2
2
1
2
2
0
1
0	
2B 213333321-	/C Q%K! [[Wrxx"))RXX'/",,')zz2::'? @>@> [[Wrxxr}}')~~rzz2::'0*'> ?'?'!, [[WrxxRZZ&HI5- J5-r]   r  c                       \ rS rSrS rSrg)
TestWieneri  c                     [        / SQ/ SQ/ SQ/ SQ/S5      n[        / SQ/ SQ/ SQ/ S	Q/5      n[        [        R                  " U5      US
S9  [        [        R                  " USS9US
S9  g )N)rI   rJ   rH   rG   )rG   rI   rJ   rM   )rM   rG   rI   rJ   )rL   rJ   r3  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@_)@rJ   decimalrG   )mysize)r   r   r   wiener)rV   r;  r:  s      rZ   r[   TestWiener.test_basic  sn    <! #&' ILLMO P 	"&--"2AqA!&--!"<aKr]   r   Nr   r   r   r   r[   r   r   r]   rZ   r  r    s    
Lr]   r  )meanmedianminimummaximumlinec                      \ rS rSrS r\R                  R                  SS5      \R                  R                  SS5      \R                  R                  SS5      S	 5       5       5       rS
 r	\R                  R                  SS5      \R                  R                  SS5      \R                  R                  SS5      S 5       5       5       r
\R                  R                  \R                  R                  S\5      S 5       5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      \R                  R                  S\R                   \R"                  /5      S 5       5       r\R                  R                  SS/\" \" S/SS/\5      5      -   5      S 5       rS rS r\R                  R                  S\R0                  \R                   /5      S 5       rSrg) TestResamplei  c           
      V   [         R                  " S5      nSn[        R                  " SS5      n[	        [
        [        R                  XUS9  [	        [
        [        R                  USS5        [	        [
        [        R                  USS5        [	        [
        [        R                  US	SS
S9  [	        [
        [        R                  US	SSSS9  [         R                  " [         R                  " S5      S5      n[        R                  " XBSUS9  [        UR                  S:H  5        g )N      )kaiser       @   windowyorL   r   rM   r  padtyper  rN   )r  cval)rM   rL   r   axisr  )r  )r|   r   r   
get_windowr   r   resampleresample_polyr  r   r  )rV   signumwinsig2s        rZ   r[   TestResample.test_basic  s    
 iin5j&//3CH 	j&"6"6T1Ej&"6"6QBj&"6"6Q2Nj&"6"6Q$2	/ wwryy~v.37		V#$r]   r  )Nhammingr  )r  r  r   )r'  r  rN   r-  c           
      
   [         R                  " SSUSS9n[         R                  " US-  * S-  5      n[        [        R
                  " XRUS9[        R
                  " US-   X#S9R                  5        [         R                  " [         R                  " US-  * S-  5      [         R                  " US-  * S-  5      /5      nUS-   n[        [        R
                  " XRS	US
9[        R
                  " XbS	US
9R                  SS9  g )Nr   rN   F)endpointrM   g      @r  r   rL   r  &.>r5  )	r|   linspacecosr   r   r  realr   sin)rV   r  r   r  ro   rp   	y_complexs          rZ   	test_rfftTestResample.test_rfft  s     KK2q51FFAqD59v>BCHH	J HHbffadU3Y'Ac	):;<F	OOA6:OOI6BGG	r]   c           	          [         R                  " S5      S-   n[        R                  " U5      nSn[	        [
        R                  " X#SS9[
        R                  " XSS9SS9  g )Nr  r   freq)domaintimer'  r5  )r|   r   sp_fftr   r   r   r  )rV   tsigfsigr   s       rZ   test_input_domainTestResample.test_input_domain  sN    yy~"zz$OODf5OODf5	r]   nx)rL   rM   rG   rI   r   nyr   )r  r?  c                     [         R                  " S/U-  U5      n[        R                  " XB5      n[	        US/U-  5        g NrL   )r|   r   r   r  r   )rV   r8  r9  r   ro   rp   s         rZ   test_dcTestResample.test_dc  s8     HHaS2Xu%OOA"A38$r]   r  c                     [         R                  " S5      n[         R                  R                  S5      R	                  S5      nUR                  5       n[        R                  " USSX1S9  [        X45        g )NrG   r   rM   rI   rL   r  r  )	r|   r  r   r   r   copyr   r  r   )rV   r  impulser  window_origs        rZ   test_mutable_window TestResample.test_mutable_window  sW     ((1+&&q)//2kkmWa6K6/r]   c                    [         R                  " S[         R                  S9n[         R                  " / SQ[         R                  S9n[        R
                  " USSX1S9nUR                  [         R                  :X  d   eg )NrN   r  rL   rL   rL   rL   rM   r?  )r|   r   r   r   r   r  r   )rV   r  ro   r:  rp   s        rZ   test_output_float32 TestResample.test_output_float32  sX     IIb

+HHYbjj1  AqDww"**$$$r]   c                     [         R                  " SUS9n[        R                  " USSUS9nUR                  UR                  :X  d   eg )NrN   r  rL   rM   r  )r|   r   r   r  r   )rV   r  r   ro   rp   s        rZ   test_output_match_dtype$TestResample.test_output_match_dtype  s@     IIb&  Aq':ww!''!!!r]   zmethod, ext, padtype)r   FN	polyphaseFTc                    Sn/ SQn[         R                  " U5      [        U5      -  n[         R                  " S5      S S 2[         R                  4   n[         R
                  " S[         R                  -  U-  U-  5      [        U5      -  nU GH  n	[         R                  " U	5      [        U	5      -  n
[         R
                  " S[         R                  -  U-  U
-  5      [        U	5      -  nUS:X  a  [        R                  " XSS9nOtU(       aO  X:w  aJ  [        X5      nX-  nXM-  n[        X5      nSU-  nS	U-  n[        R                  " SU-  S
-   USS9nUUS.nOSU0n[        R                  " XU4SS0UD6n[        XU5       H  u  nnnUSU	-  :  a1  UR                  S5        US;   a  [!        UUSS9  M4  [!        UUSS9  MA  [#        UR$                  UR$                  5        [         R&                  " UU5      S   n[)        US:  UXI4S9  M     GM     [         R*                  R-                  S5      n[        U5      [         R.                  " UR1                  U5      5      -  nU H  n	[         R                  " U	5      [        U	5      -  n
[         R2                  " XU5      nUS:X  a  [        R                  " X5      nO[        R                  " XUUS9n[#        UR$                  UR$                  5        [         R&                  " UU5      S   n[)        US:  US9  M     US:X  a  [         R                  " SS/5      n[        R                  " US5      n[         R                  " / SQ5      n[!        UUSS9  [         R                  " / S Q5      n[        R                  " US5      n[         R                  " SS/5      n[!        UUSS9  g g )!Nr'  )	r   r  r  c   r'  r     r9     )r        $@g      D@rM   r   r   r  r  rN   rL   )r  r  r  r?  r  r        ?        )r	  r
  333333?r5  r   r  gGz?rT  r   r  r   r   rH   )r         ?        r   rW  -q=)r  rS  rT  rS  )r|   r   r  r   newaxisr+  pir8   r   r  r   maxr?  r  rU  rC  r   r   r  corrcoefr   r   r   cumsumr   interp) rV   r{   extr  raterates_tor  freqsro   rate_tot_toy_tos	y_resampsr;  updownmax_ratef_chalf_lenr  polyargsy_toy_resampr0  corrr  r  y1_testy1_truer  y2_testy2_trues                                    rZ   test_resample_methods"TestResample.test_resample_methods  s:    < IIdOeDk)(BJJ7FF1ruu9u$q()DJ6G99W%g6DFF1ruu9u,t34tG}DE"OOAR@	7?G*A B9D"2}Hx-C!H}H#]]1x<!+;S2ACF*0WEH )73H"00T = =3;=	 ),Ee(D$h3=(IIbM"88'$TB'$TB&tzz8>>B;;tX6t<DD4KdD-BC )E/  H ii##A&J399T?33G99W%g6D99Ta(D!??16!//D8?Atzz8>>:;;tX.t4DD4KT*   U?66*+Boob!,GhhABGGW59,-Boob!,GhhBx(GGW59 r]   c           	      T   [         R                  R                  S5      n[        [         R                  [         R
                  [        [        4nSn/ SQnU H  nUR                  U5      R                  U5      nU[         R
                  [         R                  4;   a  USUR                  U5      -  -  nSUS'   SUS'   U H`  n[        R                  " SSU-  S	S
9n[        USUSS9S S U2   n	[        XS S S2   5      n
[        R                  " USXzS
9n[!        XSSS9  Mb     M     g )Nr   r3  )rM   r-  O   r   r   r   r   r  r$  r  constantr  rL   Hz>r   r   )r|   r   r   intr   r   r  r?  r   r   r   r   r?  r&   r   r  r   )rV   random_state	try_typesr   down_factorsr   ro   rh  r:  yfhcrp   s               rZ   test_poly_vs_filtfilt"TestResample.test_poly_vs_filtfiltf  s   yy,,R0"**bllE7C	"E""4(//6Ar}}55R,,,T222 AaDAbE$MM"b4i	Baa<VtVD
 a4R4)((At?Dt< % r]   c           
      @   S H  n[        SSU5       H  nS H{  n[        R                  R                  U45      n[        R                  R                  U45      n[        XES S S2   SS9n[        R
                  " USXS9n[        US S U2   U5        M}     M     M     g )	N)rM   rH   rL   rF  )rQ   r  r   rx  rb   )rg  rh  r  )r~   r|   r   r   r   r  r   )rV   rh  r8  nweightsro   weightsy_gy_ss           rZ   test_correlate1dTestResample.test_correlate1d  s    DAr4( (H		(("/A ii..{;G%a2ZHC ..ad<C#C$K5 !) ) r]   c                     [         R                  " / SQUS9n[        R                  " USSSS9n[         R                  " U5      S:  d   eg )N)r   rL   rM   rG   rM   rL   r   r  rM   rL   smooth)rg  rh  r  r   )r|   r   r   r  count_nonzero)rV   r   r  actuals       rZ   test_gh_15620TestResample.test_gh_15620  sI    xx-U;%%d)*+,.68 '!+++r]   r   N)r   r   r   r   r[   r"  r(  r  r-  r6  r<  r)  padtype_optionsrC  rG  r|   r   r   rJ  rG  r   rt  r  r  r   r  r   r   r]   rZ   r  r    s   %, [[X'89[[S(+[[U$67 8 , : [[T?3[[T?3[[W&:;% < 4 4%
 [[[[Y80 9 0 [[Y8% 9% [[Y8[[Wrzz2::&>?" @ 9" [[	
t}o
	
G:G:R=8	6 [[Wrxx&<=, >,r]   r  c                        \ rS rSrS rS rSrg)TestCSpline1DEvali  c                    [        / SQ5      n[        [        U5      5      nUS   US   -
  n[        R                  " U5      n[        [        U5      S-  5      S-  n[        R
                  " XEX2S   S9n[        US S S2   USS9  g )	N)	rL   rM   rG   rH   rG   rM   rL   rM   ru  rL   r   rQ  )dxx0rN   rI   r  )r   r   lenr   	cspline1dcspline1d_evalr   )rV   rp   ro   r  cjr  y2s          rZ   r[   TestCSpline1DEval.test_basic  s~    /03q6NqTAaD[a CFTM"T)""2bqT: 	""TrT(Aq9r]   c                    [         R                  " S5      n[         R                  " UR                  [         R                  S9nSnSU-  n[         R
                  " S[         R                  -  U-  U-  5      n[        R                  " U5      n[         R                  " S/5      n[        R                  " XV5      n[        UR                  UR                  5        g )NrM   r  rQ  r  rn   rS  )r|   r   r  r  r   exprZ  r   r  r   r  r
   r   )rV   ro   rp   Tr   cyxnewynews           rZ   rr   TestCSpline1DEval.test_complex  s    IIaLHHQWWBLL1!GFF4"%%<!#a'( a  xx$$R.TZZ)r]   r   N)r   r   r   r   r[   rr   r   r   r]   rZ   r  r    s    
:*r]   r  c                       \ rS rSrS rSrg)TestOrderFilti  c                 T    [        [        R                  " / SQ/ SQS5      / SQ5        g )NrK   rL   r   rL   rL   )rM   rG   rM   )r   r   order_filterr  s    rZ   r[   TestOrderFilt.test_basic  s    6..y)QG$	&r]   r   Nr  r   r]   rZ   r  r    s    &r]   r  c            	          \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R<                  R?                  SSS/\ RB                  " S5      /5      \R<                  R?                  SSS/\ RB                  " S5      /5      S 5       5       r"\R<                  RF                  S 5       r$S r%g!)"_TestLinearFilteri  c                     [         R                  " S[         R                  " U5      S-
  [         R                  " U5      5      R                  U5      nU R	                  U5      $ )Nr   rL   )r|   r(  prodr}   convert_dtype)rV   r  ro   s      rZ   generate_TestLinearFilter.generate  sE    KK2775>A-rwwu~>FFuM!!!$$r]   c                    U R                   [        R                   " S5      :X  a  [        R                  " U5      n[        R                  " UR                  U R                   5      n[        R
                  " X/SS/S/S//5      nU H  u  pEU R                  US   5      US'   M     U$ [        R                  " XR                   S9$ )	NOrefs_okzerosize_okreadonly	writeonlyr   .r  )r   r|   r   emptyr  nditertype)rV   arrr   iterro   rp   s         rZ   r  _TestLinearFilter.convert_dtype  s    ::#&**S/C((399djj1C99cZ)M)B${m46D1R5)# J::c44r]   c                     U R                  S5      nU R                  SS/5      nU R                  SS/5      nU R                  / SQ5      n[        [        X#U5      U5        g NrJ   rL   r   rS        ࿩r   rM   rH   rJ   r   rQ  r  r  r   r$   rV   ro   rX   rW   y_rs        rZ   test_rank_1_IIR!_TestLinearFilter.test_rank_1_IIR  sZ    MM$2w'T{+  !56!'!"2C8r]   c                     U R                  S5      nU R                  SS/5      nU R                  S/5      nU R                  / SQ5      n[        [        X#U5      U5        g )Nr  rL   r   rL   rG   rI   r   r  r  r  s        rZ   test_rank_1_FIR!_TestLinearFilter.test_rank_1_FIR  sX    MM$1v&s#  !45!'!"2C8r]   c                 (   U R                  S5      nU R                  / SQ5      nU R                  SS/5      nU R                  SS/5      nU R                  / SQ5      nU R                  SS	/5      n[        X#XS
9u  px[        Xu5        [        X5        g )Nr  rL   r   r   rS  r  rL   rM   )rL   rI   r3     r   rw  r  zir  r  r$   r   	rV   ro   rX   rW   r  r  zf_rrp   zfs	            rZ   test_rank_1_IIR_init_cond+_TestLinearFilter.test_rank_1_IIR_init_cond  s    MM$z*T{+A'  !67!!2s),a'!!)!"+r]   c                 &   U R                  S5      nU R                  / SQ5      nU R                  S/5      nU R                  SS/5      nU R                  / SQ5      nU R                  SS/5      n[        X#XS9u  px[        Xu5        [        X5        g )Nr  rF  rL   )rL   rM   rG   rJ   r3  r  r3  rI   r  r  r  s	            rZ   test_rank_1_FIR_init_cond+_TestLinearFilter.test_rank_1_FIR_init_cond  s    MM$y)s#A'  !56!!1a&)a'!!)!"+r]   c                     U R                  S5      nU R                  SS/5      nU R                  SS/5      nU R                  / SQ/ SQ/ SQ/ SQ/5      n[        X#USS9n[        XE5        g )	NrH   rG   rL   r   rS  r   rM   rH   rJ   rH   rM   r   rR  r  )rV   ro   rX   rW   y_r2_a0rp   s         rZ   test_rank_2_IIR_axis_0(_TestLinearFilter.test_rank_2_IIR_axis_0  sl    MM&!2w'Sz*$$iI&/&1 2A!!$!'-r]   c                     U R                  S5      nU R                  SS/5      nU R                  SS/5      nU R                  / SQ/ SQ/ SQ/ SQ/5      n[        X#USS	9n[        XE5        g )
Nr  rL   r   rS  r   rM   r   rJ   r)  rJ   rS   r  rS   r  ir  rR  r  )rV   ro   rX   rW   y_r2_a1rp   s         rZ   test_rank_2_IIR_axis_1(_TestLinearFilter.test_rank_2_IIR_axis_1  sl    MM&!2w'Sz*$$i])&+ ,A!!$!'-r]   c                    U R                  S5      nU R                  SS/5      nU R                  SS/5      nU R                  [        R                  " S5      5      nU R                  / SQ/ SQ/ SQ/ S	Q/5      nU R                  / S
Q5      S S 2[        R                  4   n[        X#USUS9u  px[        XW5        [        X5        g )Nr  rL   r   rS  )rH   rL   rF  )r   r   )r  r  )r  r  )r  r  iir  r  )r  r  r|   rz  rY  r$   r   )	rV   ro   rX   rW   r  	y_r2_a0_1r  rp   r  s	            rZ    test_rank_2_IIR_axis_0_init_cond2_TestLinearFilter.test_rank_2_IIR_axis_0_init_cond  s    MM&!2w'Sz*/&&	:}+(- .	!!"56q"**}EaaB/!)/!"+r]   c                 f   U R                  S5      nU R                  SS/5      nU R                  SS/5      nU R                  [        R                  " S5      5      nU R                  / SQ/ SQ/ SQ/ SQ/5      nU R                  / SQ/5      n[	        X#US	US
9u  px[        XW5        [        X5        g )Nr  rL   r   rS  rL   rG   )rL   rG   rI   )rI   rG   rL   )r  r  r   r  )r  r  r|   rz  r$   r   )	rV   ro   rX   rW   r  	y_r2_a0_0r  rp   r  s	            rZ    test_rank_2_IIR_axis_1_init_cond2_TestLinearFilter.test_rank_2_IIR_axis_1_init_cond  s    MM% 2w'Sz*/&&	9(19(> ?	!!?"34aaB/!)/!"+r]   c                   ^^ U R                  S5      nU R                  SS/5      mU R                  SS/5      m[        UR                  5       H7  n[	        TTX5      n[
        R                  " UU4S jX!5      n[        X45        M9     g )NrH   rG   rM   rL   r   rS  c                    > [        TTU 5      $ rd  r$   wrW   rX   s    rZ   <lambda>3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>&      1a0@r]   r  r  r~   ndimr$   r|   apply_along_axisr   rV   ro   r  rp   r  rW   rX   s        @@rZ   test_rank_3_IIR!_TestLinearFilter.test_rank_3_IIR  st    MM)$2w'Sz*!&&MD1a&A%%&@$JC%a- "r]   c                   ^^^ U R                  S5      nU R                  SS/5      mU R                  SS/5      m[        UR                  5       H  n[	        UR
                  5      nSX2'   U R                  [        R                  " U5      5      nU R                  S/5      m[        TTXU5      u  pVUUU4S jnUUU4S jn[        R                  " XrU5      n	[        R                  " XU5      n
[        XY5        [        Xj5        M     g )Nr  rL   r   rS  c                 "   > [        TTU TS9S   $ Nr  r   r  r  rW   rX   zi1s    rZ   lf08_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf04      q!Q3/22r]   c                 "   > [        TTU TS9S   $ Nr  rL   r  r  s    rZ   lf18_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf16  r  r]   r  r  r~   r   rG  r  r|   rz  r$   r  r   rV   ro   r  zi_shaper  rp   r  r
  r  r  r  rW   rX   r	  s              @@@rZ   test_rank_3_IIR_init_cond+_TestLinearFilter.test_rank_3_IIR_init_cond)  s    MM)$2w'Sz*!&&MDAGG}HHN##BGGH$56B$$aS)CAq!2.EA33%%c3C&&s!4D%a-%b/ "r]   c                   ^^ U R                  S5      nU R                  / SQ5      mU R                  S/5      m[        UR                  5       H7  n[	        TTX5      n[
        R                  " UU4S jX!5      n[        X45        M9     g )Nr  r  rL   c                    > [        TTU 5      $ rd  r  r  s    rZ   r  3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>D  r  r]   r  r  s        @@rZ   test_rank_3_FIR!_TestLinearFilter.test_rank_3_FIR=  sn    MM)$z*s#!&&MD1a&A%%&@$JC%a- "r]   c                   ^^^ U R                  S5      nU R                  / SQ5      mU R                  S/5      m[        UR                  5       H  n[	        UR
                  5      nSX2'   U R                  [        R                  " U5      5      nU R                  SS/5      m[        TTXU5      u  pVUUU4S jnUUU4S jn[        R                  " XrU5      n	[        R                  " XU5      n
[        XY5        [        Xj5        M     g )Nr  r  rL   rM   c                 "   > [        TTU TS9S   $ r  r  r  s    rZ   r
  8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0R  r  r]   c                 "   > [        TTU TS9S   $ r  r  r  s    rZ   r  8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1T  r  r]   r  r  s              @@@rZ   test_rank_3_FIR_init_cond+_TestLinearFilter.test_rank_3_FIR_init_condG  s    MM)$z*s#!&&MDAGG}HHN##BGGH$56B$$aV,CAq!2.EA33%%c3C&&s!4D%a-%b/ "r]   c                    U R                  S5      n[        R                  " SSSS9u  p#U R                  U5      nU R                  U5      nUR                  S   S-
  nU R                  [
        R                  " SS	U45      5      nU R                  [
        R                  " SSU45      5      n[        X#XS
9u  px[        X#XS
9u  p[        X5        [        X5        [        [        [        X#US[
        R                  " U5      5        g )N)rH   rI   r  r   r:  bar  r   rL   rH   rI   r  r   )r  r   r'   r  r  r|   rz  r$   r   r   r   )rV   ro   rX   rW   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings              rZ   test_zi_pseudobroadcast)_TestLinearFilter.test_zi_pseudobroadcast[  s    MM*%mmAs40q!q!''!*q. $$RWWaG_%=>$$RWWaG_%=>!!6!!6!&1!'3 	j'1B8HIr]   c                     U R                  S5      nU R                  / SQ5      nU R                  S/5      nU R                  / SQ5      n[        X#S   U5      n[        XT5        g )NrJ   r  rL   )r   rL   rM   rM   rM   rM   r   r  )rV   ro   rX   rW   r  rp   s         rZ   test_scalar_a_TestLinearFilter.test_scalar_ap  s[    MM!z*s#  !34AtQ!!)r]   c                    U R                  [        R                  " SS5      5      nU R                  [        R                  " SS5      5      nU R                  [        R                  " / SQ5      5      n[        R                  " SS5      nUSS S 2S S 24==   S-  ss'   USS S 2S S 24==   S-  ss'   U R                  U5      nU R                  [        R                  " S	S5      5      n[        R                  " SS5      nS//S//S///US S 2S S 2S S
24'   U R                  U5      n[        X#USU5      u  px[        Xv5        [        X5        [        X#S   USU5      u  p[        X5        [        X5        g )N)rG   rM   rI   lrI   rL   r   r   )rG   rL   rH   rL   rM   rG   )rG   rM   rH   rH   r   r   )r  r|   r  rz  r   r$   r   )rV   ro   rX   rW   r  zf_expected
y_expectedy_iirzf_iiry_firzf_firs              rZ   test_zi_some_singleton_dims-_TestLinearFilter.test_zi_some_singleton_dimsz  sF    rxx56rwwq#/rxx01WWWc"
1Qq5	Q	
1Qq5	Q	#(('3)?@XXgs+
 !seqcUaSE2
1Qrr6''
3
  aR0!%4!&6  Q4B3!%4!&6r]   c           	          U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        [        [        XX4U5        g rd  )r  r   r   r$   )rV   rX   rW   ro   r  r  s         rZ   base_bad_size_zi"_TestLinearFilter.base_bad_size_zi  sR    q!q!q!#j'1"=r]   c                 T   [         R                  " S5      nU R                  S/S/USS/5        U R                  SS/S/USSS/5        U R                  SS/S/USS//5        U R                  SS/S/US/ SQ5        U R                  / SQS/USS//5        U R                  / SQS/US/ SQ5        U R                  S/SS/USSS/5        U R                  S/SS/USS//5        U R                  S/SS/US/ SQ5        U R                  / SQSS/USS/5        U R                  / SQSS/USS/S//5        U R                  / SQSS/US/ SQ5        U R                  / SQSS/US/ SQ5        U R                  SS// SQUSS/5        U R                  SS// SQUSS/S//5        U R                  SS// SQUS/ SQ5        U R                  SS// SQUS/ SQ5        [         R                  " S5      R                  S	5      nU R                  S/S/USS/5        U R                  SS/S/US/ SQ5        U R                  SS/S/US/ SQ//5        U R                  SS/S/USS/S/S
//5        U R                  SS/S/USSS//5        U R                  SS/S/US/ SQ/5        U R                  / SQS/US/ SQ5        U R                  / SQS/US/ SQ/ SQ//5        U R                  / SQS/USSS/S
S/SS//5        U R                  / SQS/USSS/S
S//5        U R                  / SQS/US/ SQ/ SQ/5        U R                  S/SS/US/ SQ5        U R                  S/SS/US/ SQ//5        U R                  S/SS/USS/S/S
//5        U R                  S/SS/USSS//5        U R                  S/SS/US/ SQ/5        U R                  S// SQUS/ SQ5        U R                  S// SQUS/ SQ/ SQ//5        U R                  S// SQUSSS/S
S/SS//5        U R                  S// SQUSSS/S
S//5        U R                  S// SQUS/ SQ/ SQ/5        U R                  / SQSS/US/ SQ5        U R                  / SQSS/US/ SQ/ SQ//5        U R                  / SQSS/USSS/S
S/SS//5        U R                  / SQSS/USSS/S
S//5        U R                  / SQSS/US/ SQ/ SQ/5        U R                  S/S/USS/5        U R                  SS/S/US/ SQ5        U R                  SS/S/USS/S/S
/S///5        U R                  SS/S/US/ SQ/5        U R                  SS/S/USS/S/S
//5        U R                  SS/S/USS/S/S
/S/S//5        U R                  / SQS/US/ SQ5        U R                  / SQS/USSS/S
S/SS/SS///5        U R                  / SQS/US/ SQ/ SQ/5        U R                  / SQS/USSS/S
S/SS//5        U R                  / SQS/USSS/S
S/SS/SS/SS//5        U R                  S/SS/US/ SQ5        U R                  S/SS/USS/S/S
/S///5        U R                  S/SS/US/ SQ/5        U R                  S/SS/USS/S/S
//5        U R                  S/SS/USS/S/S
/S/S//5        U R                  S// SQUS/ SQ5        U R                  S// SQUSSS/S
S/SS/SS///5        U R                  S// SQUS/ SQ/ SQ/5        U R                  S// SQUSSS/S
S/SS//5        U R                  S// SQUSSS/S
S/SS/SS/SS//5        U R                  / SQSS/US/ SQ5        U R                  / SQSS/USSS/S
S/SS/SS///5        U R                  / SQSS/US/ SQ/ SQ/5        U R                  / SQSS/USSS/S
S/SS//5        U R                  / SQSS/USSS/S
S/SS/SS/SS//5        g )NrJ   rL   r   r   r   rL   rM   rF  r   rL   rM   rG   rS   r  rM   )r   rL   rM   rG   rH   rI   r_   rG   rH   rI   )rH   rI   rJ   r   )r   rL   rM   rG   rH   rI   rJ   r   r   r   r3  )r|   r   r=  r}   )rV   r  r  s      rZ   test_bad_size_zi"_TestLinearFilter.test_bad_size_zi  s	   YYq\qcA3B4q!fqc2rAq6:q!fqc2rQC59q!fqc2r9=i!b"se<i!b"i@qcAq62rAq6:qcAq62rQC59qcAq62r9=i!QR!=i!QR1#sDi!QRCi!QRFq!fiR!=q!fiR1#sDq!fiRCq!fiRF YYr]""5)qcA3As3 	q!fqc2q':q!fqc2qG9+>q!fqc2qA3aS/Bq!fqc2qAa5':q!fqc2q9+>i!b!]Ci!b!ww6G5HIi!b!qeQqE1Q%5HIi!b!qeQqE]Ci!b!i	5JKqcAq62q':qcAq62qG9+>qcAq62qA3aS/BqcAq62qAa5':qcAq62q9+>qc9b!]Cqc9b!ww6G5HIqc9b!qeQqE1Q%5HIqc9b!qeQqE]Cqc9b!i	5JKi!QQFi!QQ''9J8KLi!QQ!A!uaU8KLi!QQ!A!uFi!QQ98MN 	qcA3As3q!fqc2q)<q!fqc2qQCQC3D2EFq!fqc2q<.Aq!fqc2qA3sA3-@q!fqc2qA3sA3sA32GHi!b!5FGi!b!!uaUAa5!A6O5PQi!b!i	5JKi!b!qeQqE1Q%5HIi!b!qeQqE1Q%1qQRe5TUqcAq62q)<qcAq62qQCQC3D2EFqcAq62q<.AqcAq62qA3sA3-@qcAq62qA3sA3sA32GHqc9b!5FGqc9b!!uaUAa5!A6O5PQqc9b!i	5JKqc9b!qeQqE1Q%5HIqc9b!qeQqE1Q%1qQRe5TUi!QQ8IJi!QQ1Q%1qeQqE9R8STi!QQ98MNi!QQ!A!uaU8KLi!QQ!A!uaUAa5RSTUQV8WXr]   c                 *   U R                  S5      nU R                  S/5      nU R                  S/5      nU R                  / 5      n[        X2XS9u  pV[        XQ5        [	        UR
                  U R
                  5        [	        UR                  S5        g )N)rI   rL   r  r   )r  r  r$   r   r
   r   r   )rV   ro   rW   rX   r  rp   r  s          rZ   test_empty_zi_TestLinearFilter.test_empty_zi  sz    MM$s#s##a'!!'RXXtzz*RWWa r]   c                     U R                  S/5      nU R                  S/5      n[        X!SS/5      n[        X!SS/5      n[        X!SS/5      n[        X45        [        X55        g )NrL   r  r   TF)r  r-   r   )rV   rW   rX   r  zi_1zi_2s         rZ   test_lfiltic_bad_zi%_TestLinearFilter.test_lfiltic_bad_zi  sf    s#s#QB7#qaV$qdE]+2$2$r]   c                 &   U R                  S/5      nU R                  / SQ5      nU R                  SS/5      nU R                  S/5      nU R                  S/5      nU R                  SS/5      n[        X!XCS9u  px[        Xu5        [        X5        g )	NrL   r  rM   r   r  r^  r  r  r$   r   	rV   rW   rX   r  ro   yezferp   r  s	            rZ   test_short_x_FIR"_TestLinearFilter.test_short_x_FIR  s     s#z*A't$%  !S*a'!!(!"*r]   c                 (   U R                  SS/5      nU R                  / SQ5      nU R                  SS/5      nU R                  S/5      nU R                  S/5      nU R                  SS/5      n[        X!XCS	9u  px[        Xu5        [        X5        g )
NrL   r  rM   r   r  r^  irM  r  rN  rO  s	            rZ   test_short_x_IIR"_TestLinearFilter.test_short_x_IIR  s     1v&z*A't$%  #s,a'!!(!"*r]   c                 2   U R                  S5      nU R                  SS/5      nUR                  5       nU R                  SS/5      nUR                  5       nU R                  / SQ5      n[        X$U5      n[	        Xv5        [        X#5        [        XE5        g r  r  r  r@  r$   r   r
   rV   ro   rX   b0rW   a0r  y_fs           rZ   test_do_not_modify_a_b_IIR,_TestLinearFilter.test_do_not_modify_a_b_IIR,  s    MM$2w'VVXT{+VVX  !56aA!#+QQr]   c                 0   U R                  S5      nU R                  / SQ5      nUR                  5       nU R                  S/5      nUR                  5       nU R                  / SQ5      n[        X$U5      n[	        Xv5        [        X#5        [        XE5        g )Nr  r  rM   )r   rS  rL   rM   rG   rv  rX  rY  s           rZ   test_do_not_modify_a_b_FIR,_TestLinearFilter.test_do_not_modify_a_b_FIR8  s}    MM$y)VVXs#VVX  !67aA!#+QQr]   rW   r  rX   c                     [         R                  R                  S5      n[        [	        [         R
                  " S/5      [         R
                  " S/5      U5      [	        X!U5      5        g )NrN   r  )r|   r   r   r   r$   r   )rV   rW   rX   r  s       rZ   test_scalar_input#_TestLinearFilter.test_scalar_inputD  sH     yyr"BHHcUORXXse_d;A$	!r]   c                     [         R                  " / SQ[        S9n[         R                  " / SQ[        S9n[        R                  " SS9   [        X/ SQ5        S S S 5        g ! , (       d  f       g = f)Nr   r  r   r  r  r`   )r|   r   r!  r"  r#  r$   r   s      rZ   r$  (_TestLinearFilter.test_dtype_deprecationL  sL     JJ)8JJ2&A##*IJA,' KJJs   A##
A1r   N)&r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r,  r/  r:  r=  rB  rE  rJ  rR  rU  r]  r`  r"  r(  r  r|   r   rc  r)  r$  r   r   r]   rZ   r  r    s   %
599	,	,..,,.0(.0(J**76>^Y@	!	%++

 [[S3rxx}"=>[[S3rxx}"=>! ? ?! [[( (r]   r  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterFloat32iU  r   r   Nr   r   r   r   r|   r   r   r   r]   rZ   rh  rh  U      HHSMEr]   rh  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterFloat64iY  r   r   Nri  r   r]   rZ   rl  rl  Y  rj  r]   rl  r  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterFloatExtendedi]  r;  r   Nri  r   r]   rZ   rn  rn  ]      HHSMEr]   rn  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterComplex64ib  Fr   Nri  r   r]   rZ   rq  rq  b  rj  r]   rq  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterComplex128if  Dr   Nri  r   r]   rZ   rt  rt  f  rj  r]   rt  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterComplexExtendedij  Gr   Nri  r   r]   rZ   rw  rw  j  ro  r]   rw  c                   >    \ rS rSr\R
                  " S5      rS rSrg)TestLinearFilterDecimalio  r  c                 *    [        [        U5      5      $ rd  )r   strrV   ro   s     rZ   r  TestLinearFilterDecimal.types  s    s1vr]   r   N)r   r   r   r   r|   r   r  r   r   r]   rZ   rz  rz  o  s    HHSMEr]   rz  c                   <    \ rS rSr\R
                  " S5      r\rSrg)TestLinearFilterObjectiw  r  r   N)	r   r   r   r   r|   r   r  r  r   r   r]   rZ   r  r  w  s    HHSMEDr]   r  c                  $   [        [        S5      (       a*  S[        R                  ;   a  [        R                  " S5        [        [        [        S/S// SQ5        [        [        [        S/S // SQ5        [        [        [        S /S// SQ5        g )Nabiflagsr   z'test is flaky when run with python3-dbgr  )r  Nrs  r  rs  ru  )hasattrsysr  r"  r  r   	TypeErrorr$   r   r]   rZ   test_lfilter_bad_objectr  }  sf     sJC3<<$7=>)WsecU4DE)WsedV_E)Wtfse_Er]   c                  >    [        [        [        SS/SS// SQ5        g )NrM   rG   rH   rI   )rL   rM   rG   rH   rI   )r   NotImplementedErrorr$   r   r]   rZ   !test_lfilter_notimplemented_inputr    s    %w1!ukJr]   dt)marksc                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestCorrelateReali  c                     [         R                  " SSS5      R                  U5      n[         R                  " SSS5      R                  U5      n[         R                  " / SQ5      R                  U5      nX#U4$ )Nr   rG   rH   rL   rM   )r   rM   rI   r   rG   )r|   r(  r   r   rV   r  rW   rX   r  s        rZ   _setup_rank1TestCorrelateReal._setup_rank1  s_    KK1a ''+KK1a ''+hh'..r2Syr]   c                     Sn [         R                  " U5      n[        US5      (       a,  [        S[         R                  " UR
                  5      -  5      nU$ ! [         a     U$ f = f)NrJ   
resolutionr  )r|   r  r  r{  log10r  	Exception)rV   res_dtr  dt_infos       rZ   equal_tolerance!TestCorrelateReal.equal_tolerance  se    	hhv&Gw--d288G,>,>#??@   		s   AA 
A'&A'c                     U[         R                  :X  a  U R                  [         R                  5      $ U R                  U5      $ rd  )r|   r  r  r   )rV   r  s     rZ   equal_tolerance_fft%TestCorrelateReal.equal_tolerance_fft  s6     R]]"''

33''//r]   c                    U[         :X  a-  [        [        S5      /[        S5      /5      n[        US5        g U R                  U5      u  p4n[	        X4SS9n[	        X4SS9n[        UUU R                  UR                  5      S9  [        UUU R                  UR                  5      S9  [        UR                  U5        [        UR                  U5        g )NrH   rG   ry   r   rz   r  )	r   r    r
   _setup_rank3r   r   r  r   r  )rV   r  r{   rW   rX   r  y_ffty_directs           rZ   test_methodTestCorrelateReal.test_method  s    ='wqzlCF*))"-IA#a51E h7H%c&+.2.F.Fu{{.SV &c&..2.B.B8>>.RU b),r]   c                     U R                  U5      u  p#n[        X#S5      n[        XTSS 5        [        UR                  U5        [        X2S5      n[        XTSS S S S2   5        [        UR                  U5        g )Nr   rL   rH   r   r  r   r   r
   r   rV   r  rW   rX   r  rp   s         rZ   test_rank1_valid"TestCorrelateReal.test_rank1_valid  sp    %%b)	caG$!!1X.QWWb! aG$!!1Xdd^4QWWb!r]   c                     U R                  U5      u  p#n[        X#S5      n[        XTS S 5        [        UR                  U5        g )Nra   r   r  r  s         rZ   test_rank1_same!TestCorrelateReal.test_rank1_same  s>    %%b)	caF#!!"X.QWWb!r]   c                     U R                  U5      u  p#n[        X#S5      n[        XT5        [        UR                  U5        g )Nr   r  r  s         rZ   test_rank1_full!TestCorrelateReal.test_rank1_full  s8    %%b)	caF#!!)QWWb!r]   c                    [         R                  " SSS5      R                  SSS9R                  U5      n[         R                  " SSS5      R                  S	SS9R                  U5      n[	        / S
Q/ SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/ SQ//[         R
                  S9R                  U5      nX#U4$ )Nr   r  rF  )rM   rH   rI   rr  )orderrR   rD  r   )rT  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     @rq  )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@rT  r  )r|   r(  r}   r   r   r   r  s        rZ   r  TestCorrelateReal._setup_rank3  s    KK2r"**9C*@GGKK2r"**9C*@GG EIKKJFH JKLLLIK GIKLIEGH( **)&( '-fRj) 	, Syr]   c           	      .   U R                  U5      u  p#n[        X#S5      n[        XTSS2SS2SS24   5        [        UR                  U5        [        X2S5      n[        XTSS2SS2SS24   S S S2S S S2S S S24   5        [        UR                  U5        g )Nr   rL   rM   rH   rG   rI   r   r  r   r   r
   r   r  s         rZ   test_rank3_valid"TestCorrelateReal.test_rank3_valid  s    %%b)	caG$!!1ac1Q3%78QWWb! aG$!!1ac1Q3%7"ddDbD8H%IJQWWb!r]   c                     U R                  U5      u  p#n[        X#S5      n[        XTSS2SS2SS24   5        [        UR                  U5        g )Nra   r   r   rL   r  r  r  s         rZ   test_rank3_same!TestCorrelateReal.test_rank3_same  sP    %%b)	caF#!!2qtQrT)9%:;QWWb!r]   c                     U R                  U5      u  p#n[        X#5      n[        XT5        [        UR                  U5        g rd  r  r  s         rZ   test_rank3_all TestCorrelateReal.test_rank3_all  s5    %%b)	caO!!)QWWb!r]   r   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r]   rZ   r  r    s9    	0-$	"""<	"""r]   r  c                   d    \ rS rSrS rS rS rS r\R                  R                  S 5       rSrg)	TestCorrelatei  c                    [         R                  " SS5      R                  S5      n[         R                  " SS5      R                  S5      n[        [        [
        /X4Q70 SS0D6  [        [        [
        /X!4Q70 SS0D6  g r   )r|   r   r}   r   r   r   r   s      rZ   r   !TestCorrelate.test_invalid_shapes  so     IIaO##F+IIb!$$V,j)JqfJ8IJj)JqfJ8IJr]   c           	          / SQn/ SQn[        [        [        XSS9  [        [        [        XSSS9  [        [        [        XSS	S9  [        [        [        XS
SS9  [        [        [        XSSS9  g r   r   r   r   r   s      rZ   r   !TestCorrelate.test_invalid_params  sZ    j)Q?j)QuMj)QhOj)QwOj)QwOr]   c                    [        [        [        S/SSS9  [        [        [        SS/SS9  [        [        [        S/SSS9  [        [        [        SS/SS9  [        [        [        S/S//5        [        [        [        S/S5        g r  r  r  s    rZ   r  "TestCorrelate.test_mismatched_dims'  sn    j)aS!HEj)QHEj)aS!EBj)QEBj)aSA3%8j)aS!4r]   c                     / SQnSS/n[        [        XSS9/ SQ5        / SQn/ SQn[        [        XSS9/ SQ5        [        [        XS	S9/ S
Q5        [        [        XSS9S/5        g )NrK   rH   rI   ra   rb   )rI      rR   r   )r   rQ   rR   r   )rJ   r   rQ   rR   rS   r   rQ   )r   r   r   s      rZ   test_numpy_fastpath!TestCorrelate.test_numpy_fastpath0  sa    F	!V4kB	!V4lC	!V46IJ	!W5t<r]   c                     [         R                  " / SQ[        S9n[         R                  " / SQ[        S9n[        R                  " SS9   [        X5        S S S 5        g ! , (       d  f       g = fr  )r|   r   r!  r"  r#  r   r   s      rZ   r$  $TestCorrelate.test_dtype_deprecation;  sI     JJ)8JJ2&A##*IJaO KJJr&  r   N)r   r   r   r   r   r   r  r  r"  r(  r)  r$  r   r   r]   rZ   r  r    s6    
KP5	= [[ r]   r  rc   r   ra   r   behindTF
input_size)r'  r  r  r  r3  i'  c                    [         R                  R                  S5      nUR                  U5      n[	        US-  5      nU(       a+  [         R
                  " UR                  U5      U/5      nU* nOXES  nUn[        XFU S9n[        UR                  UR                  U S9n	[         R                  " U5      n
[        X   U5        [        U	R                  UR                  5        g )Nr   rN   rb   )r|   r   r   r<  r{  concatenater   r   r   argmaxr
   r  )rc   r  r  r  in1offsetin2r   correlationlags	lag_indexs              rZ   test_correlation_lagsr  D  s    
 ))


"C


j
)CBFnnc11&93?@7 'lC40KCHHchhT:D		+&I(+[../r]   c                      [         R                  " [        SS9   [        SSSS9  S S S 5        g ! , (       d  f       g = f)NzMode asdfgh is invalidr  r'  asdfghrb   )r"  r	   r   r   r   r]   rZ   "test_correlation_lags_invalid_moder  `  s*    	z)A	Bc1 
C	B	Bs   /
=c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestCorrelateComplexie  c                     U[         R                  :X  a  [         R                  n[        S[         R                  " U5      R
                  -  S-  5      $ )NrM   rG   )r|   r  cdoubler{  r  	precision)rV   r  s     rZ   r  TestCorrelateComplex.decimalo  s:    B1rxx|---122r]   c           	         [         R                  R                  S5        [         R                  R                  S5      R	                  U5      nUS[         R                  R                  S5      R	                  U5      -  -  n[         R                  R                  S5      R	                  U5      nUS[         R                  R                  S5      R	                  U5      -  -  n[        UR                  UR                  US9[        UR                  UR                  US9-   R	                  U5      nUS[        UR                  UR                  US9* [        UR                  UR                  US9-   -  -  nX4U4$ )Nr3  rN   r   r   rb   )r|   r   r!  r   r   r   r*  imag)rV   r  rc   rW   rX   r  s         rZ   r  !TestCorrelateComplex._setup_rank1t  s   
		qIIOOB&&r*	R"))//"%,,R000IIOOA%%b)	R"))//!$++B///d3d345;VBZ 	riT::qvvqvvD9: ; 	;Syr]   c                 B   U R                  US5      u  p#n[        X#S5      n[        XTU R                  U5      S9  [	        UR
                  U5        [        X2S5      n[        XTS S S2   R                  5       U R                  U5      S9  [	        UR
                  U5        g )Nr   r  r   )r  r   r   r  r
   r   conjr  s         rZ   r  %TestCorrelateComplex.test_rank1_valid  s    %%b'2	caG$!!$,,r2BCQWWb! aG$!!2Y^^%5t||B?OPQWWb!r]   c                     U R                  US5      u  p#n[        X#S5      n[        XTU R                  U5      S9  [	        UR
                  U5        g )Nra   r  r  r   r   r  r
   r   r  s         rZ   r  $TestCorrelateComplex.test_rank1_same  E    %%b&1	caF#!!$,,r2BCQWWb!r]   c                     U R                  US5      u  p#n[        X#S5      n[        XTU R                  U5      S9  [	        UR
                  U5        g )Nr   r  r  r  s         rZ   r  $TestCorrelateComplex.test_rank1_full  r  r]   c                     [         R                  " / SQUS9n[         R                  " / SQUS9n[        X#5      n[        U/ SQ5        g )Nr   rk   r  r  y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      )r|   r   r   r
   rV   r  r   krp   s        rZ   test_swap_full#TestCorrelateComplex.test_swap_full  s8    HH-R8HH5R@aOQLMr]   c                 D    / SQn/ SQn[        X#SS9n[        U/ SQ5        g )Nr  r  ra   rb   )r  r  r  )r   r
   r  s        rZ   test_swap_same#TestCorrelateComplex.test_swap_same  s#    $,a(Q34r]   c                 H   [         R                  R                  SSS5      R                  U5      nUS[         R                  R                  SSS5      R                  U5      -  -  n[         R                  R                  SSS5      R                  U5      nUS[         R                  R                  SSS5      R                  U5      -  -  n[	        UR
                  UR
                  5      [	        UR                  UR                  5      -   R                  U5      nUS[	        UR
                  UR                  5      * [	        UR                  UR
                  5      -   -  -  n[	        X#S5      n[        XTU R                  U5      S-
  S9  [        UR                  U5        g )	NrN   r   rJ   r   rH   r   rL   r  )r|   r   r   r   r   r*  r  r   r  r
   r   r  s         rZ   
test_rank3TestCorrelateComplex.test_rank3  s8   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aF#!!$,,r2BQ2FGQWWb!r]   c           	         [         R                  " [         R                  R                  5       5      R	                  U5      nUS[         R                  " [         R                  R                  5       5      R	                  U5      -  -  n[         R                  " [         R                  R                  5       5      R	                  U5      nUS[         R                  " [         R                  R                  5       5      R	                  U5      -  -  n[        UR                  UR                  5      [        UR                  UR                  5      -   R	                  U5      nUS[         R                  " [        UR                  UR                  5      * [        UR                  UR                  5      -   5      -  -  n[        X#S5      n[        XTU R                  U5      S-
  S9  [        UR                  U5        [        [        S/S/5      [        SS5      5        [        [        S/S/5      [        SS5      5        [        [        S/S/5      [        SS5      5        g )Nr   r   rL   r  rn                 @rH   )r|   r   r   r   r   r   r*  r  r   r  r
   r   r  s         rZ   
test_rank0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 aF#!!$,,r2BQ2FGQWWb!YsRD)9Q+;<YtbT*Ib",=>YtaS)9R+;<r]   r   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r   r   r]   rZ   r  r  e  s0    3
	"""N5"=r]   r  c                   &    \ rS rSrS rS rS rSrg)TestCorrelate2di  c                 r   [         R                  " S5      n[         R                  " / SQ5      nS GH  n[        [         R                  " XUS9[
        R                  " XUS95        [        [         R                  " [
        R                  " U/U/US95      [
        R                  " XUS95        US:X  d  M  [        [         R                  " X!US9[
        R                  " X!US95        [        [         R                  " [
        R                  " U/U/US95      [
        R                  " X!US95        GM     g )NrI   r  r  rb   r   )r|   r   r   r   r   r   r  r   r  s       rZ    test_consistency_correlate_funcs0TestCorrelate2d.test_consistency_correlate_funcs  s    IIaLHH]#-DQ = & 0 0D AC

6+=+=qcA3CG,I !J & 0 0D AC
 w#BLLD$A$*$4$4Q$EG#BJJv/A/A1#sGK0M %N$*$4$4Q$EG .r]   c                 0   [         R                  " SS5      R                  S5      n[         R                  " SS5      R                  S5      n[        [        [
        R                  /X4Q70 SS0D6  [        [        [
        R                  /X!4Q70 SS0D6  g r   )r|   r   r}   r   r   r   r   r   s      rZ   r   #TestCorrelate2d.test_invalid_shapes  s{     IIaO##F+IIb!$$V,j&"4"4SvS&'ARSj&"4"4SvS&'ARSr]   c                     [        [        R                  " S//S//5      S5        [        [        R                  " S//S//5      S5        [        [        R                  " S//S//5      S5        g )NrL   rn                 r  rJ   rH   y              (@)r
   r   r   r  s    rZ   test_complex_input"TestCorrelate2d.test_complex_input  s_    V''!v6<V''""7;V''"!6<r]   r   N)r   r   r   r   r  r   r  r   r   r]   rZ   r	  r	    s    G&
T=r]   r	  c                       \ rS rSrS rS r\R                  R                  S\	R                  \	R                  /5      S 5       rSrg)TestLFilterZIi  c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " SS/5      n[        X!5      n[        XC5        g )N)r  rt  rS  )r  rT  rs  r  rt  )r|   r   r%   r   )rV   rW   rX   zi_expectedr  s        rZ   r[   TestLFilterZI.test_basic  sC    HH%&HH_%hhT{+!"2r]   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        SU-  SU-  5      n[        XCSS9  g )N)rM   r   rI   )rL   rL   r   rM   rX  r   )r|   r   r%   r   )rV   rX   rW   r	  zi2s        rZ   test_scale_invariance#TestLFilterZI.test_scale_invariance  sH     HHYHHY1ac"u-r]   r   c                     [         R                  " SUS9n[         R                  " S/US9n[        [         R                  " [
        R                  " X#5      5      R                  U5        g )Nr   r  rL   )r|   r  r   r
   r*  r   r%   r   )rV   r   rX   rW   s       rZ   r  TestLFilterZI.test_types  sH    HHa&HHaS&RWWV..q45;;UCr]   r   N)r   r   r   r   r[   r  r"  r(  r  r|   r   r   r  r   r   r]   rZ   r  r    sA    3. [[Wrzz2::&>?D @Dr]   r  c                   J    \ rS rSrSr  SS jrS rS rS rS r	S	 r
S
 rSrg)TestFiltFilti	  tfNc           
          U R                   S:X  a  [        U6 u  p[        XX#XEXg5      $ U R                   S:X  a  [        U6 n
[	        XX4U5      $ g )Nr   sos)filtfilt_kindr(   r&   r)   r0   )rV   zpkro   r  r  padlenr{   irlenrX   rW   r"  s              rZ   r&   TestFiltFilt.filtfilt		  sW    %3<DAA!7FJJ5(3-Cstf== )r]   c                     [        / SQ/ SQ5      nU R                  U[        R                  " S5      5      n[	        U[        S5      SS9  g )NrK   rS   g6{=r5  )r2   r&   r|   r   r   )rV   r$  r   s      rZ   r[   TestFiltFilt.test_basic	  s6    Y	*mmC2/VBZh7r]   c                    Sn[         R                  " SSUS-   5      n[         R                  " S[         R                  -  U-  5      n[         R                  " S[         R                  -  U-  5      nX4-   n[	        SSS	S
9n[         R
                  " US   5      R                  5       nSn[        [         R                  " [         R                  " U5      [         R                  " U5      -  5      5      n	U R                  XeU	S9n
[         R
                  " X-
  5      R                  5       n[        US:  5        [         R                  " X3U-   /5      nU R                  XlU	SS9n[        UR                  UR                  5        [         R
                  " X-
  5      R                  5       n[        US:  5        U R                  XlR                  U	SS9n[        XR                  5        g )N  r   r  rL   rN   i  r         ?r$  r$  r   )r%  r   r%  r  )r|   r(  r+  rZ  r'   rP  r[  r{  ceillogr&   r   vstackr
   r  r  )rV   r`  r  xlowxhighro   r$  repsr   rp   errx2dy2dy2dts                  rZ   	test_sineTestFiltFilt.test_sine	  sr   KK3q)vvebeema'(w*+LQe,FF3q6N  sbffQi/01 MM#M+ffQX""$d
 iie|,-mmCQQm7SYY		*ffSZ $$&d
 }}S%%}:S&&!r]   c                    [         R                  " S5      R                  SSS5      n[        SSSS9nU R	                  X!S	S	S
9nU R	                  U[         R
                  " US	S5      S	SS
9n[        U[         R
                  " US	S5      5        U R	                  U[         R
                  " US	S5      S	SS
9n[        U[         R
                  " US	S5      5        g )Ng     @rN   r-  rS   rG   r,  r$  r$  r   r-  rL   rM   )r|   r   r}   r'   r&   r/  r   )rV   ro   r$  y0y1r  s         rZ   	test_axisTestFiltFilt.test_axis9	  s    II()11"b"=Qe,]]3!!]4]]3Aq! 4QQ]G2r{{2q!45]]3Aq! 4QQ]G2r{{2q!45r]   c                     U R                   S:w  a  g [        R                  " SS/S[        R                  " S5      5      n[        U[        R                  " S5      SSS9  g )Nr   rS  rL   rN   +=r   )r#  r   r&   r|   r   r   )rV   r   s     rZ   test_acoeffTestFiltFilt.test_acoeffC	  sG    %oor2h299R=9RYYr]UCr]   c                    U R                   S:w  a  [        R                  " S5        [        R                  " SS/5      n[        R                  " S/5      n[        R                  " SS/5      n[        X#U5      u  pEn[        US   US   /SUS   -  S	US
   -  -   S	US   -  SUS
   -  -   /5        [        XES   SUS   -  -   SUS   -  -   SUS
   -  -   SUS   -  US   -   SUS   -  -   SUS
   -  -   /5        g )Nr   $gust only implemented for TF systemsr  rs  rS  r  r   rU  r:  rL         ?r,  )r#  r"  r  r|   r   r9   r   )rV   ro   rX   rW   rp   z1z2s          rZ   test_gust_simpleTestFiltFilt.test_gust_simpleJ	  s   %KK>? HHc3Z HHcUOHHc4[!"1+	rA1QqTC!H,c!A$hQqT.AB	DqEDAJ.ad:U1Q4ZG AJA.qt;d1Q4iGI 	Jr]   c                     U R                   S:w  a  [        R                  " S5        [        R                  " S5      nSnSn[        X#USS9nX#-  S-  U-  n[        XE5        g )	Nr   rE  rS   ru  rs  gustrz   rM   )r#  r"  r  r|   r   r&   r   )rV   ro   rX   rW   rp   r   s         rZ   test_gust_scalarsTestFiltFilt.test_gust_scalarsX	  s[    %KK>? IIbMQ1V,C!8a<$r]   r   )r   oddNr  N)r   r   r   r   r#  r&   r[   r9  r>  rB  rI  rM  r   r   r]   rZ   r  r  	  s3    M>B%)>8
 "D6DJ%r]   r  c                       \ rS rSrSrS rSrg)TestSOSFiltFiltif	  r"  c                     [         R                  R                  S5      R                  S5      n[	        SS5       HP  n[
        R                  " USSS9n[        U6 u  pE[        U6 n[        XEU5      n[        Xa5      n[        XxSS	U 3S
9  MR     g)z1Test equivalence between sosfiltfilt and filtfiltr   r  rL   rJ   ffffff?r$  r$  rX  zorder=)r   err_msgN)r|   r   r   r   r~   r   r'   r(   r)   r&   r0   r   )	rV   ro   r  r$  rX   rW   r"  rp   y_soss	            rZ   test_equivalence TestSOSFiltFilt.test_equivalencei	  s    II!!!$**401a[E--tE:C3<DA3-Cq!A'EA5F5':JK !r]   r   N)r   r   r   r   r#  rV  r   r   r]   rZ   rQ  rQ  f	  s    M	Lr]   rQ  c                    S n[        [        U5      [        U 5      5      S-
  n[        X5      n[        R                  " USU R                  5       U-  X$* S R                  5       U-  45      n[        X6XU4SSSSSSS	9	nUu  ppnUS
:  a  [        SU-  5      eUSU nXS n[        XUSSS2   US9S
   SSS2   n[        XXS9S
   nUX4$ )a9  
An alternative implementation of filtfilt with Gustafsson edges.

This function computes the same result as
`scipy.signal._signaltools._filtfilt_gust`, but only 1-d arrays
are accepted.  The problem is solved using `fmin` from `scipy.optimize`.
`_filtfilt_gust` is significantly faster than this implementation.
c                 ,   [        [        U5      [        U5      5      S-
  nU SU nXS n[        XX5S9S   n[        XUSSS2   US9S   SSS2   n[        XUSSS2   US9S   SSS2   n	[        XXS9S   n
[        R                  " X-
  S-  5      nU$ )z-Objective function used in filtfilt_gust_opt.rL   Nr  r   r   rM   )r[  r  r$   r|   sum)icsrX   rW   ro   mz0fz0br\  y_fby_by_bfvalues               rZ   filtfilt_gust_opt_func1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_func~	  s    AA!#"1g"gaA&q)qS2Y3/24R48aAddG,Q/"5qS)!,a'(r]   rL   Nr  rX  r3  TF)r   xtolftolmaxfunmaxiterfull_outputdispr   z5minimization failed in filtfilt_gust_opt: warnflag=%dr   r  )	r[  r  r%   r|   r  r  r   rK  r$   )rX   rW   ro   rc  r\  r  r[  r}  optfoptniterfuncallswarnflagr]  r^  r`  rp   s                    rZ   filtfilt_gust_optrp  u	  s    	CFCFaA	A	B
..!BQ%**,r/1RS6;;=+;<
=C(Q1I5"0F ,2(Cu!| )+34 5 	5
bq'C
b'C !$B$C
(
+DbD
1Cc"1%Ac;r]   c           	      J   [         R                  R                  S5        [         R                  R                  " U6 n[	        XXSSUS9n[        XXSUS9u  pxn	[         R                  " XSS5      n
U
R                  S S n[         R                  " U
5      n[        [        U5      [        U 5      5      S-
  n[         R                  " X4-   5      n[         R                  " X4-   5      n[        U Vs/ s H  n[        U5      PM     sn6  H  n[        XU
U   5      u  UU'   UU'   UU'   M!     [         R                  " USU5      n[         R                  " USU5      n[         R                  " USU5      n[        XlSSS	9  [        X|SSS	9  [        XSSS	9  [        XSSS	9  g s  snf )
Nr+  rL  )r  r{   r&  )r  r&  r   rL   r   r'  r   )r|   r   r!  r   r&   r9   r/  r  
empty_liker[  r  r  r   r~   rp  r   )rX   rW   r  r  r&  ro   rp   ygzg1zg2xx	out_shaper  r\  zo1zo2r   indxs                     rZ   check_filtfilt_gustr{  	  sh   IINN3
		A 	qF%@A "!EBLBS
 
Qb	!B"I	r	BCFCFaA
((9t#
$C
((9t#
$CI6Iq%(I67):1D)J&4#d)SY 8	RT	"B
++c2t
$C
++c2t
$CA40BD1C4d3C4d3 7s   /F rN   c            	      H   S GH  n S H  nSu  p#n[         R                  R                  " U4U-  6 n[         R                  R                  " U4U-  6 n[        XVU S9n[	        Xt5        [        XVU SS9u  p[        US;   5        [        [        U	[        5      5        [        SU	R                  5       ;   =(       a    S	U	R                  5       ;   5        M     [         R                  " S
/[         R                  S9nUR                  5       n[	        [        XVU S9S	5        GM     g )Nr  )rL   rM   )r   rJ   ry   rb   T)rc   measure>   r   ry   r   ry   l         @ r  )r|   r   r   r    r
   r   
isinstancedictkeysr   r   r@  )
rc   r   r   r  true_methodro   r:  r{   
method_trytimess
             rZ   test_choose_conv_methodr  	  s    )D .A+		1$+/A		1$+/A'48F- 21dD QJJ"334Jud+,EUZZ\)Fh%**,.FG  HHeWBHH-FFH'48(C! *r]   c                      [         R                  " / SQ[        S9n [         R                  " / SQ[        S9n[        R                  " SS9   [        X5        S S S 5        g ! , (       d  f       g = fr  )r|   r   r!  r"  r#  r    )rW   rX   s     rZ   "test_choose_conv_dtype_deprecationr  	  sJ     	

%V4A


.f=A			&E	F1  
G	F	Fr&  c            
      J   S H  n [        S5      [        S5      /n[        S5      [        S5      /n[        [        XU S9S5        SnS	 HR  n[        [        U5      (       d  M  [        R
                  " X4S
9nUR                  5       n[        [        XU S9S5        MT     M     g )Nr  rG   rM   rL   rH   rb   ry   rN   )
complex256
complex192r  )r   r
   r    r  r|   rz  r@  )rc   ro   r:  r   not_fft_conv_supps        rZ   test_choose_conv_method_2r  	  s    )QZ$QZ$'48(C!=r,--GGA7FFH/4@(K	 "> *r]   c            	      :   [         R                  " SSSSSS9u  pnSn[        R                  " [        R                  " U5      5      n[        [        R                  " [        R                  " U5      [        R                  " U5      -  5      5      n[        R                  R                  S5        [        XU5      u  pgS U4 H>  nS	U-  n	[        XgU	4S
U5        [        S5       H  n
/ SQnXU
'   [        XgXU5        M     M@     SU-  S-
  n[        XgU4S
U5        g )NrG   {Gz?x   gffffff?r$  r$  r  r+  rI   r   )rM   rM   rM   rM   r  )r   ellipr|   r[  rP  r{  r.  r/  r   r!  r(   r{  r~   )rq   pr  r4  r3  approx_impulse_lenrX   rW   r&  
signal_lenr  r  lengths                rZ   test_filtfilt_gustr  	  s     ll1dC>GA! C
rvvayARWWRVVC[266!9%<=>IINN3!?DA*+++
 	A:-E: !HDE$$Ke59  , !!B&Fvi,>?r]   c                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)TestDecimatei
  c                     [         R                  " S5      n[        [        [        R
                  USSS9  [        [        [        R
                  USSS9  g )NrS   rS  rL   )qr   rM   )r|   r   r   r  r   decimater}  s     rZ   test_bad_argsTestDecimate.test_bad_args
  s7    IIbMi!sa@i!qC@r]   c                     [         R                  " S5      n[        R                  " USSSSS9R	                  5       n[        X!S S S2   5        g )NrS   rM   rL   iirFr   ftype
zero_phaser|   r   r   r  roundr   rV   ro   rp   s      rZ   test_basic_IIRTestDecimate.test_basic_IIR
  >    IIbMOOAqAUuEKKM1!f%r]   c                     [         R                  " S5      n[        R                  " USSSSS9R	                  5       n[        X!S S S2   5        g )NrS   rM   rL   firFr  r  r  s      rZ   test_basic_FIRTestDecimate.test_basic_FIR
  r  r]   c                     [         R                  " S5      n[        R                  " USSSS9n[	        UR
                  S5        [        R                  " USSSS9n[	        UR
                  S5        g )	N)r   r   rM   r   F)r  r  )r  r   rL   )r   r  )r|   r  r   r  r
   r  )rV   rq   d0d1s       rZ   
test_shapeTestDecimate.test_shape
  sT    HHX__Qe<RXXx(__Qe<RXXx(r]   c                     [        5        nUR                  [        S5        U R                  SSS9  S S S 5        g ! , (       d  f       g = f)NBadly conditioned filterr  Fr{   r  r   rS  r3   _test_phaseshiftrV   rU  s     rZ   test_phaseshift_FIR TestDecimate.test_phaseshift_FIR&
  s8     CJJ(BC!!5!A !  	   ';
A	c                     [        5        nUR                  [        S5        U R                  SSS9  S S S 5        g ! , (       d  f       g = f)Nr  r  Tr  r  r  s     rZ   test_zero_phase_FIR TestDecimate.test_zero_phase_FIR+
  s8     CJJ(BC!!4!@ !  r  c                 $    U R                  SSS9  g )Nr  Fr  r  r  s    rZ   test_phaseshift_IIR TestDecimate.test_phaseshift_IIR0
  s    Uu=r]   c                 $    U R                  SSS9  g )Nr  Tr  r  r  s    rZ   test_zero_phase_IIR TestDecimate.test_zero_phase_IIR3
  s    Ut<r]   c           	         Sn/ SQnSn[         R                  " X5-  S-   5      [        U5      -  n[         R                  " U5      S-  S-  n[         R                  " S[         R
                  -  US S 2[         R                  4   -  U-  5      [        R                  R                  UR                  S5      -  nU GHE  n	X9-  n
[         R                  " X-  S-   5      [        U	5      -  n[         R                  " S[         R
                  -  US S 2[         R                  4   -  U-  5      [        R                  R                  UR                  S5      -  nUS	:X  a4  S
n[        R                  " [        R                  " US-   SU
-  SS9S5      nOXUS:X  aR  SnS[         R
                  -  U
-  n[        R                  " [        R                  " USU[         R
                  -  5      6 nUSL a_  [        R                  " WR                  UR                   Xs-  S-  [         R
                  -  5      u  nnU[         R"                  " U5      -  nO[         R$                  " U5      n[        R&                  " UR(                  U
WWUS9n[         R*                  " UR-                  5       U-  SS9nU[         R"                  " U5      -  nUSU	-  :  n[/        [         R0                  " UR-                  5       U-  5      U   SSSS9  GMH     g )Nr  )r  r  r   rF  r'  rL   皙?rM   rn   皙?r  r   r  r$  r  r  r   g?Fr  r  r   rR  rS  r   r   rz  )r|   r   r  r   r  rZ  rY  r   windowstukeyr   dltir?  cheby1freqzr   denrP  	ones_liker  r*  rZ  r  r   angle)rV   r{   r  r`  ra  t_totr  rb  r   rc  r  rd  d_tosr   systemwc_h_respsrf  	h_resampssubnyqs                        rZ   r  TestDecimate._test_phaseshift6
  si   #IIdjl#eDk1 "S(1,VVFRUUNU1bjj=%99A=>~~##AFFC01  GA99W]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  r]   c                    SnSn[         R                  " U5      U-  n[         R                  " SU-  5      [         R                  " S[         R                  -  US-  -  U-  5      -  n[        [         R                  R                  U5      SSS9  [        R                  " US	S
S9n[        [         R                  R                  U5      S5        g )Ng      Y@r  rs  rM   g      >@r  r   r   r   r  )r  r  )r|   r   sqrtr+  rZ  r   linalgnormr   r  r   )rV   sfreqr   r  ro   x_outs         rZ   test_auto_nTestDecimate.test_auto_nf
  s     IIaL5 GGBFObffQY%#+%>%BCC		q)2D92U3"))../6r]   c                     [         R                  " [        R                  " S[        R                  S9S5      n[        [        R                  " U5      5      (       a   eg )Nr3  r  rN   )r   r  r|   rz  r   r   isnanr}  s     rZ   test_long_float32TestDecimate.test_long_float32r
  s?     OOBGGF"**=rBrxx{#####r]   c                     [         R                  " [        R                  " S[        R                  S9S5      nUR
                  R                  [        R                  :X  d   eg )Nr'  r  rN   )r   r  r|   rz  r   r   r  r   r}  s     rZ   test_float16_upcast TestDecimate.test_float16_upcastx
  s;    OOBGGCrzz:B?ww||rzz)))r]   c                    SnSnSn[         R                  " SS[        R                  -  U-  S-  SUS9u  pEnUR	                  [
        5      [        R                  " S[        R                  -  U-  U-  5      -  nUR	                  [
        5      [        R                  " S[        R                  -  U-  U-  5      -  n[         R                  " XEU5      n[        R                  " S5      U-  n[        R                  " S[        R                  -  U-  U-  5      S	[        R                  " S
[        R                  -  U-  U-  5      -  -   n	[         R                  " U	SUSS9n
[         R                  " / [         R                  " XEU5      QU	P76 S S S2   n[        X5        [         R                  " U	SUSS9n[         R                  " / [         R                  " XEU5      QU	P76 S S S2   n[        XSSS9  g )Nr  rI        @@rM   r$  )r  fsrn   r9  rS  r  Fr  Tr  vIh%<=r   )r   r'   r|   rZ  r   r?  r  r  r   r  r$   r(   r
   r&   r   )rV   fcentrefwidthr  rq   r  r  r  r  r   ynzpynzprefyzpyzprefs                 rZ   test_complex_iir_dlti"TestDecimate.test_complex_iir_dlti}
  s    --1RUU76>!#3EbIaHHWrBEEzG';B'> ??HHWrBEEzG';B'> ??Q1%IIcNR VVBJ(1,-RVVC"%%K'1A5667 q!6eD.. $&--a"8 $!"$$'aC) 	T#ooa&TB $&--a"8 $!"$$'aC) 	%e<r]   c                    SnSnSnSn[         R                  " XBS-  US9n[        R                  " U5      nU[        R                  " S[        R
                  -  U-  U-  5      -  nUS   [        R                  " U5      -  n[         R                  " US	5      n	[        R                  " S
5      U-  n
[        R                  " S[        R
                  -  U-  U
-  5      S[        R                  " S[        R
                  -  U-  U
-  5      -  -   n[         R                  " USU	SS9n[         R                  " XS	SS9S S n[        X5        [         R                  " USU	SS9n[         R                  " US	SUS9n[        X5        g )Nr  rI   r  r  rM   )r  rn   r   rL   r9  rS  r  Fr  )rg  rh  r'  Tr  )r   r?  r|   rootsr  rZ  polyr  r   r  upfirdnr
   r  )rV   r  r  r  numtapsbbasezbasezrotbzr  r  r   r  r  r  r  s                   rZ   test_complex_fir_dlti"TestDecimate.test_complex_fir_dlti
  sK    gaxB7 rvvb255j7225661X%R#IIcNR VVBJ(1,-RVVC"%%K'1A5667 q!6eD..115ds;T#ooa&TB%%aAb9S!r]   r   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r]   rZ   r  r  
  sM    A
&
&
)B
A
>=.2`
7$*
=@""r]   r  c                       \ rS rSrS rS rS r\R                  R                  S\
R                  \
R                  /5      S 5       rSrg)	TestHilberti
  c                     [         R                  " S/5      n[        [        [        U5        [         R
                  " S5      n[        [        [        USS9  g )Nr   r  r   r  )r|   r   r   r   r"   r   r}  s     rZ   r  TestHilbert.test_bad_args
  s9    HHj\"j'1-IIcNj'12r]   c           	      
   Sn[         R                  n[         R                  " SSU-  US-  5      n[         R                  " U5      n[         R                  " U5      n[         R                  " SU-  5      n[         R                  " SU-  5      n[         R
                  " XEXg/5      n[        U5      n	[         R                  " U	5      n
[         R                  " U	5      n[         R                  " U	5      n[        XU5        [        U
[         R                  " UR                  5      U5        [        USS S24   [         R                  " U* S-  US-  US-  5      U5        [        USS S24   [         R                  " SX"S-  5      U5        [        USS S24   [         R                  " U* S-  US-  US-  5      U5        [        USS S24   [         R                  " SX"S-  5      U5        [        U	S   R                  XA5        g )Nr  r   rM   r  rL   r  rG   )r|   rZ  r   r+  r)  r0  r"   rP  r  r*  r   rz  r  r  )rV   r  rZ  r  r[  a1a2a3rW   r:  h_absh_angleh_reals                rZ   test_hilbert_theoretical$TestHilbert.test_hilbert_theoretical
  s   UUIIaRc*VVAYVVAYVVAE]VVAE]IIrr&'AJq	((1+ 	Fw/E277177#3W= 	GAttG,IIrcAgrAvrCx@#	%
 	AttGbii2Cx8'	C 	GAttG,IIrcAgrAvrCx@#	% 	AttGbii2Cx8'	C 	AaDIIr3r]   c                    [         R                  " S5      R                  SS5      n[        USS9n[	        [        UR
                  SS9UR
                  5        [        [        US   5      US   S5        [        USSS	9n[	        UR                  SS/5        [	        [        UR
                  SSS	9R                  SS/5        [         R                  " / S
Q5      n[        US   USS5        g )Nr  rG   rJ   r   rR  r   r  r  )r  r  )y        Bm}ąy      ?a y?0fy      @Wa94y      @"nWy      @hIX@y<nm@yF8O2k{?yډoP?y̼YC?y433333<c4Qe?yȒ40p$?yESU?yffffff<?7?y433333<wEoy!5P{3'ſy        _N@տy<}ٿy<-cyF8<2OW\zN regression)	r|   r   r}   r"   r
   r  r   r  r   )rV   rW   aaaana0hilbs        rZ   test_hilbert_axisNTestHilbert.test_hilbert_axisN
  s    IIbM!!!Q'QR WQSSq)2440GAaDM2a5"5 a2B'SYYB(WQSSBQ/55Aw?  F G( 	CFFB?r]   r   c                     [         R                  " SUS9n[        [         R                  " [        R
                  " U5      5      R                  U5        g )Nr   r  )r|   r  r
   r*  r   r"   r   r  s      rZ   test_hilbert_typesTestHilbert.test_hilbert_types  s4    88AU+RWWV^^H56<<eDr]   r   N)r   r   r   r   r  r
  r  r"  r(  r  r|   r   r   r  r   r   r]   rZ   r  r  
  sI    3'4R#@J [[Wrzz2::&>?E @Er]   r  c                       \ rS rSrS r\R                  R                  S\R                  \R                  /5      S 5       rSrg)TestHilbert2i  c                    [         R                  " S//5      n[        [        [        U5        [         R
                  " S5      R                  SSS5      n[        [        [        U5        [         R
                  " S5      R                  SS5      n[        [        [        USS9  [        [        [        US	S9  [        [        [        US
S9  g )Nr   rD  rM   rG   rH   r   r   r  )rM   r   )rM   )r|   r   r   r   r#   r   r}   r}  s     rZ   r  TestHilbert2.test_bad_args   s    HHzl^$j(A. IIbM!!!Q*j(A. IIbM!!!Q'j(A3j(A8j(A6r]   r   c                     [         R                  " SUS9n[        [         R                  " [        R
                  " U5      5      R                  U5        g )N)rM   rQ   r  )r|   r  r
   r*  r   r#   r   r  s      rZ   test_hilbert2_types TestHilbert2.test_hilbert2_types/  s4    88G51RWWV__X67==uEr]   r   N)r   r   r   r   r  r"  r(  r  r|   r   r   r  r   r   r]   rZ   r  r    s<    7 [[Wrzz2::&>?F @Fr]   r  c                      \ rS rSrSr\S 5       rS rS r\	R                  R                  S/ SQS/ S	Q/ S
Q4/ SQS/ SQ/ SQ4/ SQS/ SQ/ SQ4/ SQS/ SQ/ SQ4/ SQS/ SQ/ SQ4/ SQS/ SQ/ SQ4/ SQS/ SQ/ SQ4/5      S 5       r\	R                  R                  S/ SQS/ SQ/ SQ4/ SQS/ SQ/ S Q4/ S!QS/ S"Q/ S#Q4/5      S$ 5       rS% rS& r\	R                  R                  S'/ S(Q/ S)Q/5      S* 5       rS+rg,)-TestEnvelopei5  z4Unit tests for function `._signaltools.envelope()`. c                     [        XSSUS9  g)z9Little helper to compare to arrays with proper tolerancesrX  )r   r   rT  Nr>   )r  desiredrT  s      rZ   assert_closeTestEnvelope.assert_close8  s     	e%Mr]   c                 D   [         R                  " [        SS9   [        [        R
                  " S5      SS9  SSS5        [         R                  " [        SS9   [        [        R
                  " S5      S	S9  SSS5        S
 Hf  nSR                  [        [        U5      5      n[         R                  " [        SU S3S9   [        [        R
                  " S5      US9  SSS5        Mh     [         R                  " [        SS9   [        [        R
                  " S5      SS9  SSS5        S HC  n[         R                  " [        SS9   [        [        R
                  " S5      US9  SSS5        ME     [         R                  " [        SS9   [        [        R
                  " S5      SS9  SSS5        g! , (       d  f       GN= f! , (       d  f       GNW= f! , (       d  f       GMh  = f! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       g= f)zSFor `envelope()` Raise all exceptions that are used to verify function
parameters. z'Invalid parameter axis=2 for z.shape=.*r  rG   rM   rR  Nz&z.shape\[axis\] not > 0 for z.shape=.*)rG   r   rL   )r@  )r   rs  )Nrs  z, zbp_in=\(z\) isn't a 2-tuple of.*rH   )bp_inz)n_out=10.0 is not a positive integer or.*rQ  )n_out))r   rG   r  )r   rN   z&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .*	undefinedresidual)	r"  r	   r   r!   r|   rz  joinmapr|  )rV   r#  tss      rZ    test_envelope_invalid_parameters-TestEnvelope.test_envelope_invalid_parameters=  s    ]]:!KMRWWQZa(M ]]:!JLRWWV_1-L 6E3sE?+Bz(04K%LN 51N N 6 ]]:!LN RWWQZs+N 0Ez%NP51P P 0 ]]:-MNRWWQZ+6 ON)M ML L
N NN N
P P ONsG   F7G	GG.G?H7
G	
G
G+	.
G<?
H	
Hc                 @   / SQ/ SQp![         R                  " U5      n[        U5      n[        USSSS9u  pVU R	                  [         R
                  " U5      [        R                  " / SQ5      R                  [        5      SS	9  U R	                  [         R
                  " U5      [        R                  " / S
Q5      R                  [        5      SS	9  [        USSSS9u  pxU R	                  US-  USS	9  U R	                  XSS	9  [        USSSSU-  S9u  pU R	                  U	SSS2   USS	9  U R	                  U
SSS2   USS	9  [        USSSS9u  pU R	                  XSS	9  U R	                  [         R
                  " U5      [        R                  " / SQ5      R                  [        5      SS	9  [        USSSS9nU R	                  XSS	9  [        R                  " U5      nUSS=== S-  sss& [         R                  " XS9nU R	                  UR                  USS	9  [        USSSS9u  nnU R	                  UUR                  [        5      SS	9  U R	                  [         R                  " U5      [        R                  " U5      R                  [        5      SS	9  g)zEEnsure that the various parametrizations produce compatible results. )rH   rM   rM   rG   r   )rH   r   r   rJ   r   r   r   r   r  allTr'  squaredrH   rM   r   r   r   Envelope calculation errorrV  )rH   r   r   rG   r   Residual calculation errorFrM   z3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrG   )r'  r0  r$  Nz(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorlowpassz/`residual='lowpass'` envelope calculation error)rH   r   r   r   r   z/`residual='lowpass'` residual calculation errorz*`residual=None` envelope calculation errorrL   )r   zReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)r3  irfftr  r!   r   rfftr|   r   r   r?  r@  ifftr*  r   )rV   ZZr_arq   r   ze2_0zr_0ze_1zr_1ze2_2zr_2ze2_3zr_3ze2_4Z_az_aze2_azr_as                     rZ   test_envelope_verify_parameters,TestEnvelope.test_envelope_verify_parametersX  s   !#;4LLOF q&5$G&++e,bhh.G.N.Nw.W: 	 	<&++d+RXXo-F-M-Mg-V: 	 	< a%G
$'5S 	 	U$S 	 	U q&5$aPQcR%!*eH 	 	J$ss)TH 	 	J q&9dK%O 	 	Q&++d+RXXo-F-M-Mg-VO 	 	Q FT4@%J 	 	L ggajAB1kk###((A? 	 	AsFUDIt%g!6B 	 	D&**T*BHHTN,A,A',JB 	 	Dr]   z@               Z,        bp_in,     Ze2_desired,      Zr_desiredrL   r   rM   rM   r   )rL   Nr1  rL   r   r   r   r   )rH   r   rM   r   r   )r   N)r   r   r   r   r   )rH   r   r   rM   r   NN)r   r   rM   rM   r   r  )rM   r   r   r   r   )r   r   r   rM   r   )rH   r   rM   rM   r   )rG   )rH   r   rG   rH   r   r;  )r   r   rG   rH   r   r  c                    [         R                  " U5      n[        XRSSS9u  pg[        XRSSS9u  pS XgX4 5       u  pp[        R                  " U5      R                  [        5      n[        R                  " U5      R                  [        5      nU R                  XSS9  U R                  XSS9  US	   b  SXBS	   S
& U R                  XSS9  U R                  XSS9  g
)a  Test envelope calculation with real-valued test signals.

The comparisons are performed in the Fourier space, since it makes evaluating
the bandpass filter behavior straightforward. Note that also the squared
envelope can be easily calculated by hand, if one recalls that coefficients of
a complex-valued Fourier series representing the signal can be directly
determined by an FFT and that the absolute square of a Fourier series is again
a Fourier series.
r.  Tr/  r4  c              3   N   #    U  H  n[         R                  " U5      v   M     g 7frd  r3  r6  .0z_s     rZ   	<genexpr>:TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>  s     !U<Tb&++b//<T   #%z+Envelope calculation error (residual='all')rV  z+Residual calculation error (residual='all')rL   Nr   z/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))r3  r5  r!   r|   r   r   r?  r   )rV   r8  r#  Ze2_desired
Zr_desiredrq   ze2zrze2_lpzr_lpZe2ZrZe2_lpZr_lps                 rZ   test_envelope_real_signals'TestEnvelope.test_envelope_real_signals  s    & LLO1eTB ItL!USf<T!Uhh{+227;XXj)009
#K 	 	M"K 	 	M 8$%JQxy!&O 	 	Q%O 	 	Qr]   zG               Z,        bp_in,         Ze2_desired,         Zr_desired)r   rI   r   rI   r   rI   r   rN   r   rI   rL   rI   r   rI   rM   r   rM   rL   r   r   r   rM   )rL   rM   rJ   r   rJ   rG   )r   rJ   r   rS   r   rJ   )rL   rM   r   r   r   rG   c                 j   [         R                  " [         R                  " U5      5      n[        XRSSS9u  pgS Xg4 5       u  pU R	                  U[
        R                  " U5      R                  [        5      SS9  U R	                  U	[
        R                  " U5      R                  [        5      SS9  g)	zTest envelope calculation with complex-valued test signals.

We only need to test for the complex envelope here, since the ``Nones``s in the
bandpass filter were already tested in the previous test.
r.  Tr/  c              3   v   #    U  H/  n[         R                  " [         R                  " U5      5      v   M1     g 7frd  r3  fftshiftr   rP  s     rZ   rS  =TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>  s$     GYr6??6::b>22Ys   79r2  rV  r3  N)	r3  r7  	ifftshiftr!   r   r|   r   r   r?  )
rV   r8  r#  rV  rW  rq   rX  rY  r\  r]  s
             rZ   test_envelope_complex_signals*TestEnvelope.test_envelope_complex_signals  s     KK((+,1eTBGcYG#rxx4;;GD: 	 	<"bhhz299'B: 	 	<r]   c                    [         R                  " / SQ/ SQ/5      n[        R                  " / SQ/ SQ/[        S9n[        R                  " / SQ/ SQ/[        S9n[        USS	S
9u  pE[        UR                  SSS
9u  pgS XFR                  XWR                  4 5       u  ppU R                  XSS9  U R                  XSS9  U R                  XSS9  U R                  XSS9  g)z.Test for multi-channel envelope calculations. rI  )r   r   rH   rH   r   r1  )r   r   r   r   r   r  rJ  )r   r   r   r   r   TrL   )r0  r  r   c              3   N   #    U  H  n[         R                  " U5      v   M     g 7frd  rO  rP  s     rZ   rS  CTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>  s     O6NFKKOO6NrU  2d envelope calculation errorrV  2d residual calculation error"Transposed 2d envelope calc. error"Transposed 2d residual calc. errorN)r3  r5  r|   r   r?  r!   r  r   )rV   rq   rV  rW  rX  rY  ye2TyrTr\  Ye2r]  Yrs               rZ   #test_envelope_verify_axis_parameter0TestEnvelope.test_envelope_verify_axis_parameter  s    LL/?;<hh1AB%,.XX@P
1d3QSS$Q7	OsFFB6NO"#0OP"/NO#0TU".RSr]   c                    [         R                  " [         R                  " / SQ/ SQ/SS95      n[        R                  " / SQ/ SQ/[
        S9n[        R                  " / SQ/ SQ/[
        S9n[        S	S
SS9n[        U4SS0UD6u  pV[        UR                  4SS0UD6u  pxS XWR                  XhR                  4 5       u  ppU R                  XSS9  U R                  XSS9  U R                  XSS9  U R                  XSS9  g)zBTest for multi-channel envelope calculations with complex values. rc  )rL   rN   r   rN   rM   rL   r  rb  )r  r   rF  r   r  r  re  rd  r.  T)r#  r'  r0  r  r   c              3   t   #    U  H.  n[         R                  " [         R                  " U5      S S9v   M0     g7f)rL   r  Nrh  rP  s     rZ   rS  KTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>  s+      @&> #OOFJJrNC&>s   68rq  rV  rr  rs  rt  N)
r3  r7  rk  r|   r   r?  r  r!   r  r   )rV   rq   Ze2_desZr_deskwrX  rY  ru  rv  r\  rw  r]  rx  s                rZ   +test_envelope_verify_axis_parameter_complex8TestEnvelope.test_envelope_verify_axis_parameter_complex  s   KK((/;L)MTUVW((,.@B!(*?O<GL%>1+1++QSS/q/B/	@'*FFB&>@" 	#,KL"*IJ#-QR"+OPr]   X)rH   r   r   rL   rM   )rH   r   r   rM   rL   rM   c                     [         R                  " U5      n[        R                  " [	        U5      5      n[        USSS9nU R                  X4SS9  g)z0Compare output of `envelope()` and `hilbert()`. rK  Nr&  z!Hilbert-Envelope comparison errorrV  )r3  r5  r|   rP  r"   r!   r   )rV   r  ro   e_hile_envs        rZ   test_compare_envelope_hilbert*TestEnvelope.test_compare_envelope_hilbert  sE     LLOwqz"L48%,OPr]   r   N)r   r   r   r   __doc__staticmethodr   r+  rG  r"  r(  r  r`  rl  ry  r  r  r   r   r]   rZ   r  r  5  s6   >N N76-D^ [[J
i/	J
i/	J
</	J
/	J
/	J
i/	J
i/	J	LMQMQ: [[Q
<,<	Q
,<	Q
)<>P	Q	<<T Q$ [[S?4F"GHQ IQr]   r  c                       \ rS rSr\SS j5       rS rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rSrg)TestPartialFractionExpansioni  c                 ,   [         R                  " U5      n[         R                  " U5      n[         R                  " [        US S 2S 4   U-
  5      [        U S S 2S 4   U-
  5      5      n[	        U5      u  pg[        X   X7   US9  [        X   X'   US9  g )Nr  )r|   r   hypotrP  r   r   )r3  r  r_truep_truer  distancerowscolss           rZ   assert_rp_almost_equal3TestPartialFractionExpansion.assert_rp_almost_equal  s    F#F#88C!T'
V 34!T'
V 346 +84
AGV\7CAGV\7Cr]   c                    [        / SQ/ SQ5      u  p[        [        U5      S5        [        US   [        R
                  " / SQ5      5        [        US   [        R
                  " / SQ5      5        [        US   [        R
                  " / S	Q5      5        [        U[        R
                  " / S
Q5      5        [        / SQ/ SQSS9u  p[        [        U5      S5        [        US   [        R
                  " / SQ5      5        [        US   [        R
                  " / SQ5      5        [        US   [        R
                  " / SQ5      5        [        US   [        R
                  " / SQ5      5        [        US   [        R
                  " / SQ5      5        [        US   [        R
                  " / S	Q5      5        [        U[        R
                  " / S
Q5      5        g )NrK   r  rG   r   )rM   rM   rG   rL   )rL   rL   rL   rG   rM   )rL   rL   rL   rM   rM   )rL   rL   rL   rM   rM   rG   T)include_powersrJ   )rL   rL   rM   rM   rG   )rL   rM   rM   rG   )rL   rL   rL   rM   rG   rH   rI   )r:   r
   r  r   r|   r  )rV   factorsr  s      rZ   test_compute_factors1TestPartialFractionExpansion.test_compute_factors  s6   (I>S\1%GAJ	(:;GAJ(=>GAJ(@AD"''*<"=>(I8<>S\1%GAJ(@AGAJ(=>GAJ	(:;GAJ(@AGAJ(=>GAJ(@AD"''*<"=>r]   c                 ^    [        / SQSS5      u  p[        U/ SQ5        [        U/ SQ5        g )N)r  gjt?g?5^I?rs  g/$ @ru  r  minr  r  )r;   r
   rV   uniquemultiplicitys      rZ   test_group_poles-TestPartialFractionExpansion.test_group_poles  s*    +0#u >V_-\9-r]   c                    [        / SQ/ SQ5      u  pn[        U/ SQSS9  [        U/ SQSS9  [        US/SS9  [        SS	// S
Q5      u  pn[        US	S/5        [        USS/5        [        UR                  S5        [        SS// SQ5      u  pn[        USS/5        [        USS/5        [        UR                  S5        [        SS// SQ5      u  pnU R	                  X/ SQ/ SQ5        [        UR                  S5        [        SS// SQ5      u  pnU R	                  X/ SQ/ SQ5        [        UR                  S5        [        / SQ/ SQ5      u  pn[        U/ SQ5        [        U/ SQ5        [        USS/5        [        S// SQ5      u  pn[        USS/5        [        USS /5        [        UR                  S5        [        / S!Q/ S"Q5      u  pnU R	                  X/ S#Q/ S$Q5        [        UR                  S5        [        / S%Q/ S&Q5      u  pnU R	                  X/ S'Q/ S(Q5        [        UR                  S5        [        SS// S)Q5      u  pn[        USS*/5        [        USS/5        [        UR                  S5        [        / S+Q/ S)Q5      u  pn[        USS,/5        [        USS/5        [        US/5        [        / S-Q/ S)Q5      u  pn[        US.S//5        [        USS/5        [        US0S1/5        [        / S+Q/ S2Q5      u  pnU R	                  X/ S3Q/ S4Q5        [        UR                  S5        g )5NrI   rG   r  r   r)  r   r   rG   )gZd;O?g9#Jg&䃞ͪrH   r  )g-1ڿgeagvq-?g      r)  r   rL   rJ   r   ir  r   rL   )rL   r   r  rG   r   rM   )rM   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rL   rI   r   rH   )r   rL   rG   )r   r  r  )rG   gg)\(?g^I+g rh?)rL   gffffffgQg~jt?)rL  rH   rL   )r:  g333333ӿr  )rL   rM   rL  rF        пrL  )rL   r   r  )rL   r   r   r   r   )rL   y              ?y             r   )r                r   rL   )rG   r   rJ   rL   rG   rG   rL   rK   r   r   r   )rL   rL  rM   rI   )rM   rG   r   r  )r   rM   rG   r   r  E   r   rR   )rL   rL  rH   r  )rH   y            @y            )rL         ?      rk   )r6   r   r
   r   r  rV   r3  r  r  s       rZ   test_residue_general1TestPartialFractionExpansion.test_residue_general  s    -7aA91EA91EAy!42q'9-aA3x(ABx(QVVQ1a&+.aA1v&AAw'QVVQ1a&"9:a##?)	+ 	QVVQ1a&,/a##A*lCQVVQ813aAz*A/0A1v&1#z*aAe}-A2w'QVVQ*&67a##A$8:J	LQVVQ)\2a##A)\BQVVQ1b':.aAAw'A1v&QVVQ*j1aABx(A1v&As#-4aARy)A1v&A2w'*n5a##A*C$7	9AFFA&r]   c                 b   [        / SQ/ SQ5      u  pn[        / SQ/ SQ5      u  pEn[        / SQ/ SQ5      u  pxn	[        / SQ/ SQ5      u  pn[        X5        [        X5        [        X5        [        X%5        [        X(5        [        X+5        [        X65        [        X95        [        X<5        g )Nr  r  )r   rI   rG   r  r   )r   r)  r   r   rG   )r   r   rI   rG   r  r   )r   r   r   r)  r   r   rG   )r6   r   rV   r0p0k0r1p1k1r2p2k2r3p3k3s                rZ   test_residue_leading_zeros7TestPartialFractionExpansion.test_residue_leading_zerosW  s    ]M:
-}=
],<=
02HI
B#B#B#B#B#B#B#B#B#r]   c                    [        SS// SQ5      u  pn[        USS/5        [        USS/5        [        UR                  S5        [        SS5      u  pn[        UR                  S5        [        UR                  S5        [        UR                  S5        [        R
                  " [        SS9   [        SS5        S S S 5        g ! , (       d  f       g = f)Nr   r  r  r)  rL   Denominator `a` is zero.r  )r6   r   r
   r   r"  r	   r   r  s       rZ   test_resiude_degenerate4TestPartialFractionExpansion.test_resiude_degenerateg  s    1a&),aA1v&ABx(QVVQ!Q-aQVVQQVVQQVVQ]]:-GHAqM IHHs   0C
Cc                    [        / SQ/ SQ5      u  pnU R                  X/ SQ/ SQ5        [        US/5        [        / SQ/ SQ5      u  pnU R                  XSS	/S
S/SS9  [        US/SS9  [        SS// SQ5      u  pn[        USS/5        [        USS/5        [        UR                  S5        [        / SQ/ SQ5      u  pnU R                  X/ SQ/ SQ5        [        UR                  S5        [        / SQ/ SQ5      u  pn[        USS/5        [        USS/5        [        USS/5        [        S// SQ5      u  pnU R                  X/ S Q/ S!Q5        [        UR                  S5        [        SS/[
        R                  " SS"/SS#/5      5      u  pn[        US$S%/5        [        US&S/5        [        UR                  S5        [        / S'QSS/5      u  pn[        US/5        [        US/5        [        USS/5        [        SSS(/5      u  pn[        US/5        [        US)/5        [        UR                  S5        [        S/ S*Q5      u  pn[        USS/5        [        USS/5        [        UR                  S5        [        S/ S+Q5      u  pn[        USS/5        [        US#S/5        [        UR                  S5        [        / S,Q/ S'Q5      u  pn[        US-S./5        [        USS/5        [        US/5        [        S/S// S'Q5      u  pn[        US0S1/5        [        USS/5        [        UR                  S5        [        / SQ/ S'Q5      u  pn[        US2S3/5        [        USS/5        [        US4S/5        [        / S5Q/ S6Q5      u  pnU R                  X/ S7Q/ S8QSS9  [        UR                  S5        g )9N)rL   rJ   rJ   rM   )rL   y             r  r  )y             @y      @      @y            ()r   rL   rL   rn   )rL   rM   rL   )rL   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿrH   r  gŏ1w@rL   r   )rL   r  rJ   rM   rG   r   r   r  )rH   r  rG   r  )rL   r  r)  rH   )rM   r  r)  rS  g            ?r  )r  rG   r)  r   )g
ףp=
?gQ?皙?)rS  UUUUUUտr  r  rF  g
gUUUUUU@r  rL   r  rL   r  r   )rL   r   rF  )rL   g      r,  )rL   rJ   rM   r  r3  rJ   r  r   ir  rN   r  )rL   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿr  yjM?%uyjM?%u?)ySsA?ySsAr  y-?8gDio?y-?8gDio)r7   r  r   r
   r   r|   polymulr  s       rZ   test_residuez_general2TestPartialFractionExpansion.test_residuez_generalv  s   <)FGa##A*G$.	0At$9o6a##A%68I$J%2M$B,- 	$ 	/ 	Ax3Ar7J/aAAw'A1v&QVVQ9l3a##A*lCQVVQ?K8aAT{+AAw'ARy)B41a##A$57H	JQVVQAq62::q$i!S#BCaAt}-As|,QVVQ:2w/aAs#As#A2w'1q#h'aAs#At$QVVQ1m,aA1v&ASz*QVVQ1./aAAw'Ac{+QVVQ9j1aAQx(A1v&As#Aq6:.aAAw'A1v&QVVQ<4aARy)A1v&AAw'9&9:a##A%N%N,- 	$ 	/ 	QVVQr]   c                 b   [        / SQ/ SQ5      u  pn[        / SQ/ SQ5      u  pEn[        / SQ/ SQ5      u  pxn	[        / SQ/ SQ5      u  pn[        X5        [        X5        [        X5        [        X%5        [        X(5        [        X+5        [        X65        [        X95        [        X<5        g )Nr  r  )rI   rG   r  r   r   )r)  r   r   rG   r   )rI   rG   r  r   r   r   )r)  r   r   rG   r   r   r   )r7   r   r  s                rZ   test_residuez_trailing_zeros9TestPartialFractionExpansion.test_residuez_trailing_zeros  s     m];
.>
m-=>
13IJ
B#B#B#B#B#B#B#B#B#r]   c                 0   [        SS// SQ5      u  pn[        USS/5        [        USS/5        [        UR                  S5        [        SS5      u  pn[        UR                  S5        [        UR                  S5        [        UR                  S5        [        R
                  " [        SS9   [        SS5        S S S 5        [        R
                  " [        SS9   [        S/ S	Q5        S S S 5        g ! , (       d  f       N?= f! , (       d  f       g = f)
Nr   r  r  r)  rL   r  r  z6First coefficient of determinant `a` must be non-zero.rA  )r7   r   r
   r   r"  r	   r   r  s       rZ   test_residuez_degenerate5TestPartialFractionExpansion.test_residuez_degenerate  s    Aq69-aA1v&ABx(QVVQ1a.aQVVQQVVQQVVQ]]:-GHQN I ]]:"01 Q%1 1 IH1 1s   0C6D6
D
Dc                     / SQn/ SQn/ n/ SQn/ SQnS HG  n[        XX6S9u  px[        Xt5        [        X5        [        XX6S9u  px[        Xt5        [        X5        MI     g )N)rU  UUUUUUſg)r   r  r  )r   rL   rG   )rL   r   rN   r   avgr  r  r	  r[  r
  rtyper*   r   r+   )	rV   r3  r  r  
b_expected
a_expectedr  rX   rW   s	            rZ   *test_inverse_unique_roots_different_rtypesGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  se    %
"
 IE!/DAA*A*10DAA*A* Ir]   c                     / SQn/ SQn/ n/ SQn/ SQn/ SQnS HE  n[        XX7S9u  p[        XSS	9  [        X5        [        XX7S9u  p[        XSS	9  [        X5        MG     g )
Ng333333?g98ȿr  gll?r   r  r  r  )r   r   rL   rG   )r  gUUUUUUgUUUUUU?rG   )rL   r3  rD  r  r   r  r  rA  r5  r  )
rV   r3  r  r  r  b_expected_zr  r  rX   rW   s
             rZ   ,test_inverse_repeated_roots_different_rtypesITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  sk    -!
,&
HE!/DAA6A*10DAA%8A* Ir]   c                    / SQn/ SQn/ n[         R                  " [        SS9   [        XUSS9  S S S 5        [         R                  " [        SS9   [	        XUSS9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr  r  z`rtype` must be one ofr  r  r  )r"  r	   r   r*   r+   r  s       rZ   test_inverse_bad_rtype3TestPartialFractionExpansion.test_inverse_bad_rtype  sg    -]]:-EF1(+ G]]:-EFA!8, GF GFFFs   A&A7&
A47
Bc                 h    S/nS/nS/n[        XU5      u  pE[        US/5        [        USS/5        g )NrL   rM   r   r  g       )r+   r   )rV   r3  r  r  rX   rW   s         rZ    test_invresz_one_coefficient_bug=TestPartialFractionExpansion.test_invresz_one_coefficient_bug  s?    CCCqQC5!C;'r]   c                    [        S/S// 5      u  p[        US/5        [        USS/5        [        / SQ/ SQ/ 5      u  p[        U/ SQ5        [        U/ SQ5        [        SS/SS	// S
Q5      u  p[        U/ SQ5        [        U/ SQ5        [        / SQ/ SQ/ 5      u  p[        U/ SQ5        [        U/ SQ5        [        SS/SS/SS/5      u  p[        U/ SQ5        [        U/ SQ5        g )NrL   r   r  rM         ?      rL   r   rk   y      @      y      !      ?y      @      
@rL   y             y      ?       @y      ?      rS  r  r  rK   )rL                     ?       r  rN   rL               rH   r   rM   r   r  rH   r  r   r   r   rG   rG   rG   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prL   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@r   rM   )rL   r   r)  rm   r  )r*   r   rV   rX   rW   s      rZ   test_invres(TestPartialFractionExpansion.test_invres!  s    qcA3#As#A2w'+->CADEACDsAh 0)<AABA/03R9A  9 	:A  7 	8 r2hAA/A12Az*r]   c                    [        S/S// 5      u  p[        US/5        [        USS/5        [        / SQ/ SQ/ 5      u  p[        U/ SQ5        [        U/ SQ5        [        SS/SS	// S
Q5      u  p[        U/ SQ5        [        U/ SQ5        [        / SQ/ SQ/ 5      u  p[        U/ SQ5        [        U/ SQ5        [        SS/SS/SS/5      u  p[        U/ SQ5        [        U/ SQ5        g )NrL   r   r  r  r  r  rS  r  r  rK   )g      @r  r  y            rS   r  r  r  )rJ   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr  r   rM   )r   rL   rL  rM   r  )r+   r   r  s      rZ   test_invresz)TestPartialFractionExpansion.test_invresz9  s    sQC$As#A2w',.?DADEACDQx&&!19=ABCA/14b:A  9 	:A  7 	8 Bx!Q!Q0A~.Az*r]   c                     [        SSS5      u  p[        USS/5        [        USS/5        [        SSS5      u  p[        USS/5        [        USS/5        g )NrL   r   r   rM   )r*   r   r+   r  s      rZ   test_inverse_scalar_arguments:TestPartialFractionExpansion.test_inverse_scalar_argumentsQ  sY    aAA1v&A2w'q!QA2w'A2w'r]   r   N)r   )r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r]   rZ   r  r    se    	D 	D?&.B'H$ O b$"&&+&+"-(+0+0(r]   r  c                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)TestVectorstrengthi[  c                    [         R                  " S/5      nSnSnSn[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )NrS  r  r  r  r   rM   r|   r   r,   r
   r   r   rZ  rV   eventsperiodtarg_strength
targ_phasestrengthphases          rZ   test_single_1dperiod'TestVectorstrength.test_single_1dperiod]  sg    2$
(8X]]A&UZZ#H4E1ruu9z#9:r]   c                 >   [         R                  " S/5      n/ SQnS/S-  n[         R                  " / SQ5      n[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )NrS  )rL   rM   r  r  rG   )rS  rF  r  rL   rM   )r|   r   r,   r
   r   r   r   rZ  r  s          rZ   test_single_2dperiod'TestVectorstrength.test_single_2dperiodj  sv    2$qXXm,
(8X]]A&UZZ#!(:E1ruu9z#9:r]   c                    [         R                  " / SQ5      nSnSnSn[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )NrF  rF  rF  rF  rF  rF  rM   r  r,  r   r  r  s          rZ   test_equal_1dperiod&TestVectorstrength.test_equal_1dperiodw  sg    89
(8X]]A&UZZ#H4E1ruu9z#9:r]   c                 @   [         R                  " / SQ5      nSS/nS/S-  n[         R                  " SS/5      n[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )Nr  rL   rM   r  rF  r,  r  r  s          rZ   test_equal_2dperiod&TestVectorstrength.test_equal_2dperiod  s~    89QqXXsDk*
(8X]]A&UZZ#H4E1ruu9z#9:r]   c                    [         R                  " / SQ5      nSnSnSn[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )Nr  g?g @gffffff@g333333$@rL   r  r  r   rM   r  r  s          rZ   test_spaced_1dperiod'TestVectorstrength.test_spaced_1dperiod  sg    34
(8X]]A&UZZ#H4E1ruu9z#9:r]   c                 @   [         R                  " / SQ5      nSS/nS/S-  n[         R                  " SS/5      n[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )Nr  rL   rS  r  rM   r  r:  r  r  s          rZ   test_spaced_2dperiod'TestVectorstrength.test_spaced_2dperiod  s~    34RqXXr2h'
(8X]]A&UZZ#H4E1ruu9z#9:r]   c                    [         R                  " / SQ5      nSnSnSn[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )NrF  rS        ?rL   UUUUUU?rS  r   rM   r  r  s          rZ   test_partial_1dperiod(TestVectorstrength.test_partial_1dperiod  sf    .)
(8X]]A&UZZ#H4E1ruu9z#9:r]   c                 @   [         R                  " / SQ5      n/ SQnS/S-  n[         R                  " / SQ5      n[        X5      u  pV[        UR                  S5        [        UR                  S5        [        XS5        [        US[         R                  -  U-  5        g )Nr  )r  r  r  r  r  rH   )rS  rS  rS  rS  rL   rM   r  r  s          rZ   test_partial_2dperiod(TestVectorstrength.test_partial_2dperiod  sv    .)! 	AXX./
(8X]]A&UZZ#H4E1ruu9z#9:r]   c                     [         R                  " / SQ5      nSnSn[        X5      u  pE[        UR                  S5        [        UR                  S5        [        XC5        g )Nr   rF  rS  r  r  r   r|   r   r,   r
   r   r   rV   r  r  r  r  r  s         rZ   test_opposite_1dperiod)TestVectorstrength.test_opposite_1dperiod  sK    +,(8X]]A&UZZ#H4r]   c                     [         R                  " / SQ5      nS/S-  nS/S-  n[        X5      u  pE[        UR                  S5        [        UR                  S5        [        XC5        g )Nr&  r  rN   rT  rL   r'  r(  s         rZ   test_opposite_2dperiod)TestVectorstrength.test_opposite_2dperiod  sW    +,r	(8X]]A&UZZ#H4r]   c                 d    [         R                  " SS//5      nSn[        [        [        X5        g )NrL   rM   r  r|   r   r   r   r,   rV   r  r  s      rZ   test_2d_events_ValueError,TestVectorstrength.test_2d_events_ValueError  s'    Aq6(#j.&Ar]   c                 b    Sn[         R                  " S//5      n[        [        [        X5        g )Nr  rL   r/  r0  s      rZ   test_2d_period_ValueError,TestVectorstrength.test_2d_period_ValueError  s$    A3%j.&Ar]   c                 6    SnSn[        [        [        X5        g )Nr  r   r   r   r,   r0  s      rZ   test_zero_period_ValueError.TestVectorstrength.test_zero_period_ValueError  s    j.&Ar]   c                 6    SnSn[        [        [        X5        g )Nr  r   r7  r0  s      rZ   test_negative_period_ValueError2TestVectorstrength.test_negative_period_ValueError  s    j.&Ar]   r   N)r   r   r   r   r	  r  r  r  r  r  r   r#  r)  r,  r1  r4  r8  r;  r   r   r]   rZ   r  r  [  sL    ;;;;;;;;	5	5B
B
B
Br]   r  c                     U R                   R                  S:X  aN  [        R                  " U R                  S   5      R                   nU R                  U5      UR                  U5      p[        XX#5        g)z1Wrap assert_allclose while casting object arrays.r  r   N)r   r   r|   r   flatr   r   )r  r  r   r   r   s        rZ   assert_allclose_castr?    sS    ||CQ(.. --.u0EFT0r]   rm  c                 X   [        S5      [        S5      [        S5      /n[        S5      [        S5      [        S5      /n[        S5      [        S5      [        S5      /n[        R                  " U5      nUR                  R                  S:X  d   e[        [        R                  " U[        5      [        R                  " U[        5      UR                  [        5      5      nU [        L a  [        X#-   /U5      nO[        X#U5      n[        S U 5       5      (       d   e[        UR                  [        5      UR                  [        5      5        U [
        L a  SS/nO[        SS5      /n[        R                  " [        SS9   U " US	S06  S S S 5        g ! , (       d  f       g = f)
NrL   rM   rG   r  c              3   B   #    U  H  n[        U[        5      v   M     g 7frd  )r~  r   )rQ  ro   s     rZ   rS  )test_nonnumeric_dtypes.<locals>.<genexpr>  s     6v!z!W%%vs   r  zmust be at least 1-Dr  ro   )r   r|   r   r   r   r$   r  r   r/   r.  r   r.   r"  r	   r   )rm  ro   rX   rW   r  r  r   s          rZ   test_nonnumeric_dtypesrC    s8    
WQZ,A	WQZ,A	WQZ,A
A77<<3bhhq%("((1e*<ahhuoNGw!%!$q!6v66666FMM%('..*?@wBxr2	z)?	@db 
A	@	@s   		F
F)fdFDc                   v    \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	 5       rS
rg)TestSOSFilti  c                 b   [         R                  " SSS5      R                  U5      n[         R                  " SS/5      R                  U5      n[         R                  " SS/5      R                  U5      n[         R                  " / SQ5      R                  U5      n[	        X45      n[        [        [	        X45      U5      U5        [         R                  " SS/5      R                  U5      n[         R                  " SS/5      R                  U5      n[         R                  " / S	Q5      R                  U5      n[        [        [	        X45      U5      U5        / S
Qn/ SQn[         R                  " S5      n[         R                  " X445      nSUl	        [        Xb5      n[        U/ SQ5        g )Nr   rI   rJ   rL   r   rS  r  r  r  )rL   rL   r   r3  r   )rL   rJ   )rL   rM   rM   rM   rM   rM   rM   rM   )r|   r(  r   r   r.   r   r/   rz  r  r  r   )rV   r  ro   rX   rW   r  r"  rp   s           rZ   
test_rank1TestSOSFilt.test_rank1  s@   KK1a ''+HHaW$$R(HHc4[!((, hh+,33B7Ql!'&,":C@ HHaV##B'HHaV##B'hh*+2226!'&,":C@GGAJnnaV$	CO34r]   c                 j   Sn[         R                  " S[         R                  " U5      S-
  [         R                  " U5      5      R                  U5      nUR	                  U5      n[         R
                  " SS/5      R	                  U5      n[         R
                  " SS/5      R	                  U5      n[         R
                  " / SQ/ SQ/ SQ/ SQ/US9n[         R
                  " / S	Q/ S
Q/ SQ/ SQ/US9n[        [        XE5      USS9n[        Xh5        [        [        XE5      USS9n[        Xx5        g )Nr  r   rL   r   rS  r  r  r  r  r  r  r  rR  )	r|   r(  r  r}   r   r   r/   r.   r   )	rV   r  r  ro   rX   rW   r  r  rp   s	            rZ   
test_rank2TestSOSFilt.test_rank2.  s    KK2775>A-rwwu~>FFuMHHRLHHaW$$R(HHc3Z ''+((Iy)YG!#% ((Iz=)+246 F1L!!,!'-F1L!!,!'-r]   c                 *   Sn[         R                  " S[         R                  " U5      S-
  [         R                  " U5      5      R                  U5      n[         R                  " SS/5      R                  U5      n[         R                  " SS/5      R                  U5      n[        [        XE5      U5      n[        UR                  S   5       H@  n[        UR                  S   5       H!  n[        XgU4   [        XEX7U4   5      5        M#     MB     g )Nr  r   rL   r   rS  )r|   r(  r  r}   r   r   r/   r.   r~   r  r   r$   )	rV   r  r  ro   rX   rW   rp   r   js	            rZ   r  TestSOSFilt.test_rank3B  s    KK2775>A-rwwu~>FFuMHHaW$$R(HHc3Z ''+ F1L!$qwwqz"A1771:&)!qD'71a43IJ ' #r]   c                    [         R                  " SSS5      u  p#[         R                  " SSS5      u  pE[         R                  " SSS5      u  pg[        R                  " [        R                  " X$5      U5      n[        R                  " [        R                  " X55      U5      n	[        R                  " [        R
                  X#4   [        R
                  XE4   [        R
                  Xg4   45      n
[        R                  R                  S5      R                  U5      n[        XUS S [        R                  " S5      S9u  p[        R
                  U[        XUSS  US9S	   4   n[        U[        XU5      5        [        XS S [        R                  " S
5      S9u  p[        R
                  U[        XSS  US9S	   4   n[        X5        [        U
5      n[        R                  " SU5      n[        XUS9u  nn[        U[        R                  " S5      5        [        UU5        SUR                  -   Ul        [!        ["        [        XUS9  UR%                  5       nUR                  S	   SSUR                  S   4Ul        [!        ["        [        XUS S 2S S 2S S 2/ SQ4   S9  [        XUS9u  nn[        US   [        R                  " S5      5        [        US S 2S	S	S S 24   U5        g )NrM   rF  lowr  r  r  rJ   r  r   r   r   r  rL   r   )r   rL   rL   r  )r   r'   r|   r   r   r_r   r"  r   r$   r  r?  r/   r1   rz  r  r   r   r@  )rV   r  b1r  b2r  b3r  rX   rW   r"  ro   y_truer  rU  rp   r  zi_nds                     rZ   test_initial_conditions#TestSOSFilt.test_initial_conditionsO  sN   q$.q$.q$.KKB+R0KKB+R0hhbfruuRV}beeBFmDEIINN2%%b) Q1Sb6bhhqk:
vwqQrsV;A>>?VWQ1%56C3BBHHV,<=	eWSBC&R8;;<V+ _GGArN2&2Q
+R$ 177"j'3b9	xx{Aq"((2,7j'3q!Q	12	45)2QtWbggaj1R1a
^R0r]   c                 2   [         R                  R                  S5      R                  SSSS9nUR	                  U5      n[
        R                  " SSSS	9n[        U6 nUR                  S   nS
n[        UR                  5      nSXv'   U/U-   n[         R                  " U5      n[        XBXhS9u  p[        XBS S 2S S2S S 24   XhS9u  p[        XBS S 2SS 2S S 24   XlS9u  p[         R                  " X4US9n[        XSSS9  [        XSSS9  [        U5      nUS
SS
/Ul        UUS S 2SS
2S S 24   -  n[        XBUUS9S   n[        U6 u  nn[!        UU5      nS
UR"                  S
/Ul        UUS S 2SS
2S S 24   -  n[%        UUX&US9S   n[        UUSSS9  g )N   r   rI   )rM   r  rG   r   rJ   rS  r$  r$  rL   rM   r  rR  r  r  r   )r|   r   r   rH  r   r   r'   r)   r  rG  r  r/   r  r?  r1   r(   r%   r   r$   )rV   r  ro   r$  r"  	nsectionsr  shpz0r  r  r=  rG  r  rH  rp   r  rX   rW   y_tfs                       rZ    test_initial_conditions_3d_axis1,TestSOSFilt.test_initial_conditions_3d_axis1u  s    II!!#&..q!*.EHHRL mmAtE2smIIaL	  177m	kCXXc] d2 2A2qk<12qk< NNB8$/QU;R%e< _q!Q'!AqsAI,C"-a0s|11rww?!AqsAI,q!Qb1!4Q5u=r]   c                    [         R                  " SU5      n[         R                  " S5      n[         R                  " S5      n[        R                  " [
        SS9   [        X2USS9  S S S 5        SUS S 2S	4'   [        R                  " [
        S
S9   [        X2USS9  S S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)N)rG   r  rG   )rH   rJ   )rH   rG   rG   rM   zshould be all onesr  rL   )r  r  r  rG   zInvalid zi shape)r|   r  r  r"  r	   r   r/   )rV   r  ro   r"  r  s        rZ   test_bad_zi_shapeTestSOSFilt.test_bad_zi_shape  s     HHZ$hhvXXl#]]:-ABCr* CAqD	]]:-?@Cr* A@ CB A@s   B(B9(
B69
Cc                    [         R                  " SSSS9n[        U5      n[        U[        R
                  " SU5      US9u  pE[        XSSS9  [        R                  " US S 2S S	24   R                  S
S9US S 2S	S 24   R                  S
S9-  5      n[        XFSS9  [        U[        R
                  " SU5      UR                  5       S9u  pu[        XSSS9  g )NrJ   r:  r"  r$  rF  r  r  r   rG   r   rR  )
r   r'   r1   r/   r|   rz  r?  r  rZ  rI  )rV   r  r"  r  rp   r  ssr  s           rZ   test_sosfilt_ziTestSOSFilt.test_sosfilt_zi  s    mmAs51_RWWR_4R%0 WWSBQBZ^^^,s1ab5z~~2~/FFGQ/ RWWR_=R%0r]   c                    [         R                  " / SQ[        S9R                  SS5      n[         R                  " / SQ[        S9n[        R
                  " SS9   [        X#5        S S S 5        g ! , (       d  f       g = f)N)rL   rM   rG   rL   rI   rG   r  rL   rJ   r   r  r  )r|   r   r!  r}   r"  r#  r/   )rV   r  r"  ro   s       rZ   r$  "TestSOSFilt.test_dtype_deprecation  sV     jj+6:BB1aHJJ2&A##*IJCO KJJs   A00
A>r   N)r   r   r   r   rH  rK  r  rX  r`  rc  rg  r"  r(  r)  r$  r   r   r]   rZ   rF  rF    sF    52.(K$1L,>\
+1 [[ r]   rF  c                   &    \ rS rSrS rS rS rSrg)TestDeconvolvei  c                 b    / SQnSS/n/ SQn[         R                  " X25      u  pE[        XA5        g )N)r   rL   r   r   rL   rL   r   r   rM   rL   )	r   rM   rL   r   rM   rG   rL   r   r   )r   
deconvolver   )rV   originalimpulse_responserecorded	recovered	remainders         rZ   r[   TestDeconvolve.test_basic  s1    +q6.%00L		,r]   c                     SS/SS//nSS/n[         R                  " [        SS9   [        R                  " X5      u  p4S S S 5        g ! , (       d  f       g = f)Nr   zsignal must be 1-D.r  r"  r	   r   r   rn  rV   rq  rp  quotientrs  s        rZ   test_n_dimensional_signal(TestDeconvolve.test_n_dimensional_signal  sM    FQF#q6]]:-BC"("3"3H"OH DCC   A
Ac                     SS/nSS/SS//n[         R                  " [        SS9   [        R                  " X5      u  p4S S S 5        g ! , (       d  f       g = f)Nr   zdivisor must be 1-D.r  rv  rw  s        rZ   test_n_dimensional_divisor)TestDeconvolve.test_n_dimensional_divisor  sM    q6FQF+]]:-CD"("3"3H"OH EDDr{  r   N)r   r   r   r   r[   ry  r}  r   r   r]   rZ   rl  rl    s    -PPr]   rl  c                       \ rS rSrS rS r\R                  R                  SSS/5      \R                  R                  S/ SQ5      S	 5       5       r	S
 r
\R                  R                  S\R                  " SS/5      SS//5      S 5       rSrg)TestDetrendi  c                 `    [        [        / SQ5      5      n[        / SQ5      n[        X5        g )NrK   )r   r   r   )r4   r   r   )rV   	detrendeddetrended_exacts      rZ   r[   TestDetrend.test_basic  s#    E),-		*!)=r]   c                 \    [        / SQ5      n[        USS9n[        USS9n[        X#5        g )N)rL   333333?r  g?g333333@F)overwrite_dataT)r   r4   r   )rV   ro   
copy_arrayinplaces       rZ   	test_copyTestDetrend.test_copy  s-    )*Qu5
!D1!*6r]   r   linearrx  r  r@  c                     [         R                  " S5      R                  SSS5      n[        X2US9nUR                  UR                  :X  d   eg )N   rI   rJ   r   )r  r  )r|   r   r}   r4   r  )rV   r  r   r  r  s        rZ   r>  TestDetrend.test_axis  sC     yy''1a0D$7	$**,,,r]   c                    / SQ/ SQ-   n[        USSS9n[        USSS9  [        R                  " U5      S S S 2S 4   n[        USSS	S
9n[        USSS9  [	        [
        5         [        USSS9  S S S 5        g ! , (       d  f       g = f)Nr@  )rI   r   r  r  r  rG   )r  bpr   rA  r5  rL   )r  r  r  )r4   r   r|   r   r   r   )rV   r  r  s      rZ   test_bpTestDetrend.test_bp  s    ?*DxA6		151 zz$a.DxAA>		151 :&DxA. '&&s   $A99
Br  r   rM   c                     [         R                  R                  S5      nUR                  S5      n[	        X1S9n[         R
                  " / SQ5      n[        XESS9  g )Ni90  rN   )r  )
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿrA  r5  )r|   r   r   r"  r4   r   r   )rV   r  r  ro   r  res_scipy_191s         rZ   test_detrend_array_bp!TestDetrend.test_detrend_array_bp  sR     ii##E*HHRL a "O P 	7r]   r   N)r   r   r   r   r[   r  r"  r(  r  r>  r  r|   r   r  r   r   r]   rZ   r  r    s    >
7 [[Vh
%;<[[VY/- 0 =-
/ [[TBHHaV$4q!f#=>8 ?8r]   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestUniqueRootsi  c                     / SQn[        U5      u  p#[        X!SS9  [        U[        R                  " [        U5      5      5        g )N)rt  r  rU  r  rQ  r  r  r5   r   r
   r|   rz  r  rV   r  r  r  s       rZ   test_real_no_repeat#TestUniqueRoots.test_real_no_repeat  s3    (+AFr2\2773q6?3r]   c                     / SQn[        USSS9u  p#[        U/ SQSS9  [        U/ SQ5        [        USS	S9u  p#[        U/ S
QSS9  [        U/ SQ5        [        USSS9u  p#[        U/ SQSS9  [        U/ SQ5        g )N)rt  ffffff{Gz皙rS  r  ?r  r  tolr  )rt  r  rS  r  r  r  rM   rM   rL   rM   r[  )r  r  rS  r  r  )g333333g
ףp=
rS  gffffff?r5   r   r
   r  s       rZ   test_real_repeat TestUniqueRoots.test_real_repeat  s    6+A4uEF$;RH\<0+A4uEF$<bI\<0+A4uEF$@"M\<0r]   c                     / SQn[        U5      u  p#[        X!SS9  [        U[        R                  " [        U5      5      5        g )N)rt  r         ?      ?r  r  r  r  r  r  s       rZ   test_complex_no_repeat&TestUniqueRoots.test_complex_no_repeat&  s3    =+AFr2\2773q6?3r]   c                     / SQn[        USSS9u  p#[        U/ SQSS9  [        U/ SQ5        [        USS	S9u  p#[        U/ S
QSS9  [        U/ SQ5        [        USSS9u  p#[        U/ SQSS9  [        U/ SQ5        g )N)rt        𿚙?ffffff333333?333333?rT  r  ??r  r  r  )rt  r  rT  r  r  r  r  r[  )r  r  rT  r  r  )y      𿚙?y333333?rT  yffffff??r  r  s       rZ   test_complex_repeat#TestUniqueRoots.test_complex_repeat,  s    '  ,A4uEF$L$&	(\<0+A4uEFJ$&	( 	\<0+A4uEH	 	\<0r]   c                 R   [         R                  " [         R                  " [         R                  " S5      [         R                  " S5      5      5      n/ SQn[	        U5      u  p4[         R
                  " U5      n[        [         R
                  " U5      USS9  [        U/ SQ5        g )NrI   )yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?r   r  )rM   rM   rM   rM   )r|   r  r   rz  r5   sortr   r
   )rV   r  
true_rootsr  r  s        rZ   test_gh_4915TestUniqueRoots.test_gh_4915A  sg    HHR[[RWWQZ89K
+ABGGFOZC\<0r]   c                     [        / SQ5      u  p[        USS/SS9  [        USS/5        [        / SQS	S
9u  p[        USS/SS9  [        USS/5        g )N)r  r   r  r  r   r  r  rM   rL   )rL   g_p   ?&.>      ?r  )r  r  r  r  s      rZ   test_complex_roots_extra(TestUniqueRoots.test_complex_roots_extraK  s]    +,<=FS$K<\Aq6*+,D#NFS+$6C\Aq6*r]   c                     [         R                  R                  S5      S[         R                  R                  S5      -  -   n[        US5      u  p#[	        U[         R
                  " U5      /SS9  [        US/5        g )Nr'  r   rM   r  r  )r|   r   r"  r5   r   r  r
   r  s       rZ   test_single_unique_root'TestUniqueRoots.test_single_unique_rootT  s\    IINN3"ryy~~c':"::+Aq1FRVVAYK<\C5)r]   r   N)r   r   r   r   r  r  r  r  r  r  r  r   r   r]   rZ   r  r    s%    4141*1+*r]   r  c                      [         R                  " [        R                  " S[        R                  S9SS5      n U R
                  [        R                  :X  d   eg )Nr+  r  rJ   rH   )r   r  r|   r   r   r   )r  s    rZ   test_gh_22684r  [  s;    !!"))D"Eq!LF<<2<<'''r]   rd  )ry  r   )r  concurrent.futuresr   r   r  r   	itertoolsr   mathr   r"  r	   r   numpy.testingr
   r   r   r   r   r   r   r   numpyr   r   r|   scipyr   r3  r  r   scipy.optimizer   r   r   scipy.signalr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   scipy.signal.windowsr8   scipy.signal._signaltoolsr9   r:   r;   scipy.signal._upfirdnr<   
scipy._libr=   scipy._lib._array_apir?   scipy._lib._utilr@   rA   rB   rD   r   r+  r  r  rL  rS  r^  r`  rb  r  r  r  r  r  r  r  r  rh  rl  r(  r  rn  rq  rt  rw  rz  r  r  _pmfr  r  r  r  r  r  r  r   r   paramr  r  r  r  r  csingler  r  r  r	  r  r  rQ  rp  r{  	fail_slowr  r)  r  r  r  r  r  r  r  r  r  r?  rC  rF  rl  r  r  r  r   r]   rZ   <module>r     s   
 ?     *  
     % 6          &4 4 0 ! 1 > >eO eOPu= upL LD?"_ ?"DjL jLX3

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

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

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