
    -i`                    `   S SK r 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  S SKrS SKJ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)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<  S SK=J>r>  S SK?J@r@JArAJBrB  S SKCJDrD  S SKEJFrF  S SKGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrS  \
R                  R                  rU\
R                  R                  rV\U" SS/S9 " S S5      5       rW\U" SS/S9 " S S5      5       rX\U" SS/S9 " S S5      5       rYS rZS r[S r\S r]\U" S S!S"9\V" S#S$S"9 " S% S&5      5       5       r^\U" SS'S(9 " S) S*5      5       r_\U" SS/S9 " S+ S,5      5       r`\U" SS/S9 " S- S.5      5       ra/ S/Qrb\b\D-  rb\U" S#S0S"9 " S1 S25      5       rc\U" SS39 " S4 S55      5       rd\U" SS/S9 " S6 S75      5       re\U" SS/S9 " S8 S95      5       rf " S: S;\f5      rg " S< S=\f5      rh\
R                  R                  S>5      \U" SS39 " S? S@\f5      5       5       rj " SA SB\f5      rk " SC SD\f5      rl\
R                  R                  S>5      \U" SS39 " SE SF\f5      5       5       rm\
R                  R                  S>5      \U" SSGS(9 " SH SI\f5      5       5       rn\
R                  R                  S>5      \U" SSGS(9 " SJ SK\f5      5       5       ro\
R                  R                  S>5      \U" SS39SL 5       5       rp\U" SS39SM 5       rq " SN SO5      rr\
R                  R                  SP/ SQQ5      \U" SS/S9\U" S S!S"9 " SR SS\r5      5       5       5       rt\
R                  R                  S>5      \U" SSGS(9\
R                  R                  SP\/5       " ST SU\r5      5       5       5       ru " SV SW5      rv\U" SSXS(9\
R                  R                  SY/ SZQ5      \
R                  R                  S[SS\/5      \
R                  R                  S]S^S_S`Sa\
R                  " Sb\
R                  R                  /Sc9\
R                  " Sd\
R                  R                  /Sc9/5      Se 5       5       5       5       ry\U" SS39Sf 5       rz\U" SS/S9\
R                  R                  SgShSi/5       " Sj Sk5      5       5       r{\U" SS/S9 " Sl Sm5      5       r|\U" SSn9\U" SSoS"9 " Sp Sq5      5       5       r}\U" SS/S9 " Sr Ss5      5       r~\U" S#StS"9\U" SS/S9 " Su Sv\~5      5       5       rSw rSSx jr\
R                  R                  S>5      \U" SS39\
R                  GR                  Sy5      Sz 5       5       5       r\
R                  GR                  \U" SS39S{ 5       5       r\U" SS39\
R                  R                  S>5      S| 5       5       r\U" SS39\
R                  GR                  Sy5      S} 5       5       r\U" SS39 " S~ S5      5       r\U" S SS"9 " S S5      5       r\U" S SS"9 " S S5      5       r " S S5      r\U" SS39 " S S5      5       r " S S5      r\
R                  R                  S>5      \U" SS39\
R                  R                  S\4\)45      S 5       5       5       r\U" SSn9\
R                  R                  SP/ SQ5       " S S5      5       5       r\U" SSS9\U" S SS"9 " S S5      5       5       r\U" SS/S9 " S S5      5       r\U" SS39 " S S5      5       rS rg)    N)ThreadPoolExecutoras_completed)Decimalproduct)gcd)raises)assert_allclosesuppress_warnings)ComplexWarning)fft)correlate1d)fminlinear_sum_assignment)signal)	correlatecorrelate2dcorrelation_lagsconvolve
convolve2dfftconvolve
oaconvolvechoose_conv_methodenvelopehilberthilbert2lfilter
lfilter_zifiltfiltbutterzpk2tfzpk2sosinvresinvreszvectorstrengthlfiltictf2sossosfiltsosfiltfilt
sosfilt_zitf2zpkBadCoefficientsdetrendunique_rootsresidueresiduez)hann)_filtfilt_gust_compute_factors_group_poles)_upfirdn_modes)
_testutils)xp_assert_closexp_assert_equalis_numpyis_torchis_jaxis_cupyassert_array_almost_equalassert_almost_equalxp_copyxp_sizexp_default_dtypearray_namespaceTcupycpu_only
exceptionsc                      \ rS rSr\" SSS9S 5       r\" SSS9S 5       r\" SSS9S 5       rS r\	" SS	S9S
 5       r
\" SSS9S 5       rS r\	" SS	S9S 5       r\" S5      \" S5      S 5       5       r\" S5      \" S5      S 5       5       rS r\" SSS9S 5       r\" SSS9S 5       r\" SSS9S 5       r\" SSS9S#S j5       r\" SSS9S 5       r\" SS9S 5       r\R0                  R2                  \" SS9S  5       5       rS!rg")$TestConvolve+   	jax.numpy2jax returns floats; scipy returns ints; cf gh-6076reasonc                     UR                  / SQ5      nUR                  / SQ5      n[        X#5      n[        XAR                  / SQ5      5        g )N)            rQ   rP         rO   )rO   
             rY         asarrayr   r8   selfxp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<     JJ)*JJy!QN::&EFG    c                     UR                  / SQ5      nUR                  / SQ5      n[        X#SS9n[        XAR                  / SQ5      5        g )NrO   rP   rQ   rT   rU   rO   rP   samemode)rV   rW   "   r\   r^   s        rd   	test_sameTestConvolve.test_same6   s=     JJy!JJ|$Q'::l34rg   c                     UR                  / SQ5      nUR                  / SQ5      n[        X#SS9n[        XAR                  / SQ5      5        g )Nri   rS   rk   rl   )rV   rW   rW   r\   r^   s        rd   test_same_eqTestConvolve.test_same_eq>   s=     JJy!JJy!Q'::l34rg   c                     UR                  / SQ5      nUR                  SS/5      n[        X#5      n[        XAR                  / SQ5      5        g )N)      ?      ?       @      ?      @      ?ru   rv   )               @y       @      @y      @       @y      @      @r\   )r_   r`   xyzs        rd   test_complexTestConvolve.test_complexF   s?    JJ/0JJ'(QN::&BCDrg   zwrong output dtypec                 z    UR                  S5      nUR                  S5      n[        X#5      n[        XBU-  5        g Ni	  i  r\   r^   s        rd   test_zero_rankTestConvolve.test_zero_rankL   s3    JJtJJtQNq5!rg   Tzpure pythonnp_onlyrM   c                 6    SnSn[        X#5      nXBU-  :X  d   eg r   )r   r^   s        rd   test_zero_rank_python_scalars*TestConvolve.test_zero_rank_python_scalarsS   s#    QNEzzrg   c                    UR                  UR                  S5      S5      nUR                  S5      n[        S5       HI  nS/S-  nSXT'   [        X!R                  X55      SS9n[        X!R                  X55      SS9n[	        XgSS	9  MK     g )
N   rO   rO   rO   rO   rT   directmethodr   +=atol)reshapearangeranger   r7   )r_   r`   ra   rb   ib_shapery   rz   s           rd   test_broadcastableTestConvolve.test_broadcastableZ   s{    JJryy}i0IIaLqAc!eGGJJJq28DAJJq25AAAu- rg   c                 ~    UR                  S/5      nUR                  S/5      n[        X#5      n[        XBU-  5        g Ng  P  r\   r^   s        rd   test_single_element TestConvolve.test_single_elemente   s7    JJvJJvQNq5!rg   rC   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        X#5      nUR                  / SQ/ SQ/ SQ/5      n[        XE5        g NrS   ri   rU   rO   rP   rP   rQ   rR   )rU            r[   )rV      >   :   &   )r[      r   1   r   r\   r_   r`   ra   rb   rc   ds         rd   test_2d_arraysTestConvolve.test_2d_arraysl   sY     JJ	9-.JJ	9-.QNJJ*'') * 	rg   torchc           
         UR                  UR                  S5      S5      nSUR                  UR                  SUR                  S9S5      -  nX1R                  UR                  SUR                  S9S S S2   S5      -  nUR                  / 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        [	        [        X2S5      U5        [	        [        X#S5      USS2SS2SS24   5        [	        [        X2S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        [	        [        X2S5      USS2SS2SS24   5        g )N   rU   rU   rU                 ?r   dtyper   )                y      :@        y      9@      ?y      8@       @)y      J@        y     b@      @y      b@      &@y     @W@      &@)y      G@      @y     `@      7@y     _@      =@y     @T@      7@)y      D@      (@y     X@      @@y     @W@     B@y      K@      8@)y      Z@        y     n@      *@y     m@      7@y     `@      5@)y     q@      >@y     @      X@y     @      _@y     t@     U@)y     n@     P@y      @     f@y     @@      j@y     q@     `@)y     a@     P@y     0s@      d@y     r@     `f@y      c@     Z@)y      Q@      B@y     c@     Y@y     `b@     @\@y     @T@     R@)y     e@     @a@y     w@     u@y      v@     w@y     @g@     l@)y     @a@     e@y     r@      {@y     p@     |@y     @a@     `q@)y     Q@     @a@y      b@     0t@y     _@     Pu@y     O@     h@)y      @@      R@y      Q@     d@y     M@     e@y      >@      Y@)y      Q@      h@y     `a@     {@y     @]@     p|@y     L@     o@)y      C@     k@y     @R@     0@y     I@     H@y      5@     0r@)y      (@      b@y      4@     s@y      @     t@y             f@fullrk   rT   rO   r   valid)r   r   
complex128r]   r8   r   )r_   r`   smallbig	out_arrays        rd   test_input_swapping TestConvolve.test_input_swappingw   s    

299Q<32::bii"--i@)LLzz"))Bbmm)<TrTBINNJJ16768
 :;==?
 ;>><>
 :<:8:;<	* 	V4i@V4i@V4$QqS!A#qs]3	5V4$QqS!A#qs]3	5W5$QqS!A#qs]3	5W5$QqS!A#qs]3	5rg   c           	          UR                  / SQ5      nUR                  / SQ5      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 Nri   rS   spamrl   eggsr   rm   r   hamr   r   baconrk   )r]   assert_raises
ValueErrorr   r_   r`   ra   rb   s       rd   test_invalid_params TestConvolve.test_invalid_params   sl    JJy!JJy!j(Av>j(AveLj(AuXNj(AvgNj(AvgNrg   dtypes do not matchc                    UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      n[        X#S5      n[        XT5        [        X2S5      n[        XT5        UR                  / SQ5      nUR                  SS/5      nUR                  SS/5      n[        X#S5      n[        XT5        [        X2S5      n[        XT5        g )	NrT   rU   rO   rR   rQ   rO   	rU   rO   rP   rQ   rO   rP   rU   rU   rT   )F   N   I   A   r   )y      ?      @       @      y      @               @            ?        y       @      $r\   r_   r`   ra   rb   expectedouts         rd   test_valid_mode2TestConvolve.test_valid_mode2   s     JJ)*JJ23::./qW%&qW%&JJ/0JJ'(::vw/0qW%&qW%&rg   c                     UR                  / SQ5      nUR                  / SQ5      n[        X#S5      nUR                  / SQ5      n[        XE5        g )N)rT   rU   rO   rO   rT   rU   )rT   rP   rO   rP   rQ   rR   r   rP   rO   rU   rT   rT   rO   rk   )9   =   ?   r   -   $   r\   r   s         rd   test_same_modeTestConvolve.test_same_mode   sC    JJ)*JJ>?Q6"JJ/0rg   zdifferent exceptionc                     UR                  UR                  SS5      S5      nUR                  UR                  SS5      S5      n[        [        [        /X#4Q70 SS0D6  [        [        [        /X24Q70 SS0D6  g 	NrT   r   rU   rO   r   rO   rU   rm   r   )r   r   r   r   r   r   s       rd   test_invalid_shapes TestConvolve.test_invalid_shapes   so     JJryyA/JJryyQ'0j(IaVI7HIj(IaVI7HIrg   zTODO: convert this testc                    1 SknU VVVs/ s H  oC  H  nS  H  nXEU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  pEn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
                  :X  d   eSU;   a  SU;   a  [        X5      S:X  d   eM  [        XE4 Vs/ s H  oS;   PM	     sn5      (       a  SSS.nOSXE4;   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	complex64r   )r   r   rk   *   r   rT   size)r   fr   rb   ur                 ?rc   )r   r   )r   rm   r   r   r   >   r   r   -C6?ư>rtolr   r   MbP?h㈵>:0yE>)nprandomRandomStatechoicerandnr   kindastyper   r   anyr7   )r_   r`   ntypest1t2rm   argsrngarray_typesx1x2keyresultstkwargss                   rd   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 5>''78+<+B+BBBB|")"1X=== B8D8a118DEE"($7rh&"&5 #'5GENGH,=HH1 !F5 Es   !F/F6$F;
c                     S Ht  nUR                  SU-  /UR                  S9n[        X3SS9n[        X3SS9nUS:  d  M=  UR                  SSU-  -  /5      n[        XE5        [        XFSS	9  [        XVSS	9  Mv     g )
N)	rV      2   3   4   5   6   <   r   rU   r   r   r   r   r  Fcheck_dtype)r]   r   r   r8   )r_   r`   r  r{   r   r   vals          rd    test_convolve_method_large_input-TestConvolve.test_convolve_method_large_input   s     6A

AqD6
2A1.Ca84F
 2vjj!ac(,,e<? 6rg   r   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 NrT   rU   r   r   r   rO   )r   r   r   r_   r`   s     rd   test_mismatched_dims!TestConvolve.test_mismatched_dims  sp     	j(QC8Dj(As8Dj(QC5Aj(As5Aj(QC1#7j(QC3rg   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  r]   objectpytestdeprecated_callr   r   s       rd   test_dtype_deprecation#TestConvolve.test_dtype_deprecation  sI     JJ)8JJ2&A##*IJQN KJJ   A  
A. N)d   )__name__
__module____qualname____firstlineno__skip_xp_backendsre   ro   rr   r|   xfail_xp_backendsr   r   r   r   r   r   r   r   r   r   r  r'  r-  r5  markthread_unsafer7  __static_attributes__r:  rg   rd   rH   rH   +   s    kCEHEH kCE5E5 kCE5E5E {+?@" A" d=9 :	. {+?@" A" k#f  $ gf#5  #5JO k*?@' A', k*?@ A f%:;
J <
J d+DE*I F*IX k*?@@ A@" d#4 $4 [[d# $ rg   rH   c            	          \ rS rSr\" SSS9S 5       r\" SSS9S 5       r\" SSS9S 5       r\" SS	S9S
 5       rS r	S r
\" SSS9S 5       r\" SSS9S 5       r\" SSS9\R                  R                  S\\/5      \R                  R                  SS/ SQ/4S/ SQ/4/5      S 5       5       5       r\" SSS9S 5       r\" SSS9S 5       rS r\" SSS9S 5       r\" SSS9S 5       r\" SSS9S 5       rS r\R                  R4                  \R                  R7                  S 5      \" S!S"S#9S$ 5       5       5       rS%rg&)'TestConvolve2di&  rJ   r   rL   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/ SQ/5      n[        X#5      n[        XT5        g r   r]   r   r8   )r_   r`   ra   rb   r   es         rd   r   TestConvolve2d.test_2d_arrays)  sX    JJ	9-.JJ	9-.JJ*'') * qrg   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/5      n[        X#S5      n[        XT5        [        X2S5      n[        XT5        g )NrU   rO   rP   rQ   rR   r   r   rP   rQ   rR   r   r   	   rV   rS   ri   r   P   b   t      r   rH  r_   r`   rI  r   hgs         rd   test_valid_modeTestConvolve2d.test_valid_mode3  sf    JJ-/EFGJJ	9-.JJ./0qW% qW%rg   r   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/UR                  S9S-   nUR                  / SQ/5      n[        X#S5      n[        XT5        [        X2S5      n[	        XT5        g )	NrL  rM  rS   ri   r   r   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@r   )r]   r   r   r7   r8   rT  s         rd   test_valid_mode_complx%TestConvolve2d.test_valid_mode_complx@  ss    JJ-/EFGJJ	9-R]]JCbHJJLMNqW% qW%rg   zjax only allows fillvalue=0c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      nSn[        X#SSU5      nUR                  / SQ/ S	Q/ S
Q/5      n[        XV5        g )NrS   ri   r   r   rT   r   fill)      r   rn   rY   )rX   (   r   @   r   )rY   .   C   r   0   rH  )r_   r`   ra   rb   fillvalrc   r   s          rd   test_fillvalueTestConvolve2d.test_fillvalueM  sc    JJ	9-.JJ	9-.qVVW5JJ,'') * 	rg   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 valuesr2  rT   rU   r   	fillvaluez,`fillvalue` must be scalar or an array with )r  testingr   filterr   r   r   r   )r_   r`   msgsups       rd   test_fillvalue_errors$TestConvolve2d.test_fillvalue_errorsX  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 )NrT   rU   ri  r   r   r   r,  s     rd   test_fillvalue_empty#TestConvolve2d.test_fillvalue_emptyc  s    j*seq!fX "	$rg   z!jax only supports boundary='fill'c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        X#SS5      nUR                  / SQ/ SQ/ SQ/5      n[        XE5        g )	NrS   ri   r   r   r   wrap)rP  rP  J   rP  rP  )D   rx  r   rx  rx  rH  r   s         rd   test_wrap_boundary!TestConvolve2d.test_wrap_boundaryh  s\    JJ	9-.JJ	9-.qVV,JJ,'') * 	rg   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        X#SS5      nUR                  / SQ/ SQ/ S	Q/5      n[        XE5        g )
NrS   ri   r   r   r   symm)rn   r   ,   r   B   )r   rd  r   rP  T   )R   r   \   n   r   rH  r   s         rd   test_sym_boundary TestConvolve2d.test_sym_boundaryr  s\    JJ	9-.JJ	9-.qVV,JJ,')+ , 	rg   funczboundary, expectedr|  )g     B@      E@      F@g     F@rv  )     E@r  r       C@c                     UR                  / SQ/5      nUR                  S5      nU" XVSUS9n[        XtR                  U5      5        g )N)       @            @      @)rT      rk   rm   boundary)r]   onesr8   )r_   r  r  r   r`   imagekernelresults           rd   test_same_with_boundary&TestConvolve2d.test_same_with_boundary|  sE     

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

8 45rg   c           
         SS K Jn  UR                  UR                  SSUR                  S9S5      nUR                  UR                  SSUR                  S9S5      n[        X4SS	S
9n[        XRR                  X4S	SS95        g )Nr   rT   r   r   )rV   rO   e   )rV   rV   rk   rv  r  )r   r   )rm   origin)scipy.ndimagendimager   r   r   r   r8   r   )r_   r`   ndira   rb   rc   s         rd   test_boundary_extension_same+TestConvolve2d.test_boundary_extension_same  sr    
 	$JJryyF"**y=wGJJryyG2::y>Iq&6:<<6(<KLrg   c                    SS K Jn  UR                  UR                  SSUR                  S9S5      nUR                  UR                  SSUR                  S9S5      n[        X4SS	S
9n[        R                  " SS[        S9R                  SS5      n[        R                  " USS	5      nUR                  U5      n[        XQR                  UR                  XS	S9S S2S S24   5      5        g )Nr   rT   rV   r   rO   rO   %   )rR   rR   r   rv  r  rO   )r  r  rl   r   )r  r  r   r   r   r   r  floatpadr]   r8   r   )	r_   r`   r  ra   rb   rc   a_npapad_npapads	            rd   test_boundary_extension_full+TestConvolve2d.test_boundary_extension_full  s    
 	$JJryyEy<fEJJryyEy<fEq&6:yyF%088A>&&/8zz'"::cll4l&H"crc&RSTrg   c                     UR                  UR                  SS5      S5      nUR                  UR                  SS5      S5      n[        [        [        /X#4Q70 SS0D6  [        [        [        /X24Q70 SS0D6  g r   )r   r   r   r   r   r   s       rd   r   "TestConvolve2d.test_invalid_shapes  so     JJryyA/JJryyQ'0j*KvK&'9JKj*KvK&'9JKrg   rK   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        X#S5      nUR                  / SQ/ SQ/5      n[        XE5        g )NrS   ri   rL  rM  rk   )rW   rX   rn   )rP  rQ  rR  rH  )r_   r`   rI  r   rV  rU  s         rd   r   TestConvolve2d.test_same_mode  sX     JJ	9-.JJ-/EFGqV$JJ " #rg   c                    UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      nUR                  / SQ/5      n[        X#S5      n[        XT5        [        X2S5      n[        XT5        UR                  SS/S	S
//5      nUR                  / SQ/ SQ/5      nUR                  SS//5      n[        X#S5      n[        XT5        [        X2S5      n[        XT5        g )NrS   ri   rL  rM  rO  r   ru   r   rw         @        )r         @       @r  )r  y      @      ?y      @      y      ;@      y      G@       @rH  )r_   r`   rI  r   r   r   s         rd   r   TestConvolve2d.test_valid_mode2  s     JJ	9-.JJ-/EFG::567w'&w'&JJ(66*:;<JJ02JKL::234w'& w'&rg   z9only integer tensors of a single element can be convertedc                    [         R                  " S5      n[         R                  " / SQ5      nUR                  U5      nUR                  U5      nS H  n[        UR                  [         R                  " X#US95      [
        R                  " XEUS95        [        UR                  [
        R                  " US S S 24   US S S 24   US9SS9[
        R                  " XEUS95        M     g )NrQ   g	@gffffff?rO   r   r   rk   rl   r   axis)r  r   r]   r7   r   r   squeezer   )r_   r`   r  b_npra   rb   rm   s          rd   test_consistency_convolve_funcs.TestConvolve2d.test_consistency_convolve_funcs  s    
 yy|zz-(JJtJJt-D

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

%%aaj!D!G*4H   40 .rg   c                     [        [        [        SS5        [        [        [        S/S/5        [        [        [        S///S///5        g )NrO   rP   rr  r,  s     rd   test_invalid_dims TestConvolve2d.test_invalid_dims  s<    j*a3j*qcA37j*ug!w?rg   z!Can't create large array for testTstride_tricksr   c                    SSUR                  5       R                  -  -  n[        R                  " SU-  S-  [        R                   " 5       R                  -  S-  5        UR                  SU-  UR                   S9nSUS S S2'   [        R                  R                  R                  X2S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          rU     g    .Ar   rT   )iH  r   )shapestridesr   )r   itemsizer6   check_free_memoryr  zeroslibr  
as_stridedr   r   wherer   )r_   r`   r  ra   countfailss         rd   test_large_arrayTestConvolve2d.test_large_array  s    
 dRXXZ0001$$QUT\BHHJ4G4G%G#%MN HHTAXRXXH.#A#FF  ++AY	+R!!!q!fX.#Qx}}!!!rg   r:  N)r<  r=  r>  r?  r@  r   rW  rZ  rf  ro  rs  ry  r  r5  rB  parametrizer   r   r  r  r  r   r   r   r  r  slowxfail_on_32bitr  rD  r:  rg   rd   rF  rF  &  s    k*?@ A k*?@
 A
 g&;<
 =
 k*GH I	:$
 k*MN O k*MN O k*MN[[Vj+%>?[[1%(@'AB%(@'ABDE6E @ O
6 k*MNM OM k*MNU OU
L kCEE kCE'E'. gJ(@
 [[[[ CDd?;" < E "rg   rF  c                    	   \ rS rSr\" SSS9\R                  R                  SSSSS/S	S	//5      S
 5       5       r\" SSS9\R                  R                  SSS/S	S	//5      S 5       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\" SSS9\R                  R                  SSSSS/S	S	//5      S 5       5       r\" SSS9\R                  R                  SSS	S/S	//5      S 5       5       r\" SSS9\R                  R                  SSSSS/S	S	//5      S 5       5       r\" SSS9\R                  R                  SSS//5      S 5       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SS9\" SSS9S 5       5       r\" SSS9\" SSS9\R                  R                  S / / 4S!S"// 4/ S#/4/5      S$ 5       5       5       r\" SS%S9S& 5       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\" S*S+S,9\R                  R                  SSS-/S-S/SS	/S	S/S.S-/S-S./S.S	/S	S.//5      S/ 5       5       r\R                  R<                  \R                  R                  S0\" \ " SS15      5      \" \ " S2S35      5      -   \!RD                  RG                  S45      RI                  S5S6S!5      RK                  5       -   5      S7 5       5       r&\R                  RN                  \" S*S89S9 5       5       r(S:r)g);TestFFTConvolvei  r   r   rL   axes Nr   r   c                     UR                  / SQ5      nUR                  / SQ5      nUS:X  a  [        X35      nO*[        U[        5      (       a  [	        U5      n[        X3US9n[        XTSS9  g )NrS   rT   rP   rV   r[         "@r  r  Tqs*>r   r]   r   
isinstancelisttupler7   r_   r  r`   ra   r   r   s         rd   	test_realTestFFTConvolve.test_real  s^     JJy!::012:a#C$%%T{a.CF3rg   rT   c                 X   UR                  / SQ5      nUR                  / SQ5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      n[        U[        5      (       a  [        U5      n[        X3US9n[        XTSS9  g )NrS   r  rU   rT   r  r  r   r]   r  tiler  r  r  r   r7   r  s         rd   test_real_axesTestFFTConvolve.test_real_axes  s     JJy!::01JJrwwq1a&)*::bgghA78dD!!;D!T*F3rg   c                     UR                  / SQ5      nUR                  / SQ5      nUS:X  a  [        X35      nO*[        U[        5      (       a  [	        U5      n[        X3US9n[        XTSS9  g )Nru          @       @y      @      @rx   y               @y              4@y              8@y              2@r  r  r  r   r  r  s         rd   r|   TestFFTConvolve.test_complex&  s]    JJ/0::IJ2:a#C$%%T{a.CF3rg   c                 X   UR                  / SQ5      nUR                  / SQ5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      n[        U[        5      (       a  [        U5      n[        X3US9n[        XTSS9  g )Nr  r  rU   rT   r  r  r   r  r  s         rd   test_complex_axes!TestFFTConvolve.test_complex_axes3  s    JJ/0::IJJJrwwq1a&)*::bgghA78dD!!;D!T*F3rg   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/ SQ/5      nUS:X  a  [        X35      nO*[        U[        5      (       a  [	        U5      n[        X3US9n[        XT5        g )N)      ?rU   rO   r   )r  rP   rV   r[   rN  r   r_  8   r"  r   r   r`  r   r#  r   r  r  r  r  s         rd   test_2d_real_same!TestFFTConvolve.test_2d_real_sameA  su     JJ!# $::2235 6 2:a#C$%%T{a.C&rg   rU   c                 p   UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/ SQ/5      nUR                  [        R                  " U/ SQ5      5      nUR                  [        R                  " U/ SQ5      5      n[        U[        5      (       a  [        U5      n[        X3US9n[        XTSS	S
9  g )NrS   r   )rT   rP   rV   r[   rN  r  r  rU   rT   rT   r  r  Fr   r%  r  r  s         rd   test_2d_real_same_axes&TestFFTConvolve.test_2d_real_same_axesZ  s     JJ	 ::0-.0 1 JJrwwq),-::bggh	:;dD!!;D!T*FFrg   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/ SQ/5      nUS:X  a  [        X35      nO*[        U[        5      (       a  [	        U5      n[        X3US9n[        XTSS	9  g )
N      ?       @      @      @y      @      @rv   y      @      @y      @      @y            @y      $      4@y      5      L@y      2      S@y      &      N@y              $@y              F@y             ]@y             c@y             ^@r  y      $@      4@y      5@      L@y      2@      S@y      &@      N@r  r  r  r   r  r  s         rd   test_2d_complex_same$TestFFTConvolve.test_2d_complex_samer  sx     JJ0+- .::A(<  2:a#C$%%T{a.CF3rg   c                 n   UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/ SQ/5      nUR                  [        R                  " U/ SQ5      5      nUR                  [        R                  " U/ SQ5      5      n[        U[        5      (       a  [        U5      n[        X3US9n[        XTSS	9  g )
Nr  r   r  r  r  r  r  r  r   r  r  s         rd   test_2d_complex_same_axes)TestFFTConvolve.test_2d_complex_same_axes  s     JJ0+- .::A(<  JJrwwq),-::bggh	:;dD!!;D!T*F3rg   c                    UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUS:X  a  [        X4S5      nO+[        U[        5      (       a  [	        U5      n[        X4SUS9n[        Xu5        US:X  a  [        XCS5      nO+[        U[        5      (       a  [	        U5      n[        XCSUS9n[        XvSS	9  g )
NrS   	rO   rO   rQ   rR   r   r   rN  r   rT        A@     D@     G@	r        4@      9@r  r  r  r  g      <@r  r  rk   r  r  r   r  r_   r  r`   ra   rb   
expected_1
expected_2r   s           rd   test_real_same_mode#TestFFTConvolve.test_real_same_mode  s     JJy!JJ23ZZ0
ZZ KL
2:aF+C$%%T{aF6C(2:aF+C$%%T{aF6Cf5rg   c                 p   UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      n[        U[        5      (       a  [        U5      n[        X4SUS9n[        XuS	S
9  [        XCSUS9n[        XvS	S
9  g )NrS   r
  r  r  rU   rT   rk   r  r  r   r  r  s           rd   test_real_same_mode_axes(TestFFTConvolve.test_real_same_mode_axes  s     JJy!JJ23ZZ0
ZZ KL
JJrwwq1a&)*JJrwwq1a&)*ZZ
QF ;<
ZZ
QF ;<
dD!!;D!T2f5!T2f5rg   c                    UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUS:X  a  [        X4S5      nO+[        U[        5      (       a  [	        U5      n[        X4SUS9n[        XeSS9  US:X  a  [        XCS5      nO+[        U[        5      (       a  [	        U5      n[        XCSUS9n[        XeSS9  g )	NrO   rU   rT   r
        8@g      ?@r  r  g     H@r        (@r  r   r  r  r   r  r_   r  r`   ra   rb   r   r   s          rd   test_valid_mode_real$TestFFTConvolve.test_valid_mode_real  s     JJy!JJ23::AB2:aG,C$%%T{aG$7CF32:aG,C$%%T{aG$7CF3rg   c                    UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      n[        U[        5      (       a  [        U5      n[        X4SUS9n[        XeSS	9  g 
Nr  r
  r  rU   rT   r   r  r  r   r  r  s          rd   test_valid_mode_real_axes)TestFFTConvolve.test_valid_mode_real_axes  s     JJy!JJ23::ABJJrwwq1a&)*JJrwwq1a&)*::bgghA78dD!!;D!d3F3rg   c                    UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUS:X  a  [        X4S5      nO+[        U[        5      (       a  [	        U5      n[        X4SUS9n[        XeSS9  US:X  a  [        XCS5      nO+[        U[        5      (       a  [	        U5      n[        XCSUS9n[        XeSS9  g )	N      @      y       @      @r   r  y      @      y      @        y      @      y       @        y     F@      (@y      >@      7@y      H@      @@r  r   r  r  r   r  r  s          rd   test_valid_mode_complex'TestFFTConvolve.test_valid_mode_complex   s    JJ/0JJ?@::AB2:aG,C$%%T{aG$7CF32:aG,C$%%T{aG$7CF3rg   c                    UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      n[        U[        5      (       a  [        U5      n[        X4SUS9n[        XeSS	9  [        XCSUS9n[        XeSS	9  g )
Nr'  r)  r*  rU   rT   r   r  r  r   r  r  s          rd   test_valid_mode_complex_axes,TestFFTConvolve.test_valid_mode_complex_axes  s    JJ/0JJ?@::ABJJrwwq1a&)*JJrwwq1a&)*::bgghA78dD!!;D!d3F3!d3F3rg   rJ   z mapped axes must have same shapec                    UR                  / SQ5      nUR                  / SQ5      nUR                  / SQ5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      nUR                  [        R                  " USS/5      5      n[        X#SSS9n[	        XTSS	9  g r#  )r]   r  r  r   r7   r   s         rd   test_valid_mode_ignore_nonaxes.TestFFTConvolve.test_valid_mode_ignore_nonaxes)  s     JJy!JJ23::ABJJrwwq1a&)*JJrwwq1a&)*::bgghA78!a0F3rg   rC   zassorted error messagesa,brQ   rR   r   c                     [        [        UR                  U5      UR                  U5      5      UR                  / 5      5        g N)r8   r   r]   r_   ra   rb   r`   s       rd   
test_emptyTestFFTConvolve.test_empty8  s1    
 	

1rzz!}5JJrN	
rg   zjnp.pad: pad_width with nd=0c                 z    UR                  S5      nUR                  S5      n[        X#5      n[        XBU-  5        g r   )r]   r   r8   r_   r`   ra   rb   r   s        rd   r   TestFFTConvolve.test_zero_rankB  s4    JJtJJt!U#rg   c                     UR                  S/5      nUR                  S/5      n[        X#5      n[        UUR                  X#-  UR                  S95        g )Nr   r   r   )r]   r   r8   r   r:  s        rd   r   #TestFFTConvolve.test_single_elementI  sL    JJvJJv!

15		
:	<rg   c                 j   [         R                  R                  S5        [         R                  R                  S5      S[         R                  R                  S5      -  -   n[         R                  R                  S5      S[         R                  R                  S5      -  -   nUR	                  [         R
                  " X4S5      5      nUR	                  U5      nUR	                  U5      nUS:X  a  [        XgS5      nO+[        U[        5      (       a  [        U5      n[        XgSUS9n[        XSS	9  g )
N    r   )  r   r  r  绽|=r  )r  r  seedrandr]   r   r   r  r  r  r7   	r_   r  r`   r  r  r   ra   rb   r   s	            rd   test_random_data TestFFTConvolve.test_random_dataP  s    
		tyy~~d#b299>>$+?&??yy~~d#b299>>$+?&??::bkk$f=>JJtJJt2:aF+C$%%T{aF6CE2rg   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                  " X4S5      n[         R
                  " USS/5      n[         R
                  " USS/5      nUR                  [         R
                  " USS/5      5      nUR                  U5      nUR                  U5      n[        U[        5      (       a  [        U5      n[        XgSUS9n[        XS	S
9  g )Nr?  r@  r   rA  r   rU   rT   r  rB  rC  )r  r  rD  rE  r   r  r]   r  r  r  r   r7   rF  s	            rd   test_random_data_axes%TestFFTConvolve.test_random_data_axesa  s   
		tyy~~d#b299>>$+?&??yy~~d#b299>>$+?&??;;t62wwtaV$wwtaV$::bgghA78JJtJJtdD!!;D!T2E2rg   TzTODO: swapaxesr   rP   c                    Su  p4[         R                  R                  S5        UR                  [         R                  R                  " U6 S[         R                  R                  " U6 -  -   5      nUR                  [         R                  R                  " U6 S[         R                  R                  " U6 -  -   5      n[        XVS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UR                  UR                  SS5      SS5      nUR                  UR                  SS5      SS5      nUR                  UR                  SS5      SS5      nUR                  [         R                  " U/ S	Q5      5      nUR                  [         R                  " U/ S
Q5      5      nUR                  [         R                  " U/ SQ5      5      n[        XVSUS9n[        XSSS9  g )N)){   rW   )      r?  r   r   r   rU   rT   rP   )rU   rT   rO   rT   rT   )rU   rT   rT   rP   rT   )rU   rT   rO   rP   rT   r  rB  r   )r  r  rD  r]   rE  r   moveaxisswapaxesr  r   r7   )	r_   r  r`   a_shaper   ra   rb   r   r   s	            rd   test_random_data_multidim_axes.TestFFTConvolve.test_random_data_multidim_axest  s    0
		tJJryy~~w/"ryy~~w7O2OOPJJryy~~w/"ryy~~w7O2OOPaF+aD$$%aD$$%Aq$d23KK

1a(!Q/KK

1a(!Q/;;x00A61= JJrwwq/23JJrwwq/23::bggh@A!T2E>rg   r  r;  r  i  r?  r  '  c                    [         R                  R                  U5      S[         R                  R                  U5      -  -   n[         R                  R                  U5      S[         R                  R                  U5      -  -   nUR                  [         R                  " X4S5      5      nUR                  U5      nUR                  U5      n[        XgS5      n[        XSS9  [        XgSS/S9n[        XSS9  g )Nr   r   rB  r   r   r  )r  r  rE  r]   r   r   r7   )	r_   r  r`   r  r  r   ra   rb   r   s	            rd   test_many_sizesTestFFTConvolve.test_many_sizes  s     yy~~a 2		q(9#99yy~~a 2		q(9#99::bkk$f=>JJtJJt!'E2!aS1E2rg   r)  c           	         Sn[         R                  R                  S5      nUR                  UR	                  U5      5      n[         R
                  [         R                  4 Hg  nXTS'   UR                  [        R                  " SS5      5      nSn[        R                  " [        US9   [        R                  " XFSS	S
9  S S S 5        Mi     g ! , (       d  f       M{  = f)Nr  l   [<zn( r;     皙?z4Use of fft convolution.*|invalid value encountered.*r2  rk   r   r   )r  r  default_rngr]   standard_normalnaninfr   firwinr5  warnsRuntimeWarningr   )r_   r`   r  r  sig_nanr&  coeffsrm  s           rd   test_fft_nanTestFFTConvolve.test_fft_nan  s     ii##K0**S0034FFBFF#CCLZZc3 78FHCnC8fUK 98 $
 98s   *C
C	r:  )*r<  r=  r>  r?  r@  r5  rB  r  r  r  r|   r  r  r  r  r  r  r  r   r$  r+  r.  r1  rA  r7  r   r   rG  rJ  rT  r  r  r   r  r  r  randinttolistrX  rC  rf  rD  r:  rg   rd   r  r    s<    g&;<[[Vb$A3RD%AB4 C =4 g&;<[[Va!b2$%784 9 =4 [[Vb$A3RD%AB
4 C
4 [[Va!b2$%784 94 [[Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	1'	1' [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1G1G  [[Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	14	14$ [[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1414$ g&;<[[Vb$A3RD%AB6 C =6, g&;<[[VaaS2$%786 9 =6( g&;<[[Vb$A3RD%AB4 C =4, g&;<[[Va!X.4 / =4  [[Vb$A3RD%AB4 C4* [[Va!b2$%784 94$ k*LMg&;<4 = N4 v&;<{+DE[[Ub"XA|b1#Y$GH
 I F =
 k*HI$ J$< [[Vb$A3RD%AB3 C3  [[Va!b2$%783 93$ t,<=[[Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1?1 >?. [[[[U1c]U4	 
		d#++D%;BBD	EF
3F 3 [[d#L $ Lrg   r  c                      [        S5      e)NzFell back to fftconvolve)RuntimeError)r  r  s     rd   fftconvolve_errrl    s    
1
22rg   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 )NrU   repeatrO   )r   abssizesra   rb   s      rd   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   rT   rU   rO   )rs  zipr   )	rr  shapes0shapes1ishapes0ishapes1shapesmodesishapesimodes	            rd   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 )NrU   rn  r   rq  s      rd   gen_oa_shapes_eqr    s9    &uQ7 7tqv QF7   s   ((rJ   zfails all aroundrL   
dask.arrayzwrong answerc                      \ rS rSr\R
                  R                  5       \R
                  R                  S\" \	" \
" S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SS9\R
                  R                  S/ / 4SS// 4/ S /4/5      S! 5       5       rS" rS# rS$rg%)&TestOAConvolvei  zshape_a_0, shape_b_0rT   r;  r  rZ   c                    [         R                  R                  U5      n[         R                  R                  U5      nUR                  U5      nUR                  U5      n[	        XE5      n[        XE5      n[        Xv5        g r5  )r  r  rE  r]   r   r   r=   )r_   	shape_a_0	shape_b_0r`   ra   rb   r   r   s           rd   test_real_manylens!TestOAConvolve.test_real_manylens  s^     IINN9%IINN9%JJqMJJqMq$!#0rg   )r  /   rR   rP   rT   
is_complexTFrm   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UR                  U5      nUR                  U5      n[	        XxUS9n	UR                  [        R                  S[        5        [        XxUS9n
[        X5        g Nr   rl   r   r  r  rE  r]   r   setattrr   _signaltoolsrl  r   r=   )r_   r  r  r  rm   monkeypatchr`   ra   rb   r   r   s              rd   test_1d_noaxesTestOAConvolve.test_1d_noaxes  s     IINN9%IINN9%Bryy~~i000ABryy~~i000AJJqMJJqMq$/F//+	-D)!#0rg   r  r   )r  r  rR   rP   shape_a_extrarO   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U	R                  U5      nU	R                  U5      n[	        XXqS9nUR                  [        R                  S[        5        [        XXqS9n[        X5        g )NrU   r   rm   r  r   r  )r_   r  r  r  r  r  r  rm   r  r`   ax_aax_bra   rb   r   r   s                   rd   test_1d_axesTestOAConvolve.test_1d_axes  s     q q T
T
IINND!IINND!Bryy~~t,,,ABryy~~t,,,AJJqMJJqMq$:F//+	-D4!#0rg   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
UR                  U	5      n	UR                  U
5      n
[	        XUS9nUR                  [        R                  S[        5        [        XUS9n[        X5        g r  r  )r_   r  r  	shape_a_1	shape_b_1rm   r  r  r`   ra   rb   r   r   s                rd   test_2d_noaxesTestOAConvolve.test_2d_noaxes  s     IINN90IINN90Bryy~~i;;;ABryy~~i;;;AJJqMJJqMq$/F//+	-D)!#0rg   rU   c                 F   U/S-  nU/S-  nX,US   '   X=US   '   XLU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UR                  U5      nUR                  U5      n[	        U5      n[        XXaS9nU
R                  [        R                  S[        5        [        XXaS9n[        UU5        g )NrO   r   rT   r   r  r   )r  r  rE  r]   r  r   r  r   r  rl  r   r=   )r_   r  r  r  r  r  rm   r  r  r  r  r`   r  r  ra   rb   r   r   s                     rd   test_2d_axesTestOAConvolve.test_2d_axes4  s    q q !T!W!T!W!T!W!T!WIINND!IINND!Bryy~~t,,,ABryy~~t,,,AJJqMJJqMT{q$:F//+	-D4!#x0rg   r   z*ValueError: Target length must be positiverL   r3  rQ   rR   r   c                     [        [        UR                  U5      UR                  U5      5      UR                  / 5      SS9  g )NFr$  )r8   r   r]   r6  s       rd   r7  TestOAConvolve.test_emptyX  s3     	rzz!}bjjm4JJrN	
rg   c                 z    UR                  S5      nUR                  S5      n[        X#5      n[        XBU-  5        g r   r]   r   r8   r:  s        rd   r   TestOAConvolve.test_zero_ranka  s4    JJtJJtU#rg   c                 ~    UR                  S/5      nUR                  S/5      n[        X#5      n[        XBU-  5        g r   r  r:  s        rd   r   "TestOAConvolve.test_single_elementg  s8    JJvJJvU#rg   r:  N)r<  r=  r>  r?  r5  rB  r  r  r  r  r   r  rs  r  r  r~  r  r  rA  r7  r   r   rD  r:  rg   rd   r  r    s    [[[[3-d5C3C.D.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< -12 [[ :-n=? [[\D%=91 :?1( [[Vq!fq!fq!f%=>[[ :-n=? [[_q!f5[[_q!f5[[\D%=91 : 6 6? ?1: w'ST[[Ub"XA|b1#Y$GH
 I U
$$rg   r  z!assertions may differ on backendsr   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)TestAllFreqConvolvesin  convapproachc                     [         R                  " SS5      R                  S5      n[         R                  " SS5      R                  S5      n[        [        SS9   U" X4S	S
9  S S S 5        g ! , (       d  f       g = f)NrT   r   r   r   r   r   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr2  r   rl   )r  r   r   r   r   r_   r  r`   ra   rb   s        rd   r   (TestAllFreqConvolves.test_invalid_shapesq  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" X4SS/S9  S S S 5        g ! , (       d  f       g = f)N)rQ   rR   rU   rT   )rQ   rR   rO   rT   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r2  r   rT   r  )r  r  r   r   r  s        rd   test_invalid_shapes_axes-TestAllFreqConvolves.test_invalid_shapes_axes{  sO     HH\"HH\":"67 QF+	7 7 7s   
A
A r3  rT   rU   rO   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 dimensionalityr2  r   r   )r_   ra   rb   r  r`   s        rd   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'r2  rT   rU   chipsrl   z#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersrO   rP   )r  r  r  r  z$axes exceeds dimensionality of inputr  zall axes must be uniquer   r  )r_   r  r`   s      rd   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[	        X45      n[        U[        X4SS95        UR                  U:X  d   eg )N)r   r   rP   rP   y        ?r   r   )r  r  r  iscomplexobjr   r7   r   r   )r_   r   r`   ry   rz   ress         rd   test_longdtype_input)TestAllFreqConvolves.test_longdtype_input  s     IIX&--e4IIV$++E2??57##HAHA!Xa8<=yyE!!!rg   r:  N)r<  r=  r>  r?  r5  rB  r  r   r   r   r  r-  r  filterwarningsr  
longdoubleclongdoubler  rD  r:  rg   rd   r  r  n  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 >	"rg   r  c                   D   \ 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/ SQ5      S 5       r\" SSS9\R                  R                  S\R                  \R                  \R                   \R"                  \R$                  SS /5      S! 5       5       r\" SS"S9S# 5       r\" SS$S9S% 5       r\" S&S'S(9\R                  R                  S/ S)Q5      S* 5       5       rS+rg,)-TestMedFilti  )
r  r  r  r  r  r     r   r   rb  )
r  r  r  r  r  r   H   M   rx  r~  )
r  r  r  r  r  rb  r     ra  r  )
r  r  r  r  r  r         _   #   )
r  r  r  r  r  rb  rn   rN  r  r~  )
r   a   rX   rx  r   r  r   r   G   r   )
ra  r!  r}  r  rx  rY   r  rx  r^  r  )
rO   !   r!  rc  rT   r   rw  7   r[   S   )
r   rP  rb  r   r#  r  r^  rI   r   r_  )
rY   r   X   r   '   rP   r  ra  r   r   )
r   r  r  r  r   r  r  r  r   r   )
r   r  r  r  r  r   r  r  r  r   )
r  r  r  r  r  r  rn   rn   rb  r  )
r  r  r  r  r  r  r   r  ra  r   )
r  r  r  r  r  r  rb  r  ra  r  )
r  r  r  r  r  r  rb  rI   r  r_  )
rY   r  r  r  r  r  rb  r   r  r_  )
r   rb  r  r  r  rb  rb  rI   r   r  )
r   rY   r  r  rY   rY   rI   rI   rI   r   )
r   r   rP  r   rP   rP   r  r  r^  r   r   rO   c                 X   UR                  U R                  5      nUR                  U R                  5      nUR                  U R                  5      n[        R
                  " X$5      n[        R                  " UR                  X!R                  S9U5      n[        XS5        [        XVSS9  g )Nr   Fr$  )	r]   INOUTKERNEL_SIZEr   medfilt	medfilt2dr   r8   )r_   r`   in_out_kernel_sizer   rI  s          rd   re   TestMedFilt.test_basic  s{    jj!zz$((#jj!1!12NN3,RZZ::Z>L %0rg   r   
r   r   r   r   r   r   r   r   r   r   c                 >   [        U5      (       a  US;   a  [        R                  " S5        [        X!5      nUR	                  U R
                  US9n[        R                  " U5      R                  U:X  d   e[        R                  " U5      R                  U:X  d   eg )Nr   r   r   z%torch does not support unisigned intsr   )
r:   r5  skipgetattrr]   r  r   r  r   r  r_   r   r`   in_typeds       rd   
test_typesTestMedFilt.test_types  s~    
 B<<E%CCKK?@"::dggU:3~~h'--666)//5888rg   Tzassertions may differr   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 supportedr2  )r  finfor  r   r5  r  arrayr  r	   r   r   r  r  r  s       rd   test_invalid_dtypesTestMedFilt.test_invalid_dtypes  s     ,,HHR]]+11U:KK4UG<=88DGG51]]:_=NN8$ > ]]:_=X& >= >= >=s   
C"C3"
C03
Dobject arraysc                     [        [        [        45         [        R                  " S 5        S S S 5        g ! , (       d  f       g = fr5  )r   r   	TypeErrorr   r  r,  s     rd   	test_noneTestMedFilt.test_none  s)     J	23NN4  433s	   6
Az#strides are only writeable in NumPyc                     UR                  SUR                  S9nUSS n[        R                  R                  R                  USS9n[        [        R                  " US5      UR                  S/5      5        g )	NrV   r   rQ   rR   )r   )r  rT         @)
r   r   r  r  r  r  r7   r   r  r]   )r_   r`   dummyra   s       rd   test_odd_stridesTestMedFilt.test_odd_strides  sd    
 		"BJJ	/!AJFF  ++Au+=q!,rzz2$/?@rg   rJ   z6chunk assignment does not work on jax immutable arraysrL   )r   r   r   c                   ^ ^^^^^ [        X!5      nUR                  T R                  US9mU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UR                  U5      n[        SS9 n1 SknU Vs1 s H  oR                  XH5      iM     n	n[        U	5       H  n
U
R                  5       u  pnXX4'   M     S S S 5        [        XS5        g s  snf ! , (       d  f       N= f)	Nr   r   rU   rT   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offNr_   s              rd   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..rg   rP   )max_workers>   r   r   r   rT   rT   rT   rT   r   )r  r]   r  r  r  r  
zeros_liker   submitr   r  r8   )r_   r   r`   r   r  outputpoolchunksr  futuresfuturedataMsliceNslicer  r	  r  r
  r  s   `             @@@@@rd   test_medfilt2d_parallel#TestMedFilt.test_medfilt2d_parallel  s<    "::dggU:3::dhhe:4 ~~///
 ^^A!#^^A!#"a'!+"a'!+	/ 	/8 x(A.$5F>DEfU{{50fGE 'w/'-}}$f)-v~& 0 / 	) F /.s   	D=D88,D=8D==
Er:  N)r<  r=  r>  r?  r  r  r  re   r5  rB  r  r  r@  r  bool_r   r   r  r   r  r  r  r  rD  r:  rg   rd   r  r    s_    3
1
2
2
1
2
2
0
1
0	
2B 213333321-	/C Q%K	1 [[W '= >9>9 d+BC[[Wrxxr}}')~~rzz'0*'> ?'? D' d?;! <!
 d+PQA RA G [[W&EF6* G	
6*rg   r  c                   .    \ rS rSr\" SSS9S 5       rSrg)
TestWieneriS  rC   zXXX: can_cast in cupy <= 13.2rL   c                    UR                  / SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / 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)rQ   rR   rP   rO   )rO   rQ   rR   rU   )rU   rO   rQ   rR   )rT   rR   rN  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@_)@rR   decimalrO   )mysize)r]   r   r=   r   wiener)r_   r`   rV  rU  s       rd   re   TestWiener.test_basicV  s    JJ$$$& .0ZZ  9 JJNQQRT U 	"&--"2AqA!&--!"<aKrg   r:  N)r<  r=  r>  r?  r@  re   rD  r:  rg   rd   r!  r!  S  s!     f%DE
L F
Lrg   r!  )meanmedianminimummaximumlinezXXX something in daskc                   X   \ rS rSr\" SSS9\" SSS9S 5       5       r\R                  R                  S	S
5      \R                  R                  SS5      \R                  R                  SS5      \" SSS9S 5       5       5       5       r	\" SSS9S 5       r
\" SSS9\R                  R                  SS5      \R                  R                  SS5      \R                  R                  SS5      S 5       5       5       5       r\" SSS9\R                  R                  S\5      S 5       5       r\" SSS9\R                  R                  S\5      S 5       5       r\" SSS9\R                  R                  S\5      \R                  R                  SSS/5      S 5       5       5       r\" SSS9\" SSS9\R                  R                  SS/\" \" S /S!S/\5      5      -   5      S" 5       5       5       r\R                  R                  S#S$5      \R                  R                  S%S&5      S' 5       5       r\R                  R                  S#S(5      \R                  R                  S%S&5      S) 5       5       r\R                  R                  S*S+5      \R                  R                  S,S+5      S- 5       5       r\" SSS9\" SS./S/S09\R                  R                  S1/ S2Q5      S3 5       5       5       r\" SS./S4S09S5 5       r\" SSS9\R                  R                  SS6S/5      S7 5       5       rS8rg9):TestResampleih  rJ   zimmutable arraysrL   Tz!resample_poly/upfirdn is CPU onlyrE   rM   c           
      2   UR                  SUR                  S9nSn[        R                  " SS5      n[	        [
        [        R                  X#US9  [	        [
        [        R                  X#SS9  [	        [
        [        R                  US	S
5        [	        [
        [        R                  US
S5        [	        [
        [        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                  USS
[        R                  " S5      S9  UR                  UR                  SUR                  S9S5      n[        R                  " XSSUS9  UR                  S:X  d   e[        R                  " USS
5      n[        R                  " USS
SS9n[        R                  " USS
SSS9n[        X5        [        Xv5        g )N   r      )kaiser       @   windowINVALIDdomainyorT   r   g?rU   r  padtyper(  rV   )r=  cval)rU   rT   r   r  r7  )r5  constant)r   r   r   
get_windowr   r   resampleresample_polyr  eyer  r  r8   )	r_   r`   signumwinsig2x_refx0r  s	            rd   re   TestResample.test_basick  s    ii2::i.5j&//3CHj&//3IN 	j&"6"6T1Ej&"6"6QBj&"6"6S!Dj&"6"6QDj&"6"6Q2Nj&"6"6Q$2	/j&"6"6Q"&&QR)T wwryyBJJy7@37yyF""" $$S!Q/!!#q!Z@!!#q!ZaH""rg   r7  )Nhammingr  )r  r  rF  )r;  r  rV   rP  c           	         [        U5      nXTR                  :X  a  UR                  OUR                  nUR	                  SSUSS9nUR                  US-  * S-  5      n[        R                  " UR                  X5      X#S9n	[        [        R                  " XUS9UR                  U	5      5        UR                  UR                  US-  * S-  5      UR                  US-  * S-  5      /5      nUR                  X5      n
[        R                  " XSUS	9nXTR                  :X  a  S
OSn[        [        R                  " XSUS	9UR                  U5      US9  g )Nr   rV   F)endpointrU         @r6  rT   r?  &.>v!>r   )rA   r   r   r   linspacecosr   rB  r  r7   realstacksinr   )r_   r  rF  r7  r`   dt_rdt_cry   rz   desired	y_complex	resampledr   s                rd   	test_rfftTestResample.test_rfft  s      ##zz1r||r}}KK2q5K1FFAqD59//"))A"4cIv>(	* HHbffadU3Y'Ac	):;<IIa&	OOI6J	zz)ttOOA6:GGI	rg   XXX: immutable arraysc           	          UR                  UR                  S5      UR                  5      n[        R                  " U5      nSn[        [        R                  " X4SS9[        R                  " X$SS9SS9  g )Nr2  freqr9  timerP  r   )r  r   r   sp_fftr   r7   r   rB  )r_   r`   tsigfsigrF  s        rd   test_input_domainTestResample.test_input_domain  sZ     yy37zz$OODf5OODf5	rg   nx)rT   rU   rO   rQ   r   nyr   )r   r   c                     [        XC5      nUR                  S/U-  US9n[        R                  " XR5      n[	        XdR                  S/U-  UR
                  S95        g )NrT   r   )r  r]   r   rB  r7   r   )r_   rg  rh  r   r`   ry   rz   s          rd   test_dcTestResample.test_dc  sS    
 "JJsRxuJ-OOA"::qcBhagg:>?rg   r=  c                    UR                  S5      nUR                  [        R                  R	                  S5      R                  S5      5      nUR                  USS9n[        R                  " USSXAS9  [        XE5        g )	NrO   r   rU   TcopyrQ   rT   r7  r=  )	r  r]   r  r  r  r	  r   rC  r8   )r_   r=  r`   impulser7  window_origs         rd   test_mutable_window TestResample.test_mutable_window  sg     ((1+BII11!4::1=>jjdj3Wa6K,rg   c                     UR                  SUR                  S9nUR                  / SQUR                  S9n[        R                  " USSXAS9nUR
                  UR                  :X  d   eg )NrV   r   rT   rT   rT   rT   rU   ro  )r   r   r]   r   rC  r   )r_   r=  r`   ry   rU  rz   s         rd   test_output_float32 TestResample.test_output_float32  s\     IIb

I+JJy

J3  AqDww"**$$$rg   r   r   c                     [        X25      nUR                  SUS9n[        R                  " USSUS9nUR                  UR                  :X  d   eg )NrV   r   rT   rU   r<  )r  r   r   rC  r   )r_   r=  r   r`   ry   rz   s         rd   test_output_match_dtype$TestResample.test_output_match_dtype  sL     "IIbI&  Aq':ww!''!!!rg   zmethod, ext, padtype)r   FN	polyphaseFc           	         Sn/ SQnUR                  XTR                  S9[        U5      -  nUR                  S5      S S 2UR                  4   nUR                  SUR                  -  U-  U-  5      [        XTS9-  n	U GH  n
UR                  XR                  S9[        U
5      -  nUR                  SUR                  -  U-  U-  5      [        XS9-  nUS:X  a  [        R                  " XSS	9nOuU(       aP  X:w  aK  [        X5      nX-  nX^-  n[        UU5      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[        UR                  S   5       H  nUUS S 24   nUUS S 24   n[        UUS4   5      nUSU
-  :  a1  UR!                  U5      nUS;   a  [#        UUSS9  MR  [#        UUSS9  M_  UR                  UR                  :X  d   e[$        R&                  " UU5      S   nUS:  a  M   UXZ45       e   GM     [$        R(                  R+                  S5      n[        U5      [$        R,                  " UR/                  U5      5      -  n	UR                  U	5      n	U H  n
UR                  XR                  S9[        U
5      -  n[$        R0                  " XU	5      nUS:X  a  [        R                  " X5      nO[        R                  " XUUS9nUR                  UR                  :X  d   eUR                  [$        R&                  " U[$        R                  " U5      5      S   5      nUS:  a  M   U5       e   US:X  a  UR                  SS/5      n[        R                  " US5      nUR                  / SQ5      n[#        UUSS9  UR                  / S Q5      n[        R                  " US5      n UR                  S
S!/5      n![#        U U!SS9  g g )"Nr;  )	r   r  r  c   r;  r     r[     r   )r        $@g      D@rU   r`   r   r   r  r  rV   rT   )r3  r  r6  ro  r=  r  r         ?)r*  r+  333333?r   r  r  gGz?r<  r   r   rP   )r         ?        r   r  -q=)r  r          r  r  )r   r   r  r]   newaxisrV  pir1   r   rB  r   maxra  rC  r   r  r  r7   r  corrcoefr  r  cumsumr	  interp)"r_   r   extr=  r`   raterates_tor  freqsry   rate_tot_toy_tos	y_resampsrV  updownmax_ratef_chalf_lenr7  polyargsr   y_toy_resampr`  corrr  r  y1_testy1_truer  y2_testy2_trues"                                     rd   test_resample_methods"TestResample.test_resample_methods  s    < IId**I-d;

>*1bjj=9FF1ruu9u$q()D,==G99WJJ97%.HDFF1ruu9u,t34tG7KKE"OOAR@	7?G*A B9D"2t}Hx-C!H}H#]]1x<!+;S2ACF*0WEH )73H"00T = =3;=	 5;;q>*QT{$QT?U1a4[)3=(==.D"88'$TB'$TB::777;;tX6t<D$;=t(==; +/  P ii##A&J399T?33JJqMG99WJJ97%.HD99Ta(D!??16!//D8?A::///::bkk$

80DEdKLD$;$$;   U?VV,-Boob!,Gjj!CDGGW59./Boob!,Gjj"b*GGW59 rg   n_in)r   rN  n_out)rO   rP   c                     [         R                  " U5      nS n[        R                  " X25      n[        R                  " X2US9n[	        SU-  USS9  g)zTest callable window function. c                 4    S[         R                  " U 5      -  $ )zScale input by 1/2r  )r  	ones_like)r  s    rd   rG  0TestResample.test_resample_win_func.<locals>.winC  s    e,,,rg   r6  rU   r  r   N)r  r  r   rB  r7   )r_   r  r  x_inrG  y0y1s          rd   test_resample_win_func#TestResample.test_resample_win_func=  sF     wwt}	- __T)__T5"bu-rg   )rR   r[   c                    Su  p4[         R                  " U5      n[        R                  " XR5      n[        R                  " XRX3U-   /S9u  pxS[         R                  " [        U5      5      U-  U-  U-  -   n	[        Xv5        [        XSS9  g)zSVerify behavior for parameter `t`.

Note that only `t[0]` and `t[1]` are utilized.
)rV   rU   )r  rV   r  r   N)r  r  r   rB  r   lenr8   r7   )
r_   r  r  t0dtr  r  r  r  t_refs
             rd   test__resample_param_t#TestResample.test__resample_param_tL  sv     wwt}__T)U<RYYs2w'",t3e;;.rg   n1)rU   rO   r   r   n0c                    ^ [        X5      S-  mS X4 5       nU4S jU 5       u  pE[        R                  " XB5      n[        R                  " US-   U5      n[        XeSS9  [        UR                  USS9  g)zDTest behavior at Nyquist frequency to ensure issue #14569 is fixed. rU   c              3   T   #    U  H  n[         R                  " U5      U-  v   M      g 7fr5  )r  r   ).0n_s     rd   	<genexpr>5TestResample.test_resample_nyquist.<locals>.<genexpr>b  s     48Rbiimb 8s   &(c              3   ~   >#    U  H2  n[         R                  " S [         R                  -  T-  U-  5      v   M4     g7f)rU   N)r  rS  r  )r  t_f_nys     rd   r  r  c  s/     ="B"&&RUUT)B.//"s   :=r   r  r   N)minr   rB  r7   rT  )	r_   r  r  ttrJ  r  y1_ry1_cr  s	           @rd   test_resample_nyquist"TestResample.test_resample_nyquist]  sg     2{a4B84="=r&rBw+u-		2E2rg   rC   zfiltfilt is CPU-only)rE   rF   rM   down_factor)rU   rP  O   c                    [         R                  R                  S5      n[        [         R                  [         R
                  [        [        4nSnU H  nUR                  U5      R                  U5      nU[         R
                  [         R                  4;   a  USUR                  U5      -  -  nUR                  U5      nSUS'   SUS'   [        R                  " SSU-  SS	9nUR                  U5      n[        USUS
S9S S U2   n	[        XR!                  U5      5      n
[        R"                  " USXS	9n[%        XSSS9  M     g )Nr   rV  r   r   r   r   r  rL  r6  r@  r<  rT   gHz>r   r  )r  r  r  intr   r   r  complexr	  r  r   r]   r   ra  r   r   fliprC  r7   )r_   r  r`   random_state	try_typesr   r   ry   rU  yfhcrz   s               rd   test_poly_vs_filtfilt"TestResample.test_poly_vs_filtfiltk  s    yy,,R0"**bllE7C	E""4(//6Ar}}55R,,,T222

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

1A!S!Z8;GB
 !WWQZ(B$$Q;BAB48) rg   zcorrelate1d is CPU-onlyc           
         S H  n[        SSU5       H  nS H  n[        R                  R                  U45      n[        R                  R                  U45      n[        UR                  XV45      u  pV[        U5      R                  n[        XW" U5      SS9n[        R                  " USX&S9n	[        US S U2   U	5        M     M     M     g )N)rU   rP   rT   r`  )rY   r  r@  rl   )r  r  r7  )r   r  r  mapr]   rB   r  r   r   rC  r7   )
r_   r`   r  rg  nweightsry   weightsr  y_gy_ss
             rd   test_correlate1dTestResample.test_correlate1d  s     DAr4( (H		(("/A ii..{;G!$RZZ!!>JA*1-22D%agZHC ..ad<C#C$K5 !) ) rg   r   c                     [        X!5      nUR                  / SQUS9n[        R                  " USSSS9n[        R
                  " U5      S:  d   eg )N)r   rT   rU   rO   rU   rT   r   r   rU   rT   smooth)r  r  r=  r   )r  r]   r   rC  r  count_nonzero)r_   r   r`   r  actuals        rd   test_gh_15620TestResample.test_gh_15620  sW    
 "zz/uz=%%d)*+,.68 '!+++rg   r:  N)r<  r=  r>  r?  r@  re   r5  rB  r  r\  re  rj  padtype_optionsrr  rv  ry  r  r   r  r  r  r  r  r  r  rD  r:  rg   rd   r.  r.  h  s    k*<=A# >#B [[X'89[[S(+[[U$67k*<= > 8 , :. k*AB C k*AB[[T?3[[T?3[[W&?@@ A 4 4 C@ t,OP[[Y8- 9 Q- A [[Y8% 9% A [[Y8[[Wy)&<=" > 9
" k*ABA [[	
t}o
	
L: CL:\ [[VV,[[Wf-. . -. [[VW-[[Wf-/ . ./ [[T<0[[T<0
3 1 1
3 k*AB6(3I [[]K89 9 C
98 6(3L66 A [[Ww	&:;, <,rg   r.  r)  c                        \ rS rSrS rS rSrg)TestCSpline1DEvali  c                 P   [         R                  " / SQ5      n[         R                  " [        U5      5      nUS   US   -
  n[        R
                  " U5      n[         R                  " [        U5      S-  5      S-  n[        R                  " XVXCS   S9n[        US S S2   USS9  g )	N)	rT   rU   rO   rP   rO   rU   rT   rU   r  rT   r   r  )dxrJ  rV   rQ   r#  )r  r  r   r  r   	cspline1dcspline1d_evalr=   )r_   r`   rz   ry   r  cjr  y2s           rd   re   TestCSpline1DEval.test_basic  s    HH23IIc!fqTAaD[a YYs1v}%,""2bqT: 	""TrT(Aq9rg   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                  " Xg5      nUR                  UR                  :X  d   eg )NrU   r   r  r  rx   r  )r  r   r  r  r   expr  r   r  r  r  r   )	r_   r`   ry   rz   Tr   cyxnewynews	            rd   r|   TestCSpline1DEval.test_complex  s    IIaLHHQWWBLL1!GFF4"%%<!#a'( a  xx$$R.zzQWW$$$rg   r:  N)r<  r=  r>  r?  re   r|   rD  r:  rg   rd   r  r    s    
:%rg   r  c                   T    \ rS rSrS rS r\" SSS9\" SSS9S	 5       5       rS
 rSr	g)TestOrderFilti  c                     [         R                  " UR                  / SQ5      UR                  / SQ5      S5      nUR                  / SQ5      n[        X#5        g )NrS   rT   r   rT   rT   )rU   rO   rU   )r   order_filterr]   r8   )r_   r`   r  expects       rd   re   TestOrderFilt.test_basic  s?    $$RZZ	%:BJJy<QSTUI&'rg   c                 .   UR                  UR                  S[        U5      S9S5      nUR                  S[        U5      S9nUR	                  / SQ/ SQ/ SQ/ SQ/ SQ/[        U5      S9n[        [        R                  " X#S	5      U5        UR	                  / S
Q/ SQ/ SQ/ SQ/ SQ/5      n[        [        R                  " X#S5      U5        UR	                  / SQ/ SQ/ SQ/ SQ/ SQ/[        U5      S9n[        [        R                  " X#S5      U5        g )N   r   rQ   rQ   rO   )r  r  r  r  r  )r  r  r  r  r  )r  r  rO        @r  )r  r        &@r  r  r   )rO  r  r4  r  r  )r  r  g      *@      ,@r  )g      0@g      1@g      2@      3@r  )      5@      6@      7@r  r   )r  r  r  r  r  rU   r   rT   rU   rO   r   )rQ   rR   r   r   rO   )rV   rP  r[      r   )r  r   r   r  r  r   r  r   r   r  rT   )r   r   rA   rD  r]   r7   r   r  r_   r`   ry   r:  r   s        rd   test_doc_exampleTestOrderFilt.test_doc_example  s   JJryy+;B+?y@&I!1"!56 ::!!!$!	#
 #2&  
 	++Aq98D ::!%&&&	(
 	++Aq98D :: ! 	"
 #2&  
 	++Aq98Drg   r  zrepeat requires an axisrL   r   zarray-api-compat#292c                 (   UR                  UR                  S5      S5      nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        [        R
                  " US5      U5        [        [        R                  " X!R                  S	5      S
5      U5        g )Nr  r  r  )rT   rR   r   r   rP   )rR   rP  r[   r  rN  )rP  r   r   r     )r   r   r   r  r   rO   r  rP   )r   r   r]   r7   r   r  r  r  )r_   r`   ry   r   s       rd   test_medfilt_order_filter'TestOrderFilt.test_medfilt_order_filter  sz     JJryy}f- ::!	!
 	q!,h7776?A6	
rg   c                 ~   UR                  UR                  S5      S5      nUR                  / SQ/ SQ/ SQ/5      nUR                  / SQ/ SQ/ SQ/ S	Q/ S
Q/5      n[        [        R
                  " X#S5      U5        UR                  / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        [        R
                  " X#S5      U5        g )Nr  r  )rT   rT   r   )r   rT   r   r   r   r   r   r   r   r   r   )r   r   rT   rU   rO   )r   rQ   rR   r   r   )r   rV   rP  r[   r  r  r   )r   rT   rU   rO   rP   )rQ   rR   r   r   rN  )rV   rP  r[   r  r  )r  r   r   r  r  rT   )r   r   r]   r7   r   r  r  s        rd   test_order_filter_asymmetric*TestOrderFilt.test_order_filter_asymmetric  s    JJryy}f-
 ::  	"
 	++Aq98D::!!	#
 	++Aq98Drg   r:  N)
r<  r=  r>  r?  re   r  rA  r  r  rD  r:  rg   rd   r  r    sA    (
$EL |,EFw'=>
 ? G
&Erg   r  c                      \ rS rSrS rS rS rS rS r\	" SSS	9S
 5       r
\	" SSS	9S 5       rS rS r\	" SSS	9S 5       r\	" SSS	9S 5       r\	" SSS9S 5       r\	" SSS9S 5       r\	" SSS9S 5       r\	" SSS9S 5       r\	" SSS	9S 5       r\	" SSS	9S 5       r\	" SSS	9S 5       rS r\	" SSS	9S 5       rS r\	" SSS	9\R6                  R9                  S S!S!// S"QS#S#// S$Q4\S%9S& 5       5       rS' r\	" S(S)S	9\	" SS*S	9S+ 5       5       r \	" SSS	9S, 5       r!\	" SSS	9S- 5       r"S. r#S/ r$\	" SS09\R6                  R9                  S S1S1/\%RL                  " S15      /5      \R6                  R9                  S2S1S1/\%RL                  " S15      /5      S3 5       5       5       r'\	" SS09\R6                  RP                  S4 5       5       r)S5r*g6)7_TestLinearFilteri)  c                 *   U R                   [        :X  a^  [        R                  R                  U l        [        R                  R                  U l        [        R                  R                  U l        g [        U l        [        U l        [        U l        g r5  )
r   r4  r  rk  r
   assert_closeassert_equalr=   r7   r8   )r_   s    rd   setup_method_TestLinearFilter.setup_method,  s\    :: "

 : :D "

 7 7D-/ZZ-Q-QD* /D /D-FD*rg   c                     [        U[        5      (       a  UO[        R                  " U5      nUR	                  SUS-
  U5      n[        U[        5      (       d  UR                  XA5      nU R                  XB5      $ )Nr   rT   )r  r  mathprodrR  r   convert_dtype)r_   r  r`   	prodshapery   s        rd   generate_TestLinearFilter.generate6  s`    's33E59I	KK9q=)4%%%

1$A!!!((rg   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  pVU R                  US   5      US'   M     U$ [        U R                   [        5      (       a  [        X R                   5      OU R                   nUR                  XS9$ )	NOrefs_okzerosize_okreadonly	writeonlyr:  .r   )
r   r  r]   emptyr  nditertyper  strr  )r_   arrr`   r   iterry   rz   r   s           rd   r  _TestLinearFilter.convert_dtype=  s    ::#&**S/C((399djj1C99cZ)M)B${m46D1R5)# J #4::s33 R,**  ::c://rg   c                     U R                  SU5      nU R                  SS/U5      nU R                  SS/U5      nU R                  / SQU5      nU R                  [        X4U5      U5        g )NrR   rT   r   r        ࿩r   rU   rP   rR   r   r  r  r  r=   r   r_   r`   ry   rb   ra   y_rs         rd   test_rank_1_IIR!_TestLinearFilter.test_rank_1_IIRL  sh    MM$#2w+T{B/  !5r:&&wqQ'7=rg   c                     U R                  SU5      nU R                  SS/U5      nU R                  S/U5      nU R                  / SQU5      nU R                  [        X4U5      U5        g )Nr/  rT   r   rT   rO   rQ   r   r  r2  r3  s         rd   test_rank_1_FIR!_TestLinearFilter.test_rank_1_FIRS  sf    MM$#1vr*sB'  !4b9&&wqQ'7=rg   rC   z*XXX https://github.com/cupy/cupy/pull/8677rL   c                 L   U R                  SU5      nU R                  / SQU5      nU R                  SS/U5      nU R                  SS/U5      nU R                  / SQU5      nU R                  SS	/U5      n[        X4X%S
9u  pU R                  X5        U R                  X5        g )Nr/  rT   r   r   r  r0  rT   rU   )rT   rQ   rN  r  r   r  r  zir  r  r   r=   
r_   r`   ry   rb   ra   r?  r4  zf_rrz   zfs
             rd   test_rank_1_IIR_init_cond+_TestLinearFilter.test_rank_1_IIR_init_condZ  s    MM$#z2.T{B/A+  !6;!!2s)R0a'&&q.&&r0rg   c                 J   U R                  SU5      nU R                  / SQU5      nU R                  S/U5      nU R                  SS/U5      nU R                  / SQU5      nU R                  SS/U5      n[        X4X%S9u  pU R                  X5        U R                  X5        g )Nr/  ru  rT   )rT   rU   rO   rR   rN  r  rN  rQ   r>  r@  rA  s
             rd   test_rank_1_FIR_init_cond+_TestLinearFilter.test_rank_1_FIR_init_condf  s    MM$#y"-sB'A+  !5r:!!1a&"-a'&&q.&&r0rg   c                     U R                  SU5      nU R                  SS/U5      nU R                  SS/U5      nU R                  / SQ/ SQ/ SQ/ SQ/U5      n[        X4USS9nU R                  XV5        g )	NrP   rO   rT   r   r  r   rU   rP   rR   rP   rU   r   r  r@  )r_   r`   ry   rb   ra   y_r2_a0rz   s          rd   test_rank_2_IIR_axis_0(_TestLinearFilter.test_rank_2_IIR_axis_0r  s{    MM&"%2w+Sz2.$$iI&/&1246A!!$&&w2rg   c                     U R                  SU5      nU R                  SS/U5      nU R                  SS/U5      nU R                  / SQ/ SQ/ SQ/ SQ/U5      n[        X4USS	9nU R                  XV5        g )
NrJ  rT   r   r  r   rU   r   rR   rL  rR   r[   r=  r[   r  ir  r  r@  )r_   r`   ry   rb   ra   y_r2_a1rz   s          rd   test_rank_2_IIR_axis_1(_TestLinearFilter.test_rank_2_IIR_axis_1{  s{    MM&"%2w+Sz2.$$i])&+,.0A!!$&&w2rg   c                    U R                  SU5      nU R                  SS/U5      nU R                  SS/U5      nU R                  [        R                  " S5      U5      nU R                  / SQ/ SQ/ SQ/ S	Q/U5      nU R                  / S
QU5      S S 2[        R                  4   n[        X4USUS9u  pU R                  Xh5        U R                  X5        g )NrJ  rT   r   r  )rP   rT   ru  )r   r   )r  r  )r  r  )rY  r[  iir  r?  )r  r  r  r  r  r   r=   )
r_   r`   ry   rb   ra   r?  	y_r2_a0_1rB  rz   rC  s
             rd    test_rank_2_IIR_axis_0_init_cond2_TestLinearFilter.test_rank_2_IIR_axis_0_init_cond  s    MM&"%2w+Sz2.3&&	:}+(-.02	!!"5r:1bjj=IaaB/&&y4&&r0rg   c                    U R                  SU5      nU R                  SS/U5      nU R                  SS/U5      nU R                  [        R                  " S5      U5      nU R                  / SQ/ SQ/ SQ/ SQ/U5      nU R                  / SQ/U5      n[	        X4US	US
9u  pU R                  Xh5        U R                  X5        g )NrJ  rT   r   r  rT   rO   )rT   rO   rQ   )rQ   rO   rT   )rb  rb  r   r\  )r  r  r  r  r   r=   )
r_   r`   ry   rb   ra   r?  	y_r2_a0_0rB  rz   rC  s
             rd    test_rank_2_IIR_axis_1_init_cond2_TestLinearFilter.test_rank_2_IIR_axis_1_init_cond  s    MM&"%2w+Sz2.4&&	9(19(>?AC	!!?"3R8aaB/&&y4&&r0rg   Tznp.apply_along_axis is np onlyr   c                   ^	^
 U R                  SU5      nU R                  SS/U5      nU R                  SS/U5      n[        R                  " U5      [        R                  " U5      [        R                  " U5      sm	m
n[	        UR
                  5       HK  n[        X4X&5      n[        R                  " U	U
4S jXe5      nU R                  XqR                  U5      5        MM     g )NrP   rO   rU   rT   r   r  c                    > [        TTU 5      $ r5  r   wr  r  s    rd   <lambda>3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>      dA0Frg   	r  r  r  r]   r   ndimr   apply_along_axisr=   r_   r`   ry   rb   ra   x_npr  rz   r4  r  r  s            @@rd   test_rank_3_IIR!_TestLinearFilter.test_rank_3_IIR  s    MM)R(2w+Sz2.::a="**Q-AdD!&&MDa&A%%&FSC**1jjo> "rg   c                   ^^^ U R                  SU5      nU R                  SS/U5      mU R                  SS/U5      m[        UR                  5       GH  n[	        UR
                  5      nSXC'   U R                  UR                  U5      U5      nU R                  S/U5      m[        TTX#U5      u  pgUUU4S jnUUU4S jn	[        R                  " X[        R                  " U5      5      n
[        R                  " X[        R                  " U5      5      nU R                  XaR                  U
5      5        U R                  XqR                  U5      5        GM
     g )Nrg  rT   r   r  c           	      J   > [         R                  " [        TTU TS9S   5      $ Nr>  r   r  r]   r   rk  ra   rb   zi1s    rd   lf08_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf0  "    zz'!Qc":1"=>>rg   c           	      J   > [         R                  " [        TTU TS9S   5      $ Nr>  rT   ry  rz  s    rd   lf18_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf1  r~  rg   )r  r  r   rp  r  r  r  r   r  rq  r]   r=   )r_   r`   ry   r  zi_shaper?  rz   rC  r|  r  r4  rB  ra   rb   r{  s               @@@rd   test_rank_3_IIR_init_cond+_TestLinearFilter.test_rank_3_IIR_init_cond  s   MM)R(2w+Sz2.!&&MDAGG}HHN##BGGH$5r:B$$aS"-CAq!2.EA??%%cA?C&&s"**Q-@D**1jjo>**2zz$/?@ "rg   c                   ^	^
 U R                  SU5      nU R                  / SQU5      nU R                  S/U5      n[        R                  " U5      [        R                  " U5      [        R                  " U5      sm	m
n[	        UR
                  5       HK  n[        X4X&5      n[        R                  " U	U
4S jXe5      nU R                  XqR                  U5      5        MM     g )Nrg  r<  rT   c                    > [        TTU 5      $ r5  ri  rj  s    rd   rl  3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>  rn  rg   ro  rr  s            @@rd   test_rank_3_FIR!_TestLinearFilter.test_rank_3_FIR  s    MM)R(z2.sB'::a="**Q-AdD!&&MDa&A%%&FSC**1jjo> "rg   c                   ^^^ U R                  SU5      nU R                  / SQU5      mU R                  S/U5      m[        R                  " U5      n[	        UR
                  5       H  n[        UR                  5      nSXT'   U R                  UR                  U5      U5      nU R                  SS/U5      m[        TTX$U5      u  pxUUU4S jn	UUU4S jn
[        R                  " XU5      n[        R                  " XU5      nU R                  XqR                  U5      5        U R                  XR                  U5      5        M     g )Nrg  r<  rT   rU   c           	      J   > [         R                  " [        TTU TS9S   5      $ rx  ry  rz  s    rd   r|  8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0  r~  rg   c           	      J   > [         R                  " [        TTU TS9S   5      $ r  ry  rz  s    rd   r  8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1  r~  rg   )r  r  r  r]   r   rp  r  r  r  r   rq  r=   )r_   r`   ry   rs  r  r  r?  rz   rC  r|  r  r4  rB  ra   rb   r{  s                @@@rd   test_rank_3_FIR_init_cond+_TestLinearFilter.test_rank_3_FIR_init_cond  s
   MM)R(z2.sB'zz!}!&&MDAGG}HHN##BGGH$5r:B$$aVR0CAq!2.EA??%%c6C&&s$7D**1jjo>**2zz$/?@ "rg   c                    U R                  SU5      n[        R                  " SSSS9u  p4U R                  X15      nU R                  XA5      nUR                  S   S-
  nU R                  UR                  SS	U45      U5      nU R                  UR                  SSU45      U5      n[        X4X&S
9u  p[        X4X'S
9u  pU R                  X5        U R                  X5        [        [        [        X4USUR                  U5      5        g )N)rP   rQ   r  r   r\  bar  r   rT   rP   rQ   r>  r   )
r  r   r    r  r  r  r   r=   r   r   )r_   r`   ry   rb   ra   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings               rd   test_zi_pseudobroadcast)_TestLinearFilter.test_zi_pseudobroadcast  s    MM*b)}}QD1q%q%''!*q. $$RWWaG_%=rB$$RWWaG_%=rB!!6!!6&&v6&&w8 	j'1B8HIrg   c                     U R                  SU5      nU R                  / SQU5      nU R                  S/U5      nU R                  / SQU5      n[        X4S   U5      nU R                  Xe5        g )NrR   r<  rT   )r   rT   rU   rU   rU   rU   r   r@  )r_   r`   ry   rb   ra   r4  rz   s          rd   test_scalar_a_TestLinearFilter.test_scalar_a  sk     MM!R z2.sB'  !3R8AtQ&&q.rg   c                    U R                  UR                  SUR                  S9U5      nU R                  UR                  SUR                  S9U5      nU R                  UR	                  / SQ5      U5      n[
        R                  " S[
        R                  S9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                  XQ5      nU R                  UR                  S	UR                  S9U5      n[
        R                  " S[
        R                  S9nS//S//S///US S 2S S 2S S
24'   UR	                  U5      nU R                  Xq5      n[        X4USU5      u  pU R                  X5        U R                  X5        [        X4S   USU5      u  pU R                  X5        U R                  X5        g )N)rO   rU   rQ   r   rQ   )rT   r   r   )rO   rT   rP   rT   rU   rO   )rO   rU   rP   rP   r   r   )r  r  r   r  r]   r  r   r=   )r_   r`   ry   rb   ra   r?  zf_expected
y_expectedy_iirzf_iiry_firzf_firs               rd   test_zi_some_singleton_dims-_TestLinearFilter.test_zi_some_singleton_dims  s   
 rxx	xBBGrwwqw92>rzz)4b9WWYbhh/
1a7q
1a7qZZ^'(()288)LbQXXirxx8
"#use4
1a!8ZZ
+
''
7
  aR0&&u9&&v;  Q4B3&&u9&&v;rg   c           	          U R                  X5      nU R                  X&5      nU R                  X65      nU R                  XV5      n[        [        [        XX4U5        g r5  )r  r   r   r   )r_   rb   ra   ry   r  r?  r`   s          rd   base_bad_size_zi"_TestLinearFilter.base_bad_size_zi"  sR    q%q%q%'j'1"=rg   zcupy does not raisec                    UR                  S5      nU R                  S/S/USS/U5        U R                  SS/S/USSS/U5        U R                  SS/S/USS//U5        U R                  SS/S/US/ SQU5        U R                  / SQS/USS//U5        U R                  / SQS/US/ SQU5        U R                  S/SS/USSS/U5        U R                  S/SS/USS//U5        U R                  S/SS/US/ SQU5        U R                  / SQSS/USS/U5        U R                  / SQSS/USS/S//U5        U R                  / SQSS/US/ SQU5        U R                  / SQSS/US/ SQU5        U R                  SS// SQUSS/U5        U R                  SS// SQUSS/S//U5        U R                  SS// SQUS/ SQU5        U R                  SS// SQUS/ SQU5        [        R                   " S5      R                  S	5      nUR	                  U5      nU R                  S/S/USS/U5        U R                  SS/S/US/ SQU5        U R                  SS/S/US/ SQ//U5        U R                  SS/S/USS/S/S
//U5        U R                  SS/S/USSS//U5        U R                  SS/S/US/ SQ/U5        U R                  / SQS/US/ SQU5        U R                  / SQS/US/ SQ/ SQ//U5        U R                  / SQS/USSS/S
S/SS//U5        U R                  / SQS/USSS/S
S//U5        U R                  / SQS/US/ SQ/ SQ/U5        U R                  S/SS/US/ SQU5        U R                  S/SS/US/ SQ//U5        U R                  S/SS/USS/S/S
//U5        U R                  S/SS/USSS//U5        U R                  S/SS/US/ SQ/U5        U R                  S// SQUS/ SQU5        U R                  S// SQUS/ SQ/ SQ//U5        U R                  S// SQUSSS/S
S/SS//U5        U R                  S// SQUSSS/S
S//U5        U R                  S// SQUS/ SQ/ SQ/U5        U R                  / SQSS/US/ SQU5        U R                  / SQSS/US/ SQ/ SQ//U5        U R                  / SQSS/USSS/S
S/SS//U5        U R                  / SQSS/USSS/S
S//U5        U R                  / SQSS/US/ SQ/ SQ/U5        U R                  S/S/USS/U5        U R                  SS/S/US/ SQU5        U R                  SS/S/USS/S/S
/S///U5        U R                  SS/S/US/ SQ/U5        U R                  SS/S/USS/S/S
//U5        U R                  SS/S/USS/S/S
/S/S//U5        U R                  / SQS/US/ SQU5        U R                  / SQS/USSS/S
S/SS/SS///U5        U R                  / SQS/US/ SQ/ SQ/U5        U R                  / SQS/USSS/S
S/SS//U5        U R                  / SQS/USSS/S
S/SS/SS/SS//U5        U R                  S/SS/US/ SQU5        U R                  S/SS/USS/S/S
/S///U5        U R                  S/SS/US/ SQ/U5        U R                  S/SS/USS/S/S
//U5        U R                  S/SS/USS/S/S
/S/S//U5        U R                  S// SQUS/ SQU5        U R                  S// SQUSSS/S
S/SS/SS///U5        U R                  S// SQUS/ SQ/ SQ/U5        U R                  S// SQUSSS/S
S/SS//U5        U R                  S// SQUSSS/S
S/SS/SS/SS//U5        U R                  / SQSS/US/ SQU5        U R                  / SQSS/USSS/S
S/SS/SS///U5        U R                  / SQSS/US/ SQ/ SQ/U5        U R                  / SQSS/USSS/S
S/SS//U5        U R                  / SQSS/USSS/S
S/SS/SS/SS//U5        g )NrR   rT   r   r   r   rT   rU   ru  r   rT   rU   rO   r[   rJ  rU   )r   rT   rU   rO   rP   rQ   ri   rO   rP   rQ   )rP   rQ   rR   r   )r   rT   rU   rO   rP   rQ   rR   r   r   r   rN  )r   r  r  r   r]   )r_   r`   r  r  s       rd   test_bad_size_zi"_TestLinearFilter.test_bad_size_zi)  sQ
    YYq\qcA3BR8q!fqc2rAq62>q!fqc2rQC5"=q!fqc2r9bAi!b"seR@i!b"iDqcAq62rAq62>qcAq62rQC5"=qcAq62r9bAi!QR!bAi!QR1#sRHi!QRBGi!QRrJq!fiR!bAq!fiR1#sRHq!fiRBGq!fiRrJ YYr]""5)ZZ^qcA3AsB7 	q!fqc2q)R@q!fqc2qI;-Dq!fqc2qA3aS/2Fq!fqc2qAq6(B?q!fqc2q<."Ei!b!5GLi!b!y)6L5MrRi!b!q!fq!fq!f5MrRi!b!q!fq!f5ErJi!b!lL5QSUVqcAq62q)R@qcAq62qI;-DqcAq62qA3aS/2FqcAq62qAq6(B?qcAq62q<."Eqc9b!5GLqc9b!y)6L5MrRqc9b!q!fq!fq!f5MrRqc9b!q!fq!f5ErJqc9b!lL5QSUVi!QQ8JBOi!QQ)Y9O8PRTUi!QQ!Q!Q!Q8PRTUi!QQ!Q!Q8H"Mi!QQ+\:B	@ 	qcA3AsB7q!fqc2q,Cq!fqc2qQC!qcA33G2H"Mq!fqc2q<."Eq!fqc2qA3aS/2Fq!fqc2qA3aS1#s2KRPi!b!5MrRi!b!!"AAAA?@"	Fi!b!lL5QSUVi!b!q!fq!fq!f5MrRi!b! !1v1v1v1v1vF	L 	qcAq62q,CqcAq62qQC!qcA33G2H"MqcAq62q<."EqcAq62qA3aS/2FqcAq62qA3aS1#s2KRPqc9b!5MrRqc9b!!"AAAA?@"	Fqc9b!lL5QSUVqc9b!q!fq!fq!f5MrRqc9b!q!f !fq!fq!fq!f6>?A	C 	i!QQ8PRTUi!QQ!"AAAA?@"	Fi!QQ+\:B	@i!QQ!Q!Q!Q8PRTUi!QQ !1v1v1v1v1vF	Lrg   c                    U R                  SU5      nU R                  S/U5      nU R                  S/U5      nU R                  / U5      n[        XCX%S9u  pgU R                  Xb5        UR                  [        U R                  [        5      (       a  [        XR                  5      OU R                  :X  d   e[        U5      S:X  d   eg )N)rQ   rT   r>  r   )	r  r  r   r=   r   r  r*  r  r@   )r_   r`   ry   ra   rb   r?  rz   rC  s           rd   test_empty_zi_TestLinearFilter.test_empty_zi  s    MM$#sB'sB'B'a'&&q,xx)$**c:: $B

3!%- 	- - r{arg   rJ   z jax does not support inplace opsra   rT   )rT   r        ?rU   )rU   rT   rO   )idsc           	         [        U5      (       a2  [        U[        [        -  5      (       a  [        R
                  " S5        U R                  SU5      nU R                  / SQU5      nU R                  X5      n[        U5      S-
  n[        U5      S-
  n[        U5      (       a  Xe-   O
[        XV5      n[        XAX0R                  Xr5      S9u  p[        XAUR                  U5      UR                  U5      5      n
U R                  X5        g )Nz0cupy does not supoprt scalar filter coefficientsrR   )r  r  r\  rT   r>  )r<   r  r  r  r5  r  r  r  r@   r  r   r&   r  r=   )r_   ra   r`   ry   rb   r  r  Kr  zi_1zi_2s              rd   test_lfiltic_TestLinearFilter.test_lfiltic  s     2;;:au55KKJKMM!R |R0q%AJNAJNR[[AEc!i1}}Q';<qRWWR["''!*5&&t2rg   c           	         [        [        [        SS// SS/SS/5        [        [        [        SS/SS/SS/SS/5        [        [        [        SS/S/S//SS/SS/5        [        [        [        S/S//S/SS/SS/5        g )NrT   rU   r   )r   r   r&   r  s    rd   test_lfiltic_bad_coeffs)_TestLinearFilter.test_lfiltic_bad_coeffs  s    j'Aq621v1vFj'Aq6Aq6Aq6Aq6Jj'Aq6QC!:1v1vNj'QC!:sQFQFKrg   array_api_strictz-int64 and float64 cannot be promoted togetherzjax dtype defaults differc                 z   U R                  S/U5      nU R                  S/U5      n[        X2UR                  SS/5      5      n[        X2UR                  SS/5      5      n[        X2UR                  SS/5      5      nU R                  XE5        U R                  [
        :X  a  0 OSS0nU R                  " XF40 UD6  g )NrT   r  r   TFr%  )r  r&   r]   r  r   r4  )r_   r`   ra   rb   r?  r  r  check_dtype_args           rd   test_lfiltic_bad_zi%_TestLinearFilter.test_lfiltic_bad_zi  s     sB'sB'Q2::r1g./qRZZa12qRZZu67"# $

f 4"=%:P"6o6rg   c                 J   U R                  S/U5      nU R                  / SQU5      nU R                  SS/U5      nU R                  S/U5      nU R                  S/U5      nU R                  SS/U5      n[        X2XTS9u  pU R                  X5        U R                  X5        g )	NrT   r<  rU   r   r  rw  r>  r  r   r=   
r_   r`   ra   rb   r?  ry   yezferz   rC  s
             rd   test_short_x_FIR"_TestLinearFilter.test_short_x_FIR  s     sB'z2.A+tR(b)  !S2.a'&&q-&&r/rg   c                 L   U R                  SS/U5      nU R                  / SQU5      nU R                  SS/U5      nU R                  S/U5      nU R                  S/U5      nU R                  SS/U5      n[        X2XTS	9u  pU R                  X5        U R                  X5        g )
NrT   r<  rU   r   r  rw  ir  r>  r  r  s
             rd   test_short_x_IIR"_TestLinearFilter.test_short_x_IIR  s     1vr*z2.A+tR(b)  #sR0a'&&q-&&r/rg   c                 B   U R                  SU5      nU R                  SS/U5      n[        X1S9nU R                  SS/U5      n[        XQS9nU R                  / SQU5      n[        X5U5      nU R	                  X5        U R                  X45        U R                  XV5        g )Nr/  rT   r   r  r  r0  r1  r  r  r?   r   r=   r  	r_   r`   ry   rb   b0ra   a0r4  y_fs	            rd   test_do_not_modify_a_b_IIR,_TestLinearFilter.test_do_not_modify_a_b_IIR  s    MM$#2w+QT{B/Q  !5r:aA&&s0! ! rg   c                 @   U R                  SU5      nU R                  / SQU5      n[        X1S9nU R                  S/U5      n[        XQS9nU R                  / SQU5      n[        X5U5      nU R	                  X5        U R                  X45        U R                  XV5        g )Nr/  r  r  rU   )r   r  rT   rU   rO   r  r  r  s	            rd   test_do_not_modify_a_b_FIR,_TestLinearFilter.test_do_not_modify_a_b_FIR  s    MM$#y"-QsB'Q  !6;aA&&s0! ! rg   r)  r  rb   c                     [         R                  R                  S5      nUR                  U5      nU R	                  [        UR                  S/5      UR                  S/5      U5      [        X!U5      5        g )NrV   r  )r  r  r	  r]   r  r   )r_   ra   rb   r`   r  s        rd   test_scalar_input#_TestLinearFilter.test_scalar_input	  s^     yyr"zz$BJJu%rzz3%'8$?A$	
rg   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   r1  r2  rj   )r  r]   r4  r5  r6  r   r   s       rd   r7  (_TestLinearFilter.test_dtype_deprecation	  sL     JJ)8JJ2&A##*IJA,' KJJs   A##
A1)r=   r  r  N)+r<  r=  r>  r?  r  r  r  r5  r9  r@  rD  rG  rN  rV  r^  rd  rt  r  r  r  r  r  r  r  r  r  r5  rB  r  r*  r  r  r  r  r  r  r  r  r  r  rC  r7  rD  r:  rg   rd   r  r  )  s   G)0>> f%QR	1 S	1 f%QR	1 S	133 f%QR1 S1 f%QR1 S1 d+KL	? M	? d+KLA MA( d+KL	? M	? d+KLA MA* f%QRJ SJ* f%QR/ S/ f%QR< S<:> f%:;gL <gLR  k*LM[[S1qc<QC"K!$  &3& N3$L #R k*EF7 G7 f%QR0 S0 f%QR0 S0
!
! d#[[S3rxx}"=>[[S3rxx}"=>
 ? ? $
 d#[[(  $(rg   r  c                       \ rS rSrSrSrg)TestLinearFilterFloat32i	  r   r:  Nr<  r=  r>  r?  r   rD  r:  rg   rd   r  r  	      Erg   r  c                       \ rS rSrSrSrg)TestLinearFilterFloat64i	  r   r:  Nr  r:  rg   rd   r  r  	  r  rg   r  r  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterFloatExtendedi	  rV  r:  Nr<  r=  r>  r?  r  r   rD  r:  rg   rd   r  r  	       HHSMErg   r  c                       \ rS rSrSrSrg)TestLinearFilterComplex64i$	  r   r:  Nr  r:  rg   rd   r  r  $	  s    Erg   r  c                       \ rS rSrSrSrg)TestLinearFilterComplex128i(	  r   r:  Nr  r:  rg   rd   r  r  (	  s    Erg   r  c                   8    \ rS rSr\R
                  " S5      rSrg)TestLinearFilterComplexExtendedi,	  Gr:  Nr  r:  rg   rd   r  r  ,	  r  rg   r  r  c                   >    \ rS rSr\R
                  " S5      rS rSrg)TestLinearFilterDecimali2	  r"  c                 *    [        [        U5      5      $ r5  )r   r*  )r_   ry   s     rd   r)  TestLinearFilterDecimal.type7	  s    s1vrg   r:  N)r<  r=  r>  r?  r  r   r)  rD  r:  rg   rd   r  r  2	  s     HHSMErg   r  c                   <    \ rS rSr\R
                  " S5      r\rSrg)TestLinearFilterObjecti;	  r"  r:  N)	r<  r=  r>  r?  r  r   r  r)  rD  r:  rg   rd   r  r  ;	  s     HHSMEDrg   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  Nr  r  r  r  )hasattrsysr  r5  r  r   r  r   r  s    rd   test_lfilter_bad_objectr  B	  sf    
 sJC3<<$7=>)WsecU4DE)WsedV_E)Wtfse_Erg   c                 >    [        [        [        SS/SS// SQ5        g )NrU   rO   rP   rQ   )rT   rU   rO   rP   rQ   )r   NotImplementedErrorr   r  s    rd   !test_lfilter_notimplemented_inputr  N	  s     %w1!ukJrg   c                       \ rS rSrS rS rS rS r\" SSS9S	 5       r	S
 r
S rS rS r\" SSS9S 5       r\" SSS9S 5       r\" SSS9S 5       rSrg)_TestCorrelateRealiT	  c                 V    U[         :X  a  [        R                  R                  $ [        $ )z/Use np.testing while object arrays are a thing.)r   r  rk  r=   )r_   r  s     rd   _get_assertion!_TestCorrelateReal._get_assertionV	  s    =::777,,rg   c                 v    UR                  SSSUS9nUR                  SSSUS9nUR                  / SQUS9nX4U4$ )Nr   rO   rP   r   rT   rU   )r   rU   rQ   r   rO   )rR  r]   r_   r  r`   ra   rb   r4  s         rd   _setup_rank1_TestCorrelateReal._setup_rank1]	  sJ    KK1arK*KK1arK*jjj3Syrg   c                     Sn [         R                  " U5      n[        US5      (       a,  [        S[         R                  " UR
                  5      -  5      nU$ ! [         a     U$ f = f)NrR   
resolutionr0  )r  r  r  r  log10r
  	Exception)r_   res_dtr$  dt_infos       rd   equal_tolerance"_TestCorrelateReal.equal_toleranced	  se    	hhv&Gw--d288G,>,>#??@   		s   AA 
A'&A'c                     U[         R                  :X  a  U R                  [         R                  5      $ U R                  U5      $ r5  )r  r  r  r   )r_   r  s     rd   equal_tolerance_fft&_TestCorrelateReal.equal_tolerance_ffto	  s6     R]]"''

33''//rg   Tz	order='F'r   c                    U[         :X  a)  [        [        S5      /[        S5      /5      nUS:X  d   eg [        X!5      nU R                  X5      u  pEn[	        XESS9n[	        XESS9n[        UUU R                  UR                  5      S9  [        UUU R                  UR                  5      S9  UR                  U:X  d   eUR                  U:X  d   eg )NrP   rO   r   r   r   r#  )	r   r   r  _setup_rank3r   r=   r  r   r  )	r_   r  r`   r   ra   rb   r4  y_ffty_directs	            rd   test_method_TestCorrelateReal.test_methodw	  s    ='wqzlCFX%%%B))"1IA#a51E h7H%c&+.2.F.Fu{{.SV &c&..2.B.B8>>.RU ;;"$$$>>R'''rg   c                    [        U5      (       a  US;   a  [        R                  " S5        [        U[        5      (       a  [        X!5      OUnU R                  U5      nU R                  X5      u  pEn[        XES5      nU" XvSS 5        UR                  U:X  d   e[        XTS5      nUR                  [        :w  a  U" XrR                  USS 5      5        OU" XvSS S S S2   5        UR                  U:X  d   eg )Nr  $torch does not support unsigned intsr   rT   rP   r   )r:   r5  r  r  r*  r  r  r  r   r   r4  r  )r_   r  r`   _assert_almost_equalra   rb   r4  rz   s           rd   test_rank1_valid#_TestCorrelateReal.test_rank1_valid	  s    B<<B"@@;;=> *2s 3 3WR_#2226%%b-	caG$QAa)ww"}} aG$II GGC!H$56 !HTrTN3ww"}}rg   c                 <   [        U5      (       a  US;   a  [        R                  " S5        [        U[        5      (       a  [        X!5      OUnU R                  X5      u  p4n[        X4S5      nU R                  U5      nU" XeS S 5        UR                  U:X  d   eg )Nr  r  rk   r   
r:   r5  r  r  r*  r  r  r   r  r   r_   r  r`   ra   rb   r4  rz   r  s           rd   test_rank1_same"_TestCorrelateReal.test_rank1_same	  s    B<<B"@@;;=> *2s 3 3WR_%%b-	caF##2226QCR)ww"}}rg   c                 6   [        U5      (       a  US;   a  [        R                  " S5        [        U[        5      (       a  [        X!5      OUnU R                  X5      u  p4n[        X4S5      nU R                  U5      nU" Xe5        UR                  U:X  d   eg )Nr  r  r   r   r!  s           rd   test_rank1_full"_TestCorrelateReal.test_rank1_full	  s    B<<B"@@;;=> *2s 3 3WR_%%b-	caF##2226Q$ww"}}rg   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[         R                  " / 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X4U4$ )Nr   r  r`  )rU   rP   rQ   F)orderrZ   r^  r   )r  g      g@g     @g     @     @@g     @g     }@g      d@)g      G@g      {@g     @g     @g     @     @g      @g     p@)     `@g      @g     @g     @     @g     @g     @@g     s@)g     @p@g     @g     0@g     @g     p@g     (@g     `@g     t@)g     @i@g     @     (@g      @g      @g     ؘ@g     @@g     b@)g     \@g     u@g     @g      @g      @g     @g     r@g      C@)r  g      y@g     ,@     @g     @g     $@g     @@g     Pr@)r,  g     @g     @g     @g     @g     ԩ@g     @g     }@)g     Pt@g      @g     R@g     @g     (@g     K@g      @g     @)g     ؁@g     @g     f@g     @g     (@g     }@g     (@g     @)g      {@r*  g     4@r-  g     @g     ܧ@g     @     l@)g      n@g     @g     @g     @g     @g     @g     @r  )r  g     j@g     @g     @g     Д@g     p@g     z@g     `@)g     U@g     @~@g     (@r/  g     P@g     @g      @g     i@)g     g@g     @r+  g     X@g     @g     @g     Џ@g     @k@)g     @s@g     p@g     x@g     h@g     @g     @g     ؐ@r0  )r0  g     @r.  g      @g     @g     Ȗ@g     @g     S@)g     _@g      v@g     @g     @g     @g     p@g     @m@r  r   )r  rR  r   r  r  r   r  s         rd   r  _TestCorrelateReal._setup_rank3	  s    KK2r"**9C*@GGKK2r"**9C*@GG hhHIKKJFH JKLLLIK GIKLIEGH( **)&( '-fRj) 	, Syrg   c           	         [        U[        5      (       a  [        X!5      OUnU R                  X5      u  p4n[	        X4S5      nU R                  U5      nU" XeSS2SS2SS24   5        UR                  U:X  d   e[	        XCS5      nU R                  U5      nU" XeS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:X  d   eg )Nr   rT   rU   rP   rO   rQ   r   r  r*  r  r  r   r  r   r!  s           rd   test_rank3_valid#_TestCorrelateReal.test_rank3_valid	  s     *2s 3 3WR_%%b-	caG$#2226QAaC1acM 23ww"}} aG$#2226QAaC1acM 24R42tt3C DEww"}}rg   c                     [        U[        5      (       a  [        X!5      OUnU R                  X5      u  p4n[	        X4S5      nU R                  U5      nU" XeSS2SS2SS24   5        UR                  U:X  d   eg )Nrk   r   r   rT   r  r3  r!  s           rd   test_rank3_same"_TestCorrelateReal.test_rank3_same	  sz     *2s 3 3WR_%%b-	caF##2226QAbD!B$"$4 56ww"}}rg   c                     [        U[        5      (       a  [        X!5      OUnU R                  X5      u  p4n[	        X45      nU R                  U5      nU" Xe5        UR                  U:X  d   eg r5  r3  r!  s           rd   test_rank3_all!_TestCorrelateReal.test_rank3_all	  s_     *2s 3 3WR_%%b-	caO#2226Q$ww"}}rg   r:  N)r<  r=  r>  r?  r  r  r  r  r@  r  r  r"  r%  r  r4  r7  r:  rD  r:  rg   rd   r  r  T	  s    -	0 d;7( 8((&

< d;7 8 d;7 8 d;7 8rg   r  r  r  c                       \ rS rSrSrg)TestCorrelateReali	  r:  Nr<  r=  r>  r?  rD  r:  rg   rd   r=  r=  	  s     	rg   r=  c                       \ rS rSrSrg)TestCorrelateRealDecimali
  r:  Nr>  r:  rg   rd   r@  r@  
  s     	rg   r@  c                       \ rS rSr\" SS9S 5       r\" SS9S 5       r\" SS9S 5       r\" SS/S9\" S	S
S9S 5       5       r\	R                  R                  \" SS9S 5       5       rSrg)TestCorrelatei	
  Tr)  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  [        [        [
        /X24Q70 SS0D6  g r   )r  r   r   r   r   r   r   s       rd   r   !TestCorrelate.test_invalid_shapes
  so     IIaO##F+IIb!$$V,j)JqfJ8IJj)JqfJ8IJrg   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       rd   r   !TestCorrelate.test_invalid_params
  sZ    j)Q?j)QuMj)QhOj)QwOj)QwOrg   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+  rF  r,  s     rd   r-  "TestCorrelate.test_mismatched_dims#
  sp     	j)aS!HEj)QHEj)aS!EBj)QEBj)aSA3%8j)aS!4rg   rC   rD   rJ   zdtype differsrL   c                    UR                  / SQ5      nUR                  SS/5      n[        [        X#SS9UR                  / SQ5      5        UR                  / SQ5      nUR                  / SQ5      n[        [        X#SS9UR                  / SQ5      5        [        [        X#S	S9UR                  / S
Q5      5        [        [        X#SS9UR                  S/5      5        g )NrS   rP   rQ   rk   rl   )rQ   r  rZ   r   )r   rY   rZ   r   )rR   r   rY   rZ   r[   r   rY   )r]   r7   r   r   s       rd   test_numpy_fastpath!TestCorrelate.test_numpy_fastpath-
  s     JJy!JJ1v	!V4bjj6MNJJy!JJy!	!V4bjj6NO	!V4bjjAT6UV	!W5rzz2$7GHrg   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r0  )r  r]   r4  r5  r6  r   r   s       rd   r7  $TestCorrelate.test_dtype_deprecation:
  sI     JJ)8JJ2&A##*IJaO KJJr9  r:  N)r<  r=  r>  r?  r@  r   r   r-  rK  r5  rB  rC  r7  rD  r:  rg   rd   rB  rB  	
  s     d#
K $
K d#P $P d#5 $5 t9k/:	I ; :	I [[d# $ rg   rB  z accepts ints, return numpy arrayrm   r   rk   r   behindF
input_sizer;  r  r  r  rV  )marksi'  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XVS  nUn[        XWU S9n	[        UR                  UR                  U S9n
[         R                  " U	5      n[        X   U5        U
R                  U	R                  :X  d   eg )Nr   rV   rl   )r  r  r  r^  r  concatenater   r   r   argmaxr8   r  )rm   rP  rQ  r`   r  in1offsetin2r   correlationlags	lag_indexs               rd   test_correlation_lagsr\  D
  s     ))


"C


j
)CBFnnc11&93?@7 'lC40KCHHchhT:D		+&IDOX.::*****rg   c                     [         R                  " [        SS9   [        SSSS9  S S S 5        g ! , (       d  f       g = f)NzMode asdfgh is invalidr2  r;  asdfghrl   )r5  r	   r   r   r  s    rd   "test_correlation_lags_invalid_moder_  d
  s*    	z)A	Bc1 
C	B	Bs   /
=dt_namer   r   c                   p    \ rS rSrS rS rS rS rS rS r	S r
\" S	S
S9S 5       r\" SS9S 5       rSrg)TestCorrelateComplexij
  c                     [        U5      (       a$  U[        R                  :X  a  [        R                  nSSS.UR	                  U5      R
                     n[        SU-  S-  5      $ )Nr  rR   )ra  rY   rU   rO   )r9   r  r  cdoubler  bitsr  )r_   r  r`   precs       rd   r$  TestCorrelateComplex.decimalt
  sP    B<<B"..0B Arxx|0011t8a<  rg   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UR                  U5      UR                  U5      UR                  U5      penXEU4$ )NrN  rV   r   r   rl   )	r  r  rD  r	  r  r   rT  imagr]   )r_   r  rm   r`   ra   rb   r4  s          rd   r  !TestCorrelateComplex._setup_rank1|
  sD   
		qIIOOB&&r*	R"))//"%,,R000IIOOA%%b)	R"))//!$++B///d3d345;VBZ 	riT::qvvqvvD9: ; 	; JJqM2::a="**S/cSyrg   c                 ^   U R                  USU5      u  p4n[        X!5      n[        X4S5      n[        XuU R	                  Xb5      S9  UR
                  U:X  d   e[        XCS5      n[        XrR                  UR                  U5      5      U R	                  Xb5      S9  UR
                  U:X  d   eg )Nr   r#  )r  r  r   r=   r$  r   conjr  r_   r`  r`   ra   rb   r4  r  rz   s           rd   r  %TestCorrelateComplex.test_rank1_valid
  s    %%gw;	cR!aG$!!$,,r2FGww"}} aG$!!WWRWWS\%:*.,,r*>	@ww"}}rg   c                     U R                  USU5      u  p4n[        X!5      n[        X4S5      n[        XuU R	                  Xb5      S9  UR
                  U:X  d   eg )Nrk   r#  r  r  r   r=   r$  r   rm  s           rd   r"  $TestCorrelateComplex.test_rank1_same
  sS    %%gvr:	cR!aF#!!$,,r2FGww"}}rg   c                     U R                  USU5      u  p4n[        X!5      n[        X4S5      n[        XuU R	                  Xb5      S9  UR
                  U:X  d   eg )Nr   r#  rp  rm  s           rd   r%  $TestCorrelateComplex.test_rank1_full
  sS    %%gvr:	cR!aF#!!$,,r2FGww"}}rg   c                     [        X!5      nUR                  / SQUS9nUR                  / SQUS9n[        XE5      n[        XbR                  / SQ5      SSS9  g )Nr   ru   r  r   y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      r   Fr  )r  r]   r   r7   )r_   r`  r`   r  r   krz   s          rd   test_swap_full#TestCorrelateComplex.test_swap_full
  sU    R!JJ/rJ:JJ7rJBaOzzNO5	
rg   c                     UR                  / SQ5      nUR                  / SQ5      n[        X4SS9n[        XRR                  / SQ5      5        g )Nru  rv  rk   rl   )rw  rx  ry  )r]   r   r7   )r_   r`  r`   r   rz  rz   s         rd   test_swap_same#TestCorrelateComplex.test_swap_same
  s>    JJ/0JJ78a(::&ABCrg   rC   notimplementederrorrL   c                    [         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UR                  U5      UR                  U5      UR                  U5      pTn[        X!5      n[	        X4S5      n[        XuU R                  Xb5      S-
  S9  UR                  U:X  d   eg )	NrV   r   rR   r   rP   r   rT   r#  )r  r  r	  r  r   rT  ri  r]   r  r=   r$  r   rm  s           rd   
test_rank3TestCorrelateComplex.test_rank3
  sg   IIOOB1%,,W5	R"))//"a+227;;;IIOOAq!$++G4	R"))//!Q*11':::(166166*+,2F7O 	ri//)AFFAFF2KKLLJJqM2::a="**S/cR!aF#!!$,,r2F2JKww"}}rg   Tr)  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[        X!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UR                  U5      UR                  U5      pC[        X4S5      n[        XvU R                  XR5      S-
  S9  UR                  U:X  d   e[        [        S/S/5      [         R                  " [        SS5      5      SS9  [        [        S/S/5      [         R                  " [        SS5      5      SS9  [        [        S/S	/5      [         R                  " [        SS	5      5      SS9  g )
Nr   r   rT   r#  rx   F)check_shape              @rP   )r  r  r  r	  r  r  r   rT  ri  r]   r=   r$  r   r8   )r_   r`  r`   ra   rb   r  r4  rz   s           rd   
test_rank0TestCorrelateComplex.test_rank0
  s   HHRYY__&'..w7	R"((299??,-44W===HHRYY__&'..w7	R"((299??,-44W===R!(166166*+,2F2J 	rBHHi77&qvvqvv67 8 8 	8 zz!}bjjm1aF#!!$,,r2F2JKww"}}	1#t,bjj1b9I.J$)	+	2$-rzz)B:K/L$)	+	2$,bjj2q9I.J$)	+rg   r:  N)r<  r=  r>  r?  r$  r  r  r"  r%  r{  r~  r@  r  r  rD  r:  rg   rd   rb  rb  j
  s[    !
D f%:; <" d#+ $+rg   rb  c                   P    \ rS rSrS r\" SS9S 5       r\" SS9S 5       rS rSr	g	)
TestCorrelate2di
  c           	         [         R                  " S5      n[         R                  " / SQ5      nS H  nUR                  U5      UR                  U5      pe[         R                  " X#US9n[        [        R                  " XVUS9UR                  U5      5        US:X  d  Mo  [         R                  " X2US9n[        [        R                  " XeUS9UR                  U5      5        M     g NrQ   r  r  rl   r   )r  r   r  r]   r   r>   r   )r_   r`   ra   rb   rm   a_xpb_xpnp_corr_results           rd    test_consistency_correlate_funcs0TestCorrelate2d.test_consistency_correlate_funcs
  s    IIaLHH]#-DA

1$\\!T:N 0 0$ G "

> :< w!#a!>#F$4$4Td$K$&JJ~$>@ .rg   Tr)  c                    [         R                  " S5      n[         R                  " / SQ5      nS H  n[        [         R                  " [
        R                  " U/U/US95      [
        R                  " X#US95        US:X  d  MT  [        [         R                  " [
        R                  " U/U/US95      [
        R                  " X2US95        M     g r  )r  r   r  r>   r  r   r   r   )r_   r`   ra   rb   rm   s        rd   "test_consistency_correlate_funcs_22TestCorrelate2d.test_consistency_correlate_funcs_2
  s     IIaLHH]#-D

6+=+=qcA3CG,I !J & 0 0D AC
 w#BJJv/A/A1#sGK0M %N$*$4$4Q$EG .rg   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                  /X24Q70 SS0D6  g r   )r  r   r   r   r   r   r   r   s       rd   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Srg   c                    [        [        R                  " UR                  S//5      UR                  S//5      5      UR                  S/5      SSS9  [        [        R                  " UR                  S//5      UR                  S//5      5      UR                  S/5      SSS9  [        [        R                  " UR                  S//5      UR                  S//5      5      UR                  S	/5      SSS9  g )
NrT   rx                 F)r  r%  r  y      @        rP   y              (@)r8   r   r   r]   r,  s     rd   test_complex_input"TestCorrelate2d.test_complex_input  s    **2::se+<bjj2$>PQ

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

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

C5)u%	Qrg   r:  N)
r<  r=  r>  r?  r  r@  r  r   r  rD  r:  rg   rd   r  r  
  sD    @  d#G $G  d#
T $
TQrg   r  )rE   zlfilter_zi is incompatiblec                       \ rS rSr\" SSS9S 5       rS rS r\R                  R                  SS	S
/5      S 5       rSrg)TestLFilterZIi  Tzlist inputs are numpy specificr   c                 `    UR                  SS/5      n[        / SQ/ SQ5      n[        X25        g )Nr  r  r  r  r  r  r  r  r]   r   r=   )r_   r`   zi_expectedr?  s       rd   test_array_likeTestLFilterZI.test_array_like"  s)    jj#t-)9:!"2rg   c                     UR                  / SQ5      nUR                  / SQ5      nUR                  SS/5      n[        X25      n[        XT5        g )Nr  r  r  r  r  )r_   r`   ra   rb   r  r?  s         rd   re   TestLFilterZI.test_basic(  sC    JJ'(JJ'jj#t-!"2rg   c                     UR                  / SQ5      nUR                  / SQ5      n[        X#5      n[        SU-  SU-  5      n[        XTSS9  g )N)r  r   rQ   )r  rT   r   rU   r  rC  )r]   r   r7   )r_   r`   rb   ra   r{  zi2s         rd   test_scale_invariance#TestLFilterZI.test_scale_invariance/  sH     JJ{#JJ{#1ac"u-rg   r   r   r   c                     [        X!5      nUR                  SUS9nUR                  S/US9n[        R                  " X45      R
                  U:X  d   eg )Nr   r   rT   )r  r  r]   r   r   r   )r_   r   r`   rb   ra   s        rd   r  TestLFilterZI.test_types8  sQ    "HHaH&JJs%J(  &,,555rg   r:  N)r<  r=  r>  r?  r@  r  re   r  r5  rB  r  r  rD  r:  rg   rd   r  r    sS     d+KL3 M3
3. [[Wy)&<=6 >6rg   r  c                       \ rS rSrSr  SS jr\" SSS9S 5       r\" SSS9S	 5       r\" SSS9S
 5       r	\" SSS9S 5       r
\" SSS9S 5       r\" SSS9S 5       rSrg)TestFiltFilti@  tfNc	           
         U R                   S:X  a9  [        U6 u  pUR                  U	5      UR                  U
5      p[        XX#XEXg5      $ U R                   S:X  a&  [	        U6 nUR                  U5      n[        XX4U5      $ g )Nr  sos)filtfilt_kindr!   r]   r   r"   r)   )r_   zpkry   r  r=  padlenr   irlenr`   rb   ra   r  s               rd   r   TestFiltFilt.filtfiltD  s{    %3<DA::a="**Q-qA!7FJJ5(3-C**S/Cstf== )rg   r   negative stridesrL   c                 6   [        U5      (       a$  U R                  S:X  a  [        R                  " SS9  [	        / SQ/ SQ5      nU R                  X!R                  S5      US9n[        U5      (       a  SOSn[        X1R                  SUR                  S	9US
9  g )Nr  sosfilt works in-placerL   rS   r[   r  gA:)>g6{=r   r   )
r;   r  r5  r  r+   r   r   r<   r7   r   )r_   r`   r  r   r   s        rd   re   TestFiltFilt.test_basicO  su    "::$,,5KK78Y	*mmC22m6bkkdxYYrY<4Hrg   c                    [        U5      (       a$  U R                  S:X  a  [        R                  " SS9  SnUR	                  SSUS-   5      nUR                  S[        R                  -  U-  5      nUR                  S	[        R                  -  U-  5      nXE-   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                  XvXS9n[        R                  " X-
  5      R                  5       nUS:  d   eUR                  [        R                   " XDU-   /5      5      nU R                  X}U
SUS9nUR"                  UR"                  :X  d   e[        R                  " X-
  5      R                  5       nUS:  d   eU R                  X}R$                  U
SUS9n['        XR$                  5        g )Nr  r  rL     r   r  rT   rV   i  r         ?r  r  r  )r  r`   r   r  r  r`   )r;   r  r5  r  rR  rV  r  r  r    rp  r  r  ceillogr   r]   vstackr  r  r8   )r_   r`   r  r  xlowxhighry   r  repsr  rz   errx2dy2dy2dts                   rd   	test_sineTestFiltFilt.test_sineY  s   "::$,,5KK78KK3q)vvebeema'(w*+LQe,FF3q6N  sbffQi/01 MM#M2ffQX""$Tzz jjD,#789mmCQQ2m>yyCII%%%ffSZ $$&Tzz }}S%%b}AVV$rg   c           
         [        U5      (       a$  U R                  S:X  a  [        R                  " SS9  [        R
                  " S5      R                  SSS5      nUR                  U5      n[        SS	S
S9nU R                  X2SSUS9nU R                  X1R                  [        R                  " USS5      5      SSUS9n[        XAR                  [        R                  " USS5      5      5        U R                  X1R                  [        R                  " USS5      5      SSUS9n[        XAR                  [        R                  " USS5      5      5        g )Nr  r  rL   g     @rV   rP  r[   rO   r  r  r  r   r  rT   rU   )r;   r  r5  r  r  r   r   r]   r    r   rR  r8   )r_   r`   ry   r  r  r  r  s          rd   	test_axisTestFiltFilt.test_axis  s   "::$,,5KK78 II()11"b"=JJqMQe,]]3!!];]]BKK1a01!!  
 	JJr{{2q!'<=>]]BKK1a01!!  
 	JJr{{2q!'<=>rg   Tz-python scalars in array_namespace are np-onlyr   c           	          U R                   S:w  a  g [        R                  " UR                  SS/5      SUR	                  SUR
                  S95      n[        X!R	                  SUR
                  S9SSS9  g )Nr  r  rT   rV   r   r   r   )r  r   r   r]   r   r   r7   )r_   r`   r   s      rd   test_acoeffTestFiltFilt.test_acoeff  sg     %ooJJBx !RYYrY%D
 	YYrY<5uUrg   z_filtfilt_gust is np-onlyc           
         U R                   S:w  a  [        R                  " S5        UR                  SS/5      nUR                  S/5      nUR                  SS/5      n[	        X4U5      u  pVn[        US   SUS   -  S	US
   -  -   5        [        US   S	US   -  SUS
   -  -   5        [        UUR                  US   SUS   -  -   SUS   -  -   SUS
   -  -   SUS   -  US   -   SUS   -  -   SUS
   -  -   /5      5        g )Nr  $gust only implemented for TF systemsr  r  r  r0  r   r  r\  rT         ?r  )r  r5  r  r]   r2   r7   )r_   r`   ry   rb   ra   rz   z1z2s           rd   test_gust_simpleTestFiltFilt.test_gust_simple  s!   %KK>? JJSz"JJuJJT{#"1+	r1s1Q4x#ad(231s1Q4x#ad(23

BqEDAJ$6ad$BU1Q4Z$O$(AJA$6qt$Cd1Q4i$O$Q R	
rg   c                     U R                   S:w  a  [        R                  " S5        UR                  S5      nSnSn[	        X4USS9nX4-  S-  U-  n[        XV5        g )	Nr  r  r[   r  r  gustr   rU   )r  r5  r  r   r   r7   )r_   r`   ry   rb   ra   rz   r   s          rd   test_gust_scalarsTestFiltFilt.test_gust_scalars  s]     %KK>? IIbMQ1V,C!8a<$rg   r:  )r   oddNr  NN)r<  r=  r>  r?  r  r   r@  re   r  r  r  r  r  rD  r:  rg   rd   r  r  @  s    M>B.2	> g&89I :I g&89#% :#%J g&89? :?$ dLNVNV d+FG
 H
  dLN%N%rg   r  zLsosfiltfilt directly sets shape attributes on arrays which dask doesn't likec                   F    \ rS rSrSr\" SSS9\" SSS9S 5       5       rS	rg
)TestSOSFiltFilti  r  rJ   r  rL   r   r  c                 x   [         R                  R                  S5      R                  S5      nUR	                  U5      n[        SS5       Hk  n[        R                  " USSS9n[        U6 u  pV[        U6 n[        UR                  XVU45      u  pVn[        XVU5      n[        Xr5      n	[        XSS	U 3S
9  Mm     g)z1Test equivalence between sosfiltfilt and filtfiltr   r  rT   rR   ffffff?r  r  r  zorder=)r   err_msgN)r  r  r  r	  r]   r   r   r    r!   r"   r  r   r)   r7   )
r_   r`   ry   r)  r  rb   ra   r  rz   y_soss
             rd   test_equivalence TestSOSFiltFilt.test_equivalence  s     II!!!$**40JJqM1a[E--tE:C3<DA3-CBJJs4IA#q!A'EA5F5':JK !rg   r:  N)r<  r=  r>  r?  r  r@  r  rD  r:  rg   rd   r  r    s6     Mk*BCg&89L : DLrg   r  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 3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.rT   Nr>  r   r   rU   )r  r  r   r  sum)icsrb   ra   ry   mz0fz0br  y_fby_by_bfvalues               rd   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'(rg   rT   NrB  r  rV  TF)r  xtolftolmaxfunmaxiterfull_outputdispr   z3minimization failed in filtfilt_gust_opt: warnflag=r   r>  )	r  r  r   r  rT  r(  r   rk  r   )rb   ra   ry   r  r  r?  r  r  optfoptniterfuncallswarnflagr  r  r  rz   s                    rd   filtfilt_gust_optr    s    	CFCFaA	A	B
..!BQ%**,r/1RS6;;=+;<
=C(Q1I5"0F ,2(Cu!|A(L
 	
 bq'C
b'C !$B$C
(
+DbD
1Cc"1%Ac;rg   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 )
NrN  r  )r  r   r  )r  r  r   rT   r  rP  r   )r  r  rD  r	  r   r2   rR  r  
empty_liker  r  r'  r   r   r  r7   )rb   ra   r  r  r  ry   rz   ygzg1zg2xx	out_shaper;  r  zo1zo2r   indxs                     rd   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 rV   c           	         S GHU  nS H  nSu  p4n[         R                  R                  " U4U-  6 n[         R                  R                  " U4U-  6 n[        XgUS9nX:X  d   e[        XgUSS9u  pU	S;   d   e[	        U
[
        5      (       d   eSU
R                  5       ;   a  S	U
R                  5       ;   a  M   e   S
nS HN  n[        [         U5      (       d  M  [         R                  " X;S9nUR                  5       n[        XgUS9S	:X  a  MN   e   [         R                  " S/[         R                  S9nUR                  5       n[        XgUS9S	:X  a  GMV   e   g )NrO  )rT   rU   )r   rR   r   rl   T)rm   measure>   r   r   r   r   rV   
complex256
complex192r   l         @ )r  r  r	  r   r  dictkeysr  r  rn  r  r   )r`   rm   rp  r  rz  true_methodry   rU  r   
method_trytimesnot_fft_conv_supps               rd   test_choose_conv_methodr  &  sD    *D .A+		1$+/A		1$+/A'48F((( 21dD QJ!2222eT****EJJL(X-EEE  !=r,--GGA7FFH)!T:hFFF	 "> HHeWBHH-FFH!!T2h>>>/ *rg   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r0  )r  r]   r4  r5  r6  r   )r`   ra   rb   s      rd   "test_choose_conv_dtype_deprecationr  D  sJ     	

%V4A


.f=A			&E	F1  
G	F	Fr9  c                 :   S H  n[        S5      [        S5      /n[        S5      [        S5      /n[        X#US9S:X  d   eSnS	 HN  n[        [        U5      (       d  M  [        R                  " XES
9nUR                  5       n[        X#US9S:X  a  MN   e   M     g )NrO  rO   rU   rT   rP   rl   r   rV   r  r   )r   r   r  r  r  rn  )r`   rm   ry   rU  r  r  s         rd   test_choose_conv_method_2r  N  s     *QZ$QZ$!!T2h>>>!=r,--GGA7FFH)!T:hFFF	 "> *rg   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  pxS U4 H>  n	S	U-  n
[        XxU
4S
U	5        [        S5       H  n/ SQnXU'   [        XxXU	5        M     M@     SU-  S-
  n[        XxU4S
U5        g )NrO   {Gz?x   gffffff?r  r  rB  rN  rQ   r   r   rU   r  )r   ellipr  r  rp  r  r  r  r  rD  r!   r  r   )r`   r{   prz  r  r  approx_impulse_lenrb   ra   r  
signal_lenr  r  lengths                 rd   test_filtfilt_gustr!  ^  s     ll1dC>GA! C
rvvayARWWRVVC[266!9%<=>IINN3!?DA*+++
 	A:-E: !HDE$$Ke59  , !!B&Fvi,>?rg   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 )Nr[   r  rT   )qr  rU   )r  r   r   r  r   decimater_   r`   ry   s      rd   test_bad_argsTestDecimate.test_bad_args  s7    IIbMi!sa@i!qC@rg   c                     [         R                  " S5      n[        R                  " USSSSS9R	                  5       n[        X2S S S2   R                  [        5      5        g )Nr[   rU   rT   iirFr  ftype
zero_phaser  r   r   r&  roundr8   r  r  r_   r`   ry   rz   s       rd   test_basic_IIRTestDecimate.test_basic_IIR  G    IIbMOOAqAUuEKKMSqS6==/0rg   c                     [         R                  " S5      n[        R                  " USSSSS9R	                  5       n[        X2S S S2   R                  [        5      5        g )Nr[   rU   rT   firFr,  r/  r1  s       rd   test_basic_FIRTestDecimate.test_basic_FIR  r4  rg   c                     [         R                  " S5      n[        R                  " USSSS9nUR                  S:X  d   e[        R                  " USSSS9nUR                  S:X  d   eg )	N)r   r   rU   r   F)r  r.  )r  r   rT   )r   r  )r  r  r   r&  r  )r_   r`   r{   d0d1s        rd   
test_shapeTestDecimate.test_shape  s\    HHX__Qe<xx8###__Qe<xx8###rg   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 filterr6  Fr   r.  r   rl  r,   _test_phaseshiftr_   r`   rn  s      rd   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?  r6  Tr@  rA  rC  s      rd   test_zero_phase_FIR TestDecimate.test_zero_phase_FIR  s8     CJJ(BC!!4!@ !  rF  c                 $    U R                  SSS9  g )Nr+  Fr@  rB  r,  s     rd   test_phaseshift_IIR TestDecimate.test_phaseshift_IIR  s    Uu=rg   c                 $    U R                  SSS9  g )Nr+  Tr@  rK  r,  s     rd   test_zero_phase_IIR TestDecimate.test_zero_phase_IIR  s    Ut<rg   c           	      8   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H[  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[         R.                  " UR-                  5       U-  5      U   n[1        U[         R2                  " U5      SSS9  GM^     g )Nr  )r  r  r   r`  r;  rT   皙?rU   rx   皙?r6  r   r  rL  r6  r+  r   g?Fr-  r.  r   r  r  r  r  )r  r   r  r  r  r  r  r   windowstukeyr   dltira  cheby1freqzrF  denrp  r  r&  rT  r  rl  angler7   r  )r_   r   r.  r  r  t_totr  r  r   r  r%  r  d_tosr  systemwc_h_respsr  	h_resampssubnyqr  s                         rd   rB  TestDecimate._test_phaseshift  sw   #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 XXgllnY67?FFBMM&$9!%D2E  rg   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:  d   eg )Ng      Y@r  r  rU   g      >@r  r  rC  r   r6  )r-  r  )
r  r   sqrtrV  r  r7   linalgnormr   r&  )r_   r`   sfreqr  r  ry   x_outs          rd   test_auto_nTestDecimate.test_auto_n  s     IIaL5 GGBFObffQY%#+%>%BCC		q)2D92U3yy~~e$t+++rg   c                     [         R                  " [        R                  " S[        R                  S9S5      n[        [        R                  " U5      5      (       a   eg )NrV  r   rV   )r   r&  r  r  r   r  isnanr'  s      rd   test_long_float32TestDecimate.test_long_float32  s?     OOBGGF"**=rBrxx{#####rg   c                     [         R                  " [        R                  " S[        R                  S9S5      nUR
                  R                  [        R                  :X  d   eg )Nr;  r   rV   )r   r&  r  r  r   r   r)  r   r'  s      rd   test_float16_upcast TestDecimate.test_float16_upcast  s;    OOBGGCrzz:B?ww||rzz)))rg   c                    SnSnSn[         R                  " SS[        R                  -  U-  S-  SUS9u  pVnUR	                  [
        5      [        R                  " S[        R                  -  U-  U-  5      -  nUR	                  [
        5      [        R                  " S[        R                  -  U-  U-  5      -  n[         R                  " XVU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                  " XVU5      QU
P76 S S S2   n[        X5        [         R                  " U
SUSS9n[         R                  " / [         R                  " XVU5      QU
P76 S S S2   n[        XSSS9  g )Nr  rQ        @@rU   r  )r  fsrx   r[  r  r  FrT  TrB  vIh%<=r   )r   r    r  r  r  r  r  rW  r   r&  r   r!   r8   r   r7   )r_   r`   fcentrefwidthrv  r{   r  rz  r^  r  r   ynzpynzprefyzpyzprefs                  rd   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) 	&ooa&TB $&--a"8 $!"$$'aC) 	%e<rg   c                    SnSnSnSn[         R                  " XSS-  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[        UU5        g )Nr  rQ   ru  r  rU   )rv  rx   r   rT   r[  r  r  FrT  )r  r  r;  Tr6  )r   ra  r  rootsr  r  polyrW  r   r&  upfirdnr8   rC  )r_   r`   rx  ry  rv  numtapsbbasezbasezrotbzr^  r  r   rz  r{  r|  r}  s                    rd   test_complex_fir_dlti"TestDecimate.test_complex_fir_dlti  sM    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;&ooa&TB%%aAb9V$rg   r:  N)r<  r=  r>  r?  r(  r2  r7  r<  rD  rH  rL  rO  rB  rk  ro  rr  r~  r  rD  r:  rg   rd   r#  r#    sM    A
1
1
$B
A
>=/2b
,$*
=@"%rg   r#  z)jax arrays do not support item assignmentc                   n    \ rS rSrS rS rS r\R                  R                  SSS/5      S 5       r
S	rg
)TestHilberti5  c                     UR                  S/5      n[        [        [        U5        UR	                  S5      n[        [        [        USS9  g )Nr   r4  r   r  )r]   r   r   r   r   r'  s      rd   r(  TestHilbert.test_bad_args9  s9    JJ
|$j'1-IIcNj'12rg   c           
         SnUR                   nUR                  SSU-  US-  UR                  S9nUR                  U5      nUR	                  U5      nUR                  SU-  5      nUR	                  SU-  5      nUR                  XVXx/5      n	[        U	5      n
UR                  U
5      nUR                  UR                  U
5      UR                  U
5      5      nUR                  U
5      n[        XU5        [        XR                  U	R                  5      U5        [        USS S24   UR                  U* S-  US-  US-  UR                  S9U5        [        USS S24   UR                  SX3S-  UR                  S9U5        [        USS S24   UR                  U* S-  US-  US-  UR                  S9U5        [        USS S24   UR                  SX3S-  UR                  S9U5        [        UR                  U
SS S 24   5      XR5        g )	Nr  r   rU   r2  r   rT   r1  rO   )r  r   r   rV  rS  rU  r   rp  atan2ri  rT  r>   r  r  )r_   r`   r$  r  r  r  a1a2a3ra   rU  h_absh_angleh_reals                 rd   test_hilbert_theoretical$TestHilbert.test_hilbert_theoretical?  s   UUIIaRcI<VVAYVVAYVVAE]VVAE]HHbb%&AJq	((2771:rwwqz2 	Fw/E77177#3W= 	GAttG,IIrcAgrAvrCxrzzIR#	%
 	AttGbii2CxrzziJG	U 	GAttG,IIrcAgrAvrCxrzzIR#	% 	AttGbii2CxrzziJG	U 	BGGAadG,b:rg   c                     UR                  UR                  SUR                  S9S5      n[        USS9n[	        [        UR
                  SS9UR
                  5        [        [        USS S 24   5      USS S 24   S5        [        USSS	9nUR                  S
:X  d   e[        UR
                  SSS	9R                  S:X  d   e[        R                  " / SQ5      nUR                  U5      n[        USS S 24   USSS9  g )Nr  r   )rO   rR   r   r  r   r  r  )r  r  )rO   r  )r  rO   )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   r8   r  r>   r  r  r  r]   )r_   r`   ra   aaaana0hilbs         rd   test_hilbert_axisNTestHilbert.test_hilbert_axisNi  s    JJryy2::y6?QR !,bdd3GAadG,bAh; a2B'yyG###qssbq)//7:::  F G( F#C1Ivr>Jrg   r   r   r   c                     [        X!5      nUR                  SUS9nUR                  [        U5      5      R                  U:X  d   eg )Nr   r   )r  r  rT  r   r   r  s       rd   test_hilbert_typesTestHilbert.test_hilbert_types  s@    "88AU8+wwwx()//5888rg   r:  N)r<  r=  r>  r?  r(  r  r  r5  rB  r  r  rD  r:  rg   rd   r  r  5  s>    3(;T$KL [[Wy)&<=9 >9rg   r  c                   |    \ rS rSr\" SSS9S 5       rS r\R                  R                  SSS	/5      S
 5       r
Srg)TestHilbert2i  Tlist inputs are numpy-specificr   c                 &    [        / SQ/ SQ/5        g )NrS   r   )r   r,  s     rd   r  TestHilbert2.test_array_like  s    )Y'(rg   c                 z   UR                  S//5      n[        [        [        U5        UR	                  UR                  S5      S5      n[        [        [        U5        UR	                  UR                  S5      S5      n[        [        [        USS9  [        [        [        USS9  [        [        [        US	S9  g )
Nr   r^  r   r   r  r   r  )rU   r   )rU   )r]   r   r   r   r   r   r'  s      rd   r(  TestHilbert2.test_bad_args  s    JJ~&j(A. JJryy}i0j(A. JJryy}f-j(A3j(A8j(A6rg   r   r   r   c                     [        X!5      nUR                  SUS9nUR                  [        R                  " U5      5      R
                  U:X  d   eg )N)rU   rY   r   )r  r  rT  r   r   r   r  s       rd   test_hilbert2_types TestHilbert2.test_hilbert2_types  sD    "88G581wwvx01775@@@rg   r:  N)r<  r=  r>  r?  r@  r  r(  r5  rB  r  r  rD  r:  rg   rd   r  r    sP     d+KL) M)7 [[Wy)&<=A >Arg   r  c                   r   \ rS rSrSr\S 5       rS r\" SSS9S 5       r	\" SSS9\
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       5       r\" SSS9\
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       5       r\" SSS9S( 5       r\" SSS9S) 5       r\" SSS9\
R                  R                  S*/ S+Q/ S,Q/5      S- 5       5       rS. rS/rg0)1TestEnvelopei  z4Unit tests for function `._signaltools.envelope()`. c                 l    [        U5      UR                  :X  a  SSS.OSSS.n [        X40 UDSU0D6  g )Nr  r  r  r  )rA   r   r7   )r  rY  rm  r`   a_r_tols        rd   r  TestEnvelope.assert_close  sD     'r*bjj8 "51!%t4 	
 	H@7@C@rg   c                    [         R                  " [        SS9   [        [        R
                  " S5      SS9  SSS5        [         R                  " [        SS9   [        UR                  S5      S	S9  SSS5        S
 Ha  nSR                  [        [        U5      5      n[         R                  " [        SU S3S9   [        UR                  S5      US9  SSS5        Mc     [         R                  " [        SS9   [        UR                  S5      SS9  SSS5        S H>  n[         R                  " [        SS9   [        UR                  S5      US9  SSS5        M@     [         R                  " [        SS9   [        UR                  S5      SS9  SSS5        g! , (       d  f       GNl= f! , (       d  f       GNC= f! , (       d  f       GMT  = 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=.*r2  rO   rU   r  Nz&z.shape\[axis\] not > 0 for z.shape=.*)rO   r   rT   )r  )r   r  )Nr  z, zbp_in=\(z\) isn't a 2-tuple of.*rP   )bp_inz)n_out=10.0 is not a positive integer or.*r  )r  ))r   rO   r  )r   rV   z&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .*	undefinedresidual)	r5  r	   r   r   r  r  joinr  r*  )r_   r`   r  tss       rd    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   FF0=G<G<G&;G8
F-0
F?
G	
G#&
G5	8
HrJ   r^  rL   c           
         [        U5      nX!R                  :X  a  UR                  OUR                  nUR	                  / SQUS9nUR	                  / SQUS9n[
        R                  " U5      nUR                  S   nUR                  [        USSSS95      u  pU R                  [
        R                  " U5      UR	                  / S	QUS9S
US9  U R                  [
        R                  " U	5      UR	                  / SQUS9SUS9  UR                  [        USSSS95      u  pU R                  U
S-  USUS9  U R                  XSUS9  UR                  [        USSSSU-  S95      u  pU R                  USSS2   USUS9  U R                  USSS2   U	SUS9  UR                  [        USSSS95      u  pU R                  XSUS9  U R                  [
        R                  " U5      UR	                  / SQUS9SUS9  [        USSSS9nU R                  UUSUS9  UR	                  USS9nUSS=== S-  sss& [
        R                  " UUS9nU R                  UR                  U5      USUS9  UR                  [        USSSS95      u  nnU R                  UUR                  X5      S US9  U R                  [
        R                  " U5      UR	                  XSS9S!US9  g)"zEEnsure that the various parametrizations produce compatible results. )r  rU   rU   rO   r   r   )r  r   r   rR   r   r   r   r   r   ra  allTr  squaredrP   rU   r   r   r   Envelope calculation errorrm  r`   )rP   r   r   rO   r   Residual calculation errorFrU   z3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrO   )r  r  r  Nz(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorlowpassz/`residual='lowpass'` envelope calculation error)rP   r   r   r   r   z/`residual='lowpass'` residual calculation errorz*`residual=None` envelope calculation errorrm  rT   )r  zReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)rA   r   r   r   r]   rb  irfftr  unstackr   r  rfftifftrT  r  r   )r_   r`   rW  rX  ZZr_ar{   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                        rd   test_envelope_verify_parameters,TestEnvelope.test_envelope_verify_parameters  s$     ##zz1r||r}}JJ(J5zz4DzALLOGGAJ jj!VeT!RS&++e,**_D*A:r 	 	C 	&++d+**_D*A:r 	 	C ZZFUE RS
$'5S 	 	! 	$S 	 	! jjQAaCH
 	%!*eHR 	 	Q$ss)THR 	 	Q jj!ViQU!VW%OTV 	 	X&++d+**_D*AOTV 	 	X FT4@%Jr 	 	S jjj&AB1kk##"''#,?B 	 	Hjj#vt!TUt%5!7Br 	 	K&**T*BJJtJ,HBr 	 	Krg   z@               Z,        bp_in,     Ze2_desired,      Zr_desired)rT   r   rU   rU   r   )rT   Nr  rT   r   r   r   r   )rP   r   rU   r   r   )r   Nr  )rP   r   r   rU   r   NN)r   r   rU   rU   r   ra  )rU   r   r   r   r   )r   r   r   rU   r   )rP   r   rU   rU   r   )rO   )rP   r   rO   rP   r   )NrT   )r   r   rO   rP   r   r  c           	      X   UR                  XR                  S9nUR                  X5R                  S9nUR                  XER                  S9n[        R                  " U5      nUR	                  [        XbSSS95      u  pxUR	                  [        XbSSS95      u  pS XxX4 5       u  ppUR                  X5R                  S9nUR                  XER                  S9nU R                  XSUS9  U R                  XS	US9  US
   b  SXBS
   S& U R                  XSUS9  U R                  XSU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   r  Tr  r  c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr5  rb  r  r  z_s     rd   r  :TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>2  s     !U<Tb&++b//<T   #%z+Envelope calculation error (residual='all')r  z+Residual calculation error (residual='all')rT   Nr   z/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))r]   r   rb  r  r  r   r   r  )r_   r  r  Ze2_desired
Zr_desiredr`   r{   ze2zrze2_lpzr_lpZe2ZrZe2_lpZr_lps                  rd   test_envelope_real_signals'TestEnvelope.test_envelope_real_signals  sF   ( JJq

J+jjJJj?ZZ
**Z=
LLO**XaMN

8AyRV#WX!USf<T!UjjMMjBZZ
--Z@
#KPR 	 	T"KPR 	 	T 8$%JQxy!&OTV 	 	X%OTV 	 	Xrg   zG               Z,        bp_in,         Ze2_desired,         Zr_desired)r   rQ   r   rQ   r   rQ   r   rV   r   rQ   )rT   rQ   r   rQ   rU   r   rU   rT   r   r   r   rU   )rT   rU   rR   r   rR   rO   )r   rR   r   r[   r   rR   )rT   rU   r   r   r   rO   c           	         UR                  XR                  S9nUR                  X5R                  S9nUR                  XER                  S9n[        R                  " [        R
                  " U5      5      nUR                  [        XbSSS95      u  pxS Xx4 5       u  pU R                  XSUS9  U R                  XSU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   r  Tr  c              3   v   #    U  H/  n[         R                  " [         R                  " U5      5      v   M1     g 7fr5  rb  fftshiftr   r  s     rd   r  =TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>U  s$     GYr6??6::b>22Ys   79r  r  r  N)	r]   r   r   rb  r  	ifftshiftr  r   r  )r_   r  r  r  r  r`   r{   r  r  r  r  s              rd   test_envelope_complex_signals*TestEnvelope.test_envelope_complex_signalsB  s     JJq

J+jjMMjBZZ
--Z@
KK((+,**XaMNGcYG#:r 	 	C":r 	 	Crg   c                 d   [        U5      nX!R                  :X  a  UR                  OUR                  n[        R
                  " UR                  / SQ/ SQ/US95      nUR                  / SQ/ SQ/US9nUR                  / SQ/ SQ/US9nUR                  [        USS	S
95      u  pxUR                  [        UR                  SSS
95      u  pS XyR                  XR                  4 5       u  ppU R                  XSUS9  U R                  XSUS9  U R                  XSUS9  U R                  XSUS9  g)z.Test for multi-channel envelope calculations. )r  r   rU   rU   r   )r   r   rP   rP   r   r   r  )r   r   r   r   r   r  )r   r   r   r   r   TrT   )r  r  r   c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr5  r  r  s     rd   r  CTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>i  s     O6NFKKOO6Nr  2d envelope calculation errorr  2d residual calculation error"Transposed 2d envelope calc. error"Transposed 2d residual calc. errorN)rA   r   r   r   rb  r  r]   r  r   r  r  )r_   r`   rW  rX  r{   r  r  r  r  ye2TyrTr  Ye2r  Yrs                  rd   #test_envelope_verify_axis_parameter0TestEnvelope.test_envelope_verify_axis_parameter\  s5     ##zz1r||r}}LL%6$HPTUVjj/3C!D'+ ! -ZZ/ B$ZO
**XaA>?JJxTBC	OsFFB6NO"#0OTVW"/NSUV"F2 	 	
 	 D 	 	
rg   c                    [        U5      nX!R                  :X  a  UR                  OUR                  nUR	                  / SQ/ SQ/US9n[
        R                  " [
        R                  " USS95      nUR	                  / SQ/ SQ/US9nUR	                  / SQ/ SQ/US9n[        S	S
SS9nUR                  [        U4SS0UD65      u  pUR                  [        UR                  4SS0UD65      u  pS XR                  XR                  4 5       u  pnnU R                  XSUS9  U R                  XSUS9  U R                  XSUS9  U R                  UUSUS9  g)zBTest for multi-channel envelope calculations with complex values. )r  rQ   r   rQ   rU   )rT   rV   r   rV   rU   r   rT   r  r  )r  r   r`  r   r  r  r  r  T)r  r  r  r  r   c              3   t   #    U  H.  n[         R                  " [         R                  " U5      S S9v   M0     g7f)rT   r  Nr  r  s     rd   r  KTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>  s+      @&> #OOFJJrNC&>s   68r  r  r  r  r   N)rA   r   r   r   r]   rb  r  r  r  r  r   r  r  )r_   r`   rW  rX  inpr{   Ze2_desZr_deskwr  r  r  r  r  r  r  r  s                    rd   +test_envelope_verify_axis_parameter_complex8TestEnvelope.test_envelope_verify_axis_parameter_complext  sd     ##zz1r||r}}jj+->?tjLKK((156**.0BDD*Q_o>dK%>**Xa6a6267JJx:!:r:;	@'*FFB&>@"b 	#,KPRS"*IbQC 	 	
 	"f+OTVWrg   X)rP   r   r   rT   rU   )rP   r   r   rU   rT   rU   c                     UR                  XR                  S9n[        R                  " U5      nUR	                  [        U5      5      n[        USSS9nU R                  XESUS9  g)z0Compare output of `envelope()` and `hilbert()`. r   r  Nr  z!Hilbert-Envelope comparison errorr  )r]   r   rb  r  rp  r   r   r  )r_   r  r`   ry   e_hile_envs         rd   test_compare_envelope_hilbert*TestEnvelope.test_compare_envelope_hilbert  s\     JJq

J+LLOwqz"L48%,OTVWrg   c                    [         R                  " / SQ5      n[        R                  " USS9n[	        USSS9u  p4[	        US-   SSS9u  pV[        U[        R                  " S5      SS9  [        XBSS9  [        U[        R                  " SUR                  S	9SS9  [        XbR                  UR                  5      SS9  g
)aD  Test behavior when input is a cosine at the Nyquist frequency.

Resampling even length signals, requires accounting for unpaired bins at the
Nyquist frequency (consults the source code of `resample`).

Since `envelope` excludes the Nyquist frequency from the envelope calculation,
only the residues need to be investigated.
)r   r   r   rR   )rF  r  )r  r  r   r  r   r   N)
rb  r  r   rB  r   r7   r  r  r   r  )r_   x4x6y6y6_resz6z6_ress          rd   test_nyquistTestEnvelope.test_nyquist  s     \\)$__RQ'bE:
b2gQ?
BHHQKe4/BHHQbhh7eD		"(( 3%@rg   r:  N)r<  r=  r>  r?  __doc__staticmethodr  r  r@  r  r5  rB  r  r  r  r  r  r  r  rD  r:  rg   rd   r  r    s   >A A76 k*AB8K C8Kt k*AB[[J
i/	J
i/	J
</	J
/	J
/	J
i/	J
i/	J	LMXM CXB k*AB[[Q
<,<	Q
,<	Q
)<>P	Q	C CC& k*AB
 C
. k*ABX CX, k*AB[[S?4F"GHX I CXArg   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>   )r  r  r_truep_truer$  distancerowscolss           rd   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Crg   c                    [        / SQ/ SQ5      u  p#[        U5      S:X  d   e[        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:X  d   e[        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 )NrS   r  rO   r   )rU   rU   rO   rT   )rT   rT   rT   rO   rU   )rT   rT   rT   rU   rU   )rT   rT   rT   rU   rU   rO   T)include_powersrR   )rT   rT   rU   rU   rO   )rT   rU   rU   rO   )rT   rT   rT   rU   rO   rP   rQ   )r3   r  r>   r  r  )r_   r`   factorsr  s       rd   test_compute_factors1TestPartialFractionExpansion.test_compute_factors  s>   (I>7|q   GAJ	(:;GAJ(=>GAJ(@AD"''*<"=>(I8<>7|q   GAJ(@AGAJ(=>GAJ	(:;GAJ(@AGAJ(=>GAJ(@AD"''*<"=>rg   c                 ^    [        / SQSS5      u  p#[        U/ SQ5        [        U/ SQ5        g )N)r  gjt?g?5^I?r  g/$ @r  rS  r  r  r  )r4   r7   r_   r`   uniquemultiplicitys       rd   test_group_poles-TestPartialFractionExpansion.test_group_poles  s*    +0#u >0i0rg   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:X  d   e[        SS// SQ5      u  p#n[        USS/5        [        USS/5        UR                  S:X  d   e[        SS// SQ5      u  p#nU R                  X#/ SQ/ SQ5        UR                  S:X  d   e[        SS// SQ5      u  p#nU R                  X#/ SQ/ SQ5        UR                  S:X  d   e[        / 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:X  d   e[        / S!Q/ S"Q5      u  p#nU R                  X#/ S#Q/ S$Q5        UR                  S:X  d   e[        / S%Q/ S&Q5      u  p#nU R                  X#/ S'Q/ S(Q5        UR                  S:X  d   e[        SS// S)Q5      u  p#n[        USS*/5        [        USS/5        UR                  S:X  d   e[        / 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:X  d   eg )5NrQ   rO   r  r   rL  r   r   rO   )gZd;O?g9#Jg&䃞ͪrP   r#  )g-1ڿgeagvq-?g      rL  r   rT   rR   r   ir  r   rT   )rT   r   r  rO   r   rU   )rU   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rT   rQ   r   rP   )r   rT   rO   )r   r  r  )rO   gg)\(?g^I+g rh?)rT   gffffffgQg~jt?)r  rP   rT   )r\  g333333ӿrR  )rT   rU   r  r        пr  )rT   r   rY  )rT   r   r   r   r   )rT   y              ?y             r   )r                r   rT   )rO   r   rR   rT   rO   rO   rT   rS   r   r   r   )rT   r  rU   rQ   )rU   rO   r   r  )r   rU   rO   r   rZ  E   r   rZ   )rT   r  rP   r  )rP   y            @y            )rT         ?      ru   )r/   r>   r   r*  r_   r`   r  r  rz  s        rd   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(vv{{1a&+.aA1v&AAw'vv{{1a&"9:a##?)	+ vv{{1a&,/a##A*lCvv{{813aAz*A/0A1v&1#z*aAe}-A2w'vv{{*&67a##A$8:J	Lvv{{)\2a##A)\Bvv{{1b':.aAAw'A1v&vv{{*j1aABx(A1v&As#-4aARy)A1v&A2w'*n5a##A*C$7	9vv{{rg   c                 b   [        / SQ/ SQ5      u  p#n[        / SQ/ SQ5      u  pVn[        / SQ/ SQ5      u  pn
[        / SQ/ SQ5      u  pn[        X%5        [        X(5        [        X+5        [        X65        [        X95        [        X<5        [        XG5        [        XJ5        [        XM5        g )Nr8  r9  )r   rQ   rO   r  r   )r   rL  r   r   rO   )r   r   rQ   rO   r  r   )r   r   r   rL  r   r   rO   )r/   r>   r_   r`   r0p0k0r1p1k1r2p2k2r3p3k3s                 rd   test_residue_leading_zeros7TestPartialFractionExpansion.test_residue_leading_zeros  s    ]M:
-}=
],<=
02HI
B#B#B#B#B#B#B#B#B#rg   c                    [        SS// SQ5      u  p#n[        USS/5        [        USS/5        UR                  S:X  d   e[        SS5      u  p#nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        R                  " [
        SS9   [        SS5        S S S 5        g ! , (       d  f       g = f)Nr   r:  r  rL  rT   Denominator `a` is zero.r2  )r/   r>   r   r5  r	   r   rA  s        rd   test_resiude_degenerate4TestPartialFractionExpansion.test_resiude_degenerate$  s    1a&),aA1v&ABx(vv{{!Q-avv{{vv{{vv{{]]:-GHAqM IHHs    B66
Cc                 L   [        / 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:X  d   e[        / SQ/ SQ5      u  p#nU R                  X#/ SQ/ SQ5        UR                  S:X  d   e[        / 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:X  d   e[        SS/[        R
                  " SS"/SS#/5      5      u  p#n[        US$S%/5        [        US&S/5        UR                  S:X  d   e[        / 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:X  d   e[        S/ S*Q5      u  p#n[        USS/5        [        USS/5        UR                  S:X  d   e[        S/ S+Q5      u  p#n[        USS/5        [        US#S/5        UR                  S:X  d   e[        / 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:X  d   e[        / 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:X  d   eg )9N)rT   rR   rR   rU   )rT   y             r  r<  )y             @y      @      @y            ()r   rT   rT   rx   )rT   rU   rT   )rT   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿrP   r#  gŏ1w@rT   r   )rT   rY  rR   rU   rO   r   r   r=  )rP   rY  rO   r>  )rT   r=  rL  rP   )rU   r  rL  r  g      r  r  )r  rO   rL  r   )g
ףp=
?gQ?皙?)r  UUUUUUտrZ  r0  r  g
gUUUUUU@r;  rT   r  rT   r<  r   )rT   r   r  )rT   g      r  )rT   rR   rU   r=  rN  rR   r  r   ir  rV   r  )rT   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿrY  yjM?%uyjM?%u?)ySsA?ySsAr  y-?8gDio?y-?8gDio)r0   r*  r>   r   r  polymulrA  s        rd   test_residuez_general2TestPartialFractionExpansion.test_residuez_general3  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&vv{{9l3a##A*lCvv{{?K8aAT{+AAw'ARy)B41a##A$57H	Jvv{{Aq62::q$i!S#BCaAt}-As|,vv{{:2w/aAs#As#A2w'1q#h'aAs#At$vv{{1m,aA1v&ASz*vv{{1./aAAw'Ac{+vv{{9j1aAQx(A1v&As#Aq6:.aAAw'A1v&vv{{<4aARy)A1v&AAw'9&9:a##A%N%N,- 	$ 	/ vv{{rg   c                 b   [        / SQ/ SQ5      u  p#n[        / SQ/ SQ5      u  pVn[        / SQ/ SQ5      u  pn
[        / SQ/ SQ5      u  pn[        X%5        [        X(5        [        X+5        [        X65        [        X95        [        X<5        [        XG5        [        XJ5        [        XM5        g )Nr8  r9  )rQ   rO   r  r   r   )rL  r   r   rO   r   )rQ   rO   r  r   r   r   )rL  r   r   rO   r   r   r   )r0   r>   rE  s                 rd   test_residuez_trailing_zeros9TestPartialFractionExpansion.test_residuez_trailing_zeros  s     m];
.>
m-=>
13IJ
B#B#B#B#B#B#B#B#B#rg   c                    [        SS// SQ5      u  p#n[        USS/5        [        USS/5        UR                  S:X  d   e[        SS5      u  p#nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   e[        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  rL  rT   rU  r2  z6First coefficient of determinant `a` must be non-zero.r  )r0   r>   r   r5  r	   r   rA  s        rd   test_residuez_degenerate5TestPartialFractionExpansion.test_residuez_degenerate  s    Aq69-aA1v&ABx(vv{{1a.avv{{vv{{vv{{]]:-GHQN I ]]:"01 Q%1 1 IH1 1s    C&C7&
C47
Dc                     / SQn/ SQn/ n/ SQn/ SQnS HE  n[        X#XGS9u  p[        X5        [        XSS9  [        X#XGS9u  p[        X5        [        XSS9  MG     g )	N)r  UUUUUUſg)r   r  rY  )r  rT   rO   )rT   r   rV   r   avgr(  r  r*  r  r+  rtypeFr$  r#   r7   r$   )
r_   r`   r  r  rz  
b_expected
a_expectedrj  rb   ra   s
             rd   *test_inverse_unique_roots_different_rtypesGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  si    % 
"
 IE!/DAA*Au=10DAA*Au= Irg   c                     / SQn/ SQn/ n/ SQn/ SQn/ SQnS HC  n[        X#XHS9u  p[        XSS	9  [        XS
S9  [        X#XHS9u  p[        XSS	9  [        XS
S9  ME     g )Ng333333?g98ȿrf  gll?r   r  r  rY  )r  r   rT   rO   )rf  gUUUUUUgUUUUUU?rO   )rT   rN  r^  r  r   rg  ri  r   r   Fr$  rk  )r_   r`   r  r  rz  rl  b_expected_zrm  rj  rb   ra   s              rd   ,test_inverse_repeated_roots_different_rtypesITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  so    -#
,&
HE!/DAA6Au=10DAA%8Au= Irg   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)Nrq  rr  z`rtype` must be one ofr2  r)  ri  )r5  r	   r   r#   r$   rA  s        rd   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  pV[        US/5        [        USS/5        g )NrT   rU   r   r  g       )r$   r7   )r_   r`   r  r  rz  rb   ra   s          rd    test_invresz_one_coefficient_bug=TestPartialFractionExpansion.test_invresz_one_coefficient_bug  s?    CCCqQA3C;'rg   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 )NrT   r   r@  rU         ?      rT   r   ru   y      @      y      !      ?y      @      
@rT   y             y      ?       @y      ?      r  r@  r  rS   )rT                     ?       r~  rV   rT               rP   r   rU   r   r(  rP   r  r   r   r   rO   rO   rO   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prT   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@r   rU   )rT   r   rL  rw   r[  )r#   r>   r_   r`   rb   ra   s       rd   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*rg   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 )NrT   r   r}  r  r  r  r  r@  r  rS   )g      @r  r  y            r[   r  r  r  )rR   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr  r   rU   )r   rT   r  rU   r[  )r$   r>   r  s       rd   test_invresz)TestPartialFractionExpansion.test_invresz  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*rg   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 )NrT   r   r   rU   )r#   r>   r$   r  s       rd   test_inverse_scalar_arguments:TestPartialFractionExpansion.test_inverse_scalar_arguments  sY    aAA1v&A2w'q!QA2w'A2w'rg   r:  N)r   )r<  r=  r>  r?  r   r*  r/  r5  rB  rR  rV  r]  r`  rc  rn  rt  rw  rz  r  r  r  rD  r:  rg   rd   r"  r"    se    	D 	D?&1BH$ Ob$"&&>&>"-(+0+0(rg   r"  c                       \ rS rSrS r\" SSS9S 5       rS rS rS	 r	S
 r
S r\" SSS9S 5       rS rS rS rS rS rS rSrg)TestVectorstrengthi  c                 0   UR                  S/5      nSnSnSn[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        R                  " XdSS9(       d   e[        R                  " US[        R
                  -  U-  SS9(       d   eg )	Nr  r  r  rS  r   v!>abs_tolrU   r]   r%   rp  r  iscloser  r_   r`   eventsperiodtarg_strength
targ_phasestrengthphases           rd   test_single_1dperiod'TestVectorstrength.test_single_1dperiod  s    RD!
(8}}!!!zzQ||HVDDD||E1tww;#;VLLLrg   r   zphase modulo 2*pirL   c                 N   UR                  S/5      nUR                  / SQ5      nUR                  S/S-  5      nUR                  / SQ5      n[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        Xd5        [	        USUR
                  -  U-  5        g )Nr  )rT   rU   r  r  rO   )r  r  rS  rT   rU   )r]   r%   rp  r=   r>   r  r  s           rd   test_single_2dperiod'TestVectorstrength.test_single_2dperiod(  s    RD!J'

B4!8,ZZ.
(8}}!!!zzQ!(:E1ruu9z#9:rg   c                 2   UR                  / SQ5      nSnSnSn[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        R                  " XdSS9(       d   e[        R                  " US[        R
                  -  U-  SS9(       d   eg )Nr  r  r  r  r  r  rU   r  r  r   r  r  r  r  s           rd   test_equal_1dperiod&TestVectorstrength.test_equal_1dperiod6  s    :;
(8}}!!!zzQ||HVDDD||E1tww;#;VLLLrg   c                 P   UR                  / SQ5      nUR                  SS/5      nUR                  S/S-  5      nUR                  SS/5      n[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        Xd5        [        USUR                  -  U-  5        g )Nr  rT   rU   r  r  r  r]   r%   rp  r>   r  r  s           rd   test_equal_2dperiod&TestVectorstrength.test_equal_2dperiodD  s    :;QH%

B4!8,ZZd,
(8}}!!!zzQH4E1ruu9z#9:rg   c                 2   UR                  / SQ5      nSnSnSn[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        R                  " XdSS9(       d   e[        R                  " US[        R
                  -  U-  S	S9(       d   eg )
NrS  g?g @gffffff@g333333$@rT   r  rS  r   r  r  rU   r  r  r  s           rd   test_spaced_1dperiod'TestVectorstrength.test_spaced_1dperiodQ  s    56
(8}}!!!zzQ||HVDDD||E1tww;#;VLLLrg   c                    UR                  / SQ5      nUR                  SS/5      nUR                  S/S-  5      nUR                  SS/5      n[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        Xd5        [	        U5      UR
                  :X  a  SS	0O0 n[        USUR                  -  U-  40 UD6  g )
Nr  rT   r  r  rU   rS  r\  r  g>)r]   r%   rp  r>   rA   r   r7   r  )	r_   r`   r  r  r  r  r  r  rtol_kws	            rd   test_spaced_2dperiod'TestVectorstrength.test_spaced_2dperiod_  s    56QG$

B4!8,ZZR)
(8}}!!!zzQH4$4R$8BJJ$F64.Bq255y:5AArg   c                 6   UR                  / SQ5      nSnSnSn[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        R                  " Xd5      (       d   e[        R                  " US[        R
                  -  U-  5      (       d   eg )Nr  r        ?rT   UUUUUU?r  r   rU   r  r  s           rd   test_partial_1dperiod(TestVectorstrength.test_partial_1dperiodm  s    N+
(8}}!!!zzQ||H4444||E1tww;#;<<<<rg   c                 P   UR                  / SQ5      nUR                  / SQ5      nUR                  S/S-  5      nUR                  / SQ5      n[        X#5      u  pgUR                  S:X  d   eUR                  S:X  d   e[        Xd5        [        USUR                  -  U-  5        g )Nr  )r  r  r  r  r  rP   )r  r  r  r  rT   rU   r  r  s           rd   test_partial_2dperiod(TestVectorstrength.test_partial_2dperiod|  s    N+,-

G9q=1ZZ 01
(8}}!!!zzQH4E1ruu9z#9:rg   c                     UR                  / SQ5      nSnSn[        X#5      u  pVUR                  S:X  d   eUR                  S:X  d   e[        R                  " XTSS9(       d   eg )Nr   r  r  r  r  r   r  r  )r]   r%   rp  r  r  r_   r`   r  r  r  r  r  s          rd   test_opposite_1dperiod)TestVectorstrength.test_opposite_1dperiod  s]    -.(8}}!!!zzQ||HVDDDrg   c                     UR                  / SQ5      nUR                  S/S-  5      nUR                  S/S-  5      n[        X#5      u  pVUR                  S:X  d   eUR                  S:X  d   e[        XT5        g )Nr  r  rV   r  rT   )r]   r%   rp  r>   r  s          rd   test_opposite_2dperiod)TestVectorstrength.test_opposite_2dperiod  so    -.RD2I&

B4"9-(8}}!!!zzQH4rg   c                 Z    UR                  SS//5      nSn[        [        [        X#5        g )NrT   rU   r  r]   r   r   r%   r_   r`   r  r  s       rd   test_2d_events_ValueError,TestVectorstrength.test_2d_events_ValueError  s'    aVH%j.&Arg   c                 X    SnUR                  S//5      n[        [        [        X#5        g )Nr  rT   r  r  s       rd   test_2d_period_ValueError,TestVectorstrength.test_2d_period_ValueError  s%    aSE"j.&Arg   c                 6    SnSn[        [        [        X#5        g )Nr  r   r   r   r%   r  s       rd   test_zero_period_ValueError.TestVectorstrength.test_zero_period_ValueError  s    j.&Arg   c                 6    SnSn[        [        [        X#5        g )Nr  r   r  r  s       rd   test_negative_period_ValueError2TestVectorstrength.test_negative_period_ValueError  s    j.&Arg   r:  N)r<  r=  r>  r?  r  rA  r  r  r  r  r  r  r  r  r  r  r  r  r  rD  r:  rg   rd   r  r    s    M w':;; <;M;MB= w':;; <;	E	5B
B
B
Brg   r  r  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  [        X4-   /U5      nO[        X4U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)
NrT   rU   rO   r"  c              3   B   #    U  H  n[        U[        5      v   M     g 7fr5  )r  r   )r  ry   s     rd   r  )test_nonnumeric_dtypes.<locals>.<genexpr>  s     6v!z!W%%vs   r  zmust be at least 1-Dr2  ry   )r   r  r  r   r
  r   r  r  r(   r  r
   r'   r5  r	   r   )r  r`   ry   rb   ra   rY  r  r  s           rd   test_nonnumeric_dtypesr    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))r   r   r   r   c                   t   \ rS rSr\" SSS9S 5       r\" SSS9S 5       r\" SSS9S 5       rS r\" SS	S9S
 5       r	\" SS	S9\" SSS9S 5       5       r
\" SS	S9S 5       r\" SSS9\" SS	S9S 5       5       r\" SS	S9S 5       r\" SS9S 5       r\R                   R"                  \" SS9S 5       5       rSrg)TestSOSFilti  rJ   zbuffer array is read-onlyrL   c                 R   [        X!5      nUR                  SSSUS9nUR                  SS/US9nUR                  SS/US9nUR                  / S	QUS9n[        [        R                  XE45      u  px[        Xx5      n	UR                  U	5      n	[        [        X5      U5        UR                  SS/US9nUR                  SS/US9nUR                  / S
QUS9n[        [        R                  XE45      u  px[        Xx5      n	UR                  U	5      n	[        [        X5      U5        UR                  / SQ5      nUR                  / SQ5      nUR                  S5      nUR                  XE45      n	UR                  U	S5      n	[        X5      n
[        XR                  / SQ5      5        g )Nr   rQ   rR   r   rT   r   r  r0  r1  r8  )r  rT   r   )r  r   r   r   )rT   rR   )r  rU   rU   rU   rU   rU   rU   rU   )r  rR  r]   r  r  r'   r=   r(   r  concatr   r7   )r_   r  r`   ry   rb   ra   r4  bbr  r  rz   s              rd   
test_rank1TestSOSFilt.test_rank1  sw   R_KK1arK*JJ2wbJ)JJT{"J- jj-Rj8RZZ!(Rnjjo!'#/37 JJ1vRJ(JJ1vRJ(jj,Bj7RZZ!(Rnjjo!'#/37JJ{#JJ{#GGAJiijjf%CO::&@ABrg   c                 J   [        X!5      nSn[        R                  " U5      nUR                  SUS-
  XAS9nUR	                  XS5      nUR                  SS/US9nUR                  SS/US9nUR                  / SQ/ SQ/ SQ/ SQ/US9nUR                  / S	Q/ S
Q/ SQ/ SQ/US9n	[        [        R
                  Xg45      u  p[        X5      nUR                  U5      n[        XSS9n[        X5        [        X5      nUR                  U5      n[        XSS9n[        X5        g )NrJ  r   rT   r   r   r  rK  rL  rQ  rR  rS  rT  r  )r  r  r  rR  r   r]   r  r  r'   r(   r=   )r_   r  r`   r  r  ry   rb   ra   rM  rU  r  r  r  rz   s                 rd   
test_rank2TestSOSFilt.test_rank2  s!   R_IIe$	KK9q=)K>JJq JJ2wbJ)JJSzJ,**iIyI!#  % **i])+24  6 RZZ!(RnjjoC#!'-RnjjoC#!'-rg   c                 $   [        X!5      nSn[        R                  " U5      nUR                  SUS-
  U5      nUR	                  XS5      nUR                  SS/US9nUR                  SS/US9n[        [        R
                  Xg45      u  p[        X5      n
UR                  U
5      n
[        X5      n[        UR                  S   5       HB  n[        UR                  S   5       H#  n[        XUS4   [        XgX\US4   5      5        M%     MD     g )Nrg  r   rT   r   r   r  .)r  r  r  rR  r   r]   r  r  r'   r(   r   r  r=   r   )r_   r  r`   r  r  ry   rb   ra   r  r  r  rz   r   js                 rd   r  TestSOSFilt.test_rank3  s    R_IIe$	KK9q=)4JJq JJ2wbJ)JJSzJ, RZZ!(RnjjoCOqwwqz"A1771:&)!q#I,a1c	l8ST ' #rg   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
[        UR                  XU
45      u  pn
XU
4$ )NrU   r  lowr  )r   r    r  r   r  r_r  r]   )r_   r`   b1r  b2r  b3r  rb   ra   r  s              rd   _get_ab_sosTestSOSFilt._get_ab_sos+  s    q$.q$.q$.KKB+R0KKB+R0hhbfruuRV}beeBFmDE

Q3K0	cSyrg   item assignmentc           
         U R                  U5      u  p4n[        R                  R                  S5      R	                  U5      nUR                  U5      n[        X!5      n[        XCUS S UR                  S5      S9u  pxUR                  U[        XCUSS  US9S   45      n[        U[        XCU5      5        [        XVS S UR                  S5      S9u  pUR                  U	[        XVSS  US9S   45      n	[        Xy5        [        U5      nUR                  SUS9n[        XVUS9u  p[        XR                  S5      S	S
9  [        XS	S
9  g )Nr  r  rR   r>  r   r   r   r   Fr$  )r  r  r  rE  r  r]   r  r   r  r  r7   r(   r*   r  )r_   r  r`   ra   rb   r  ry   y_truer?  r  rz   rC  s               rd   test_initial_conditions#TestSOSFilt.test_initial_conditions6  s2   $$R(	cIINN2%%b)JJqMR_ Q1Sb6bhhqk:
FGA!BC&R$@$CDEa 01C3BBHHV,<=			5'#v""=a"@AB& _GGARG 2&771:59E2rg   r  zfancy indexing not supportedc                    [        X!5      nUR                  SUS9nU R                  U5      u    pE[        U5      nUR	                  USUR
                  -   5      n[        R                  " [        5         [        XSUS9  S S S 5        [        XbS9nUR	                  XvR
                  S   SSUR
                  S   45      n[        R                  " [        5         [        XSUS S 2S S 2S S 2/ S	Q4   S9  S S S 5        [        XSUS9u  p[        US
   UR                  S5      SS9  [        U	S S 2SSS S 24   USS9  g ! , (       d  f       N= f! , (       d  f       N_= f)Nr   r   r  r>  r  r   rT   r   )r   rT   rT   r  Fr$  )r  r  r  r*   r   r  r5  r	   r   r(   r?   r7   )
r_   r  r`   ry   r`  r  r?  zi_ndrz   rC  s
             rd   test_initial_conditions_2%TestSOSFilt.test_initial_conditions_2P  s     R_GGARG $$R(	1_ JJq&177*+]]:&Cr" ' "

588A;1bhhrl"CD]]:&CuQ1i%789 ' 5)$?1aA:> '& '&s   4D;E;
E	
Ec                    [         R                  R                  S5      R                  SSSS9nUR	                  U5      nUR                  U5      n[        R                  " SSSS	9n[        U6 nUR                  U5      nUR                  S   nS
n[        UR                  5      nSX'   [        U/U-   5      nUR                  U5      n	[        XSXyS9u  p[        XSS S 2S S2S S 24   XyS9u  p[        XSS S 2SS 2S S 24   X}S9u  pUR                  X4US9n[        UU
SSS9  [        XSSS9  [!        U5      nUR#                  UUS
SS
45      nUUS S 2SS
2S S 24   -  n[        XSUUS9S   n[%        U6 u  nnUR                  U5      UR                  U5      nn['        UU5      nUR#                  US
[)        U5      S
45      nUUS S 2SS
2S S 24   -  n[+        UUX7US9S   n[        UUSSS9  g )N   r   rQ   )rU   r  rO   r   rR   r  r  r  rT   rU   r\  r  rB  rw  r   )r  r  r  rh  r  r]   r   r    r"   r  r  r  r  r(   r  r7   r*   r   r!   r   r@   r   )r_   r  r`   ry   r  r  	nsectionsr  shpz0r  rC  r  r  r  r  rz   r?  rb   ra   y_tfs                        rd    test_initial_conditions_3d_axis1,TestSOSFilt.test_initial_conditions_3d_axis1h  s   
 II!!#&..q!*.EHHRLJJqM mmAtE2smjjoIIaL	  177m	YK#%&XXc] d2 2A2qk<12qk< IIrhTI*2E6U7 _ZZY1a01!AqsAI,C"-a0s|1zz!}bjjm11ZZQQ/0!AqsAI,q!Qb1!44e%8rg   r   zissues a RuntimeWarningc                    [        X!5      nUR                  SUS9nUR                  S5      nUR                  S5      n[        R                  " [
        SS9   [        XCUSS9  S S S 5        S	US S 2S
4'   [        R                  " [
        SS9   [        XCUSS9  S S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)N)rO   r  rO   r   )rP   rR   )rP   rO   rO   rU   zshould be all onesr2  rT   )r?  r  r  rO   zInvalid zi shape)r  r'  r  r5  r	   r   r(   )r_   r  r`   ry   r  r?  s         rd   test_bad_zi_shapeTestSOSFilt.test_bad_zi_shape  s     R_ HHZrH*hhvXXl#]]:-ABCr* CAqD	]]:-?@Cr* A@ CB A@s   B"B3"
B03
Cc           	         [        X!5      n[        R                  " SSSS9nUR                  U5      n[	        U5      n[        X2R                  SUS9US9u  pV[        XdSS	S
9  UR                  UR                  US S 2S S24   SS9UR                  US S 2SS 24   SS9-  5      n[        XWUR                  U5      -  SS9  g )NrR   r\  r  r  r`  r   r>  rw  Fr  r%  rO   r   r  rC  )r  r   r    r]   r*   r(   r  r7   r  r  r  )r_   r  r`   r  r?  rz   rC  sss           rd   test_sosfilt_ziTestSOSFilt.test_sosfilt_zi  s    R_mmAs51jjo_WWRrW2r:U> WWRVVC2A2JRV0266#ae*263NNOQ/e<rg   Tr)  c                     [        X!5      n[        R                  " SSSS9nUR                  U5      n[	        U5      n[        X2R                  SUS9UR                  5       S9u  pV[        XdSS	S
9  g )NrR   r\  r  r  r`  r   r>  rw  Fr  )	r  r   r    r]   r*   r(   r  ri  r7   )r_   r  r`   r  r?  r`  rC  s          rd   test_sosfilt_zi_2TestSOSFilt.test_sosfilt_zi_2  sb     R_mmAs51jjo_WWRrW2ryy{CU>rg   c                    [         R                  " / SQ[        S9R                  SS5      n[         R                  " / SQ[        S9n[        R
                  " SS9   [        X45        S S S 5        g ! , (       d  f       g = f)N)rT   rU   rO   rT   rQ   rO   r   rT   rR   r   r1  r2  )r  r]   r4  r   r5  r6  r(   )r_   r  r`   r  ry   s        rd   r7  "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?  r@  r  r  r  r  r  r  r  r  r  r	  r5  rB  rC  r7  rD  r:  rg   rd   r  r    sW   
 k*EFC GC@ k*EF. G.6 k*EFU GU&	 k*;<3 =32 k*;<(1OP? Q =?, k*;<19 =19f g&?@k*;<+ = A+ k*;<= == d#? $? [[d# $ rg   r  z!lfilter is CPU-only compiled coder/  r  c                   @    \ rS rSr\" SSS9S 5       rS rS rS rS	r	g
)TestDeconvolvei  Tr  r   c                     / SQnSS/nUR                  / SQ5      n[        R                  " XC5      u  pV[        XR5        g )Nr  rT   r   r   rT   rT   r   r   rU   rT   	r  rU   rT   r   rU   rO   rT   r   r   )r]   r   
deconvolver7   r_   r`   originalimpulse_responserecorded	recovered	remainders          rd   r  TestDeconvolve.test_array_like  s=     .q6::;<%00L		,rg   c                     UR                  / SQUR                  S9nUR                  SS/5      nUR                  / SQ5      n[        R                  " XC5      u  pV[	        XR5        g )Nr  r   rU   rT   r  )r]   r   r   r  r7   r  s          rd   re   TestDeconvolve.test_basic  sV    ::8

:K::q!f-::;<%00L		,rg   c                     UR                  SS/SS//5      nUR                  SS/5      n[        R                  " [        SS9   [        R
                  " X#5      u  pES S S 5        g ! , (       d  f       g = f)Nr   zsignal must be 1-D.r2  r]   r5  r	   r   r   r  r_   r`   r  r  quotientr  s         rd   test_n_dimensional_signal(TestDeconvolve.test_n_dimensional_signal  s_    ::1v1v./::q!f-]]:-BC"("3"3H"OH DCC   A&&
A4c                     UR                  SS/5      nUR                  SS/SS//5      n[        R                  " [        SS9   [        R
                  " X#5      u  pES S S 5        g ! , (       d  f       g = f)Nr   zdivisor must be 1-D.r2  r  r  s         rd   test_n_dimensional_divisor)TestDeconvolve.test_n_dimensional_divisor  s_    ::q!f%::1v1v&67]]:-CD"("3"3H"OH EDDr"  r:  N)
r<  r=  r>  r?  r@  r  re   r   r$  rD  r:  rg   rd   r  r    s0     d+KL- M--PPrg   r  c                   4   \ rS rSrS r\" SSS9S 5       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                 x    [        UR                  / SQ5      5      nUR                  / SQ5      n[        X#5        g )NrS   r  )r-   r]   r=   )r_   r`   	detrendeddetrended_exacts       rd   re   TestDetrend.test_basic  s+    BJJy12	**Y/!)=rg   rJ   zoverwrite_data not implementedrL   c                 h    UR                  / SQ5      n[        USS9n[        USS9n[        X45        g )N)rT   333333?r  g?g333333@F)overwrite_dataT)r]   r-   r=   )r_   r`   ry   
copy_arrayinplaces        rd   	test_copyTestDetrend.test_copy  s1    JJ./Qu5
!D1!*6rg   r
  linearr@  r  r  c                     UR                  UR                  S5      S5      n[        XBUS9nUR                  UR                  :X  d   eg )N   )rQ   rR   r   )r)  r  )r   r   r-   r  )r_   r  r
  r`   r  r)  s         rd   r  TestDetrend.test_axis  s?     zz"))E*I6D$7	$**,,,rg   c                 d   / SQ/ SQ-   nUR                  U5      n[        USSS9n[        X1R                  U5      SS9  UR                  U5      S S S 2S 4   n[        USSSS	9n[        X1R                  U5      SS9  [	        [
        5         [        USSS9  S S S 5        g ! , (       d  f       g = f)
Nr  )rQ   r   rY  r=  r3  rO   )r)  bpr   r   rT   )r)  r8  r  )r]   r-   r7   r  r   r   )r_   r`   r  r)  s       rd   test_bpTestDetrend.test_bp  s    ?*zz$DxA6		==#;%H zz$a.DxAA>		==#;%H :&DxA. '&&s   B!!
B/r8  r   rU   c                    [         R                  R                  S5      nUR                  S5      nUR	                  U[        U5      S9n[        U[         R                  5      (       a  UR	                  U5      nO&[        U5      (       d  [        R                  " S5        [        XAS9nUR	                  / SQ5      n[        U5      UR                  :X  a  SOSn[        XVUS	9  g )
Ni90  rV   r   zlist bp is numpy-only)r8  )
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿrQ  r   r   )r  r  r  rE  r]   rA   r  ndarrayr9   r5  r  r-   r   r7   )r_   r8  r`   r  ry   r  res_scipy_191r   s           rd   test_detrend_array_bp!TestDetrend.test_detrend_array_bp  s     ii##E*HHRLJJq 0 4J5b"**%%BBB<<34a

 $O P (+rzz9tu6rg   r:  N)r<  r=  r>  r?  re   r@  r1  r5  rB  r  r  r9  r  r  r>  rD  r:  rg   rd   r'  r'    s    >
 k*JK7 L7 [[Vh
%;<[[VY/- 0 =-
/  [[TBHHaV$4q!f#=>7 ?7rg   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  p4[        X2SS9  [        U[        R                  " [        U5      [        S95        g )N)r  r0  r  r-  r  r  r#  r   r.   r>   r8   r  r  r  r  r_   r`   r  r3  r4  s        rd   test_real_no_repeat#TestUniqueRoots.test_real_no_repeat-  s6    (+AFr2bggc!fC&@Arg   c                     / SQn[        USSS9u  p4[        U/ SQSS9  [        U/ SQ5        [        USS	S9u  p4[        U/ S
QSS9  [        U/ SQ5        [        USSS9u  p4[        U/ SQSS9  [        U/ SQ5        g )N)r  ffffff{Gz皙r  r  ?rS  r  tolrj  )r  rI  r  r  r  r#  rU   rU   rT   rU   r  )rH  rJ  r  rK  rh  )g333333g
ףp=
r  gffffff?r.   r>   r8   rD  s        rd   test_real_repeat TestUniqueRoots.test_real_repeat3  s    6+A4uEF$;RHl3+A4uEF$<bIl3+A4uEF$@"Ml3rg   c                     / SQn[        U5      u  p4[        X2SS9  [        U[        R                  " [        U5      [        S95        g )N)r  r         ?      ?r  r  r  r#  r   rC  rD  s        rd   test_complex_no_repeat&TestUniqueRoots.test_complex_no_repeatB  s6    =+AFr2bggc!fC&@Arg   c                     / SQn[        USSS9u  p4[        U/ SQSS9  [        U/ SQ5        [        USS	S9u  p4[        U/ S
QSS9  [        U/ SQ5        [        USSS9u  p4[        U/ SQSS9  [        U/ SQ5        g )N)r        𿚙?ffffff333333?333333?r  rS  ??rS  r  rL  )r  rX  r  rZ  r  r#  rN  r  )rW  rY  r  rS  rh  )y      𿚙?y333333?r  yffffff??rO  rD  s        rd   test_complex_repeat#TestUniqueRoots.test_complex_repeatH  s    '  ,A4uEF$L$&	(l3+A4uEFJ$&	( 	l3+A4uEH	 	l3rg   c                 R   [         R                  " [         R                  " [         R                  " S5      [         R                  " S5      5      5      n/ SQn[	        U5      u  pE[         R
                  " U5      n[        [         R
                  " U5      USS9  [        U/ SQ5        g )NrQ   )yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?r   r#  )rU   rU   rU   rU   )r  r  r   r  r.   sortr>   r8   )r_   r`   r  
true_rootsr3  r4  s         rd   test_gh_4915TestUniqueRoots.test_gh_4915]  sg    HHR[[RWWQZ89K
+ABGGFOZCl3rg   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#  rU   rT   )rT   g_p   ?&.>      ?rS  )rM  rc  rO  r2  s       rd   test_complex_roots_extra(TestUniqueRoots.test_complex_roots_extrag  s]    +,<=FS$K<q!f-+,D#NFS+$6Cq!f-rg   c                     [         R                  R                  S5      S[         R                  R                  S5      -  -   n[        US5      u  p4[	        U[         R
                  " U5      /SS9  [        US/5        g )Nr;  r   rU   r  r#  )r  r  rE  r.   r>   r  r8   rD  s        rd   test_single_unique_root'TestUniqueRoots.test_single_unique_rootp  s\    IINN3"ryy~~c':"::+Aq1FRVVAYK<se,rg   r:  N)r<  r=  r>  r?  rE  rP  rT  r[  r`  rd  rg  rD  r:  rg   rd   rA  rA  +  s'    B4B4*4.-rg   rA  c                      [         R                  " [        R                  " S[        R                  S9SS5      n U R
                  [        R                  :X  d   eg )Nr  r   rR   rP   )r   rC  r  r   r   r   )r  s    rd   test_gh_22684rj  w  s;    !!"))D"Eq!LF<<2<<'''rg   r5  )r  r  concurrent.futuresr   r   r$  r   	itertoolsr   r   r5  r	   r   numpy.testingr
   r   numpyr  numpy.exceptionsr   scipyr   rb  r  r   scipy.optimizer   r   r   scipy.signalr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   scipy.signal.windowsr1   scipy.signal._signaltoolsr2   r3   r4   scipy.signal._upfirdnr5   
scipy._libr6   scipy._lib._array_apir7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rB  r@  rA  rH   rF  r  rl  rs  r~  r  r  r  r  r!  r  r.  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r=  r@  rB  paramr  r\  r_  rb  r  r  r  r  r  r  	fail_slowr  rC  r  r  r!  r#  r  r  r  r"  r  r  r  r  r'  rA  rj  r:  rg   rd   <module>rz     s	   
  ?     *  +  % 6          &4 4 0 !   
 ;;// KK11  4VH5w w 6wt 4VH5[" [" 6["| 4VH5nL nL 6nLb3

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