
    _Mh|W                       d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
Z
d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZ d dlZd d	lmZ d d
lmZ d dlm Z m!Z! d dlm"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZFmGZGmHZH d dlImJZJ d dlKmLZL d dlMmNZN d dlOmPZPmQZQmRZR  G d d          ZS G d deS          ZT G d d          ZU G d deU          ZV G d d          ZWd ZXd ZYd  ZZd! Z[ G d" d#          Z\ G d$ d%          Z] G d& d'          Z^ G d( d)          Z_g d*Z`e`eJz  Z` G d+ d,          Za G d- d.          Zb G d/ d0          Zc G d1 d2          Zd G d3 d4ed          Ze G d5 d6ed          Zfe
jg        h                    d7           G d8 d9ed                      Zi G d: d;ed          Zj G d< d=ed          Zke
jg        h                    d7           G d> d?ed                      Zle
jg        h                    d7           G d@ dAed                      Zme
jg        h                    d7           G dB dCed                      Zne
jg        h                    d7          dD             Zoe
jg        h                    d7          ZpdE Zqe
jg        r                    dFejs        ejt        eju        ejv        eReQejw        ejw        ejx        ejy         e
jz        ej{        epG           e
jz        eepG          g           G dH dI                      Z| G dJ dK          Z}e
jg        r                    dLg dM          e
jg        r                    dNdOdPg          e
jg        r                    dQg dR          dS                                     Z~dT Ze
jg        r                    dFej        ej         e
jz        ej        epG          g           G dU dV                      Z G dW dX          Z G dY dZ          Z G d[ d\          Z G d] d^e          Zd_ Zdd`Ze
jg                            da          db             Ze
jg        j        dc             Ze
jg        h                    d7          dd             Ze
jg                            da          de             Z G df dg          Z G dh di          Z G dj dk          Z G dl dm          Z G dn do          Z G dp dq          ZddsZe
jg        h                    d7          e
jg        r                    dte:e/f          du                         Ze
jg        r                    dFdv           G dw dx                      Z G dy dz          Z G d{ d|          Z G d} d~          Zd ZdS )    N)ThreadPoolExecutoras_completed)Decimalproduct)gcd)raises)assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_allcloseassert_assert_array_lesssuppress_warnings)arrayarange)fft)correlate1d)fminlinear_sum_assignment)signal)	correlatecorrelate2dcorrelation_lagsconvolve
convolve2dfftconvolve
oaconvolvechoose_conv_methodenvelopehilberthilbert2lfilter
lfilter_zifiltfiltbutterzpk2tfzpk2sosinvresinvreszvectorstrengthlfiltictf2sossosfiltsosfiltfilt
sosfilt_zitf2zpkBadCoefficientsdetrendunique_rootsresidueresiduez)hann)_filtfilt_gust_compute_factors_group_poles)_upfirdn_modes)
_testutilsxp_assert_close)ComplexWarningnp_longnp_ulongc                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )_TestConvolvec                 t    g d}g d}t          ||          }t          |t          g d                     d S )N)            rH   rG         rF   )rF   
             rP         r   r   r   selfabcs       c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/signal/tests/test_signaltools.py
test_basicz_TestConvolve.test_basic(   sH    IIQNN1e$C$C$CDDEEEEE    c                 x    g d}g d}t          ||d          }t          |t          g d                     d S )NrF   rG   rH   rK   rL   rF   rG   samemode)rM   rN   "   rS   rT   s       rY   	test_samez_TestConvolve.test_same.   sJ    IILLQ'''1eLLL1122222r[   c                 x    g d}g d}t          ||d          }t          |t          g d                     d S )Nr]   rJ   r_   r`   )rM   rN   rN   rS   rT   s       rY   test_same_eqz_TestConvolve.test_same_eq4   sJ    IIIIQ'''1eLLL1122222r[   c                     t          g d          }t          ddg          }t          ||          }t          |t          g d                     d S )N)      ?      ?       @      ?      @      ?rg   rh   )               @y       @      @y      @       @y      @      @)r   r   r   )rU   xyzs       rY   test_complexz_TestConvolve.test_complex:   sZ    ***++66"##QNN1e$@$@$@AABBBBBr[   c                 T    d}d}t          ||          }t          |||z             d S )Ni	  i  )r   r
   rT   s       rY   test_zero_rankz_TestConvolve.test_zero_rank@   s3    QNNQAr[   c                 n   t          j        d                              ddd          }t          j        d          }t          d          D ]g}dgdz  }d||<   t	          ||                    |          d          }t	          ||                    |          d          }t          ||           hd S )N   rF   rK   directmethodr   )npr   reshaperanger   r   )rU   rV   rW   ib_shaperk   rl   s          rY   test_broadcastablez _TestConvolve.test_broadcastableF   s    IbMM!!!Q**IaLLq 	" 	"Ac!eGGAJAIIg..x@@@AAIIg..u===AAq!!!!	" 	"r[   c                     t          dg          }t          dg          }t          ||          }t          |||z             d S Nig  iP  )r   r   r
   rT   s       rY   test_single_elementz!_TestConvolve.test_single_elementP   sC    4&MM4&MMQNNQAr[   c                     g dg dg}g dg dg}t          ||          }t          g dg dg dg          }t          ||           d S NrJ   r]   rL   rF   rG   rG   rH   rI   )rL            rR   )rM      >   :   &   )rR      r   1   r   r   r   r   rU   rV   rW   rX   ds        rY   test_2d_arraysz_TestConvolve.test_2d_arraysV   sz    YY			"YY			"QNN%%%'''''') * * 	1a     r[   c           
      n   t          d                              ddd          }dt          d                              ddd          z  }|t          d          d d d                             ddd          z  }t          g dg dg d	g d
gg dg dg dg dgg dg dg dg dgg dg dg dg dgg          }t          t	          ||d          |           t          t	          ||d          |           t          t	          ||d          |ddddddf                    t          t	          ||d          |ddddddf                    t          t	          ||d          |ddddddf                    t          t	          ||d          |ddddddf                    d S )N   rL                 ?rr   rF   )                y      :@        y      9@      ?y      8@       @)y      J@        y     b@      @y      b@      &@y     @W@      &@)y      G@      @y     `@      7@y     _@      =@y     @T@      7@)y      D@      (@y     X@      @@y     @W@     B@y      K@      8@)y      Z@        y     n@      *@y     m@      7@y     `@      5@)y     q@      >@y     @      X@y     @      _@y     t@     U@)y     n@     P@y      @     f@y     @@      j@y     q@     `@)y     a@     P@y     0s@      d@y     r@     `f@y      c@     Z@)y      Q@      B@y     c@     Y@y     `b@     @\@y     @T@     R@)y     e@     @a@y     w@     u@y      v@     w@y     @g@     l@)y     @a@     e@y     r@      {@y     p@     |@y     @a@     `q@)y     Q@     @a@y      b@     0t@y     _@     Pu@y     O@     h@)y      @@      R@y      Q@     d@y     M@     e@y      >@      Y@)y      Q@      h@y     `a@     {@y     @]@     p|@y     L@     o@)y      C@     k@y     @R@     0@y     I@     H@y      5@     0r@)y      (@      b@y      4@     s@y      @     t@y             f@fullr_   rK   r   valid)r   rw   r   r   r   )rU   smallbig	out_arrays       rY   test_input_swappingz!_TestConvolve.test_input_swapping_   sX   q		!!!Q**6"::%%aA...vbzz$$B$''1a0001116667776668
 :99;;;======?
 ;::>>>>>><<<>
 :99<<<:::888:;< <	* 	8E377CCC8C77CCC8E377$QqS!A#qs]3	5 	5 	58C77$QqS!A#qs]3	5 	5 	58E388$QqS!A#qs]3	5 	5 	58C88$QqS!A#qs]3	5 	5 	5 	5 	5r[   c                 J   g d}g d}t          t          t          ||d           t          t          t          ||dd           t          t          t          ||dd	           t          t          t          ||d
d           t          t          t          ||dd           d S Nr]   rJ   spamr`   eggsr   ra   ru   hamrs   r   baconr_   assert_raises
ValueErrorr   rU   rV   rW   s      rY   test_invalid_paramsz!_TestConvolve.test_invalid_params   s    IIIIj(Aqv>>>>j(AqveLLLLj(AquXNNNNj(AqvgNNNNj(AqvgNNNNNNr[   N)__name__
__module____qualname__rZ   rc   re   rn   rp   r{   r~   r   r   r    r[   rY   rD   rD   &   s        F F F3 3 33 3 3C C C  " " "  ! ! !#5 #5 #5JO O O O Or[   rD   c                   ^    e Zd Zd Zd Zd Zd
dZd Zd Ze	j
        j        d             Zd	S )TestConvolvec                 >   g d}g d}g d}t          ||d          }t          ||           t          ||d          }t          ||           g d}ddg}ddg}t          ||d          }t          ||           t          ||d          }t          ||           d S )	NrK   rL   rF   rI   rH   rF   	rL   rF   rG   rH   rF   rG   rL   rL   rK   )F   N   I   A   r   )y      ?      @       @      y      @               @            ?        y       @      $)r   r   rU   rV   rW   expectedouts        rY   test_valid_mode2zTestConvolve.test_valid_mode2   s    '''###q!W%%3)))q!W%%3)))$$$VG$q!W%%3)))q!W%%3)))))r[   c                 z    g d}g d}t          ||d          }t          g d          }t          ||           d S )N)rK   rL   rF   rF   rK   rL   )rK   rG   rF   rG   rH   rI   r   rG   rF   rL   rK   rK   rF   r_   )9   =   ?   r   -   $   r   r   s        rY   test_same_modezTestConvolve.test_same_mode   sS    333Q6""***++1a     r[   c                 "   t          j        dd                              d          }t          j        dd                              d          }t          t          t
          g||fR i ddi t          t          t
          g||fR i ddi d S 	NrK   r   rL   rF   r   rF   rL   ra   r   )rv   r   rw   r   r   r   r   s      rY   test_invalid_shapesz TestConvolve.test_invalid_shapes   s     IaOO##F++Ib!$$V,,j(IaVIII7HIIIj(IaVIII7HIIIIIr[   d   c                 L  	
 h d

fd
D             }t           j                            d          }|                    ddg|          |                    |          d}|d         x|d	<   |d
<   |d         d|d         z  z   |d<   |D ]\  }}	|t          j        |          j                                     |          |t          j        |          j                                     |          	fddD             }t          |d         j        |d         j                   d|v r#d|v rt          t                    d           t          d ||fD                       rddd}nd||fv rddd}nddd}t          |d         |d         fi | d S )N>   boolint8int16int32int64uint8uint16uint32uint64float16float32float64	complex64
complex128c                 .    g | ]}D ]}d D ]}|||fS ))r   r   r_   r   ).0t1t2ra   typess       rY   
<listcomp>z5TestConvolve.test_convolve_method.<locals>.<listcomp>   sb     F F F2 F F2+DF F#' R F F F F Fr[   *   r   rK   size)ry   fry   rW   ur                 ?rX   c           	      8    i | ]}|t          |           S ))ru   ra   )r   )r   keyra   x1x2s     rY   
<dictcomp>z5TestConvolve.test_convolve_method.<locals>.<dictcomp>   s<     5 5 5 HRCdCCC 5 5 5r[   )r   rs   r   rs   r   c                     g | ]}|d v S )>   r   r   r   )r   ts     rY   r   z5TestConvolve.test_convolve_method.<locals>.<listcomp>   s    DDDaA11DDDr[   -C6?gư>rtolatolr   MbP?h㈵>:0yE>)rv   randomRandomStatechoicerandndtypekindastyper
   r    anyr   )rU   nargsrngarray_typesr   r   resultskwargsra   r   r   r   s            @@@@rY   test_convolve_methodz!TestConvolve.test_convolve_method   s3   4 4 4F F F F F F F
 i##B''JJ1vAJ66IIaLL* *.9#.>>C;s+&s+d;s3C.CCC  	I 	ILBDRXb\\./66r::BRXb\\./66r::B5 5 5 5 5 5"35 5 5G -wx/@/FGGG||"/B77BBB DDB8DDDEE 6"($77r2h&&"&55 #'55GENGH,=HHHHHH1	I 	Ir[   c                 $   dD ]}t          j        d|z  gt           j                  }t          ||d          }t          ||d          }|dk     r<t	          ||           t	          |dd|z  z             t	          |dd|z  z             d S )N)	rM      2   3   4   5   6   <   r   rL   r   r   rt   rs   r  )rv   r   r   r   r
   )rU   r   rm   r   rs   s        rY    test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_input   s     6 
	/ 
	/A!Q$rx000A1a...Ca8444F 2vvS&)))S!ac(+++VQ1X...
	/ 
	/r[   c                 v   t          t          t          dgdd           t          t          t          ddgd           t          t          t          dgdd           t          t          t          ddgd           t          t          t          dgdgg           t          t          t          dgd           d S NrK   rL   rs   rt   r   rF   r   rU   s    rY   test_mismatched_dimsz!TestConvolve.test_mismatched_dims   s    j(QC8DDDDj(As8DDDDj(QC5AAAAj(As5AAAAj(QC1#777j(QC33333r[   c                     t          j        g dt                    }t          j        g dt                    }t          j        d          5  t          ||           d d d            d S # 1 swxY w Y   d S Nr   r	  r   dtype=object is not supportedmatch)rv   asarrayobjectpytestdeprecated_callr   r   s      rY   test_dtype_deprecationz#TestConvolve.test_dtype_deprecation   s     J)))888J222&AAA#*IJJJ 	 	QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A..A25A2N)r   )r   r   r   r   r   r   r   r
  r  r  markthread_unsafer  r   r[   rY   r   r      s        * * *,! ! !
J 
J 
J*I *I *I *IX/ / /4 4 4 [    r[   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                            d	eeg          ej                            d
dg dgfdg dgfg          d                         Zd Zd Zd ZdS )_TestConvolve2dc                     g dg dg}g dg dg}t          g dg dg dg          }t          ||          }t          ||           d S r   r   r   r   )rU   rV   rW   r   es        rY   r   z_TestConvolve2d.test_2d_arrays  s|    YY			"YY			"%%%'''''') * * q!1a     r[   c                     g dg dg}g dg dg}t          g dg          }t          ||d          }t          ||           t          ||d          }t          ||           d S )NrL   rF   rG   rH   rI   r   r   rG   rH   rI   r   r   	   rM   rJ   r]   r   P   b   t      r   r  rU   r   r   hgs        rY   test_valid_modez_TestConvolve2d.test_valid_mode  s    """$:$:$:;YY			")))*++q!W%%1a    q!W%%1a     r[   c                    g dg dg}t          j        g dg dgt                    dz   }t          g dg          }t          ||d          }t	          ||           t          ||d          }t          ||           d S )	Nr"  r#  rJ   r]   r	  r   )y      O@      8@y      T@      >@y     X@      B@y      ]@      E@y     `@      H@r   )rv   r   complexr   r   r   r*  s        rY   test_valid_mode_complxz&_TestConvolve2d.test_valid_mode_complx  s    """$:$:$:;Hiii+7;;;b@GGGHIIq!W%%!!Q''' q!W%%1a     r[   c                     g dg dg}g dg dg}d}t          ||dd|          }t          g dg d	g d
g          }t          ||           d S )NrJ   r]   r   r   rK   r   fill)      r   rb   rP   )rO   (   r   @   r  )rP   .   C   r   0   r   r   r   )rU   rV   rW   fillvalrX   r   s         rY   test_fillvaluez_TestConvolve2d.test_fillvalue)  s    YY			"YY			"q!VVW55''''''''') * * 	1a     r[   c                    d}t           j                                        5 }|                    t          d           t          t          |          5  t          dggddggd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d}t          t          |          5  t          dggddggddg           d d d            d S # 1 swxY w Y   d S )	Nz2could not cast `fillvalue` directly to the output zCasting complex valuesr  rK   rL   r   	fillvaluez,`fillvalue` must be scalar or an array with )rv   testingr   filterr@   r   r   r   )rU   msgsups      rY   test_fillvalue_errorsz%_TestConvolve2d.test_fillvalue_errors3  s   BZ))++ 	:sJJ~'?@@@z555 : :QC5Aq6(b9999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:
 =:S111 	: 	:u1vh1a&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:sG   2BA7+B7A;	;B>A;	?BBB1CCCc                 L    t          t          t          dggddggg            d S )NrK   rL   r>  r   r   r   r  s    rY   test_fillvalue_emptyz$_TestConvolve2d.test_fillvalue_empty>  s8    j*seq!fX "	$ 	$ 	$ 	$ 	$ 	$r[   c                     g dg dg}g dg dg}t          ||dd          }t          g dg dg dg          }t          ||           d S )	NrJ   r]   r   r   r   wrap)r&  r&  J   r&  r&  )D   rK  r   rK  rK  r:  r   s        rY   test_wrap_boundaryz"_TestConvolve2d.test_wrap_boundaryC  s    YY			"YY			"q!VV,,''''''''') * * 	1a     r[   c                     g dg dg}g dg dg}t          ||dd          }t          g dg dg d	g          }t          ||           d S )
NrJ   r]   r   r   r   symm)rb   r   ,   r   B   )r  r9  r   r&  T   )R   r   \   n   r   r:  r   s        rY   test_sym_boundaryz!_TestConvolve2d.test_sym_boundaryL  s    YY			"YY			"q!VV,,'''''')))+ , , 	1a     r[   funczboundary, expectedrN  )g     B@      E@      F@g     F@rI  )     E@rY  rX       C@c                     t          j        g dg          }t          j        d          } |||d|          }t          ||           d S )N)       @            @      @)rK      r_   ra   boundary)rv   r   onesr   )rU   rW  rc  r   imagekernelresults          rY   test_same_with_boundaryz'_TestConvolve2d.test_same_with_boundaryU  s\     ///011!!eV&8DDD 	68,,,,,r[   c           	      F   dd l m} t          j        ddt                                        dd          }t          j        ddt                                        dd          }t          ||dd	
          }t          ||                    ||d	d                     d S )Nr   rK   r   r	  rM   rF   e   r_   rI  rb  )r   r   )ra   origin)	scipy.ndimagendimagerv   r   floatrw   r   r   r   )rU   ndirV   rW   rX   s        rY   test_boundary_extension_samez,_TestConvolve2d.test_boundary_extension_samef  s     	$#####Iau---55b!<<Ia...66r2>>q!&6:::1cll1afXlNNOOOOOr[   c                    dd l m} t          j        ddt                                        dd          }t          j        ddt                                        dd          }t          ||dd	
          }t          j        |dd	          }t          ||	                    ||d	          d dd df                    d S )Nr   rK   rM   r	  rF   %   rI   r   rI  rb  )rF   rF   rs  r`   r   )
rl  rm  rv   r   rn  rw   r   padr   r   )rU   ro  rV   rW   rX   apads         rY   test_boundary_extension_fullz,_TestConvolve2d.test_boundary_extension_fullp  s     	$#####Iae,,,44Q::Iae,,,44Q::q!&6:::va)6221cll4l@@"crcJKKKKKr[   c                 "   t          j        dd                              d          }t          j        dd                              d          }t          t          t
          g||fR i ddi t          t          t
          g||fR i ddi d S r   )rv   r   rw   r   r   r   r   s      rY   r   z#_TestConvolve2d.test_invalid_shapes{  s     IaOO##F++Ib!$$V,,j*K1vKKK&'9JKKKj*K1vKKK&'9JKKKKKr[   N)r   r   r   r   r-  r0  r<  rD  rG  rL  rV  r  r  parametrizer   r   rh  rp  rv  r   r   r[   rY   r  r    sH       ! ! !
! 
! 
!
! 
! 
!! ! !	: 	: 	:$ $ $
! ! !! ! ! [Vj+%>??[1%(@(@(@'AB%(@(@(@'ABDE E- -E E @?-P P P	L 	L 	L
L 
L 
L 
L 
Lr[   r  c                       e Zd Zd Zd Zd Zd Zej        j	        ej        
                    d          d                         ZdS )TestConvolve2dc                     g dg dg}g dg dg}t          ||d          }t          g dg dg          }t          ||           d S )NrJ   r]   r"  r#  r_   )rN   rO   rb   )r&  r'  r(  r:  )rU   r   r   r,  r+  s        rY   r   zTestConvolve2d.test_same_mode  ss    YY			""""$:$:$:;q!V$$<<< ==" # #1a     r[   c                 b   g dg dg}g dg dg}g dg}t          ||d          }t          ||           t          ||d          }t          ||           ddgd	d
gg}g dg dg}ddgg}t          ||d          }t          ||           t          ||d          }t          ||           d S )NrJ   r]   r"  r#  r%  r   rg   r   ri         @        )r         @       @r}  )r}  y      @      ?y      @      y      ;@      y      G@       @)r   r   )rU   r   r   r   r   s        rY   r   zTestConvolve2d.test_valid_mode2  s    YY			""""$:$:$:;***+Aw''3)))Aw''3)))f/0%%%'?'?'?@h'(Aw''3))) Aw''3)))))r[   c           
      t   t          j        d          }t          j        g d          }dD ]}t          t          j        |||          t          j        |||                     t          t          j        t          j        |g|g|                    t          j        |||                     d S )NrH   g	@gffffff?rF   r   r   r_   r`   )rv   r   r   r   r   r   squeezer   rU   rV   rW   ra   s       rY   test_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcs  s    IaLLH]]]##- 	2 	2DAqt < < < &14 @ @ @B B B
!1#s666!8 !8140002 2 2 2	2 	2r[   c                     t          t          t          dd           t          t          t          dgdg           t          t          t          dgggdggg           d S )NrF   rG   rF  r  s    rY   test_invalid_dimsz TestConvolve2d.test_invalid_dims  sT    j*a333j*qcA3777j*ug!w?????r[   z!Can't create large array for testc                    ddt          j                    j        z  z  }t          j        d|z  dz  t          j                    j        z  dz             t          j        d|z  t           j                  }d|d d d<   t           j        j                            ||dfd	          }t          j
        |ddgg          }t          j        |dk              }|d
         j        d
k    sJ d S )Nl          rL     g    .Ar	  rK   )iH  r   )shapestridesr   )rv   r   itemsizer=   check_free_memoryzeroslibstride_tricks
as_stridedr   r   wherer   )rU   r   rV   countfailss        rY   test_large_arrayzTestConvolve2d.test_large_array  s     dRXZZ001$QUT\BHJJ4G%G#%MNNN HTAXRX...##A#F ++AaY	+RR!!q!fX..##Qx}!!!!!!r[   N)r   r   r   r   r   r  r  r  r  slowxfail_on_32bitr  r   r[   rY   rz  rz    s        ! ! !* * *.	2 	2 	2@ @ @
 [[ CDD" " ED " " "r[   rz  c                      e Zd Zej                            dddddgddgg          d             Zej                            dddgddgg          d             Zej                            dddddgddgg          d	             Zej                            dddgddgg          d
             Z	ej                            dddddgddgddgddgddgddgddgddgg
          d             Z
ej                            dddgddgddgddgddgddgddgddgg          d             Zej                            dddddgddgddgddgddgddgddgddgg
          d             Zej                            dddgddgddgddgddgddgddgddgg          d             Zej                            dddddgddgg          d             Zej                            ddddgdgg          d             Zej                            dddddgddgg          d             Zej                            dddgg          d             Zej                            dddddgddgg          d             Zej                            dddgddgg          d             Zd Zd Zd Zd Zej                            dddddgddgg          d             Zej                            dddgddgg          d             Zej                            dddgddgddgddgddgddgddgddgg          d             Zej        j        ej                            d  e edd!                     e ed"d#                    z   ej                             d$          !                    d%d&d'          "                                z             d(                         Z#ej        j$        d)             Z%dS )*TestFFTConvolveaxes Nr   r   c                     t          g d          }t          g d          }|dk    rt          ||          }nt          |||          }t          ||           d S )NrJ   rK   rG   rM   rR         "@r  r  r   r   r   rU   r  rV   r   r   s        rY   	test_realzTestFFTConvolve.test_real  sk    )))+++,,2::a##CCa...C!#x00000r[   rK   c                     t          g d          }t          g d          }t          j        |ddg          }t          j        |ddg          }t          |||          }t	          ||           d S )NrJ   r  rL   rK   r  r   rv   tiler   r   r  s        rY   test_real_axeszTestFFTConvolve.test_real_axes  s{    )))+++,,GA1v78aV,,!QT***!#x00000r[   c                     t          g d          }t          g d          }|dk    rt          ||          }nt          |||          }t          ||           d S )Nrg          @       @y      @      @rj   y               @y              4@y              8@y              2@r  r  r  r  s        rY   rn   zTestFFTConvolve.test_complex  sn    ***++DDDEE2::a##CCa...C!#x00000r[   c                     t          g d          }t          g d          }t          j        |ddg          }t          j        |ddg          }t          |||          }t	          ||           d S )Nr  r  rL   rK   r  r  r  s        rY   test_complex_axesz!TestFFTConvolve.test_complex_axes  s~    ***++DDDEEGA1v78aV,,!QT***!#x00000r[   c                     t          g dg dg          }t          g dg dg dg          }|dk    rt          ||          }nt          |||          }t          ||           d S )NrJ   r   rK   rG   rM   rR   r$  r   r4  8   r  r   r   r5  r   r  r   r  r  r  r  s        rY   test_2d_real_samez!TestFFTConvolve.test_2d_real_same  s     99999  +++---...0 1 1 2::a##CCa...C!#x00000r[   rL   c                     t          g dg dg          }t          g dg dg dg          }t          j        |g d          }t          j        |g d          }t          |||          }t	          ||           d S )NrJ   r   r  r  r  rL   rK   rK   r  r  r  s        rY   test_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axes  s     99999  +++---...0 1 1 GAyyy!!78YYY//!QT***!#x00000r[   c                     t          g dg dg          }t          g dg dg dg          }|dk    rt          ||          }nt          |||          }t          ||           d S )N      ?       @      @      @y      @      @rh   y      @      @y      @      @y            @y      $      4@y      5      L@y      2      S@y      &      N@y              $@y              F@y             ]@y             c@y             ^@r  y      $@      4@y      5@      L@y      2@      S@y      &@      N@r  r  r  r  s        rY   test_2d_complex_samez$TestFFTConvolve.test_2d_complex_same%  s     ++++++- . .AAA(((<<<   2::a##CCa...C!#x00000r[   c                     t          g dg dg          }t          g dg dg dg          }t          j        |g d          }t          j        |g d          }t          |||          }t	          ||           d S )Nr  r  r  r  r  r  r  r  r  s        rY   test_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axes?  s     ++++++- . .AAA(((<<<   GAyyy!!78YYY//!QT***!#x00000r[   c                 z   t          g d          }t          g d          }t          g d          }t          g d          }|dk    rt          ||d          }nt          ||d|          }t          ||           |dk    rt          ||d          }nt          ||d|          }t          ||           d S )NrJ   	rF   rF   rH   rI   r   r   r$  r   rK        A@     D@     G@	r  g      4@      9@r  r  r  r[  g      <@r]  r  r_   r  r  rU   r  rV   rW   
expected_1
expected_2r   s          rY   test_real_same_modez#TestFFTConvolve.test_real_same_modeV  s    )))---..???++
FFFGG
2::aF++CCaF666C!#z2222::aF++CCaF666C!#z22222r[   c                    t          g d          }t          g d          }t          g d          }t          g d          }t          j        |ddg          }t          j        |ddg          }t          j        |ddg          }t          j        |ddg          }t          ||d|          }t	          ||           t          ||d|          }t	          ||           d S )	NrJ   r  r  r  rL   rK   r_   r  r  r  s          rY   test_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axesi  s    )))---..???++
FFFGG
GA1vGA1vWZ!Q00
WZ!Q00
!QT222!#z222!QT222!#z22222r[   c                 X   t          g d          }t          g d          }t          g d          }|dk    rt          ||d          }nt          ||d|          }t          ||           |dk    rt          ||d          }nt          ||d|          }t          ||           d S )NrF   rL   rK   r  g      8@g      ?@r  rZ  g     H@r        (@r  r   r  r  rU   r  rV   rW   r   r   s         rY   test_valid_mode_realz$TestFFTConvolve.test_valid_mode_real{  s     )))---..<<<==2::aG,,CCaG$777C!#x0002::aG,,CCaG$777C!#x00000r[   c                 <   t          g d          }t          g d          }t          g d          }t          j        |ddg          }t          j        |ddg          }t          j        |ddg          }t          ||d|          }t	          ||           d S Nr  r  r  rL   rK   r   r  r  r  s         rY   test_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axes  s     )))---..<<<==GA1vGA1v78aV,,!Qd333!#x00000r[   c                 X   t          g d          }t          g d          }t          g d          }|dk    rt          ||d          }nt          ||d|          }t          ||           |dk    rt          ||d          }nt          ||d|          }t          ||           d S )N      @      y       @      @r   r~  y      @      y      @        y      @      y       @        y     F@      (@y      >@      7@y      H@      @@r  r   r  r  r  s         rY   test_valid_mode_complexz'TestFFTConvolve.test_valid_mode_complex  s    ***++:::;;<<<==2::aG,,CCaG$777C!#x0002::aG,,CCaG$777C!#x00000r[   c                    t          g d          }t          g d          }t          g d          }t          j        |ddg          }t          j        |ddg          }t          j        |ddg          }t          ||d|          }t	          ||           t          ||d|          }t	          ||           d S )Nr  r  r  rL   rK   r   r  r  r  s         rY   test_valid_mode_complex_axesz,TestFFTConvolve.test_valid_mode_complex_axes  s    ***++:::;;<<<==GA1vGA1v78aV,,!Qd333!#x000!Qd333!#x00000r[   c                 <   t          g d          }t          g d          }t          g d          }t          j        |ddg          }t          j        |ddg          }t          j        |ddg          }t          ||dd          }t	          ||           d S r  r  r   s        rY   test_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes  s    )))---..<<<==GA1vGA1v78aV,,!Qa000!#x00000r[   c                     t          t          g g           j        dk               t          t          ddgg           j        dk               t          t          g dg          j        dk               d S Nr   rH   rI   r   )r   r   r   r  s    rY   
test_emptyzTestFFTConvolve.test_empty  sn    B##(A-...QFB'',1222B$$)Q./////r[   c                     t          d          }t          d          }t          ||          }t          |||z             d S r}   r   r   r
   rU   rV   rW   r   s       rY   rp   zTestFFTConvolve.test_zero_rank  sA    $KK$KK!QS!a%     r[   c                     t          dg          }t          dg          }t          ||          }t          |||z             d S r}   r  r  s       rY   r~   z#TestFFTConvolve.test_single_element  sE    4&MM4&MM!QS!a%     r[   c                    t           j                            d           t           j                            d          dt           j                            d          z  z   }t           j                            d          dt           j                            d          z  z   }t          j        ||d          }|dk    rt          ||d          }nt          ||d|          }t          t          j        ||d	                     d S )
N    r   )  r   r  r  绽|=r   )rv   r   seedrandr   r   r   allcloser  s         rY   test_random_dataz TestFFTConvolve.test_random_data  s    
	tINN4  2	t(<(<#<<INN4  2	t(<(<#<<;q!V,,2::aF++CCaF666CC66677777r[   c                 p   t           j                            d           t           j                            d          dt           j                            d          z  z   }t           j                            d          dt           j                            d          z  z   }t          j        ||d          }t          j        |ddg          }t          j        |ddg          }t          j        |ddg          }t          ||d|          }t          t          j        ||d	
                     d S )Nr  r  r   r  r   rL   rK   r  r  r  )	rv   r   r  r  r   r  r   r   r  r  s         rY   test_random_data_axesz%TestFFTConvolve.test_random_data_axes  s    
	tINN4  2	t(<(<#<<INN4  2	t(<(<#<<;q!V,,GA1vGA1v78aV,,!QT222C66677777r[   rG   c                 P   d\  }}t           j                            d           t          j        j        | dt          j        j        | z  z   }t          j        j        | dt          j        j        | z  z   }t	          ||d          }|d d d d d d d f         }|d d d d d d d f         }|d d d d d d d f         }t          j        |                    dd          dd          }t          j        |                    dd          dd          }t          j        |                    dd          dd          }t          j        |g d	          }t          j        |g d
          }t          j        |g d          }t          ||d|          }t          ||dd           d S )N)){   rN   )      r  r   r   r   rL   rK   rG   )rL   rK   rF   rK   rK   )rL   rK   rK   rG   rK   )rL   rK   rF   rG   rK   r  r  r   )
rv   r   r  r  r   moveaxisswapaxesr  r   r   )rU   r  a_shaperz   rV   rW   r   r   s           rY   test_random_data_multidim_axesz.TestFFTConvolve.test_random_data_multidim_axes  s    0
	tING$rBING,D'DDING$rBING,D'DDaF++aaaD$$%aaaD$$%AAAqqq$d23K

1a((!Q//K

1a((!Q//;x00A661== GA''GA''78___55!QT222XE>>>>>>r[   r   r   r  i  r  r  '  rH   c                    t           j                            |          dt           j                            |          z  z   }t           j                            |          dt           j                            |          z  z   }t          j        ||d          }t	          ||d          }t          ||d           t	          ||ddg          }t          ||d           d S )Nr   r   r  r   r   r  )rv   r   r  r   r   r   )rU   r   rV   rW   r   r   s         rY   test_many_sizeszTestFFTConvolve.test_many_sizes  s     INN1RY^^A%6%6 66INN1RY^^A%6%6 66;q!V,,!Q''XE2222!QaS111XE222222r[   c                 v   d}t           j                            d          }|                    |          }t           j        t           j        fD ]i}||d<   t          j        dd          }d}t          j	        t          |          5  t          j        ||dd	
           d d d            n# 1 swxY w Y   jd S )Nr  l   [<zn( r      皙?z4Use of fft convolution.*|invalid value encountered.*r  r_   r   r   )rv   r   default_rngstandard_normalnaninfr   firwinr  warnsRuntimeWarningr   )rU   r   r   sig_nanvalcoeffsrB  s          rY   test_fft_nanzTestFFTConvolve.test_fft_nan(  s	   i##K00%%a((FBF# 	L 	LCGCL]3,,FHCnC888 L LfUKKKKL L L L L L L L L L L L L L L	L 	Ls   B--B1	4B1	)&r   r   r   r  r  rx  r  r  rn   r  r  r  r  r  r  r  r  r  r  r  r  r  rp   r~   r  r  r  r  listrx   rv   r   r   randinttolistr  r  r  r   r[   rY   r  r    s4       [Vb$A3RD%ABB	1 	1 CB	1 [Va!b2$%7881 1 981 [Vb$A3RD%ABB1 1 CB1 [Va!b2$%7881 1 981 [Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	1 	11 1	1 	11 [Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1 11 11 11 [Vb&*'(!f'(!f'("g')1g')1g'("g')2h')2h	&0 	1 	11 1	1 	11  [Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1 11 11 11 [Vb$A3RD%ABB3 3 CB3$ [VaaS2$%7883 3 983" [Vb$A3RD%ABB1 1 CB1$ [Va!X..1 1 /.1 [Vb$A3RD%ABB1 1 CB1" [Va!b2$%7881 1 9811 1 10 0 0! ! !! ! ! [Vb$A3RD%ABB
8 
8 CB
8 [Va!b2$%7888 8 988 [Vq!f'(!f'("g')1g')1g'("g')2h')2h&0 1 1? ?1 1?. [[UU1c]]UU4	 
	d##++D%;;BBDD	EF F
	3 	3F F 	3 [L L L L Lr[   r  c                       t          d          )NzFell back to fftconvolve)RuntimeError)r   r   s     rY   fftconvolve_errr  6  s    
1
2
22r[   c                 8    d t          | d          D             S )Nc                 H    g | ]\  }}t          ||z
            d k    ||f S )rF   )absr   rV   rW   s      rY   r   z!gen_oa_shapes.<locals>.<listcomp>;  s:       tq!1q5zzA~~ F~~r[   rL   repeatr   sizess    rY   gen_oa_shapesr  :  s/     wuQ777    r[   c                     t          |           }t          |           }d t          ||          D             }g d}d t          ||          D             S )Nc                     g | ]
\  }}||z   S r   r   )r   ishapes0ishapes1s      rY   r   z$gen_oa_shapes_2d.<locals>.<listcomp>B  s.     % % %$6Hhhx % % %r[   r  c                     g | ]Y\  }}|d k    sH|d         |d         k    r|d         |d         k    s$|d         |d         k     A|d         |d         k     S||fz   ZS )r   r   rK   rL   rF   r   )r   ishapesimodes      rY   r   z$gen_oa_shapes_2d.<locals>.<listcomp>F  s     C C C%QZ'!*$$gaj)@)@QZ'!*$$gaj)@)@ UH *A)@)@r[   )r  zipr   )r  shapes0shapes1shapesmodess        rY   gen_oa_shapes_2dr,  ?  s    E""GE""G% %'7##% % %F &%%EC C7653I3I C C C Cr[   c                 8    d t          | d          D             S )Nc                 (    g | ]\  }}||k    ||fS r   r   r  s      rY   r   z$gen_oa_shapes_eq.<locals>.<listcomp>M  s0       tq!Avv Fvvr[   rL   r  r   r  s    rY   gen_oa_shapes_eqr/  L  s/     wuQ777    r[   c                      e Zd Zej                                        ej                            d e e e	d                     e e	ddd                    z                       d                         Z
ej                            d eg d                    ej                            ddd	g          ej                            d
g d          d                                     Zej                            dddg          ej                            d eg d                    ej                            dddg          ej                            dddg          ej                            ddd	g          ej                            d
g d          d                                                                         Zej                            d eg d                    ej                            ddd	g          d                         Zej                            dddgddgddgg          ej                            d eg d                    ej                            dddg          ej                            dddg          ej                            ddd	g          d                                                             Zd Zd Zd ZdS )TestOAConvolvezshape_a_0, shape_b_0r   r  rQ   c                     t           j                            |          }t           j                            |          }t          ||          }t	          ||          }t          ||           d S N)rv   r   r  r   r   r   )rU   	shape_a_0	shape_b_0rV   rW   r   r   s          rY   test_real_manylensz!TestOAConvolve.test_real_manylensR  s^     INN9%%INN9%%q!$$A!#x00000r[   )r  /   rI   rG   rK   
is_complexTFra   r  c                    t           j                            |          }t           j                            |          }|rJ|dt           j                            |          z  z   }|dt           j                            |          z  z   }t          |||          }|                    t
          j        dt                     t          |||          }	t          |	|           d S Nr   r`   r   
rv   r   r  r   setattrr   _signaltoolsr  r   r   )
rU   r4  r5  r8  ra   monkeypatchrV   rW   r   r   s
             rY   test_1d_noaxeszTestOAConvolve.test_1d_noaxes`  s     INN9%%INN9%% 	1Bry~~i0000ABry~~i0000Aq!$///F/+	- 	- 	-AD)))!#x00000r[   r  r   rK   )r  r7  rI   rG   shape_a_extrarF   shape_b_extrac	                    |gdz  }	|gdz  }
||	|<   ||
|<   t          j        j        |	 }t          j        j        |
 }|r2|dt          j        j        |	 z  z   }|dt          j        j        |
 z  z   }t          ||||          }|                    t
          j        dt                     t          ||||          }t          ||           d S )NrL   r   ra   r  r   r;  )rU   r  r4  r5  r@  rA  r8  ra   r>  ax_aax_brV   rW   r   r   s                  rY   test_1d_axeszTestOAConvolve.test_1d_axest  s     q q T
T
IND!IND! 	-Bry~t,,,ABry~t,,,Aq!$T:::F/+	- 	- 	-ADt444!#x00000r[   z0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec                    t           j                            ||          }t           j                            ||          }	|rL|dt           j                            ||          z  z   }|	dt           j                            ||          z  z   }	t          ||	|          }
|                    t
          j        dt                     t          ||	|          }t          ||
           d S r:  r;  )rU   r4  r5  	shape_a_1	shape_b_1ra   r8  r>  rV   rW   r   r   s               rY   test_2d_noaxeszTestOAConvolve.test_2d_noaxes  s     INN9i00INN9i00 	<Bry~~i;;;;ABry~~i;;;;Aq!$///F/+	- 	- 	-AD)))!#x00000r[   rL   c                    |gdz  }|gdz  }|||d         <   |||d         <   |||d         <   |||d         <   t          j        j        | }t          j        j        | }|	r2|dt          j        j        | z  z   }|dt          j        j        | z  z   }t          ||||          }|
                    t
          j        dt                     t          ||||          }t          ||           d S )NrF   r   rK   r   rC  r   r;  )rU   r  r4  r5  rH  rI  ra   r@  rA  r8  r>  rD  rE  rV   rW   r   r   s                    rY   test_2d_axeszTestOAConvolve.test_2d_axes  s    q q !T!W!T!W!T!W!T!WIND!IND! 	-Bry~t,,,ABry~t,,,Aq!$T:::F/+	- 	- 	-ADt444!#x00000r[   c                     t          t          g g           j        dk               t          t          ddgg           j        dk               t          t          g dg          j        dk               d S r  )r   r   r   r  s    rY   r  zTestOAConvolve.test_empty  sn    
2r""'1,---
Aq62&&+q0111
2s##(A-.....r[   c                     t          d          }t          d          }t          ||          }t          |||z             d S r}   r   r   r
   r  s       rY   rp   zTestOAConvolve.test_zero_rank  sA    $KK$KKAS!a%     r[   c                     t          dg          }t          dg          }t          ||          }t          |||z             d S r}   rO  r  s       rY   r~   z"TestOAConvolve.test_single_element  sE    4&MM4&MMAS!a%     r[   N)r   r   r   r  r  r  rx  r/  r  rx   r6  r  r?  rF  r,  rJ  rL  r  rp   r~   r   r[   rY   r1  r1  Q  s       [[3--dd55::.>.>.2d55dB3G3G.H.H/I J J 1 1	  
1 [3*]+<+<+<==? ?[\D%=99[V%>%>%>??1 1 @? :9? ?1  [VaV,,[3*]>>>::< <[_q!f55[_q!f55[\D%=99[V%>%>%>??1 1 @? :9 65 65< < -,1, [ :--nnn==? ? [\D%=991 1 :9? ?1" [Vq!fq!fq!f%=>>[ :--nnn==? ? [_q!f55[_q!f55[\D%=991 1 :9 65 65? ? ?>12/ / /! ! !! ! ! ! !r[   r1  c                   <   e Zd Zej                            deeg          d             Zej                            deeg          d             Z	ej                            ddgdfddgfdgdggfg          ej                            deeg          d                         Z
ej                            deeg          d	             Zej                            d
          ej                            dej        ej        g          d                         ZdS )TestAllFreqConvolvesconvapproachc                     t          j        dd                              d          }t          j        dd                              d          }t          t          d          5   |||d	
           d d d            d S # 1 swxY w Y   d S )NrK   r   r   r   r   r   zOFor 'valid' mode, one must be at least as large as the other in every dimensionr  r   r`   )rv   r   rw   r   r   rU   rS  rV   rW   s       rY   r   z(TestAllFreqConvolves.test_invalid_shapes  s     IaOO##F++Ib!$$V,,:"FG G G 	- 	- LAG,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   'BB
Bc                     t          j        g d          }t          j        g d          }t          t          d          5   |||ddg           d d d            d S # 1 swxY w Y   d S )N)rH   rI   rL   rK   )rH   rI   rF   rK   zVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r  r   rK   r  )rv   r  r   r   rU  s       rY   test_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axes  s     H\\\""H\\\"":"67 7 7 	, 	, LAQF++++		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   A!!A%(A%za,brK   rL   rF   c                 |    t          t          d          5   |||           d d d            d S # 1 swxY w Y   d S )Nz/in1 and in2 should have the same dimensionalityr  r   r   )rU   rV   rW   rS  s       rY   r  z)TestAllFreqConvolves.test_mismatched_dims  s     :"-. . . 	 	 LA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   155c                    t          t          d          5   |dgdgd           d d d            n# 1 swxY w Y   t          t          d          5   |dgdgg            d d d            n# 1 swxY w Y   t          t          d	          5   |dgdgddgd
dgg           d d d            n# 1 swxY w Y   t          t          d	          5   |dgdgg d           d d d            n# 1 swxY w Y   t          t          d          5   |dgdgdg           d d d            n# 1 swxY w Y   t          t          d          5   |dgdgdg           d d d            n# 1 swxY w Y   t          t          d          5   |dgdgddg           d d d            d S # 1 swxY w Y   d S )Nz4acceptable mode flags are 'valid', 'same', or 'full'r  rK   rL   chipsr`   z#when provided, axes cannot be emptyr  z-axes must be a scalar or iterable of integersrF   rG   )      ?r]  r_  r`  z$axes exceeds dimensionality of inputr  zall axes must be uniquer   rY  )rU   rS  s     rY   test_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags  s    :"01 1 1 	1 	1 L!qc0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
 :!FH H H 	, 	,L!qc++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, : .2 3 3 3 	: 	:L!qc!Q!Q(89999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: : .2 3 3 3 	: 	:L!qc(8(8(89999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: :!GI I I 	- 	-L!qc,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- :!GI I I 	. 	.L!qc----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. :!:< < < 	0 	0L!qcA////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sx   488A22A69A6B66B:=B:C66C:=C:D55D9<D9E44E8;E8F55F9<F9ignore::DeprecationWarningr   c                    t           j                            d                              |          }t           j                            d                              |          }t          j         |                      r
|dz  }|dz  }t	          ||          }t          |t          ||d                     |j        |k    sJ d S )N)rr   rr   )rG   rG   y        ?rs   rt   )rv   r   r   iscomplexobjr   r   r   r   )rU   r   rk   rl   ress        rY   test_longdtype_inputz)TestAllFreqConvolves.test_longdtype_input  s     IX&&--e44IV$$++E22?5577## 	HAHA!QXa8<<<===yE!!!!!!r[   N)r   r   r   r  r  rx  r   r   r   rW  r  r]  filterwarningsrv   
longdoubleclongdoublerb  r   r[   rY   rR  rR    s       [^):68 8- -8 8- [^):68 8, ,8 8, [U !sAh 1#h !saSEl,- - [^):68 8 8 8	- - [^):68 80 08 80< [ <==[Wr}bn&EFF	" 	" GF >=	" 	" 	"r[   rR  c                   T   e Zd Zg dg dg dg dg dg dg dg dg d	g d
g
Zg dg dg dg dg dg dg dg dg dg dg
ZddgZd Zej        	                    de
j        e
j        e
j        e
j        eee
j        e
j        e
j        e
j        g
          d             Zej        	                    de
j        e
j        e
j        e
j        e
j        e
j        ddg          d             Zd Zd Zej        	                    de
j        e
j        e
j        g          d             Zd S )!TestMedFilt)
r  r  r  r  r  rS     rr   r   r7  )
r  r  r  r  r  r   H   M   rK  rP  )
r  r  r  r  r  r7  r7     r6  rj  )
r  r  r  r  r  r         _   #   )
r  r  r  r  r  r7  rb   r$  ra  rP  )
r   a   rO   rK  r   rj  r   r   G   r   )
r6  r  rO  rm  rK  rP   rk  rK  r3  rQ  )
rF   !   r  r8  rK   r   rJ  7   rR   S   )
r   r  r7  r   r  r7  r3  +   r   r4  )
rP   r   X   r   '   rG   rS  r6  r   r   )
r   r  r  r  r   rl  rl  rh  rr   r   )
r   r  r  r  r  r   rk  ra  rm  r   )
r  r  r  r  r  r7  rb   rb   r7  ro  )
r  r  r  r  r  r  r   r7  r6  r   )
r  r  r  r  r  r  r7  rs  r6  ro  )
rr  r  r  r  r  r7  r7  ru  rs  r4  )
rP   r  r  r  r  r7  r7  r   rs  r4  )
r   r7  r  r  r7  r7  r7  ru  r   ra  )
r   rP   rr  rw  rP   rP   ru  ru  ru  r   )
r   r   r  r   rG   rG   rk  rk  r3  r   r   rF   c                     t          j        | j        | j                  }t          j        t          j        | j        t                    | j                  }t          || j	                   t          ||           d S r3  )
r   medfiltINKERNEL_SIZE	medfilt2drv   r   rn  r   OUT)rU   r   r   s      rY   rZ   zTestMedFilt.test_basicD  sc    N47D$455RXdgu55t7GHH1dh'''1a     r[   r   c                     t          j        | j        |          }t          t	          j        |          j        |           t          t	          j        |          j        |           d S )Nr	  )rv   r   rz  r
   r   ry  r   r|  rU   r   in_typeds      rY   
test_typeszTestMedFilt.test_typesJ  s[    
 8DG5111V^H--3U;;;V%h//5u=====r[   float96float128c                    |dv r>t          j        t           j                  j        |k    rt	          j        d|            t          j        | j        |          }t	          j        t          d          5  t          j        |           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )N)r  r  zPlatform does not support r	  znot supportedr  )rv   finford  r   r  skipr   rz  r	   r   r   ry  r|  r  s      rY   test_invalid_dtypeszTestMedFilt.test_invalid_dtypesS  s_    ,,,HR]++1U::K<U<<===8DG5111]:_=== 	% 	%N8$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]:_=== 	' 	'X&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's$   9BB!B C""C&)C&c                     d}t          t          |          5  t          j        d            d d d            d S # 1 swxY w Y   d S )Nz(dtype=object is not supported by medfiltr  )r   r   r   ry  )rU   rB  s     rY   	test_nonezTestMedFilt.test_noned  s    8:S111 	! 	!N4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   ;??c                     t          j        dt           j                  }|dd         }d|_        t	          t          j        |d          dk               d S )NrM   r	  rH   rI   r   rK         @)rv   r   r   r  r   r   ry  )rU   dummyrV   s      rY   test_odd_strideszTestMedFilt.test_odd_stridesj  sS     	"BJ///!A#J	q!$$*+++++r[   c                 h   
 t          j         j        |          t          j         j        |          }j        |j        k    sJ |j        d         dz  
|j        d         dz   j        d         dz  dz    j        d         dz  dz   
 fdt          j        |          }t          d          5 h d}fd	|D             }t          |          D ]!}|	                                \  }}}	||||	f<   "	 d d d            n# 1 swxY w Y   t          ||           d S )
Nr	  r   rL   rK   c                 (   | \  }}|dk    r5t          dz             }t          d           }t          d          }n3t          z
  d           }t          d           }t          d           }|dk    r5t          dz             }t          d           }t          d          }n3t          z
  d           }t          d           }t          d           }||f         }	t          j        |	j                  }
|
||f         ||fS Nr   )slicer   r|  r{  )chunkMNMinMselMoutNinNselNout
chunk_datamedM1N1r  offMoffNrU   s              rY   applyz2TestMedFilt.test_medfilt2d_parallel.<locals>.apply  s    DAqAvvArDy))QQ||BIt,,T4((RAvvArDy))QQ||BIt,,T4((R "#s(+J":t/?@@CtTz?D$..r[   rG   )max_workers>   rK   r   r   r   r   rK   rK   rK   c                 <    h | ]}                     |          S r   )submit)r   r  r  pools     rY   	<setcomp>z6TestMedFilt.test_medfilt2d_parallel.<locals>.<setcomp>  s'    EEEUt{{5%00EEEr[   )rv   r   rz  r}  r  r{  
zeros_liker   r   rg  r   )rU   r   r   outputchunksfuturesfuturedataMsliceNslicer  r  r  r  r  r  r  s   `         @@@@@@@rY   test_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallels  s   8DG51118DHE222 ~////
 ^A!#^A!#"a'!+"a'!+	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/8 x((A... 	.$555FEEEEEfEEEG 'w// . .'-}}$ff)-vv~&&.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	68,,,,,s   ADDDN)r   r   r   rz  r}  r{  rZ   r  r  rx  rv   ubytebyteushortshortrB   rA   	ulonglongr   r   r  bool_r   r   re  r   object_r  r  r  r  r   r[   rY   rg  rg  *  s       
2
2
2
1
1
1
2
2
2
2
2
2
1
1
1
2
2
2
2
2
2
0
0
0
1
1
1
0
0
0	
2B 211111333333333333333222111---	/C Q%K! ! ! [Wrx")RX'/",')z2:'? @ @> >@ @> [Wrxr}')~rz2:'0*'> ? ?' '? ?'! ! !, , , [WrxRZ&HII5- 5- JI5- 5- 5-r[   rg  c                       e Zd Zd ZdS )
TestWienerc                    t          g dg dg dg dgd          }t          g dg dg dg d	g          }t          t          j        |          |d
           t          t          j        |d          |d
           d S )N)rH   rI   rG   rF   )rF   rH   rI   rL   )rL   rF   rH   rI   )rK   rI   r$  r   r   )gSXO@gXq	@gq@g?)g]`UUU@gFUUUU@gq@gcq@)gyq@gXq@gXq@gUJ4@)gUUUU?g2k6k@gҷWH@g@_)@rI   decimalrF   )mysize)r   r   r   wiener)rU   r,  r+  s      rY   rZ   zTestWiener.test_basic  s    <<<<<<<<<! #&' ' IIILLLLLLMMMO P P 	"&-"2"2AqAAAA!&-!"<"<"<aKKKKKKr[   Nr   r   r   rZ   r   r[   rY   r  r    s(        
L 
L 
L 
L 
Lr[   r  )meanmedianminimummaximumlinec                      e Zd Zd Zej                            dd          ej                            dd          ej                            dd          d                                     Zd	 Zej                            d
d          ej                            dd          ej                            dd          d                                     Z	ej        j
        ej                            de          d                         Zej                            de          d             Zej                            de          ej                            dej        ej        g          d                         Zej                            ddg e edgddge                    z             d             Zd Zd Zej                            dej        ej        g          d             ZdS )TestResamplec           	      j   t          j        d          }d}t          j        dd          }t	          t
          t          j        |||           t	          t
          t          j        |dd           t	          t
          t          j        |dd           t	          t
          t          j        |d	dd
           t	          t
          t          j        |d	ddd           t          j        t          j        d          d          }t          j        ||d|           t          |j
        dk               d S )N      )kaiser       @   windowyorK   r   rL   r  padtyper  rM   )r  cval)rL   rK   r   axisr  )r  )rv   r   r   
get_windowr   r   resampleresample_polyr  r   r  )rU   signumwinsig2s        rY   rZ   zTestResample.test_basic  s   
 inn55j&/3CHHHH 	j&"6T1EEEj&"6QBBBj&"6Q2NNNNj&"6Q$2	/ 	/ 	/ 	/ wry~~v..c37777	V#$$$$$r[   r  )Nhammingr  )r  rk  r  )r   rj  rM   r  c           	         t          j        dd|d          }t          j        |dz   dz            }t          t	          j        |||          t	          j        |dz   ||          j                   t          j        t          j        |dz   dz            t          j        |dz   dz            g          }|dz   }t          t	          j        ||d	|
          t	          j        ||d	|
          j        d           d S )Nr   rM   F)endpointrL   g      @r  r   rK   r  &.>r  )	rv   linspacecosr   r   r  realr   sin)rU   r  r  r  rk   rl   	y_complexs          rY   	test_rfftzTestResample.test_rfft  s    K2q5111FAqD593v>>>BFCCCH	J 	J 	J HbfadU3Y''Ac	):):;<<F	OAs6:::OIs6BBBG	 	 	 	 	 	r[   c                     t          j        d          dz   }t          j        |          }d}t	          t          j        ||d          t          j        ||d          d           d S )Nr  r   freq)domaintimer  r  )rv   r   sp_fftr   r   r   r  )rU   tsigfsigr  s       rY   test_input_domainzTestResample.test_input_domain  st    y~~"z$OD#f555OD#f555	 	 	 	 	 	r[   nx)rK   rL   rF   rH   r   nyr   )rn  r/  c                     t          j        dg|z  |          }t          j        ||          }t	          |dg|z             d S NrK   )rv   r   r   r  r   )rU   r  r  r   rk   rl   s         rY   test_dczTestResample.test_dc  sH     HaS2Xu%%OAr""A38$$$$$r[   r  c                    t          j        d          }t           j                            d                              d          }|                                }t          j        |dd||           t          ||           d S )NrF   r   rL   rH   rK   r  r  )	rv   r  r   r   r   copyr   r  r   )rU   r  impulser  window_origs        rY   test_mutable_windowz TestResample.test_mutable_window  ss     (1++&&q))//22kkmmWa67KKKK6;/////r[   c                     t          j        dt           j                  }t          j        g dt           j                  }t	          j        |dd||          }|j        t           j        k    sJ d S )NrM   r	  rK   rK   rK   rK   rL   r  )rv   r   r   r   r   r  r   )rU   r  rk   r+  rl   s        rY   test_output_float32z TestResample.test_output_float32  sj     Ib
+++HYYYbj111 AqGDDDw"*$$$$$$r[   c                     t          j        d|          }t          j        |dd|          }|j        |j        k    sJ d S )NrM   r	  rK   rL   r  )rv   r   r   r  r   )rU   r  r   rk   rl   s        rY   test_output_match_dtypez$TestResample.test_output_match_dtype  sL     Ib&&& Aq':::w!'!!!!!!r[   zmethod, ext, padtype)r   FN	polyphaseFTc                    d}g d}t          j        |          t          |          z  }t          j        d          d d t           j        f         }t          j        dt           j        z  |z  |z            t          |          z  }|D ]}	t          j        |	          t          |	          z  }
t          j        dt           j        z  |z  |
z            t          |	          z  }|dk    rt          j	        ||	d          }ny|r]|	|k    rWt          |	|          }|	|z  }||z  }t          ||          }d|z  }d	|z  }t          j        d|z  d
z   |d          }||d}nd|i}t          j        ||	|fddi|}t          |||          D ]\  }}}|d|	z  k    r?|                    d           |dv rt!          ||d           ;t!          ||d           Nt#          |j        |j                   t          j        ||          d         }t)          |dk    |||	f           t           j                            d          }t          |          t          j        |                    |                    z  }|D ]}	t          j        |	          t          |	          z  }
t          j        |
||          }|dk    rt          j	        ||	          }nt          j        ||	||          }t#          |j        |j                   t          j        ||          d         }t)          |dk    |           |dk    rt          j        ddg          }t          j	        |d          }t          j        g d          }t!          ||d           t          j        g d           }t          j	        |d          }t          j        ddg          }t!          ||d           d S d S )!Nr   )	r   r  r  c   r   rj     r     )r\        $@g      D@rL   r   r   r  r\  rM   rK   )r  r  r  r  r  r        ?        )r  r  333333?r  r   r  gGz?rB  r   r  r   r   rG   )r         ?        r   r  -q=)r\  r  r	  r  )rv   r   rn  r   newaxisr  pir8   r   r  r   maxr
  r  r'  r2  r   r   r  corrcoefr   r   r   cumsumr   interp) rU   ru   extr  raterates_tor   freqsrk   rate_tot_toy_tos	y_resampsr,  updownmax_ratef_chalf_lenr  polyargsy_toy_resampr  corrr   r   y1_testy1_truer   y2_testy2_trues                                    rY   test_resample_methodsz"TestResample.test_resample_methods  s,    <<< IdOOeDkk)((BJ7F1ru9u$q())DJJ6 !	D !	DG9W%%g6DF1ru9u,t344tG}}DE"OAwR@@@		 47d??GT**A AB19D"2t}}Hx-C!H}H#]1x<!+;S2AC C CF*0WEEHH )73H"0GT = = =3;= =	 ),E9e(D(D 
D 
D$h3=((IIbMMM"888'$TBBBBB'$TBBBBB&tz8>BBB;tX66t<DD4KdD'-BCCCCC
D i##A&&JJ399T??333 	+ 	+G9W%%g6D9T1a((D!?1g66!/7D8?A A Atz8>:::;tX..t4DD4KT***** U??66*++Bob!,,GhAAABBGGW59999,,,--Bob!,,GhBx((GGW5999999 ?r[   c           	      z   t           j                            d          }t          t           j        t           j        t          t          f}d}g d}|D ]}|                    |          	                    |          }|t           j        t           j
        fv r|d|                    |          z  z  }d|d<   d|d<   |D ]|}t          j        dd|z  d	
          }t          |d|d          d d |         }	t          ||d d d                   }
t          j        |d||

          }t!          |	|dd           }d S )Nr   r  )rL   r  O   r   r   r   r   r\  r  r  constantr  rK   Hz>r   r   )rv   r   r   intr   r   rn  r/  r   r   r   r   r
  r&   r   r  r   )rU   random_state	try_typesr   down_factorsr   rk   r  r+  yfhcrl   s               rY   test_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltf  sU   y,,R00"*blE7C	"{{ 	= 	=E""4((//66Ar}555R,,,T2222 AaDAbE$ 	= 	=M"b4i	BBBaa<<<VVtVD
 a44R4))(AtB???ADt<<<<<	=	= 	=r[   c           
      Z   dD ]}t          dd|          D ]}dD ]}t          j                            |f          }t          j                            |f          }t          ||d d d         d          }t	          j        |d||          }t          |d d |         |           d S )	N)rL   rG   rK   r5  )rP   rr  r   r,  r`   )r  r  r  )rx   rv   r   r   r   r  r   )rU   r  r  nweightsrk   weightsy_gy_ss           rY   test_correlate1dzTestResample.test_correlate1d  s     	6 	6DAr4(( 6 6 ( 6 6H	(("//A i..{;;G%a2ZHHHC .ad7< < <C#C$K555566	6 	6r[   c                     t          j        g d|          }t          j        |ddd          }t          j        |          dk    sJ d S )N)r   rK   rL   rF   rL   rK   r   r	  rL   rK   smooth)r  r  r  r   )rv   r   r   r  count_nonzero)rU   r   r  actuals       rY   test_gh_15620zTestResample.test_gh_15620  sc    x---U;;;%d)*+,.68 8 8 ''!++++++r[   N)r   r   r   rZ   r  r  rx  r  r  r  r  padtype_optionsr  r  rv   r   r   r   r  r   r)  r5  r;  r   r@  r   r[   rY   r  r    s       % % %, [X'899[S(++[U$677  87 ,+ :9   [T?33[T?33[W&:;;% % <; 43 43%
 [[Y880 0 98 0 [Y88% % 98% [Y88[Wrz2:&>??" " @? 98" [	
$Gt}o 
 
	
 G: G: G:R= = =8	6 	6 	6 [Wrx&<==, , >=, , ,r[   r  c                       e Zd Zd Zd ZdS )TestCSpline1DEvalc                 `   t          g d          }t          t          |                    }|d         |d         z
  }t          j        |          }t          t          |          dz            dz  }t          j        ||||d                   }t          |d d d         |d           d S )	N)	rK   rL   rF   rG   rF   rL   rK   rL   r_  rK   r   r  )dxx0rM   rH   r  )r   r   lenr   	cspline1dcspline1d_evalr   )rU   rl   rk   rE  cjr   y2s          rY   rZ   zTestCSpline1DEval.test_basic  s    ///003q66NNqTAaD[a  CFFTM""T)"2rbQqT::: 	""TTrT(Aq999999r[   c                    t          j        d          }t          j        |j        t           j                  }d}d|z  }t          j        dt           j        z  |z  |z            }t          j        |          }t          j	        dg          }t          j
        ||          }t          |j        |j                   d S )NrL   r	  r  r\  rj   r  )rv   r   r  r  r   expr  r   rH  r   rI  r
   r   )rU   rk   rl   Tr   cyxnewynews           rY   rn   zTestCSpline1DEval.test_complex  s    IaLLHQWBL111!GF4"%<!#a'(( a   x$R..TZ)))))r[   N)r   r   r   rZ   rn   r   r[   rY   rC  rC    s2        
: 
: 
:* * * * *r[   rC  c                       e Zd Zd ZdS )TestOrderFiltc                 Z    t          t          j        g dg dd          g d           d S )NrJ   rK   r   rK   rK   )rL   rF   rL   )r   r   order_filterr  s    rY   rZ   zTestOrderFilt.test_basic  s>    6.yyy)))QGG$99	& 	& 	& 	& 	&r[   Nr  r   r[   rY   rS  rS    s#        & & & & &r[   rS  c            	          e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dddg ej         d          g          ej                            dddg ej         d          g          d                         Z!ej        j"        d             Z#dS ) _TestLinearFilterc                     t          j        dt          j        |          dz
  t          j        |                                        |          }|                     |          S )Nr   rK   )rv   r  prodrw   convert_dtype)rU   r  rk   s      rY   generatez_TestLinearFilter.generate  sL    K275>>A-rwu~~>>FFuMM!!!$$$r[   c                 d   | j         t          j         d          k    ryt          j        |          }t          j        |j        | j                   }t          j        ||gddgdgdgg          }|D ]#\  }}|                     |d                   |d<   $|S t          j        || j                   S )	NOrefs_okzerosize_okreadonly	writeonlyr   .r	  )r   rv   r  emptyr  nditertype)rU   arrr   iterrk   rl   s         rY   r[  z_TestLinearFilter.convert_dtype  s    :#&&*S//C(39dj11C9c3Z)M)B${m46 6D * *11R5))#J:c4444r[   c                     |                      d          }|                     ddg          }|                     ddg          }|                     g d          }t          t          |||          |           d S NrI   rK   r   r        ࿩r   rL   rG   rI   r   r  r\  r[  r   r$   rU   rk   rW   rV   y_rs        rY   test_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIR  s}    MM$2w''T{++  !5!5!566!'!Q"2"2C88888r[   c                     |                      d          }|                     ddg          }|                     dg          }|                     g d          }t          t          |||          |           d S )Nrj  rK   r   rK   rF   rH   r   r  rm  rn  s        rY   test_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIR  s{    MM$1v&&s##  !4!4!455!'!Q"2"2C88888r[   c                    |                      d          }|                     g d          }|                     ddg          }|                     ddg          }|                     g d          }|                     dd	g          }t          ||||
          \  }}t          ||           t          ||           d S )Nrj  rK   r   r   r  rk  rK   rL   )rK   rH   r$     r   ra  rv  zir\  r[  r$   r   	rU   rk   rW   rV   ry  ro  zf_rrl   zfs	            rY   test_rank_1_IIR_init_condz+_TestLinearFilter.test_rank_1_IIR_init_cond  s    MM$zzz**T{++A''  !6!6!677!!2s),,1aB'''2!!S)))!"d+++++r[   c                    |                      d          }|                     g d          }|                     dg          }|                     ddg          }|                     g d          }|                     ddg          }t          ||||          \  }}t          ||           t          ||           d S )Nrj  r  rK   )rK   rL   rF   rI   r$  r  r$  rH   rx  rz  r{  s	            rY   test_rank_1_FIR_init_condz+_TestLinearFilter.test_rank_1_FIR_init_cond  s    MM$yyy))s##A''  !5!5!566!!1a&))1aB'''2!!S)))!"d+++++r[   c                    |                      d          }|                     ddg          }|                     ddg          }|                     g dg dg dg dg          }t          |||d          }t          ||           d S )	NrG   rF   rK   r   r  r   rL   rG   rI   rG   rL   r   r  rz  )rU   rk   rW   rV   y_r2_a0rl   s         rY   test_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0  s    MM&!!2w''Sz**$$iiiIII&/ii&1 2 2Aq!!$$$!'1-----r[   c                    |                      d          }|                     ddg          }|                     ddg          }|                     g dg dg dg dg          }t          |||d	          }t          ||           d S )
Nr  rK   r   r  r   rL   r   rI   r  rI   rR   rw  rR   rh  irh  r  rz  )rU   rk   rW   rV   y_r2_a1rl   s         rY   test_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1  s    MM&!!2w''Sz**$$iii]]])MM&+ , ,Aq!!$$$!'1-----r[   c                    |                      d          }|                     ddg          }|                     ddg          }|                     t          j        d                    }|                     g dg dg dg d	g          }|                     g d
          d d t          j        f         }t          |||d|          \  }}t          ||           t          ||           d S )Nr  rK   r   r  )rG   rK   r  )r   r   )rv  rv  )rk  rk  )r  r  iir  ry  )r\  r[  rv   rd  r  r$   r   )	rU   rk   rW   rV   ry  	y_r2_a0_1r|  rl   r}  s	            rY    test_rank_2_IIR_axis_0_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_0_init_cond  s    MM&!!2w''Sz**//&&			:::}}}+mm(- . .	!!"5"5"566qqq"*}E1aaB///2!)Q///!"d+++++r[   c                    |                      d          }|                     ddg          }|                     ddg          }|                     t          j        d                    }|                     g dg dg dg dg          }|                     g dg          }t	          |||d	|
          \  }}t          ||           t          ||           d S )Nr  rK   r   r  rK   rF   )rK   rF   rH   )rH   rF   rK   )r  r  r   r  )r\  r[  rv   rd  r$   r   )	rU   rk   rW   rV   ry  	y_r2_a0_0r|  rl   r}  s	            rY    test_rank_2_IIR_axis_1_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_1_init_cond  s    MM%  2w''Sz**//&&			999(1		999(> ? ?	!!???"3441aaB///2!)Q///!"d+++++r[   c                 6   |                      d          }|                     ddg          |                     ddg          t          |j                  D ]>}t	          ||          }t          j        fd||          }t          ||           ?d S )NrG   rF   rL   rK   r   r  c                 &    t          |           S r3  r$   wrV   rW   s    rY   <lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda>&      1a0@0@ r[   r\  r[  rx   ndimr$   rv   apply_along_axisr   rU   rk   r  rl   ro  rV   rW   s        @@rY   test_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIR  s    MM)$$2w''Sz**!&MM 	. 	.D1a&&A%&@&@&@&@&@$JJC%a----	. 	.r[   c                 L   |                      d          }|                     ddg          |                     ddg          t          |j                  D ]}t	          |j                  }d||<   |                     t          j        |                    }|                     dg          t          |||          \  }}fd}fd}t          j	        |||          }	t          j	        |||          }
t          ||	           t          ||
           d S )Nr  rK   r   r  c                 6    t          |           d         S Nrx  r   r  r  rV   rW   zi1s    rY   lf0z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf04      q!Q3///22r[   c                 6    t          |           d         S Nrx  rK   r  r  s    rY   lf1z8_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.lf16  r  r[   r\  r[  rx   r  r  r  rv   rd  r$   r  r   rU   rk   r  zi_shapery  rl   r}  r  r  ro  r|  rV   rW   r  s              @@@rY   test_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_cond)  sW   MM)$$2w''Sz**!&MM 	0 	0DAG}}HHTN##BGH$5$566B$$aS))CAq!T2..EAr3 3 3 3 3 3 33 3 3 3 3 3 3%c433C&sD!44D%a---%b$////	0 	0r[   c                 4   |                      d          }|                     g d          |                     dg          t          |j                  D ]>}t	          ||          }t          j        fd||          }t          ||           ?d S )Nr  ru  rK   c                 &    t          |           S r3  r  r  s    rY   r  z3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda>D  r  r[   r  r  s        @@rY   test_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIR=  s    MM)$$zzz**s##!&MM 	. 	.D1a&&A%&@&@&@&@&@$JJC%a----	. 	.r[   c                 L   |                      d          }|                     g d          |                     dg          t          |j                  D ]}t	          |j                  }d||<   |                     t          j        |                    }|                     ddg          t          |||          \  }}fd}fd}t          j	        |||          }	t          j	        |||          }
t          ||	           t          ||
           d S )Nr  ru  rK   rL   c                 6    t          |           d         S r  r  r  s    rY   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf0R  r  r[   c                 6    t          |           d         S r  r  r  s    rY   r  z8_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.lf1T  r  r[   r  r  s              @@@rY   test_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_condG  sW   MM)$$zzz**s##!&MM 	0 	0DAG}}HHTN##BGH$5$566B$$aV,,CAq!T2..EAr3 3 3 3 3 3 33 3 3 3 3 3 3%c433C&sD!44D%a---%b$////	0 	0r[   c                 z   |                      d          }t          j        ddd          \  }}|                     |          }|                     |          }|j        d         dz
  }|                     t          j        dd	|f                    }|                     t          j        dd|f                    }t          ||||
          \  }}t          ||||
          \  }	}
t          |	|           t          ||
           t          t          t          |||dt          j        |                     d S )N)rG   rH   r  r   r  bar  r   rK   rG   rH   rx  r   )r\  r   r'   r[  r  rv   rd  r$   r   r   r   )rU   rk   rW   rV   zi_sizezi_fullzi_singy_fullzf_fully_singzf_sings              rY   test_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcast[  s*   MM*%%mAs4000!q!!q!!'!*q. $$RWaG_%=%=>>$$RWaG_%=%=>>!!Qg666!!Qg666!&&111!'7333 	j'1aB8H8HIIIIIr[   c                    |                      d          }|                     g d          }|                     dg          }|                     g d          }t          ||d         |          }t          ||           d S )NrI   ru  rK   )r   rK   rL   rL   rL   rL   r   rz  )rU   rk   rW   rV   ro  rl   s         rY   test_scalar_az_TestLinearFilter.test_scalar_ap  s    MM!zzz**s##  !3!3!344AqtQ!!S)))))r[   c                 ^   |                      t          j        dd                    }|                      t          j        dd                    }|                      t          j        g d                    }t          j        dd          }|dd d d d fxx         dz  cc<   |dd d d d fxx         dz  cc<   |                      |          }|                      t          j        d	d                    }t          j        dd          }dggdggdggg|d d d d d d
f<   |                      |          }t          |||d|          \  }}t          ||           t          ||           t          ||d         |d|          \  }	}
t          |	|           t          |
|           d S )N)rF   rL   rH   lrH   rK   r   r   )rF   rK   rG   rK   rL   rF   )rF   rL   rG   rG   r   r   )r[  rv   r  rd  r   r$   r   )rU   rk   rW   rV   ry  zf_expected
y_expectedy_iirzf_iiry_firzf_firs              rY   test_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dimsz  s    rx5566rwq#//rx0011WWc""
1QQQqqq5			Q			
1QQQqqq5			Q			##(('3)?)?@@Xgs++
 !seqcUaSE2
111QQQrr6''
33
  1aR00v!%444!&+666  1Q4B33v!%444!&+66666r[   c           	          |                      |          }|                      |          }|                      |          }|                      |          }t          t          t          |||||           d S r3  )r[  r   r   r$   )rU   rW   rV   rk   r  ry  s         rY   base_bad_size_ziz"_TestLinearFilter.base_bad_size_zi  sn    q!!q!!q!!##j'1aD"=====r[   c                 ~   t          j        d          }|                     dgdg|ddg           |                     ddgdg|dddg           |                     ddgdg|ddgg           |                     ddgdg|dg d           |                     g ddg|ddgg           |                     g ddg|dg d           |                     dgddg|dddg           |                     dgddg|ddgg           |                     dgddg|dg d           |                     g dddg|ddg           |                     g dddg|ddgdgg           |                     g dddg|dg d           |                     g dddg|dg d           |                     ddgg d|ddg           |                     ddgg d|ddgdgg           |                     ddgg d|dg d           |                     ddgg d|dg d           t          j        d                              d	          }|                     dgdg|ddg           |                     ddgdg|dg d           |                     ddgdg|dg dgg           |                     ddgdg|ddgdgd
gg           |                     ddgdg|dddgg           |                     ddgdg|dg dg           |                     g ddg|dg d           |                     g ddg|dg dg dgg           |                     g ddg|dddgd
dgddgg           |                     g ddg|dddgd
dgg           |                     g ddg|dg dg dg           |                     dgddg|dg d           |                     dgddg|dg dgg           |                     dgddg|ddgdgd
gg           |                     dgddg|dddgg           |                     dgddg|dg dg           |                     dgg d|dg d           |                     dgg d|dg dg dgg           |                     dgg d|dddgd
dgddgg           |                     dgg d|dddgd
dgg           |                     dgg d|dg dg dg           |                     g dddg|dg d           |                     g dddg|dg dg dgg           |                     g dddg|dddgd
dgddgg           |                     g dddg|dddgd
dgg           |                     g dddg|dg dg dg           |                     dgdg|ddg           |                     ddgdg|dg d           |                     ddgdg|ddgdgd
gdggg           |                     ddgdg|dg dg           |                     ddgdg|ddgdgd
gg           |                     ddgdg|ddgdgd
gdgdgg           |                     g ddg|dg d           |                     g ddg|dddgd
dgddgddggg           |                     g ddg|dg dg dg           |                     g ddg|dddgd
dgddgg           |                     g ddg|dddgd
dgddgddgddgg           |                     dgddg|dg d           |                     dgddg|ddgdgd
gdggg           |                     dgddg|dg dg           |                     dgddg|ddgdgd
gg           |                     dgddg|ddgdgd
gdgdgg           |                     dgg d|dg d           |                     dgg d|dddgd
dgddgddggg           |                     dgg d|dg dg dg           |                     dgg d|dddgd
dgddgg           |                     dgg d|dddgd
dgddgddgddgg           |                     g dddg|dg d           |                     g dddg|dddgd
dgddgddggg           |                     g dddg|dg dg dg           |                     g dddg|dddgd
dgddgg           |                     g dddg|dddgd
dgddgddgddgg           d S )NrI   rK   r   r   r   rK   rL   r  r   rK   rL   rF   rR   r  rL   )r   rK   rL   rF   rG   rH   r]   rF   rG   rH   )rG   rH   rI   r   )r   rK   rL   rF   rG   rH   rI   r   r   r   r$  )rv   r   r  rw   )rU   r   r   s      rY   test_bad_size_ziz"_TestLinearFilter.test_bad_size_zi  sy   Yq\\qcA3B444q!fqc2rAq6:::q!fqc2rQC5999q!fqc2r999===iii!b"se<<<iii!b"iii@@@qcAq62rAq6:::qcAq62rQC5999qcAq62r999===iii!QR!===iii!QR1#sDDDiii!QRCCCiii!QRFFFq!fiiiR!===q!fiiiR1#sDDDq!fiiiRCCCq!fiiiRFFF Yr]]""5))qcA3As333 	q!fqc2q''':::q!fqc2qGGG9+>>>q!fqc2qA3aS/BBBq!fqc2qAa5':::q!fqc2q999+>>>iii!b!]]]CCCiii!b!wwwwww6G5HIIIiii!b!qeQqE1Q%5HIIIiii!b!qeQqE]CCCiii!b!iii			5JKKKqcAq62q''':::qcAq62qGGG9+>>>qcAq62qA3aS/BBBqcAq62qAa5':::qcAq62q999+>>>qc999b!]]]CCCqc999b!wwwwww6G5HIIIqc999b!qeQqE1Q%5HIIIqc999b!qeQqE]CCCqc999b!iii			5JKKKiii!QQFFFiii!QQ''''''9J8KLLLiii!QQ!A!uaU8KLLLiii!QQ!A!uFFFiii!QQ9998MNNN 	qcA3As333q!fqc2q)))<<<q!fqc2qQCQC3D2EFFFq!fqc2q<<<.AAAq!fqc2qA3sA3-@@@q!fqc2qA3sA3sA32GHHHiii!b!5F5F5FGGGiii!b!!uaUAa5!A6O5PQQQiii!b!iii			5JKKKiii!b!qeQqE1Q%5HIIIiii!b!qeQqE1Q%1qQRe5TUUUqcAq62q)))<<<qcAq62qQCQC3D2EFFFqcAq62q<<<.AAAqcAq62qA3sA3-@@@qcAq62qA3sA3sA32GHHHqc999b!5F5F5FGGGqc999b!!uaUAa5!A6O5PQQQqc999b!iii			5JKKKqc999b!qeQqE1Q%5HIIIqc999b!qeQqE1Q%1qQRe5TUUUiii!QQ8I8I8IJJJiii!QQ1Q%1qeQqE9R8STTTiii!QQ9998MNNNiii!QQ!A!uaU8KLLLiii!QQ!A!uaUAa5RSTUQV8WXXXXXr[   c                 \   |                      d          }|                     dg          }|                     dg          }|                     g           }t          ||||          \  }}t          ||           t	          |j        | j                   t	          |j        d           d S )N)rH   rK   rx  r   )r\  r[  r$   r   r
   r   r   )rU   rk   rV   rW   ry  rl   r}  s          rY   test_empty_ziz_TestLinearFilter.test_empty_zi  s    MM$s##s####1aB'''2!!Q'''RXtz***RWa     r[   c                    |                      dg          }|                      dg          }t          ||ddg          }t          ||ddg          }t          ||ddg          }t          ||           t          ||           d S )NrK   r\  r   TF)r[  r-   r   )rU   rV   rW   ry  zi_1zi_2s         rY   test_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zi  s    s##s##QB7##q!aV$$q!dE]++2t$$$2t$$$$$r[   c                    |                      dg          }|                      g d          }|                      ddg          }|                      dg          }|                      dg          }|                      ddg          }t          ||||          \  }}t          ||           t          ||           d S )	NrK   ru  rL   r   ri  rJ  rx  r[  r$   r   	rU   rV   rW   ry  rk   yezferl   r}  s	            rY   test_short_x_FIRz"_TestLinearFilter.test_short_x_FIR  s     s##zzz**A''t$$%%  !S**1aB'''2!!R(((!"c*****r[   c                    |                      ddg          }|                      g d          }|                      ddg          }|                      dg          }|                      dg          }|                      ddg          }t          ||||	          \  }}t          ||           t          ||           d S )
NrK   ru  rL   r   ri  rJ  ir  rx  r  r  s	            rY   test_short_x_IIRz"_TestLinearFilter.test_short_x_IIR  s     1v&&zzz**A''t$$%%  #s,,1aB'''2!!R(((!"c*****r[   c                    |                      d          }|                     ddg          }|                                }|                     ddg          }|                                }|                     g d          }t          |||          }t	          ||           t          ||           t          ||           d S ri  r\  r[  r  r$   r   r
   rU   rk   rW   b0rV   a0ro  y_fs           rY   test_do_not_modify_a_b_IIRz,_TestLinearFilter.test_do_not_modify_a_b_IIR,  s    MM$2w''VVXXT{++VVXX  !5!5!566aA!#s+++QQr[   c                    |                      d          }|                     g d          }|                                }|                     dg          }|                                }|                     g d          }t          |||          }t	          ||           t          ||           t          ||           d S )Nrj  rU  rL   )r   r  rK   rL   rF   r`  r  r  s           rY   test_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIR8  s    MM$yyy))VVXXs##VVXX  !6!6!677aA!#s+++QQr[   rV   r\  rW   c                     t           j                            d          }t          t	          t          j        dg          t          j        dg          |          t	          |||                     d S )NrM   r\  )rv   r   r   r   r$   r   )rU   rV   rW   r  s       rY   test_scalar_inputz#_TestLinearFilter.test_scalar_inputD  se     yr""BHcUOORXse__d;;Aq$	! 	! 	! 	! 	!r[   c                     t          j        g dt                    }t          j        g dt                    }t          j        d          5  t          ||g d           d d d            d S # 1 swxY w Y   d S )Nr   r	  r   r  r  r^   )rv   r  r  r  r  r$   r   s      rY   r  z(_TestLinearFilter.test_dtype_deprecationL  s     J)))888J222&AAA#*IJJJ 	( 	(Aq,,,'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A11A58A5N)$r   r   r   r\  r[  rp  rs  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx  rv   r   r  r  r  r   r[   rY   rX  rX    s'       % % %
5 
5 
59 9 99 9 9	, 	, 	,	, 	, 	,. . .. . ., , ,, , ,. . .0 0 0(. . .0 0 0(J J J** * *7 7 76> > >^Y ^Y ^Y@	! 	! 	!	% 	% 	%+ + ++ + +
 
 

 
 
 [S3xrx}}"=>>[S3xrx}}"=>>! ! ?> ?>! [( ( ( ( (r[   rX  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterFloat32r   Nr   r   r   rv   r   r   r[   rY   r  r  U          BHSMMEEEr[   r  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterFloat64r   Nr  r   r[   rY   r  r  Y  r  r[   r  r^  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterFloatExtendedr,  Nr  r   r[   rY   r  r  ]          BHSMMEEEr[   r  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterComplex64FNr  r   r[   rY   r  r  b  r  r[   r  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterComplex128DNr  r   r[   rY   r  r  f  r  r[   r  c                   .    e Zd Z ej        d          ZdS )TestLinearFilterComplexExtendedGNr  r   r[   rY   r  r  j  r  r[   r  c                   4    e Zd Z ej        d          Zd ZdS )TestLinearFilterDecimalr^  c                 :    t          t          |                    S r3  )r   strrU   rk   s     rY   re  zTestLinearFilterDecimal.types  s    s1vvr[   N)r   r   r   rv   r   re  r   r[   rY   r  r  o  s2        BHSMME    r[   r  c                   2    e Zd Z ej        d          ZeZdS )TestLinearFilterObjectr^  N)r   r   r   rv   r   rn  re  r   r[   rY   r  r  w  s"        BHSMMEDDDr[   r  c                  :   t          t          d          r"dt          j        v rt          j        d           t          t          t          dgdgg d           t          t          t          dgd gg d           t          t          t          d gdgg d           d S )Nabiflagsr   z'test is flaky when run with python3-dbgr\  )r\  Nr]  r\  r]  r_  )hasattrsysr  r  r  r   	TypeErrorr$   r   r[   rY   test_lfilter_bad_objectr  }  s     sJ ?C3<$7$7=>>>)WsecU4D4D4DEEE)WsedV___EEE)Wtfse___EEEEEr[   c                  L    t          t          t          ddgddgg d           d S )NrL   rF   rG   rH   )rK   rL   rF   rG   rH   )r   NotImplementedErrorr$   r   r[   rY   !test_lfilter_notimplemented_inputr    s+    %w1!ukkkJJJJJr[   dt)marksc                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestCorrelateRealc                    t          j        ddd                              |          }t          j        ddd                              |          }t          j        g d                              |          }|||fS )Nr   rF   rG   rK   rL   )r   rL   rH   r   rF   )rv   r  r   r   rU   r  rV   rW   ro  s        rY   _setup_rank1zTestCorrelateReal._setup_rank1  sq    K1a  ''++K1a  ''++h''..r22!Syr[   c                     d}	 t          j        |          }t          |d          r)t          dt          j        |j                  z            }n# t          $ r Y nw xY w|S )NrI   
resolutionrk  )rv   r  r  r/  log10r  	Exception)rU   res_dtr  dt_infos       rY   equal_tolerancez!TestCorrelateReal.equal_tolerance  ss    	hv&&Gw-- Ad28G,>#?#??@@ 	 	 	D	s   AA 
AAc                     |t           j        k    r|                     t           j                  S |                     |          S r3  )rv   rd  r$  r   )rU   r"  s     rY   equal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fft  s;     R]""''
333''///r[   c                    |t           k    r>t          t          d          gt          d          g          }t          |d           d S |                     |          \  }}}t	          ||d          }t	          ||d          }t          |||                     |j                             t          |||                     |j                             t          |j        |           t          |j        |           d S )NrG   rF   rs   r   rt   r  )	r   r    r
   _setup_rank3r   r   r&  r   r$  )rU   r  ru   rV   rW   ro  y_ffty_directs           rY   test_methodzTestCorrelateReal.test_method  s   =='wqzzlCCF*****))"--IAq#a5111E Ah777H%c&+.2.F.Fu{.S.SV V V V &c&..2.B.B8>.R.RU U U U b))),,,,,r[   c                 B   |                      |          \  }}}t          ||d          }t          ||dd                    t          |j        |           t          ||d          }t          ||dd         d d d                    t          |j        |           d S )Nr   rK   rG   r   r  r   r   r
   r   rU   r  rV   rW   ro  rl   s         rY   test_rank1_validz"TestCorrelateReal.test_rank1_valid  s    %%b))	1caG$$!!S1X...QWb!!! aG$$!!S1Xddd^444QWb!!!!!r[   c                     |                      |          \  }}}t          ||d          }t          ||d d                    t          |j        |           d S )Nr_   r   r-  r.  s         rY   test_rank1_samez!TestCorrelateReal.test_rank1_same  s\    %%b))	1caF##!!S"X...QWb!!!!!r[   c                     |                      |          \  }}}t          ||d          }t          ||           t          |j        |           d S )Nr   r-  r.  s         rY   test_rank1_fullz!TestCorrelateReal.test_rank1_full  sT    %%b))	1caF##!!S)))QWb!!!!!r[   c                    t          j        ddd                              dd                              |          }t          j        ddd                              d	d                              |          }t	          g d
g dg dg dg dg dgg dg dg dg dg dg dgg dg dg dg dg dg dggt           j                                      |          }|||fS )Nr   rw  r5  )rL   rG   rH   r  )orderrQ   r3  r   )r	  g      g@g     @g     @     @@g     @g     }@g      d@)g      G@g      {@g     @g     @g     @     @g      @g     p@)     `@g      @g     @g     @     @g     @g     @@g     s@)g     @p@g     @g     0@g     @g     p@g     (@g     `@g     t@)g     @i@g     @     (@g      @g      @g     ؘ@g     @@g     b@)g     \@g     u@g     @g      @g      @g     @g     r@g      C@)g      7@g      y@g     ,@     @g     @g     $@g     @@g     Pr@)r8  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      {@r6  g     4@r9  g     @g     ܧ@g     @     l@)g      n@g     @g     @g     @g     @g     @g     @r[  )g      6@g     j@g     @g     @g     Д@g     p@g     z@g     `@)g     U@g     @~@g     (@r;  g     P@g     @g      @g     i@)g     g@g     @r7  g     X@g     @g     @g     Џ@g     @k@)g     @s@g     p@g     x@g     h@g     @g     @g     ؐ@r<  )r<  g     @r:  g      @g     @g     Ȗ@g     @g     S@)g     _@g      v@g     @g     @g     @g     p@g     @m@r	  r	  )rv   r  rw   r   r   r   r  s        rY   r(  zTestCorrelateReal._setup_rank3  so   K2r""**9C*@@GG K2r""**9C*@@GG  EEEIIIKKKKKKJJJFFFH JIIKKKLLLLLLLLLIIIK GFFIIIKKKLLLIIIEEEGH( *)& & &( '-fRjj) 	, !Syr[   c           	      p   |                      |          \  }}}t          ||d          }t          ||ddddddf                    t          |j        |           t          ||d          }t          ||ddddddf         d d dd d dd d df                    t          |j        |           d S )Nr   rK   rL   rG   rF   rH   r   r(  r   r   r
   r   r.  s         rY   test_rank3_validz"TestCorrelateReal.test_rank3_valid  s    %%b))	1caG$$!!S1ac1Q3%7888QWb!!! aG$$!!S1ac1Q3%7"dddDDbD8H%IJJJQWb!!!!!r[   c                     |                      |          \  }}}t          ||d          }t          ||ddddddf                    t          |j        |           d S )Nr_   r   r   rK   r  r>  r.  s         rY   test_rank3_samez!TestCorrelateReal.test_rank3_same  sl    %%b))	1caF##!!S2qtQrT)9%:;;;QWb!!!!!r[   c                     |                      |          \  }}}t          ||          }t          ||           t          |j        |           d S r3  r>  r.  s         rY   test_rank3_allz TestCorrelateReal.test_rank3_all  sP    %%b))	1caOO!!S)))QWb!!!!!r[   N)r   r   r   r  r$  r&  r+  r/  r1  r3  r(  r?  rA  rC  r   r[   rY   r  r    s          	 	 	0 0 0- - -$	" 	" 	"" " "" " "  <	" 	" 	"" " "" " " " "r[   r  c                   P    e Zd Zd Zd Zd Zd Zej        j	        d             Z
dS )TestCorrelatec                 "   t          j        dd                              d          }t          j        dd                              d          }t          t          t
          g||fR i ddi t          t          t
          g||fR i ddi d S r   )rv   r   rw   r   r   r   r   s      rY   r   z!TestCorrelate.test_invalid_shapes  s     IaOO##F++Ib!$$V,,j)Jq!fJJJ8IJJJj)Jq!fJJJ8IJJJJJr[   c                 J   g d}g d}t          t          t          ||d           t          t          t          ||dd           t          t          t          ||dd	           t          t          t          ||d
d           t          t          t          ||dd           d S r   r   r   r   r   s      rY   r   z!TestCorrelate.test_invalid_params  s    IIIIj)Q????j)QuMMMMj)QhOOOOj)QwOOOOj)QwOOOOOOr[   c                 v   t          t          t          dgdd           t          t          t          ddgd           t          t          t          dgdd           t          t          t          ddgd           t          t          t          dgdgg           t          t          t          dgd           d S r  rH  r  s    rY   r  z"TestCorrelate.test_mismatched_dims'  s    j)aS!HEEEEj)QHEEEEj)aS!EBBBBj)QEBBBBj)aSA3%888j)aS!44444r[   c                 4   g d}ddg}t          t          ||d          g d           g d}g d}t          t          ||d          g d           t          t          ||d	          g d
           t          t          ||d          dg           d S )NrJ   rG   rH   r_   r`   )rH      rQ   r   )r   rP   rQ   r   )rI   r   rP   rQ   rR   r   rP   )r   r   r   s      rY   test_numpy_fastpathz!TestCorrelate.test_numpy_fastpath0  s    IIF	!QV444kkkBBBIIII	!QV444lllCCC	!QV4446I6I6IJJJ	!QW555t<<<<<r[   c                     t          j        g dt                    }t          j        g dt                    }t          j        d          5  t          ||           d d d            d S # 1 swxY w Y   d S r  )rv   r  r  r  r  r   r   s      rY   r  z$TestCorrelate.test_dtype_deprecation;  s     J)))888J222&AAA#*IJJJ 	 	aOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  N)r   r   r   r   r   r  rL  r  r  r  r  r   r[   rY   rE  rE    sw        
K 
K 
KP P P5 5 5	= 	= 	= [    r[   rE  ra   r   r_   r   behindTF
input_size)r   rj  r  r  r  i'  c                    t           j                            d          }|                    |          }t	          |dz            }|r-t          j        |                    |          |g          }| }n||d          }|}t          |||           }t          |j        |j        |           }	t          j	        |          }
t          |	|
         |           t          |	j        |j                   d S )Nr   rM   r`   )rv   r   r   r  r/  concatenater   r   r   argmaxr
   r  )ra   rO  rP  r   in1offsetin2r   correlationlags	lag_indexs              rY   test_correlation_lagsrZ  D  s    
 )


"
"C


j
)
)CBF nc11&993?@@7 &''lC4000KCHchT:::D	+&&Ii(+++[./////r[   c                      t          j        t          d          5  t          ddd           d d d            d S # 1 swxY w Y   d S )NzMode asdfgh is invalidr  r   asdfghr`   )r  r	   r   r   r   r[   rY   "test_correlation_lags_invalid_moder]  `  s    	z)A	B	B	B 2 2c11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   <A A c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestCorrelateComplexc                     |t           j        k    rt           j        }t          dt          j        |          j        z  dz            S )NrL   rF   )rv   re  cdoubler/  r  	precision)rU   r  s     rY   r  zTestCorrelateComplex.decimalo  s9    B1rx||--1222r[   c                 
   t           j                            d           t           j                            d                              |          }|dt           j                            d                              |          z  z  }t           j                            d                              |          }|dt           j                            d                              |          z  z  }t          |j        |j        |          t          |j        |j        |          z                       |          }|dt          |j        |j        |           t          |j        |j        |          z   z  z  }|||fS )Nr$  rM   r   r   r`   )rv   r   r  r   r   r   r  imag)rU   r  ra   rV   rW   ro  s         rY   r  z!TestCorrelateComplex._setup_rank1t  s?   
	qIOOB&&r**	R")//"%%,,R0000IOOA%%b))	R")//!$$++B////d333d33345;VBZZ 	riT::::qvqvD999: ; 	;!Syr[   c                    |                      |d          \  }}}t          ||d          }t          |||                     |                     t	          |j        |           t          ||d          }t          ||d d d                                         |                     |                     t	          |j        |           d S )Nr   r  r   )r  r   r   r  r
   r   conjr.  s         rY   r/  z%TestCorrelateComplex.test_rank1_valid  s    %%b'22	1caG$$!!S$,,r2B2BCCCCQWb!!! aG$$!!S2Y^^%5%5t||B?O?OPPPPQWb!!!!!r[   c                     |                      |d          \  }}}t          ||d          }t          |||                     |                     t	          |j        |           d S )Nr_   r  r  r   r   r  r
   r   r.  s         rY   r1  z$TestCorrelateComplex.test_rank1_same  g    %%b&11	1caF##!!S$,,r2B2BCCCCQWb!!!!!r[   c                     |                      |d          \  }}}t          ||d          }t          |||                     |                     t	          |j        |           d S )Nr   r  rh  r.  s         rY   r3  z$TestCorrelateComplex.test_rank1_full  ri  r[   c                     t          j        g d|          }t          j        g d|          }t          ||          }t          |g d           d S )Nr   rg   r  r	  y      ?      @y       @      @y      @      @y      @      @)r         $@             <@            6@      y      0@      y       @      )rv   r   r   r
   rU   r  r   krl   s        rY   test_swap_fullz#TestCorrelateComplex.test_swap_full  sb    H---R888H555R@@@aOOQLLLMMMMMr[   c                 ^    g d}g d}t          ||d          }t          |g d           d S )Nrl  rm  r_   r`   )rn  ro  rp  )r   r
   rq  s        rY   test_swap_samez#TestCorrelateComplex.test_swap_same  sI    $$$,,,a(((Q33344444r[   c                 b   t           j                            ddd                              |          }|dt           j                            ddd                              |          z  z  }t           j                            ddd                              |          }|dt           j                            ddd                              |          z  z  }t	          |j        |j                  t	          |j        |j                  z                       |          }|dt	          |j        |j                   t	          |j        |j                  z   z  z  }t	          ||d          }t          |||                     |          dz
             t          |j
        |           d S )	NrM   r   rI   r   rG   r   rK   r  )rv   r   r   r   r   r  rd  r   r  r
   r   r.  s         rY   
test_rank3zTestCorrelateComplex.test_rank3  sc   IOOB1%%,,R00	R")//"a++2226666IOOAq!$$++B//	R")//!Q**11"5555((1616**+,2F2JJ 	ri///)AFAF2K2KKLLaF##!!S$,,r2B2BQ2FGGGGQWb!!!!!r[   c           	         t          j        t           j                                                                      |          }|dt          j        t           j                                                                      |          z  z  }t          j        t           j                                                                      |          }|dt          j        t           j                                                                      |          z  z  }t          |j        |j                  t          |j        |j                  z                       |          }|dt          j        t          |j        |j                   t          |j        |j                  z             z  z  }t          ||d          }t          ||| 	                    |          dz
             t          |j        |           t          t          dgdg          t          dd                     t          t          dgdg          t          dd                     t          t          dgdg          t          dd                     d S )Nr   r   rK   r  rj                 @rG   )rv   r   r   r   r   r   r  rd  r   r  r
   r   r.  s         rY   
test_rank0zTestCorrelateComplex.test_rank0  s   HRY__&&''..r22	R"(29??,,--44R8888HRY__&&''..r22	R"(29??,,--44R8888((1616**+,2F2JJ 	rBHi777&qvqv667 8 8 8 	8 aF##!!S$,,r2B2BQ2FGGGGQWb!!!YsRD))9Q+;+;<<<YtbT**Ib",=,=>>>YtaS))9R+;+;<<<<<r[   N)r   r   r   r  r  r/  r1  r3  rs  ru  rw  rz  r   r[   rY   r_  r_  e  s        3 3 3
  	" 	" 	"" " "" " "N N N5 5 5" " "= = = = =r[   r_  c                        e Zd Zd Zd Zd ZdS )TestCorrelate2dc           
         t          j        d          }t          j        g d          }dD ]}t          t          j        |||          t          j        |||                     t          t          j        t          j        |g|g|                    t          j        |||                     |dk    rt          t          j        |||          t          j        |||                     t          t          j        t          j        |g|g|                    t          j        |||                     d S )NrH   r  r  r`   r   )rv   r   r   r   r   r   r  r   r  s       rY    test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcs  s}   IaLLH]]]##- 	G 	GDQ = = = & 0AD A A AC C C
6+=qcA3CG,I ,I ,I !J !J & 0AD A A AC C C
 w#BLAD$A$A$A$*$4Q$E$E$EG G G#BJv/A1#sGK0M 0M 0M %N %N$*$4Q$E$E$EG G G	G 	Gr[   c                 6   t          j        dd                              d          }t          j        dd                              d          }t          t          t
          j        g||fR i ddi t          t          t
          j        g||fR i ddi d S r   )rv   r   rw   r   r   r   r   r   s      rY   r   z#TestCorrelate2d.test_invalid_shapes  s     IaOO##F++Ib!$$V,,j&"4S1vSSS&'ARSSSj&"4S1vSSS&'ARSSSSSr[   c                     t          t          j        dggdgg          d           t          t          j        dggdgg          d           t          t          j        dggdgg          d           d S )NrK   rj                 ry  rI   rG   y              (@)r
   r   r   r  s    rY   test_complex_inputz"TestCorrelate2d.test_complex_input  sw    V'!v66<<<V'""77;;;V'"!66<<<<<r[   N)r   r   r   r~  r   r  r   r[   rY   r|  r|    sG        G G G&
T 
T 
T= = = = =r[   r|  c                   z    e Zd Zd Zd Zej                            dej	        ej
        g          d             ZdS )TestLFilterZIc                     t          j        g d          }t          j        g d          }t          j        ddg          }t          ||          }t          ||           d S )N)r\  r^  r  )r\  r	  r]  r  r^  )rv   r   r%   r   )rU   rV   rW   zi_expectedry  s        rY   rZ   zTestLFilterZI.test_basic  sc    H%%%&&H___%%hT{++1!"k22222r[   c                     t          j        g d          }t          j        g d          }t          ||          }t          d|z  d|z            }t          ||d           d S )N)rL   r   rH   )rK   rK   r   rL   r  r  )rv   r   r%   r   )rU   rW   rV   r  zi2s        rY   test_scale_invariancez#TestLFilterZI.test_scale_invariance  sk     HYYYHYYYA1ac""Su------r[   r   c                     t          j        d|          }t          j        dg|          }t          t          j        t          j        ||                    j        |           d S )Nr   r	  rK   )rv   r  r   r
   r  r   r%   r   )rU   r   rW   rV   s       rY   r  zTestLFilterZI.test_types  s\    Ha&&&HaS&&&RWV.q!4455;UCCCCCr[   N)r   r   r   rZ   r  r  r  rx  rv   r   r   r  r   r[   rY   r  r    so        3 3 3. . . [Wrz2:&>??D D @?D D Dr[   r  c                   B    e Zd ZdZ	 	 ddZd Zd Zd	 Zd
 Zd Z	d Z
dS )TestFiltFilttfr   oddNrt  c           
          | j         dk    r"t          | \  }}	t          ||	||||||          S | j         dk    rt          | }
t	          |
||||          S d S )Nr  sos)filtfilt_kindr(   r&   r)   r0   )rU   zpkrk   r  r  padlenru   irlenrW   rV   r  s              rY   r&   zTestFiltFilt.filtfilt		  sn    %%3<DAqAq!T7FFEJJJ5((3-CsAtWf=== )(r[   c                     t          g dg d          }|                     |t          j        d                    }t	          |t          d          d           d S )NrJ   rR   g6{=r  )r2   r&   rv   r   r   )rU   r  r   s      rY   rZ   zTestFiltFilt.test_basic	  sU    YYY			**mmC2//VBZZh777777r[   c                    d}t          j        dd|dz             }t          j        dt           j        z  |z            }t          j        dt           j        z  |z            }||z   }t	          ddd	
          }t          j        |d                                                   }d}t          t          j        t          j	        |          t          j	        |          z                      }	| 
                    |||	          }
t          j        |
|z
                                            }t          |dk                t          j        |||z   g          }| 
                    |||	d          }t          |j        |j                   t          j        ||z
                                            }t          |dk                | 
                    ||j        |	d          }t          ||j                   d S )N  r   r\  rK   rM   i  r         ?r  r  r   )r  r   r  r  )rv   r  r  r  r'   r  r  r/  ceillogr&   r   vstackr
   r  rN  )rU   r  r   xlowxhighrk   r  repsr   rl   errx2dy2dy2dts                  rY   	test_sinezTestFiltFilt.test_sine	  s   K3q))vebema'((w*++5LQe,,,F3q6NN   sbfQii/0011 MM#qM++fQX""$$d
 ite|,--mmCQQm77SY	***fS4Z  $$&&d
 }}S#%}::S$&!!!!!r[   c                    t          j        d                              ddd          }t          ddd          }|                     ||d	d	
          }|                     |t          j        |d	d          d	d
          }t          |t          j        |d	d                     |                     |t          j        |d	d          d	d
          }t          |t          j        |d	d                     d S )Ng     @rM   r  rR   rF   r  r  r  r   r  rK   rL   )rv   r   rw   r'   r&   r  r   )rU   rk   r  y0y1rK  s         rY   	test_axiszTestFiltFilt.test_axis9	  s    I())11"b"==Qe,,,]]3!!]44]]3Aq! 4 4QQ]GG2r{2q!44555]]3Aq! 4 4QQ]GG2r{2q!4455555r[   c                     | j         dk    rd S t          j        ddgdt          j        d                    }t          |t          j        d          dd           d S )Nr  r  rK   rM   +=r   )r  r   r&   rv   r   r   )rU   r   s     rY   test_acoeffzTestFiltFilt.test_acoeffC	  sY    %%For2h29R==99RYr]]UCCCCCCr[   c                 P   | j         dk    rt          j        d           t          j        ddg          }t          j        dg          }t          j        ddg          }t          |||          \  }}}t          |d         |d         gd|d         z  d	|d
         z  z   d	|d         z  d|d
         z  z   g           t          ||d         d|d         z  z   d|d         z  z   d|d
         z  z   d|d         z  |d         z   d|d         z  z   d|d
         z  z   g           d S )Nr  $gust only implemented for TF systemsr\  r]  r  rk  r   r
  r  rK         ?r  )r  r  r  rv   r   r9   r   )rU   rk   rW   rV   rl   z1z2s          rY   test_gust_simplezTestFiltFilt.test_gust_simpleJ	  sH   %%K>??? Hc3Z  HcUOOHc4[!!"1a++	2rA1QqTC!H,c!A$hQqT.AB	D 	D 	DBqEDAJ.ad:U1Q4ZG AJA.qt;d1Q4iGI 	J 	J 	J 	J 	Jr[   c                     | j         dk    rt          j        d           t          j        d          }d}d}t          |||d          }||z  dz  |z  }t          ||           d S )	Nr  r  rR   r_  r]  gustrt   rL   )r  r  r  rv   r   r&   r   )rU   rk   rW   rV   rl   r   s         rY   test_gust_scalarszTestFiltFilt.test_gust_scalarsX	  sw    %%K>??? IbMMQ1V,,,aC!8a<8$$$$$r[   )r   r  Nrt  N)r   r   r   r  r&   rZ   r  r  r  r  r  r   r[   rY   r  r  	  s        M>B%)> > > >8 8 8
 "  "  "D6 6 6D D DJ J J% % % % %r[   r  c                       e Zd ZdZd ZdS )TestSOSFiltFiltr  c                 V   t           j                            d                              d          }t	          dd          D ]e}t          j        |dd          }t          | \  }}t          | }t          |||          }t          ||          }t          ||dd	| 
           fdS )z1Test equivalence between sosfiltfilt and filtfiltr   r  rK   rI   ffffff?r  r  r  zorder=)r   err_msgN)rv   r   r   r   rx   r   r'   r(   r)   r&   r0   r   )	rU   rk   r5  r  rW   rV   r  rl   y_soss	            rY   test_equivalencez TestSOSFiltFilt.test_equivalencei	  s    I!!!$$**4001a[[ 	L 	LE-tE:::C3<DAq3-CAq!!AQ''EAu5:J5:J:JKKKKK	L 	Lr[   N)r   r   r   r  r  r   r[   rY   r  r  f	  s-        M	L 	L 	L 	L 	Lr[   r  c                 T   d }t          t          |          t          |                     dz
  }t          | |          }t          j        |d|                                         |z  || d                                         |z  f          }t          ||| ||fdddddd		  	        }|\  }}	}
}}|d
k    rt          d|z            |d|         }||d         }t          | ||ddd         |          d
         ddd         }t          | |||          d
         }|||fS )aQ  
    An alternative implementation of filtfilt with Gustafsson edges.

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

...f===A		&E	F	F	F ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !r  c            	         dD ]} t          d          t          d          g}t          d          t          d          g}t          t          |||           d           d}d	D ]a}t          t          |          rJt	          j        ||
          }|                                }t          t          |||           d           bd S )NrN  rF   rL   rK   rG   r`   rs   rM   )
complex256
complex192r	  )r   r
   r    r  rv   rd  r  )ra   rk   r+  r   not_fft_conv_supps        rY   test_choose_conv_method_2r  	  s    ) 
L 
LQZZ$QZZ$'14888(CCC!= 	L 	Lr,-- LGA%6777FFHH/14@@@(KKK		L
L 
Lr[   c            	      Z   t          j        ddddd          \  } }}d}t          j        t          j        |                    }t          t          j        t          j        |          t          j        |          z                      }t          j        	                    d           t          | ||          \  }}d |fD ]I}d	|z  }	t          |||	fd
|           t          d          D ]}
g d}|	||
<   t          ||||
|           Jd|z  dz
  }t          |||fd
|           d S )NrF   {Gz?x   gffffff?r  r  r  r  rH   r   )rL   rL   rL   rL   r  )r   elliprv   r  r  r/  r  r  r   r  r(   r  rx   )rm   prr  r  r  approx_impulse_lenrW   rV   r  
signal_lenr  r  lengths                rY   test_filtfilt_gustr  	  sH    l1dC>>>GAq! C
rvayyARWRVC[[26!99%<==>>INN3!Q??DAq*+ 
: 
:++
 	Aq:-E::: !HH 	: 	:DIIE$E$K1eT59999	: !!B&F1vi,>?????r[   c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )TestDecimatec                     t          j        d          }t          t          t          j        |dd           t          t          t          j        |dd           d S )NrR   r  rK   )qr   rL   )rv   r   r   r  r   decimater
  s     rY   test_bad_argszTestDecimate.test_bad_args
  sK    IbMMi!sa@@@@i!qC@@@@@@r[   c                     t          j        d          }t          j        |dddd                                          }t          ||d d d                    d S )NrR   rL   rK   iirFr   ftype
zero_phaserv   r   r   r  roundr   rU   rk   rl   s      rY   test_basic_IIRzTestDecimate.test_basic_IIR
  U    IbMMOAqAUuEEEKKMM1a!f%%%%%r[   c                     t          j        d          }t          j        |dddd                                          }t          ||d d d                    d S )NrR   rL   rK   firFr  r  r  s      rY   test_basic_FIRzTestDecimate.test_basic_FIR
  r	  r[   c                     t          j        d          }t          j        |ddd          }t	          |j        d           t          j        |ddd          }t	          |j        d           d S )	N)r   r   rL   r   F)r  r  )rl  r   rK   )r   rl  )rv   r  r   r  r
   r  )rU   rm   d0d1s       rY   
test_shapezTestDecimate.test_shape
  sk    HX_Qe<<<RXx(((_Qe<<<RXx(((((r[   c                     t                      5 }|                    t          d           |                     dd           d d d            d S # 1 swxY w Y   d S )NBadly conditioned filterr  Fru   r  r   rA  r3   _test_phaseshiftrU   rC  s     rY   test_phaseshift_FIRz TestDecimate.test_phaseshift_FIR&
  s       	BCJJ(BCCC!!5!AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B   3AAAc                     t                      5 }|                    t          d           |                     dd           d d d            d S # 1 swxY w Y   d S )Nr  r  Tr  r  r  s     rY   test_zero_phase_FIRz TestDecimate.test_zero_phase_FIR+
  s       	ACJJ(BCCC!!4!@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ar  c                 4    |                      dd           d S )Nr  Fr  r  r  s    rY   test_phaseshift_IIRz TestDecimate.test_phaseshift_IIR0
  s!    Uu=====r[   c                 4    |                      dd           d S )Nr  Tr  r  r  s    rY   test_zero_phase_IIRz TestDecimate.test_zero_phase_IIR3
  s!    Ut<<<<<r[   c           	         d}g d}d}t          j        ||z  dz             t          |          z  }t          j        |          dz  dz  }t          j        dt           j        z  |d d t           j        f         z  |z            t          j        	                    |j
        d          z  }|D ]$}	||	z  }
t          j        |	|z  dz             t          |	          z  }t          j        dt           j        z  |d d t           j        f         z  |z            t          j        	                    |j
        d          z  }|d	k    r3d
}t          j        t          j        |dz   d|
z  d          d          }nI|dk    rCd}dt           j        z  |
z  }t          j        t          j        |d|t           j        z             }|du rNt          j        |j        |j        ||z  dz  t           j        z            \  }}|t          j        |          z  }nt          j        |          }t          j        |j        |
|||          }t          j        |                                |z  d          }|t          j        |          z  }|d|	z  k     }t/          t          j        |                                |z            |         ddd           &d S )Nr  )rl  r  r   r5  r   rK   皙?rL   rj   皙?r  r   r\  r  r  r  r   g?Fr  r  r   r  r  r   r   r.  )rv   r   rn  r   rM  r  r  r   windowstukeyr   dltir
  cheby1freqzr  denr  	ones_liker  r  r  rf  r   angle)rU   ru   r  r  r  t_totr   r  r   r  r  r  d_tosr   systemwc_h_respsr  	h_resampssubnyqs                        rY   r  zTestDecimate._test_phaseshift6
  s   ###Id5jl##eDkk1 ""S(1,VFRUNU111bj=%99A=>>~##AFC001   "	2 "	2GA9WU]1_--g>DVFRUNU111bj=-AADHII~++DIs;;<E V]1q5"q&:C&E &E &EFHJ J5Yq[fmAtRX&F&FG U""#\&*fj*/*Q,ru*<> >
726'??*,u--1F3=? ? ?I uzz||i7bAAAI	***IS[(F BHW\\^^I%=>>vF!%D2 2 2 2 2C"	2 "	2r[   c                    d}d}t          j        |          |z  }t          j        d|z            t          j        dt           j        z  |dz  z  |z            z  }t          t           j                            |          dd           t          j	        |d	d
          }t          t           j                            |          d           d S )Ng      Y@r  r]  rL   g      >@r\  r   r  r   r  )r  r  )rv   r   sqrtr  r  r   linalgnormr   r  r   )rU   sfreqr   r   rk   x_outs         rY   test_auto_nzTestDecimate.test_auto_nf
  s     IaLL5 GBFOObfQY%#+%>%BCCC	q))2D99992U333")..//66666r[   c                     t          j        t          j        dt          j                  d          }t          t          j        |                    rJ d S )Nr  r	  rM   )r   r  rv   rd  r   r   isnanr
  s     rY   test_long_float32zTestDecimate.test_long_float32r
  sH     OBGF"*===rBBrx{{#######r[   c                     t          j        t          j        dt          j                  d          }|j        j        t          j        k    sJ d S )Nr   r	  rM   )r   r  rv   rd  r   r   re  r   r
  s     rY   test_float16_upcastz TestDecimate.test_float16_upcastx
  sA    OBGCrz:::B??w|rz))))))r[   c                    d}d}d}t          j        ddt          j        z  |z  dz  d|          \  }}}|                    t
                    t          j        dt          j        z  |z  |z            z  }|                    t
                    t          j        dt          j        z  |z  |z            z  }t          j        |||          }t          j        d          |z  }t          j        dt          j        z  |z  |z            d	t          j        d
t          j        z  |z  |z            z  z   }	t          j	        |	d|d          }
t          j
        g t          j        |||          |	R  d d d         }t          |
|           t          j	        |	d|d          }t          j        g t          j        |||          |	R  d d d         }t          ||dd           d S )Nr  rH        @@rL   r  )r  fsrj   r  r  r  Fr#  Tr  vIh%<=r   )r   r'   rv   r  r   r/  rM  r&  r   r  r$   r(   r
   r&   r   )rU   fcentrefwidthrB  rm   r  rr  r.  r   r   ynzpynzprefyzpyzprefs                 rY   test_complex_iir_dltiz"TestDecimate.test_complex_iir_dlti}
  s    -1RU76>!#3EbIII1aHHWrBEzG';B'> ? ??HHWrBEzG';B'> ? ??Q1%%IcNNR VBJ(1,--RVC"%K'1A56667 q!6eDDD. $&-1a"8"8 $!"$ $ $$'CaC) 	T7###oa&TBBB $&-1a"8"8 $!"$ $ $$'CaC) 	V%e<<<<<<r[   c                    d}d}d}d}t          j        ||dz  |          }t          j        |          }|t          j        dt          j        z  |z  |z            z  }|d         t          j        |          z  }t          j        |d	          }	t          j        d
          |z  }
t          j        dt          j        z  |z  |
z            dt          j        dt          j        z  |z  |
z            z  z   }t          j	        |d|	d          }t          j
        ||d	d          d d         }t          ||           t          j	        |d|	d          }t          j        |d	d|          }t          ||           d S )Nr  rH   rA  r  rL   )rB  rj   r   rK   r  r  r  Fr#  )r  r  r   Tr  )r   r
  rv   rootsrM  r  polyr&  r   r  upfirdnr
   r  )rU   rD  rE  rB  numtapsbbasezbasezrotbzr.  r   r   rF  rG  rH  rI  s                   rY   test_complex_fir_dltiz"TestDecimate.test_complex_fir_dlti
  sx    gvaxB777 rvb25j72256661X%R##IcNNR VBJ(1,--RVC"%K'1A56667 q!6eDDD.Q11555dsd;T7###oa&TBBB%aAb999S&!!!!!r[   N)r   r   r   r  r  r  r  r  r  r  r  r  r:  r=  r?  rJ  rT  r   r[   rY   r  r  
  s        A A A
& & &
& & &
) ) )B B B
A A A
> > >= = =.2 .2 .2`
7 
7 
7$ $ $* * *
= = =@"" "" "" "" ""r[   r  c                       e Zd Zd Zd Zd Zej                            de	j
        e	j        g          d             ZdS )TestHilbertc                     t          j        dg          }t          t          t          |           t          j        d          }t          t          t          |d           d S )Nr   r  r   r  )rv   r   r   r   r"   r   r
  s     rY   r  zTestHilbert.test_bad_args
  sO    Hj\""j'1---IcNNj'1222222r[   c           	      "   d}t           j        }t          j        dd|z  |dz            }t          j        |          }t          j        |          }t          j        d|z            }t          j        d|z            }t          j        ||||g          }t          |          }	t          j        |	          }
t          j        |	          }t          j	        |	          }t          |||           t          |
t          j        |j                  |           t          |dd df         t          j        | dz  |dz  |dz            |           t          |dd df         t          j        d||dz            |           t          |dd df         t          j        | dz  |dz  |dz            |           t          |dd df         t          j        d||dz            |           t          |	d         j        ||           d S )NrK  r   rL   r  rK   r  rF   )rv   r  r   r  r  r  r"   r  r+  r  r   rd  r  rd  )rU   r  r  r   r  a1a2a3rV   r+  h_absh_angleh_reals                rY   test_hilbert_theoreticalz$TestHilbert.test_hilbert_theoretical
  s   UIaRc**VAYYVAYYVAE]]VAE]]Ir2r2&''AJJq		(1++ 	FAw///E2717#3#3W=== 	GAttG,IrcAgrAvrCx@@#	% 	% 	%
 	AttGbi2rCx88'	C 	C 	C 	GAttG,IrcAgrAvrCx@@#	% 	% 	% 	AttGbi2rCx88'	C 	C 	C 	AaDIr733333r[   c                 $   t          j        d                              dd          }t          |d          }t	          t          |j        d          |j                   t          t          |d                   |d         d           t          |dd	          }t	          |j        ddg           t	          t          |j        dd	          j        ddg           t          j        g d
          }t          |d         |dd           d S )Nrh  rF   rI   r   r  r   rK  r  )r  r  )y        Bm}ąy      ?a y?0fy      @Wa94y      @"nWy      @hIX@y<nm@yF8O2k{?yډoP?y̼YC?y433333<c4Qe?yȒ40p$?yESU?yffffff<?7?y433333<wEoy!5P{3'ſy        _N@տy<}ٿy<-cyF8<2OW\zN regression)	rv   r   rw   r"   r
   rN  r   r  r   )rU   rV   aaaana0hilbs        rY   test_hilbert_axisNzTestHilbert.test_hilbert_axisN
  s   IbMM!!!Q''QR   WQSq)))24000GAaDMM2a5"555 a2B'''SYB(((WQSBQ///5Aw???  F F F G G( 	CFFB?????r[   r   c                     t          j        d|          }t          t          j        t	          j        |                    j        |           d S )Nr   r	  )rv   r  r
   r  r   r"   r   r  s      rY   test_hilbert_typeszTestHilbert.test_hilbert_types  sC    8AU+++RWV^H5566<eDDDDDr[   N)r   r   r   r  r`  re  r  r  rx  rv   r   r   rg  r   r[   rY   rV  rV  
  s        3 3 3'4 '4 '4R#@ #@ #@J [Wrz2:&>??E E @?E E Er[   rV  c                   t    e Zd Zd Zej                            dej        ej	        g          d             Z
dS )TestHilbert2c                    t          j        dgg          }t          t          t          |           t          j        d                              ddd          }t          t          t          |           t          j        d                              dd          }t          t          t          |d           t          t          t          |d	           t          t          t          |d
           d S )Nr   r3  rL   rF   rG   r   r   rX  )rL   r   )rL   )rv   r   r   r   r#   r   rw   r
  s     rY   r  zTestHilbert2.test_bad_args   s    Hzl^$$j(A... IbMM!!!Q**j(A... IbMM!!!Q''j(A3333j(A8888j(A666666r[   r   c                     t          j        d|          }t          t          j        t	          j        |                    j        |           d S )N)rL   rP   r	  )rv   r  r
   r  r   r#   r   r  s      rY   test_hilbert2_typesz TestHilbert2.test_hilbert2_types/  sC    8G5111RWV_X6677=uEEEEEr[   N)r   r   r   r  r  r  rx  rv   r   r   rl  r   r[   rY   ri  ri    s`        7 7 7 [Wrz2:&>??F F @?F F Fr[   ri  c                       e Zd ZdZed             Zd Zd Zej	        
                    dg ddg dg d	fg d
dg d
g dfg ddg dg dfg ddg dg dfg ddg d
g dfg ddg dg dfg ddg dg dfg          d             Zej	        
                    dg ddg dg dfg ddg dg dfg d dg d!g d"fg          d#             Zd$ Zd% Zej	        
                    d&g d'g d(g          d)             Zd*S )+TestEnvelopez4Unit tests for function `._signaltools.envelope()`. c                 .    t          | |dd|           dS )z9Little helper to compare to arrays with proper tolerancesr  )r   r   r  Nr>   )r?  desiredrB  s      rY   assert_closezTestEnvelope.assert_close8  s#     	e%MMMMMMr[   c                 |   t          j        t          d          5  t          t	          j        d          d           ddd           n# 1 swxY w Y   t          j        t          d          5  t          t	          j        d          d	           ddd           n# 1 swxY w Y   d
D ]}d                    t          t          |                    }t          j        t          d| d          5  t          t	          j        d          |           ddd           n# 1 swxY w Y   t          j        t          d          5  t          t	          j        d          d           ddd           n# 1 swxY w Y   dD ]X}t          j        t          d          5  t          t	          j        d          |           ddd           n# 1 swxY w Y   Yt          j        t          d          5  t          t	          j        d          d           ddd           dS # 1 swxY w Y   dS )z[For `envelope()` Raise all exceptions that are used to verify function
        parameters. z'Invalid parameter axis=2 for z.shape=.*r  rF   rL   r  Nz&z.shape\[axis\] not > 0 for z.shape=.*)rF   r   rK   )r  )r   r]  )Nr]  z, zbp_in=\(z\) isn't a 2-tuple of.*rG   )bp_inz)n_out=10.0 is not a positive integer or.*r  )n_out))r   rF   r  )r   rM   z&`-n//2 <= bp_in\[0\] < bp_in\[1\] <=.*zresidual='undefined' not in .*	undefinedresidual)	r  r	   r   r!   rv   rd  joinmapr	  )rU   rs  tss      rY    test_envelope_invalid_parametersz-TestEnvelope.test_envelope_invalid_parameters=  s    ]:!KM M M 	) 	)RWQZZa((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ]:!JL L L 	. 	.RWV__1----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 6 	2 	2E3sE??++Bz%L%L%L%LN N N 2 2 511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ]:!LN N N 	, 	, RWQZZs++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 0 	2 	2Ez%NP P P 2 2511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ]:-MNNN 	7 	7RWQZZ+6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sk   $AAA2$B""B&)B&8$D((D,	/D,	$E??FF)$GG	 G	 $H11H58H5c                 n   g dg d}}t          j        |          }t          |          }t          |ddd          \  }}|                     t          j        |          t          j        g d                              t                    d	           |                     t          j        |          t          j        g d
                              t                    d	           t          |ddd          \  }}|                     |dz  |d	           |                     ||d	           t          |dddd|z            \  }	}
|                     |	ddd         |d	           |                     |
ddd         |d	           t          |ddd          \  }}|                     ||d	           |                     t          j        |          t          j        g d                              t                    d	           t          |ddd          }|                     ||d	           t          j
        |          }|ddxx         dz  cc<   t          j        ||          }|                     |j        |d	           t          |ddd          \  }}|                     ||                    t                    d	           |                     t          j        |          t          j        |                              t                    d	           dS )zEEnsure that the various parametrizations produce compatible results. )rG   rL   rL   rF   r   )rG   r   r   rI   r   r   r   r   r  allTrw  squaredrG   rL   r   r   r   Envelope calculation errorr  )rG   r   r   rF   r   Residual calculation errorFrL   z3Unsquared versus Squared envelope calculation errorz3Unsquared versus Squared residual calculation errorrF   )rw  r  rt  Nz(3x up-sampled envelope calculation errorz(3x up-sampled residual calculation errorlowpassz/`residual='lowpass'` envelope calculation error)rG   r   r   r   r   z/`residual='lowpass'` residual calculation errorz*`residual=None` envelope calculation errorrK   )r   zReference analytic signal errorz"Complex envelope calculation errorz"Complex residual calculation error)r  irfftrG  r!   rq  rfftrv   r   r   r/  r  ifftr  r   )rU   ZZr_arm   r   ze2_0zr_0ze_1zr_1ze2_2zr_2ze2_3zr_3ze2_4Z_az_aze2_azr_as                     rY   test_envelope_verify_parametersz,TestEnvelope.test_envelope_verify_parametersX  s   !//#;#;#;4LOOFF q&5$GGGt&+e,,bh.G.G.N.Nw.W.W: 	 	< 	< 	<&+d++RXooo-F-F-M-Mg-V-V: 	 	< 	< 	< a%GGG
d$'5S 	 	U 	U 	U$S 	 	U 	U 	U q&5$aPQcRRRt%!*eH 	 	J 	J 	J$sss)TH 	 	J 	J 	J q&9dKKKt%O 	 	Q 	Q 	Q&+d++RXooo-F-F-M-Mg-V-VO 	 	Q 	Q 	Q FT4@@@%J 	 	L 	L 	L gajjABB1k#####(A? 	 	A 	A 	AsFUDIIIt%g!6!6B 	 	D 	D 	D&*T**BHTNN,A,A',J,JB 	 	D 	D 	D 	D 	Dr[   z@               Z,        bp_in,     Ze2_desired,      Zr_desiredrK   r   rL   rL   r   )rK   Nr  rK   r   r   r   r   )rG   r   rL   r   r   )r   N)r   r   r   r   r   )rG   r   r   rL   r   NN)r   r   rL   rL   r   r  )rL   r   r   r   r   )r   r   r   rL   r   )rG   r   rL   rL   r   )rF   )rG   r   rF   rG   r   r  )r   r   rF   rG   r   r  c                 J   t          j        |          }t          ||dd          \  }}t          ||dd          \  }}	d ||||	fD             \  }
}}}t          j        |                              t                    }t          j        |                              t                    }|                     |
|d           |                     ||d           |d	         d||d	         d
<   |                     ||d           |                     ||d           d
S )a  Test envelope calculation with real-valued test signals.

        The comparisons are performed in the Fourier space, since it makes evaluating
        the bandpass filter behavior straightforward. Note that also the squared
        envelope can be easily calculated by hand, if one recalls that coefficients of
        a complex-valued Fourier series representing the signal can be directly
        determined by an FFT and that the absolute square of a Fourier series is again
        a Fourier series.
        r}  Tr~  r  c              3   >   K   | ]}t          j        |          V  d S r3  r  r  r   z_s     rY   	<genexpr>z:TestEnvelope.test_envelope_real_signals.<locals>.<genexpr>  s*      !U!Ub&+b//!U!U!U!U!U!Ur[   z+Envelope calculation error (residual='all')r  z+Residual calculation error (residual='all')rK   Nr   z/Envelope calculation error (residual='lowpass')z/Residual calculation error (residual='lowpass'))r  r  r!   rv   r   r   r/  rq  )rU   r  rs  Ze2_desired
Zr_desiredrm   ze2zrze2_lpzr_lpZe2ZrZe2_lpZr_lps                 rY   test_envelope_real_signalsz'TestEnvelope.test_envelope_real_signals  sj   & LOO1eeTBBBR EItLLL!U!US"fe<T!U!U!URh{++227;;Xj))0099
#{K 	 	M 	M 	M"jK 	 	M 	M 	M 8$%JuQxyy!&+O 	 	Q 	Q 	Q%O 	 	Q 	Q 	Q 	Q 	Qr[   zG               Z,        bp_in,         Ze2_desired,         Zr_desired)r   rH   r   rH   r   rH   r   rM   r   rH   rK   rH   r   rH   rL   r   rL   rK   r   r   r   rL   )rK   rL   rI   r   rI   rF   )r   rI   r   rR   r   rI   )rK   rL   r   r   r   rF   c                    t          j        t          j        |                    }t          ||dd          \  }}d ||fD             \  }}	|                     |t          j        |                              t                    d           |                     |	t          j        |                              t                    d           dS )	zTest envelope calculation with complex-valued test signals.

        We only need to test for the complex envelope here, since the ``Nones``s in the
        bandpass filter were already tested in the previous test.
        r}  Tr~  c              3   b   K   | ]*}t          j        t          j        |                    V  +d S r3  r  fftshiftr   r  s     rY   r  z=TestEnvelope.test_envelope_complex_signals.<locals>.<genexpr>  s4      GGr6?6:b>>22GGGGGGr[   r  r  r  N)	r  r  	ifftshiftr!   rq  rv   r   r   r/  )
rU   r  rs  r  r  rm   r  r  r  r  s
             rY   test_envelope_complex_signalsz*TestEnvelope.test_envelope_complex_signals  s     K(++,,1eeTBBBRGGc2YGGGR#rx44;;GDD: 	 	< 	< 	<"bhz2299'BB: 	 	< 	< 	< 	< 	<r[   c                    t          j        g dg dg          }t          j        g dg dgt                    }t          j        g dg dgt                    }t          |dd	
          \  }}t          |j        dd
          \  }}d ||j        ||j        fD             \  }}	}
}|                     ||d           |                     |
|d           |                     |	|d           |                     ||d           dS )z.Test for multi-channel envelope calculations. r  )r   r   rG   rG   r   r  )r   r   r   r   r   r	  r  )r   r   r   r   r   TrK   )r  r  r   c              3   >   K   | ]}t          j        |          V  d S r3  r  r  s     rY   r  zCTestEnvelope.test_envelope_verify_axis_parameter.<locals>.<genexpr>  s*      OOFKOOOOOOOOr[   2d envelope calculation errorr  2d residual calculation error"Transposed 2d envelope calc. error"Transposed 2d residual calc. errorN)r  r  rv   r   r/  r!   rN  rq  )rU   rm   r  r  r  r  ye2TyrTr  Ye2r  Yrs               rY   #test_envelope_verify_axis_parameterz0TestEnvelope.test_envelope_verify_axis_parameter  s;   L///???;<<h1A1A1AB%,. . .X@PPP
1d333RQS$Q777	cOOsDFB6NOOOS"b#{0OPPP"j/NOOO#{0TUUU"j.RSSSSSr[   c                 Z   t          j        t          j        g dg dgd                    }t          j        g dg dgt
                    }t          j        g dg dgt
                    }t          d	d
d          }t          |fddi|\  }}t          |j        fddi|\  }}d ||j        ||j        fD             \  }	}
}}| 	                    |	|d           | 	                    ||d           | 	                    |
|d           | 	                    ||d           dS )zBTest for multi-channel envelope calculations with complex values. r  )rK   rM   r   rM   rL   rK   r  r  )r  r   r5  r   r  r	  r  r  r}  T)rs  rw  r  r  r   c              3   f   K   | ],}t          j        t          j        |          d           V  -dS )rK   r  Nr  r  s     rY   r  zKTestEnvelope.test_envelope_verify_axis_parameter_complex.<locals>.<genexpr>  sU       @ @ " #OFJrNNCCC @ @ @ @ @ @r[   r  r  r  r  r  N)
r  r  r  rv   r   r/  r  r!   rN  rq  )rU   rm   Ze2_desZr_deskwr  r  r  r  r  r  r  r  s                rY   +test_envelope_verify_axis_parameter_complexz8TestEnvelope.test_envelope_verify_axis_parameter_complex  s   K(///;L;L;L)MTUVVVWW(,,,.@.@.@B!(* * *???OOO<GLLL%>>>1++1+++RQS//q/B//	c@ @'*DFB&>@ @ @S"b 	#w,KLLL"f*IJJJ#w-QRRR"f+OPPPPPr[   X)rG   r   r   rK   rL   )rG   r   r   rL   rK   rL   c                     t          j        |          }t          j        t	          |                    }t          |dd          }|                     ||d           dS )z0Compare output of `envelope()` and `hilbert()`. r  Nrv  z!Hilbert-Envelope comparison errorr  )r  r  rv   r  r"   r!   rq  )rU   r  rk   e_hile_envs        rY   test_compare_envelope_hilbertz*TestEnvelope.test_compare_envelope_hilbert  s\     LOOwqzz""L4888%,OPPPPPr[   N)r   r   r   __doc__staticmethodrq  r{  r  r  r  rx  r  r  r  r  r  r   r[   rY   rn  rn  5  s6       >>N N \N7 7 76-D -D -D^ [J
//i///	J
//i///	J
//<///	J
/////	J
/////	J
//i///	J
//i///	J	LM MQ QM MQ: [Q
//<,<,<,<	Q
//,<,<,<	Q


)<)<)<>P>P>P	Q	 < < <T T T Q Q Q$ [S???4F4F4F"GHHQ Q IHQ Q Qr[   rn  c                       e Zd Zedd            Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )TestPartialFractionExpansionr   c                    t          j        |          }t          j        |          }t          j        t          |d d d f         |z
            t          | d d d f         |z
                      }t	          |          \  }}t          ||         ||         |           t          | |         ||         |           d S )Nr  )rv   r  hypotr  r   r   )r  r  r_truep_truer  distancerowscolss           rY   assert_rp_almost_equalz3TestPartialFractionExpansion.assert_rp_almost_equal  s    F##F##8C!!!T'
V 344!!!T'
V 3446 6 +844
dAdGVD\7CCCCAdGVD\7CCCCCCr[   c                 ^   t          g dg d          \  }}t          t          |          d           t          |d         t	          j        g d                     t          |d         t	          j        g d                     t          |d         t	          j        g d	                     t          |t	          j        g d
                     t          g dg dd          \  }}t          t          |          d           t          |d         t	          j        g d                     t          |d         t	          j        g d                     t          |d         t	          j        g d                     t          |d         t	          j        g d                     t          |d         t	          j        g d                     t          |d         t	          j        g d	                     t          |t	          j        g d
                     d S )NrJ   r  rF   r   )rL   rL   rF   rK   )rK   rK   rK   rF   rL   )rK   rK   rK   rL   rL   )rK   rK   rK   rL   rL   rF   T)include_powersrI   )rK   rK   rL   rL   rF   )rK   rL   rL   rF   )rK   rK   rK   rL   rF   rG   rH   )r:   r
   rG  r   rv   rM  )rU   factorsrM  s      rY   test_compute_factorsz1TestPartialFractionExpansion.test_compute_factors  s   (III>>S\\1%%%GAJ			(:(:;;;GAJ(=(=>>>GAJ(@(@AAAD"'*<*<*<"="=>>>(III8<> > >S\\1%%%GAJ(@(@AAAGAJ(=(=>>>GAJ			(:(:;;;GAJ(@(@AAAGAJ(=(=>>>GAJ(@(@AAAD"'*<*<*<"="=>>>>>r[   c                 z    t          g ddd          \  }}t          |g d           t          |g d           d S )N)r\  gjt?g?5^I?r]  g/$ @r_  r"  minr  r  )r;   r
   rU   uniquemultiplicitys      rY   test_group_polesz-TestPartialFractionExpansion.test_group_poles  sQ    +000#u >  >V___---\999-----r[   c                    t          g dg d          \  }}}t          |g dd           t          |g dd           t          |dgd           t          dd	gg d
          \  }}}t          |d	dg           t          |ddg           t          |j        d           t          ddgg d          \  }}}t          |ddg           t          |ddg           t          |j        d           t          ddgg d          \  }}}|                     ||g dg d           t          |j        d           t          ddgg d          \  }}}|                     ||g dg d           t          |j        d           t          g dg d          \  }}}t          |g d           t          |g d           t          |ddg           t          dgg d          \  }}}t          |ddg           t          |dd g           t          |j        d           t          g d!g d"          \  }}}|                     ||g d#g d$           t          |j        d           t          g d%g d&          \  }}}|                     ||g d'g d(           t          |j        d           t          ddgg d)          \  }}}t          |dd*g           t          |ddg           t          |j        d           t          g d+g d)          \  }}}t          |dd,g           t          |ddg           t          |dg           t          g d-g d)          \  }}}t          |d.d/g           t          |ddg           t          |d0d1g           t          g d+g d2          \  }}}|                     ||g d3g d4           t          |j        d           d S )5NrH   rF   r  r   r  r   r   rF   )gZd;O?g9#Jg&䃞ͪrG   r  )g-1ڿgeagvq-?g      r  r   rK   rI   r   ir  r   rK   )rK   r   r  rF   r   rL   )rL   g333333gGz?gClٿ)y      2     @*y      2     @*@g      B@)y      ?ɿy      ??gffffff?)rK   rH   r   rG   )r   rK   rF   )r   r  r  )rF   gg)\(?g^I+g rh?)rK   gffffffgQg~jt?)r  rG   rK   )r  g333333ӿr!  )rK   rL   r  r        пr  )rK   r   r  )rK   r   r   r   r   )rK   y              ?y             r   )r                r   rK   )rF   r   rI   rK   rF   rF   rK   rJ   r   r   r   )rK   r  rL   rH   )rL   rF   r   rv  )r   rL   rF   r   r  E   r   rQ   )rK   r  rG   r  )rG   y            @y            )rK         ?      rg   )r6   r   r
   r   r  rU   r  r  rr  s       rY   test_residue_generalz1TestPartialFractionExpansion.test_residue_general  s    ---771aA9991EEEEA9991EEEEAy!44442q'999--1aA3x(((ABx(((QVQ1a&+++..1aA1v&&&AAw'''QVQ1a&"9"9"9::1a##q???)))	+ 	+ 	+ 	QVQ1a&,,,//1a##Aq***lllCCCQVQ8881113 31aAzzz***A///000A1v&&&1#zzz**1aAe}---A2w'''QVQ***&6&6&6771a##Aq$8$8$8:J:J:J	L 	L 	LQVQ)))\\\221a##Aq)))\\\BBBQVQ1b':::..1aAAw'''A1v&&&QVQ***jjj111aABx(((A1v&&&As###---441aARy)))A1v&&&A2w'''***nnn551a##Aq*C*C*C$7$7$7	9 	9 	9AFA&&&&&r[   c                    t          g dg d          \  }}}t          g dg d          \  }}}t          g dg d          \  }}}	t          g dg d          \  }
}}t          ||           t          ||           t          ||
           t          ||           t          ||           t          ||           t          ||           t          ||	           t          ||           d S )Nr  r  )r   rH   rF   r  r   )r   r  r   r   rF   )r   r   rH   rF   r  r   )r   r   r   r  r   r   rF   )r6   r   rU   r0p0k0r1p1k1r2p2k2r3p3k3s                rY   test_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zerosW  s   ]]]MMM::
B---}}}==
B]]],<,<,<==
B0002H2H2HII
BB###B###B###B###B###B###B###B###B#####r[   c                    t          ddgg d          \  }}}t          |ddg           t          |ddg           t          |j        d           t          dd          \  }}}t          |j        d           t          |j        d           t          |j        d           t	          j        t          d          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr   r  r  r  rK   Denominator `a` is zero.r  )r6   r   r
   r   r  r	   r   r  s       rY   test_resiude_degeneratez4TestPartialFractionExpansion.test_resiude_degenerateg  s)   1a&))),,1aA1v&&&ABx(((QVQ!Q--1aQVQQVQQVQ]:-GHHH 	 	AqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    CC"%C"c                 *	   t          g dg d          \  }}}|                     ||g dg d           t          |dg           t          g dg d          \  }}}|                     ||dd	gd
dgd           t          |dgd           t          ddgg d          \  }}}t          |ddg           t          |ddg           t          |j        d           t          g dg d          \  }}}|                     ||g dg d           t          |j        d           t          g dg d          \  }}}t          |ddg           t          |ddg           t          |ddg           t          dgg d          \  }}}|                     ||g d g d!           t          |j        d           t          ddgt          j        dd"gdd#g                    \  }}}t          |d$d%g           t          |d&dg           t          |j        d           t          g d'ddg          \  }}}t          |dg           t          |dg           t          |ddg           t          ddd(g          \  }}}t          |dg           t          |d)g           t          |j        d           t          dg d*          \  }}}t          |ddg           t          |ddg           t          |j        d           t          dg d+          \  }}}t          |ddg           t          |d#dg           t          |j        d           t          g d,g d'          \  }}}t          |d-d.g           t          |ddg           t          |dg           t          d/dgg d'          \  }}}t          |d0d1g           t          |ddg           t          |j        d           t          g dg d'          \  }}}t          |d2d3g           t          |ddg           t          |d4dg           t          g d5g d6          \  }}}|                     ||g d7g d8d           t          |j        d           d S )9N)rK   rI   rI   rL   )rK   y             r  r  )y             @y      @      @y            ()r   rK   rK   rj   )rK   rL   rK   )rK   r   g'W?y	c-y	c-@y      ?*D?y      ?*DԿrG   r  gŏ1w@rK   r   )rK   r  rI   rL   rF   r   r   r  )rG   r  rF   r  )rK   rw  r  rG   )rL   r  r  r  g            ?rh  )rh  rF   r  r   )g
ףp=
?gQ?皙?)r  UUUUUUտr  rk  r  g
gUUUUUU@r  rK   r  rK   r  r   )rK   r   r  )rK   g      r  )rK   rI   rL   rw  r$  rI   r  r   irl  rM   rU  )rK   r   r   r   r   r   )yoT?c=yX?yoT?c=yXȿr  yjM?%uyjM?%u?)ySsA?ySsAr\  y-?8gDio?y-?8gDio)r7   r  r   r
   r   rv   polymulr  s       rY   test_residuez_generalz2TestPartialFractionExpansion.test_residuez_generalv  sg   <<<)F)F)FGG1a##Aq*G*G*G$.JJ	0 	0 	0At$$$999ooo661a##Aq%68I$J%2M$B,- 	$ 	/ 	/ 	/ 	Ax3333Ar7JJJ//1aAAw'''A1v&&&QVQ999lll331a##Aq***lllCCCQVQ???KKK881aAT{+++AAw'''ARy)))B4111a##Aq$5$5$57H7H7H	J 	J 	JQVQAq62:q$i!S#B#BCC1aAt}---As|,,,QVQ:::2w//1aAs###As###A2w'''1q#h''1aAs###At$$$QVQ1mmm,,1aA1v&&&ASz***QVQ1...//1aAAw'''Ac{+++QVQ999jjj111aAQx(((A1v&&&As###Aq6:::..1aAAw'''A1v&&&QVQ<<<441aARy)))A1v&&&AAw'''999&9&9&9::1a##Aq%N %N %N%N %N %N,- 	$ 	/ 	/ 	/ 	QVQr[   c                    t          g dg d          \  }}}t          g dg d          \  }}}t          g dg d          \  }}}	t          g dg d          \  }
}}t          ||           t          ||           t          ||
           t          ||           t          ||           t          ||           t          ||           t          ||	           t          ||           d S )Nr  r  )rH   rF   r  r   r   )r  r   r   rF   r   )rH   rF   r  r   r   r   )r  r   r   rF   r   r   r   )r7   r   r  s                rY   test_residuez_trailing_zerosz9TestPartialFractionExpansion.test_residuez_trailing_zeros  s    mmm]]];;
B...>>
Bmmm-=-=-=>>
B1113I3I3IJJ
BB###B###B###B###B###B###B###B###B#####r[   c                 `   t          ddgg d          \  }}}t          |ddg           t          |ddg           t          |j        d           t          dd          \  }}}t          |j        d           t          |j        d           t          |j        d           t	          j        t          d          5  t          dd           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          dg d	           d d d            d S # 1 swxY w Y   d S )
Nr   r  r  r  rK   r  r  z6First coefficient of determinant `a` must be non-zero.r  )r7   r   r
   r   r  r	   r   r  s       rY   test_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate  s   Aq6999--1aA1v&&&ABx(((QVQ1a..1aQVQQVQQVQ]:-GHHH 	 	QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:"01 1 1 	& 	& Q%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s$    CC!$C!D##D'*D'c                    g d}g d}g }g d}g d}dD ]n}t          ||||          \  }}t          ||           t          ||           t          ||||          \  }}t          ||           t          ||           od S )N)r
  UUUUUUſg)r   r  r  )r   rK   rF   )rK   r   rM   r   avgr  r  r  r  r  rtyper*   r   r+   )	rU   r  r  rr  
b_expected
a_expectedr  rW   rV   s	            rY   *test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes  s    %%%KKYY
"]]
 I 	+ 	+E!Q///DAqAz***Az***1a%000DAqAz***Az****	+ 	+r[   c                    g d}g d}g }g d}g d}g d}dD ]r}t          ||||          \  }}	t          ||d	           t          |	|           t          ||||          \  }}	t          ||d	           t          |	|           sd S )
Ng333333?g98ȿr  gll?r   r  r  r  )r   r   rK   rF   )r  gUUUUUUgUUUUUU?rF   )rK   r$  r3  r  r   r  r  r  r  r  )
rU   r  r  rr  r  b_expected_zr  r  rW   rV   s
             rY   ,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes  s    ---OO!\\
,,,&&&
H 	+ 	+E!Q///DAqAz6666Az***1a%000DAqA|%8888Az****	+ 	+r[   c                 4   g d}g d}g }t          j        t          d          5  t          |||d           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          |||d           d d d            d S # 1 swxY w Y   d S )Nr  r  z`rtype` must be one ofr  r  r  )r  r	   r   r*   r+   r  s       rY   test_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtype  s.   ---OO]:-EFFF 	, 	,1a(++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]:-EFFF 	- 	-Aq!8,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s#   AA
A
,BBBc                     dg}dg}dg}t          |||          \  }}t          |dg           t          |ddg           d S )NrK   rL   r   r\  g       )r+   r   )rU   r  r  rr  rW   rV   s         rY    test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bug  sX    CCCq!Q1C5!!!C;'''''r[   c                 `   t          dgdgg           \  }}t          |dg           t          |ddg           t          g dg dg           \  }}t          |g d           t          |g d           t          ddgdd	gg d
          \  }}t          |g d           t          |g d           t          g dg dg           \  }}t          |g d           t          |g d           t          ddgddgddg          \  }}t          |g d           t          |g d           d S )NrK   r   r  rL         ?      rK   r   rg   y      @      y      !      ?y      @      
@rK   y             y      ?       @y      ?      r  r  r  rJ   )rK                     ?       r   rM   rK               rG   r   rL   r   r  rG   r  r   r   r   rF   rF   rF   )y      @      y      <      0@y      D@      Oy      Y@      8@y     @r     `k@y      h@     prK   y      (       @y     J@      4y      X      Q@y      ;@      Ry      [@      Ky     @T      [@r   rL   )rK   r   r  ri   r  )r*   r   rU   rW   rV   s      rY   test_invresz(TestPartialFractionExpansion.test_invres!  s   qcA3##1As###A2w'''+++->->->CC1ADDDEEEACCCDDDsAh 0)))<<1AAAABBBA///000333R9 91A  9  9  9 	: 	: 	:A  7  7  7 	8 	8 	8 r2hAA//1A111222Azzz*****r[   c                 `   t          dgdgg           \  }}t          |dg           t          |ddg           t          g dg dg           \  }}t          |g d           t          |g d           t          ddgdd	gg d
          \  }}t          |g d           t          |g d           t          g dg dg           \  }}t          |g d           t          |g d           t          ddgddgddg          \  }}t          |g d           t          |g d           d S )NrK   r   r  r!  r"  r#  r  r  r  rJ   )g      @r'  r%  y            rR   r&  r(  r)  )rI   y      I      &@y      Y@      Ry      T@      M@y      v     l@y     @m@     rr*  r   rL   )r   rK   r  rL   r  )r+   r   r+  s      rY   test_invreszz)TestPartialFractionExpansion.test_invresz9  s   sQC$$1As###A2w''',,,.?.?.?DD1ADDDEEEACCCDDDQx&&!1999==1ABBBCCCA///111444b: :1A  9  9  9 	: 	: 	:A  7  7  7 	8 	8 	8 Bx!Q!Q001A~~~...Azzz*****r[   c                     t          ddd          \  }}t          |ddg           t          |ddg           t          ddd          \  }}t          |ddg           t          |ddg           d S )NrK   r   r   rL   )r*   r   r+   r+  s      rY   test_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_argumentsQ  s    aA1A1v&&&A2w'''q!Q1A2w'''A2w'''''r[   N)r   )r   r   r   r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r,  r.  r0  r   r[   rY   r  r    s       	D 	D 	D \	D? ? ?&. . .B' B' B'H$ $ $   O  O  O b$ $ $"& & &&+ + +&+ + +"- - -( ( (+ + +0+ + +0( ( ( ( (r[   r  c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )TestVectorstrengthc                    t          j        dg          }d}d}d}t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )Nr  r  r\  r"  r   rL   rv   r   r,   r
   r  r   r  rU   eventsperiodtarg_strength
targ_phasestrengthphases          rY   test_single_1dperiodz'TestVectorstrength.test_single_1dperiod]  s    2$
(88%X]A&&&UZ###Hm444E1ru9z#9:::::r[   c                 J   t          j        dg          }g d}dgdz  }t          j        g d          }t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )Nr  )rK   rL   r  r\  rF   )r  r  r"  rK   rL   )rv   r   r,   r
   r  r   r   r  r5  s          rY   test_single_2dperiodz'TestVectorstrength.test_single_2dperiodj  s    2$qXmmm,,
(88%X]A&&&UZ###!(M:::E1ru9z#9:::::r[   c                    t          j        g d          }d}d}d}t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )Nr  r  r  r  r  r  rL   r\  r  r   r4  r5  s          rY   test_equal_1dperiodz&TestVectorstrength.test_equal_1dperiodw  s    88899
(88%X]A&&&UZ###Hm444E1ru9z#9:::::r[   c                 L   t          j        g d          }ddg}dgdz  }t          j        ddg          }t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )Nr@  rK   rL   r\  r  r  r4  r5  s          rY   test_equal_2dperiodz&TestVectorstrength.test_equal_2dperiod  s    88899QqXsDk**
(88%X]A&&&UZ###Hm444E1ru9z#9:::::r[   c                    t          j        g d          }d}d}d}t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )Nr"  g?g @gffffff@g333333$@rK   r\  r"  r   rL   r4  r5  s          rY   test_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiod  s    33344
(88%X]A&&&UZ###Hm444E1ru9z#9:::::r[   c                 L   t          j        g d          }ddg}dgdz  }t          j        ddg          }t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )NrE  rK   r  r\  rL   r"  r  r4  r5  s          rY   test_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod  s    33344RqXr2h''
(88%X]A&&&UZ###Hm444E1ru9z#9:::::r[   c                    t          j        g d          }d}d}d}t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )Nr  r        ?rK   UUUUUU?r  r   rL   r4  r5  s          rY   test_partial_1dperiodz(TestVectorstrength.test_partial_1dperiod  s    ...))
(88%X]A&&&UZ###Hm444E1ru9z#9:::::r[   c                 L   t          j        g d          }g d}dgdz  }t          j        g d          }t          ||          \  }}t          |j        d           t          |j        d           t          ||           t          |dt           j        z  |z             d S )NrJ  )r\  r\  r\  r\  rL  rG   )r  r  r  r  rK   rL   r4  r5  s          rY   test_partial_2dperiodz(TestVectorstrength.test_partial_2dperiod  s    ...))!!! 	AX...//
(88%X]A&&&UZ###Hm444E1ru9z#9:::::r[   c                     t          j        g d          }d}d}t          ||          \  }}t          |j        d           t          |j        d           t          ||           d S )Nr   r  r  rK  r\  r   rv   r   r,   r
   r  r   rU   r6  r7  r8  r:  r;  s         rY   test_opposite_1dperiodz)TestVectorstrength.test_opposite_1dperiod  so    +++,,(88%X]A&&&UZ###Hm44444r[   c                     t          j        g d          }dgdz  }dgdz  }t          ||          \  }}t          |j        d           t          |j        d           t          ||           d S )NrQ  r\  rM   r	  rK   rR  rS  s         rY   test_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiod  s{    +++,,r	(88%X]A&&&UZ###Hm44444r[   c                 p    t          j        ddgg          }d}t          t          t          ||           d S )NrK   rL   r\  rv   r   r   r   r,   rU   r6  r7  s      rY   test_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueError  s6    Aq6(##j.&&AAAAAr[   c                 n    d}t          j        dgg          }t          t          t          ||           d S )Nr\  rK   rX  rY  s      rY   test_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueError  s2    A3%j.&&AAAAAr[   c                 F    d}d}t          t          t          ||           d S )Nr\  r   r   r   r,   rY  s      rY   test_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueError  s&    j.&&AAAAAr[   c                 F    d}d}t          t          t          ||           d S )Nr\  r   r^  rY  s      rY   test_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueError  s&    j.&&AAAAAr[   N)r   r   r   r<  r>  rA  rC  rF  rH  rM  rO  rT  rV  rZ  r\  r_  ra  r   r[   rY   r2  r2  [  s        ; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;	5 	5 	5	5 	5 	5B B B
B B B
B B B
B B B B Br[   r2  r-  c                     | j         j        dk    rNt          j        | j        d                   j         }|                     |          |                    |          }} t          | |||           dS )z1Wrap assert_allclose while casting object arrays.r^  r   N)r   r   rv   r   flatr   r   )r?  rp  r   r   r   s        rY   assert_allclose_castrd    se    |CQ((. --..u0E0EFGT400000r[   rW  c                    t          d          t          d          t          d          g}t          d          t          d          t          d          g}t          d          t          d          t          d          g}t          j        |          }|j        j        dk    sJ t          t          j        |t                    t          j        |t                    |                    t                              }| t          u rt          ||z   g|          }nt          |||          }t          d |D                       sJ t          |                    t                    |                    t                               | t
          u rddg}nt          dd          g}t          j        t          d          5   | |d	di d d d            d S # 1 swxY w Y   d S )
NrK   rL   rF   r^  c              3   @   K   | ]}t          |t                    V  d S r3  )r  r   )r   rk   s     rY   r  z)test_nonnumeric_dtypes.<locals>.<genexpr>  s,      66!z!W%%666666r[   r\  zmust be at least 1-Dr  rk   )r   rv   r   r   r   r$   rn  r   r/   r}  r   r.   r  r	   r   )rW  rk   rW   rV   rp  r?  r   s          rY   test_nonnumeric_dtypesrg    s    
WQZZ,A	WQZZ,A	WQZZ,A
A7<3bhq%(("(1e*<*<ahhuooNNGw!a%!$$Aq!!66v66666666FMM%(('..*?*?@@@wBxr2	z)?	@	@	@  db                 s   	GG"%G"fdFDc                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j        j        d             Zd	S )
TestSOSFiltc                    t          j        ddd                              |          }t          j        ddg                              |          }t          j        ddg                              |          }t          j        g d                              |          }t	          ||          }t          t          t	          ||          |          |           t          j        ddg                              |          }t          j        ddg                              |          }t          j        g d	                              |          }t          t          t	          ||          |          |           g d
}g d}t          j        d          }t          j        ||f          }d|_	        t          ||          }t          |g d           d S )Nr   rH   rI   rK   r   r  rk  rl  rr  )rK   rK   r   r  r   )rK   rI   )rK   rL   rL   rL   rL   rL   rL   rL   )rv   r  r   r   r.   r   r/   rd  rR  r  r   )rU   r  rk   rW   rV   ro  r  rl   s           rY   
test_rank1zTestSOSFilt.test_rank1  s   K1a  ''++HaW$$R((Hc4[!!((,, h+++,,33B77Qll!'&A,,":":C@@@ HaV##B''HaV##B''h***++22266!'&A,,":":C@@@IIIIGAJJnaV$$	COO33344444r[   c                    d}t          j        dt          j        |          dz
  t          j        |                                        |          }|                    |          }t          j        ddg                              |          }t          j        ddg                              |          }t          j        g dg dg dg dg|          }t          j        g d	g d
g dg dg|          }t          t          ||          |d          }t          ||           t          t          ||          |d          }t          ||           d S )Nr  r   rK   r   r  r  r  r	  r  r  r  r  r  )	rv   r  rZ  rw   r   r   r/   r.   r   )	rU   r  r  rk   rW   rV   r  r  rl   s	            rY   
test_rank2zTestSOSFilt.test_rank2.  s[   K275>>A-rwu~~>>FFuMMHHRLLHaW$$R((Hc3Z  ''++(IIIyyy)))YYYG!#% % % (IIIzzz===)MM+246 6 6 F1aLL!!,,,!'1---F1aLL!!,,,!'1-----r[   c                 \   d}t          j        dt          j        |          dz
  t          j        |                                        |          }t          j        ddg                              |          }t          j        ddg                              |          }t          t          ||          |          }t          |j	        d                   D ]N}t          |j	        d                   D ]1}t          |||f         t          |||||f                              2Od S )Nr  r   rK   r   r  )rv   r  rZ  rw   r   r   r/   r.   rx   r  r   r$   )	rU   r  r  rk   rW   rV   rl   ry   js	            rY   rw  zTestSOSFilt.test_rank3B  s   K275>>A-rwu~~>>FFuMMHaW$$R((Hc3Z  ''++ F1aLL!$$qwqz"" 	K 	KA171:&& K K)!AqD'71a1a43I3IJJJJK	K 	Kr[   c                    t          j        ddd          \  }}t          j        ddd          \  }}t          j        ddd          \  }}t          j        t          j        ||          |          }t          j        t          j        ||          |          }	t          j        t          j        ||f         t          j        ||f         t          j        ||f         f          }
t          j                            d                              |          }t          ||	|d d         t          j
        d                    \  }}t          j        |t          ||	|dd          |          d	         f         }t          |t          ||	|                     t          |
|d d         t          j
        d
                    \  }}t          j        |t          |
|dd          |          d	         f         }t          ||           t          |
          }t          j        d|          }t          |
||          \  }}t          |t          j        d                     t          ||           d|j        z   |_        t!          t"          t          |
||           |                                }|j        d	         dd|j        d         f|_        t!          t"          t          |
||d d d d d d g df                    t          |
||          \  }}t          |d         t          j        d                     t          |d d d	d	d d f         |           d S )NrL   r  lowrK  r  r  rI   rx  r   r   r   r  rK   r   )r   rK   rK   r  )r   r'   rv   r   r   r_r   r  r   r$   r  rd  r/   r1   rd  r  r   r   r  )rU   r  b1rZ  b2r[  b3r\  rW   rV   r  rk   y_truery  r  rl   r}  zi_nds                     rY   test_initial_conditionsz#TestSOSFilt.test_initial_conditionsO  s    q$..Bq$..Bq$..BKB++R00KB++R00hb"fruRV}beBFmDEEINN2%%b)) Q1SbS6bhqkk:::
vwq!QrssV;;;A>>?VWQ1%5%5666C3B3BHV,<,<===	reWS!BCC&R888;;<VU+++ __GArNNQ2&&&2Q

+++R$$$ 17"j'3b9999		x{Aq"(2,7j'3qqq!!!QQQ			12	4 	4 	4 	4Q5)))2QtWbgajj111R1a
^R00000r[   c                     t           j                            d                              ddd          }|                    |          }t          j        ddd	          }t          | }|j        d         }d
}t          |j                  }d||<   |g|z   }t          j
        |          }t          ||||          \  }	}
t          ||d d d dd d f         ||          \  }}t          ||d d dd d d f         ||          \  }}t          j        ||f|          }t          ||	dd           t          ||
dd           t          |          }|d
dd
g|_        ||d d dd
d d f         z  }t          ||||          d         }t          | \  }}t!          ||          }d
|j        d
g|_        ||d d dd
d d f         z  }t%          |||||          d         }t          ||dd           d S )N   r   rH   )rL   rl  rF   r   rI   r  r  r  rK   rL   r  r  r  rC  r   )rv   r   r   r  r   r   r'   r)   r  r  r  r/   rR  rd  r1   r(   r%   r   r$   )rU   r  rk   r  r  	nsectionsr  shpz0r3  r}  r  r  rK  r  rl   ry  rW   rV   y_tfs                       rY    test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1u  sD    I!!#&&..q!*.EEHHRLL mAtE222smIaL	  17mmD	kCXc]] adr222B a2A2qqqk<<<Ba122qqqk<<<B NB8$///QU;;;;R%e<<<< __q!Q'!AAAqsAAAI,C"---a0s|11rw?!AAAqsAAAI,q!QTb111!4Q5u======r[   c                    t          j        d|          }t          j        d          }t          j        d          }t          j        t
          d          5  t          |||d           d d d            n# 1 swxY w Y   d|d d d	f<   t          j        t
          d
          5  t          |||d           d d d            d S # 1 swxY w Y   d S )N)rF   rl  rF   )rG   rI   )rG   rF   rF   rL   zshould be all onesr  rK   )ry  r  r\  rF   zInvalid zi shape)rv   rc  r  r  r	   r   r/   )rU   r  rk   r  ry  s        rY   test_bad_zi_shapezTestSOSFilt.test_bad_zi_shape  sW    HZ$$hvXl##]:-ABBB 	+ 	+Cr****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+AAAqD	]:-?@@@ 	+ 	+Cr****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s$   A99A= A=(C		CCc                 0   t          j        ddd          }t          |          }t          |t	          j        d|          |          \  }}t          ||d           t	          j        |d d d d	f                             d
          |d d d	d f                             d
          z            }t          ||d           t          |t	          j        d|          |	                                          \  }}t          ||d           d S )NrI   r  r  r  r5  rx  rC  r  rF   r   r  )
r   r'   r1   r/   rv   rd  rd  rZ  r  r  )rU   r  r  ry  rl   r}  ssr0  s           rY   test_sosfilt_zizTestSOSFilt.test_sosfilt_zi  s   mAs5111__RWR__4442R%0000 WSBQBZ^^^,,s111abb5z~~2~/F/FFGGQ//// RWR__===2R%000000r[   c                    t          j        g dt                                        dd          }t          j        g dt                    }t	          j        d          5  t          ||           d d d            d S # 1 swxY w Y   d S )N)rK   rL   rF   rK   rH   rF   r	  rK   rI   r   r  r  )rv   r  r  rw   r  r  r/   )rU   r  r  rk   s       rY   r  z"TestSOSFilt.test_dtype_deprecation  s     j+++6:::BB1aHHJ222&AAA#*IJJJ 	 	COOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $BB	BN)r   r   r   rl  rn  rw  ry  r  r  r  r  r  r  r  r   r[   rY   rj  rj    s        5 5 52. . .(K K K$1 $1 $1L,> ,> ,>\
+ 
+ 
+1 1 1 [    r[   rj  c                        e Zd Zd Zd Zd ZdS )TestDeconvolvec                 n    g d}ddg}g d}t          j        ||          \  }}t          ||           d S )N)r   rK   r   r   rK   rK   r   r   rL   rK   )	r   rL   rK   r   rL   rF   rK   r   r   )r   
deconvolver   )rU   originalimpulse_responserecorded	recovered	remainders         rY   rZ   zTestDeconvolve.test_basic  sP    +++q6...%0;KLL	9	8,,,,,r[   c                     ddgddgg}ddg}t          j        t          d          5  t          j        ||          \  }}d d d            d S # 1 swxY w Y   d S )Nr   zsignal must be 1-D.r  r  r	   r   r   r  rU   r  r  quotientr  s        rY   test_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signal  s    FQF#q6]:-BCCC 	P 	P"("3H>N"O"OHi	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P   AAAc                     ddg}ddgddgg}t          j        t          d          5  t          j        ||          \  }}d d d            d S # 1 swxY w Y   d S )Nr   zdivisor must be 1-D.r  r  r  s        rY   test_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisor  s    q6FQF+]:-CDDD 	P 	P"("3H>N"O"OHi	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Pr  N)r   r   r   rZ   r  r  r   r[   rY   r  r    sI        - - -P P PP P P P Pr[   r  c                   "   e Zd Zd Zd Zej                            dddg          ej                            dg d          d                         Zd	 Z	ej                            d
 e
j        ddg          ddgg          d             ZdS )TestDetrendc                     t          t          g d                    }t          g d          }t          ||           d S )NrJ   )r   r   r   )r4   r   r   )rU   	detrendeddetrended_exacts      rY   rZ   zTestDetrend.test_basic  sB    E))),,--				**!)_=====r[   c                     t          g d          }t          |d          }t          |d          }t          ||           d S )N)rK   333333?r  g?g333333@F)overwrite_dataT)r   r4   r   )rU   rk   
copy_arrayinplaces       rY   	test_copyzTestDetrend.test_copy  sP    )))**Qu555
!D111!*g66666r[   r   linearr,  r  r  c                     t          j        d                              ddd          }t          |||          }|j        |j        k    sJ d S )N   rH   rI   r   )re  r  )rv   r   rw   r4   r  )rU   r  r   r  r  s        rY   r  zTestDetrend.test_axis  sT     y''1a00Dt$777	$*,,,,,,r[   c                 f   g dg dz   }t          |dd          }t          |dd           t          j        |          d d d d f         }t          |ddd	
          }t          |dd           t	          t
                    5  t          |dd           d d d            d S # 1 swxY w Y   d S )Nr  )rH   r   r  rw  r  rF   )re  bpr   r  r  rK   )re  r  r  )r4   r   rv   r  r   r   )rU   r  r  s      rY   test_bpzTestDetrend.test_bp  s   yy???*DxA666		151111 z$aaa.DxAA>>>		151111 :&& 	/ 	/DxA....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   B&&B*-B*r  r   rL   c                     t           j                            d          }|                    d          }t	          ||          }t          j        g d          }t          ||d           d S )Ni90  rM   )r  )
g3   g3   g_rgb	6ſgq]?g=~D?g@zI?gբg?ԅg1
ȿr  r  )rv   r   r   r  r4   r   r   )rU   r  r   rk   ra  res_scipy_191s         rY   test_detrend_array_bpz!TestDetrend.test_detrend_array_bp  s~     i##E**HHRLL aB "O "O "O P P 	]777777r[   N)r   r   r   rZ   r  r  r  rx  r  r  rv   r   r  r   r[   rY   r  r    s        > > >
7 7 7 [Vh
%;<<[VYYY//- - 0/ =<-
/ / / [THBHaV$4$4q!f#=>>8 8 ?>8 8 8r[   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestUniqueRootsc                     g d}t          |          \  }}t          ||d           t          |t          j        t          |                               d S )N)r^  rk  r
  r  r  rl  r  r5   r   r
   rv   rd  rG  rU   r  r  r  s       rY   test_real_no_repeatz#TestUniqueRoots.test_real_no_repeat  sV    (((+AFAr2222\273q66??33333r[   c                 p   g d}t          |dd          \  }}t          |g dd           t          |g d           t          |dd	          \  }}t          |g d
d           t          |g d           t          |dd          \  }}t          |g dd           t          |g d           d S )N)r^  ffffff{Gz皙r  r\  ?r"  r  tolr  )r^  r  r  r\  rl  r  rL   rL   rK   rL   r  )r  r  r  r  r  )g333333g
ףp=
r  gffffff?r5   r   r
   r  s       rY   test_real_repeatz TestUniqueRoots.test_real_repeat  s    666+A4uEEEF$;$;$;RHHHH\<<<000+A4uEEEF$<$<$<bIIII\<<<000+A4uEEEF$@$@$@"MMMM\<<<00000r[   c                     g d}t          |          \  }}t          ||d           t          |t          j        t          |                               d S )N)r^  r         ?      ?r$  r~  rl  r  r  r  s       rY   test_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeat&  sV    ===+AFAr2222\273q66??33333r[   c                 p   g d}t          |dd          \  }}t          |g dd           t          |g d           t          |dd	          \  }}t          |g d
d           t          |g d           t          |dd          \  }}t          |g dd           t          |g d           d S )N)r^        𿚙?ffffff333333?333333?r	  r  ??r"  r  r  )r^  r  r	  r  rl  r  r  r  )r  r  r	  r  r  )y      𿚙?y333333?r	  yffffff??r  r  s       rY   test_complex_repeatz#TestUniqueRoots.test_complex_repeat,  s   ' ' '  ,A4uEEEF$L$L$L$&	( 	( 	( 	(\<<<000+A4uEEEFJJJ$&	( 	( 	( 	( 	\<<<000+A4uEEEHHH	 	 	 	 	\<<<00000r[   c                 \   t          j        t          j        t          j        d          t          j        d                              }g d}t	          |          \  }}t          j        |          }t          t          j        |          |d           t          |g d           d S )NrH   )yw^Zu#yw_Zu#?yN/7? UDoyP/7?TDo?r   r  )rL   rL   rL   rL   )rv   rL  r   rd  r5   sortr   r
   )rU   r  
true_rootsr  r  s        rY   test_gh_4915zTestUniqueRoots.test_gh_4915A  s    HR[RWQZZ8899KKK
+ABGFOOZCCCC\<<<00000r[   c                     t          g d          \  }}t          |ddgd           t          |ddg           t          g dd	
          \  }}t          |ddgd           t          |ddg           d S )N)r\  r   r\  r\  r   rl  r  rL   rK   )rK   g_p   ?&.>      ?r"  )r  r  r  r  s      rY   test_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extraK  s    +,<,<,<==FS$K<<<<\Aq6***+,D,D,D#NNNFS+$6CCCC\Aq6*****r[   c                    t           j                            d          dt           j                            d          z  z   }t          |d          \  }}t	          |t          j        |          gd           t          |dg           d S )Nr   r   rL   rl  r  )rv   r   r  r5   r   r  r
   r  s       rY   test_single_unique_rootz'TestUniqueRoots.test_single_unique_rootT  sx    INN3"ry~~c':':"::+Aq11FRVAYYK<<<<\C5)))))r[   N)
r   r   r   r  r  r  r  r  r  r  r   r[   rY   r  r    s}        4 4 41 1 14 4 41 1 1*1 1 1+ + +* * * * *r[   r  c                      t          j        t          j        dt          j                  dd          } | j        t          j        k    sJ d S )Nr  r	  rI   rG   )r   r  rv   r   r   r   )r?  s    rY   test_gh_22684r  [  sB    !")D"E"E"Eq!LLF<2<''''''r[   r3  )r-  r   )r  concurrent.futuresr   r   r  r   	itertoolsr   mathr   r  r	   r   numpy.testingr
   r   r   r   r   r   r   r   numpyr   r   rv   scipyr   r  rl  r   scipy.optimizer   r   r   scipy.signalr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   scipy.signal.windowsr8   scipy.signal._signaltoolsr9   r:   r;   scipy.signal._upfirdnr<   
scipy._libr=   scipy._lib._array_apir?   scipy._lib._utilr@   rA   rB   rD   r   r  rz  r  r  r  r,  r/  r1  rR  rg  r  rA  r  rC  rS  rX  r  r  r  rc  r  r  r  r  r  r  r  _pmfr  rx  r  r  r  r  r  r   r   paramrd  r  rE  rZ  r]  csinglera  re  r_  r|  r  r  r  r  r  	fail_slowr  r  r  r  r  r  rV  ri  rn  r  r2  rd  rg  rj  r  r  r  r  r   r[   rY   <module>r     s.   



 ? ? ? ? ? ? ? ?                    * * * * * *                   
                    % % % % % % 6 6 6 6 6 6 6 6                                                                        & % % % % %4 4 4 4 4 4 4 4 4 4 0 0 0 0 0 0 ! ! ! ! ! ! 1 1 1 1 1 1 > > > > > > > > > >eO eO eO eO eO eO eO eOPu u u u u= u u upL L L L L L L LD?" ?" ?" ?" ?"_ ?" ?" ?"DjL jL jL jL jL jL jL jLX3 3 3  

C 
C 
C  
E! E! E! E! E! E! E! E!PN" N" N" N" N" N" N" N"b- - - - - - - -DL L L L L L L L CBB > !U, U, U, U, U, U, U, U,p* * * * * * * *>& & & & & & & &U( U( U( U( U( U( U( U(p    /       /    899    $5   :9     1       !2    899    &7   :9 899    /   :9 899    .   :9
 899F F :9F {!!">??K K K
 "'29bh ('2< "
BJ ,R]$ G G G ,WD A A A	 C  w" w" w" w" w" w" w" w"t2 2 2 2 2 2 2 2j !:!:!:;;D%=11'K'K'KLL0 0 ML 21 <;022 2 2
 
BJ ,R^4 H H H J K K\= \= \= \= \= \= \=K K\=~$= $= $= $= $= $= $= $=ND D D D D D D D2]% ]% ]% ]% ]% ]% ]% ]%@L L L L Ll L L L) ) )X4 4 4 4@ rD D D( ! ! ! 899L L :9L r@ @ @>q" q" q" q" q" q" q" q"hYE YE YE YE YE YE YE YExF F F F F F F F.uQ uQ uQ uQ uQ uQ uQ uQpk( k( k( k( k( k( k( k(\RB RB RB RB RB RB RB RBj1 1 1 1 899'7!344  54 :9. v&&r r r r r r r '&rjP P P P P P P P./8 /8 /8 /8 /8 /8 /8 /8dH* H* H* H* H* H* H* H*V( ( ( ( (r[   