
    ge
                     D   d dl 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 d dlZd dlmZ d dlmZ d dlmZmZmZmZ d dlmZ g dZej                            d	d
ge          d             Z G d d          Z G d d          Z G d d          Z G d d          Z  G d d          Z! G d d          Z" G d d          Z# eg d          Z$ eg d          Z% G d d          Z& eg d           eg d           eg d            eg d!           eg d          d eg d           d eg d"           eg d#          ddd$Z'd% Z( G d& d'          Z) G d( d)          Z* G d* d+          Z+ G d, d-          Z, G d. d/          Z- G d0 d1          Z. G d2 d3          Z/ G d4 d5          Z0 G d6 d7          Z1 G d8 d9          Z2 G d: d;          Z3i d< eg d=          d> eg d?          d@ eg dA          dB eg dC          dD eg dE          dF eg dG          dH eg dI          dJ eg dK          dL eg dM          dNg dOdPg dQdRg dSdTg dUdVg dWdXg dYdZg d[d\g d]g d^g d_d`Z4 G da db          Z5g dcg ddgdedfgfg dgg dhg digg djfg dkg dlg dmg dng dogg dpfg dqg drg dsg dtgg dufdvZ6 G dw dx          Z7 G dy dz          Z8 G d{ d|          Z9d} Z:d~ Z;d Z<d Z=d Z>d Z?dS )    N)array)assert_array_almost_equalassert_array_equalassert_allcloseassert_equalassert_assert_array_lesssuppress_warnings)raises)fft)windows
get_windowresamplehann)signal))boxcar )triangr   )parzenr   )bohmanr   )blackmanr   )nuttallr   )blackmanharrisr   )flattopr   )bartlettr   )barthannr   )hammingr   )kaiser   )dpss)   )gaussian      ?)general_gaussian)      ?r"   )chebwinr   )cosiner   )r   r   )exponentialr   )taylorr   )tukeyr$   )lanczosr   methodargsc                     | dv rt          j        d           t          t          |           }d|  }t          j        |          5   |dg|R   d d d            d S # 1 swxY w Y   d S )N)r+   r-   r!   zDeprecation test not applicablez
Importing matchr    )pytestskipgetattrr   deprecated_call)r.   r/   funcmsgs       ?lib/python3.11/site-packages/scipy/signal/tests/test_windows.pytest_deprecated_importr:   *   s    ...566666""D
v

C		c	*	*	*  Q                 s   
AA#&A#c                       e Zd Zd ZdS )TestBartHannc                     t          t          j        dd          g ddd           t          t          j        d          g ddd           t          t          j        dd	          g d
dd           d S )N   Tsym)r   gA,q?	5xB$?rA   gA,q?r   V瞯<rtolatol   )r   HzG?\(\?      ?rH   rG   r   F)r   rG   rH   rI   rH   rG   )r   r   r   selfs    r9   
test_basiczTestBartHann.test_basic6   s    (555D D D"	0 	0 	0 	0 	(++;;;"	0 	0 	0 	0 	(E22888"	0 	0 	0 	0 	0 	0    N__name__
__module____qualname__rL   r   rM   r9   r<   r<   4   s#        
0 
0 
0 
0 
0rM   r<   c                       e Zd Zd ZdS )TestBartlettc                     t          t          j        d          g d           t          t          j        d          g d           t          t          j        dd          g d           d S )Nr>   )r   皙?皙?rV   rU   r   rF   )r   UUUUUU?UUUUUU?rI   rX   rW   r   F)r   rW   rX   rI   rX   rW   )r   r   r   rJ   s    r9   rL   zTestBartlett.test_basicE   sz    (++-G-G-GHHH(++-L-L-LMMM(E22444	6 	6 	6 	6 	6rM   NrN   r   rM   r9   rS   rS   C   s#        6 6 6 6 6rM   rS   c                       e Zd Zd ZdS )TestBlackmanc                 @   t          t          j        dd          g dd           t          t          j        dd          g dd	           t          t          j        d          g d
d           t          t          j        dd          g dd           d S )Nr>   Fr?   )r   p=
ף?)\(?rI   r]   r\   +=rE   rF   )r   Fi'?b@c?Zgs?rb   ra   r`   g:0yE>)r   쳩ֲ?,,?rd   rc   r   T)r   r\   r]   rI   r]   r\   r   )r   r   r   rJ   s    r9   rL   zTestBlackman.test_basicN   s    (666888u	F 	F 	F 	F(666B B BHL	N 	N 	N 	N 	(++D D D"	$ 	$ 	$ 	$ 	(D11;;;%	I 	I 	I 	I 	I 	IrM   NrN   r   rM   r9   rZ   rZ   L   s(        I I I I IrM   rZ   c                       e Zd Zd ZdS )TestBlackmanHarrisc                 0   t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        d          g d           t          t          j        dd          g d	           d S )
Nr>   F)iUMu?0_^}?縯猨?rI   rj   ri   rF   r?   )rh   gjP?g'm$M?gu?gu?g*m$M?gjP?)rh   ^?gU׈g?gU׈g?rk   rh   T)rh   ri   rj   rI   rj   ri   rh   )r   r   r   rJ   s    r9   rL   zTestBlackmanHarris.test_basic_   s    .q%88NNN	P 	P 	P.qe<<<B B B	C 	C 	C 	.q11J J J	K 	K 	K 	.qd;;;" " "	# 	# 	# 	# 	#rM   NrN   r   rM   r9   rf   rf   ]   s#        # # # # #rM   rf   c                        e Zd Zd Zd Zd ZdS )
TestTaylorc                 .   t          t          j        ddd          d           t          t          j        ddd          t          j        g d                     t          t          j        ddd          t          j        g d                     d	S )
zTests windows of small length that are normalized to 1. See the
        documentation for the Taylor window for more information on
        normalization.
        r    r"      rI      )%6'HA?)T
?rI   rr   rq   r>   )δX?繡1E?PD3m?ru   rt   rs   Nr   r   r+   npr   rJ   s    r9   test_normalizedzTestTaylor.test_normalizedp   s    
 	q!R00#666N1a$$HJJJKK	
 	
 	
 	N1a$$H     	
 	
 	
 	
 	
rM   c                     t          t          j        dddd          t          j        g d                     t          t          j        dddd          t          j        g d                     d	S )
zTest windows of small length that are not normalized to 1. See
        the documentation for the Taylor window for more information on
        normalization.
        rp   r"   ro   Fnorm)	P ?sCp?g)8ux?r}   r|   r>   ))S~?rI   kt#?r   rI   r~   Nrv   rJ   s    r9   test_non_normalizedzTestTaylor.test_non_normalized   s    
 	N1a%000H     	
 	
 	
 	N1a%000H     	
 	
 	
 	
 	
rM   c           	      Z   d}d}t          j        |dddd          }t          ||          }dt          j        t          j        |t          j        |          z                      z  }t          j        t          j        |          dk              }t          j        |||                    }d	t          j        |d
k              z  |z  |z  }d	t          j        |dk              z  |z  |z  }	t          |dd           t          |dd           t          |	dd           dS )a  This test ensures the correctness of the implemented Taylor
        Windowing function. A Taylor Window of 1024 points is created, its FFT
        is taken, and the Peak Sidelobe Level (PSLL) and 3dB and 18dB bandwidth
        are found and checked.

        A publication from Sandia National Laboratories was used as reference
        for the correctness values [1]_.

        References
        -----
        .. [1] Armin Doerry, "Catalog of Window Taper Functions for
               Sidelobe Control", 2017.
               https://www.researchgate.net/profile/Armin_Doerry/publication/316281181_Catalog_of_Window_Taper_Functions_for_Sidelobe_Control/links/58f92cb2a6fdccb121c9d54d/Catalog-of-Window-Taper-Functions-for-Sidelobe-Control.pdf
        i   i      #   F)nbarsllr{   r@      r   r"   gX$g_2gAfAr    r_   gLJ?皙?gZӼ@N)
r   r+   r   rw   log10absamaxargmaxdiffr   )
rK   M_winN_fftwfspec
first_zeroPSLLBW_3dBBW_18dBs
             r9   test_correctnesszTestTaylor.test_correctness   s%     N5qbu%HHH5MMBHRVA

N33444Yrwt}}q011
wtJ
{234429T%88999EAEIBId&99:::UBUJhQ////S1111c222222rM   N)rO   rP   rQ   rx   r   r   r   rM   r9   rm   rm   n   sA        
 
 
$
 
 
$!3 !3 !3 !3 !3rM   rm   c                       e Zd Zd ZdS )
TestBohmanc                     t          t          j        d          g d           t          t          j        dd          g d           t          t          j        dd          g d           d S )	Nr>   )r   g$I ?6 D?r   g I ?r   rF   Tr?   )r   PG?4}|?rI   6}|?r   r   F)r   r   r   rI   r   r   )r   r   r   rJ   s    r9   rL   zTestBohman.test_basic   s    q))D D D	E 	E 	E 	qd333D D D	E 	E 	E 	q%00A A A	B 	B 	B 	B 	BrM   NrN   r   rM   r9   r   r      s(        	B 	B 	B 	B 	BrM   r   c                       e Zd Zd ZdS )
TestBoxcarc                     t          t          j        d          g d           t          t          j        d          g d           t          t          j        dd          g d           d S )Nr>   r    r    r    r    r    r    rF   r    r    r    r    r    r    r    F)r   r   r   rJ   s    r9   rL   zTestBoxcar.test_basic   sm    q))+=+=+=>>>q))+@+@+@AAAq%002D2D2DEEEEErM   NrN   r   rM   r9   r   r      s(        F F F F FrM   r   )5CV?CԳ ?Q&E?:*?;Bu?9#?=[?Z
G?ٵݒ?Lg?(+ ?T=? zR&5?scH?u?]/M`?xC8???9?mo?[?T:?sK!q?/M.?×?)s?rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )6?2?w.v?f*#?灖`?d${!??M?ut\?Ljh?xak?WY?qj?<)[?@ի?MEs?甽/?{l?[^6?:Ug$?: U\?I.!v?Clp?gF?稦$p?VLy?.?rI   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestChebWinc                    t                      5 }|                    t          d           t          t	          j        dd          g d           t          t	          j        dd          g d           t          t	          j        dd          g d           t          t	          j        dd          g d	           t          t	          j        ddd
          g d           d d d            d S # 1 swxY w Y   d S )NThis window is not suitabler>   d   )}	ɺ?L >?rI   rI   r   r   rF   )S?D1mPC?%5R?rI   r   r   r   
   )rI   TEm?	-o?r   r   rI   )rI   F3?NO?	r]?r   r   rI   F)rI   r   r   r   r   r   )r
   filterUserWarningr   r   r(   )rK   sups     r9   rL   zTestChebWin.test_basic   s      	2CJJ{$ABBBGOAs33E E EF F F GOAs33E E EF F F GOAr22J J JK K K GOAr226 6 67 7 7 GOAr5991 1 12 2 2!	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   CC22C69C6c                     t                      5 }|                    t          d           t          j        dd          }d d d            n# 1 swxY w Y   t          |t          d           d S )Nr   5   atr   decimal)r
   r   r   r   r(   r   cheb_odd_true)rK   r   cheb_odds      r9   test_cheb_odd_high_attenuationz*TestChebWin.test_cheb_odd_high_attenuation	  s       	3CJJ{$ABBBrc222H	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	"(M1EEEEEE   2AAAc                     t                      5 }|                    t          d           t          j        dd          }d d d            n# 1 swxY w Y   t          |t          d           d S )Nr   6   (   r   r   r   )r
   r   r   r   r(   r   cheb_even_true)rK   r   	cheb_evens      r9   test_cheb_even_high_attenuationz+TestChebWin.test_cheb_even_high_attenuation  s       	3CJJ{$ABBBr222I	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	")^QGGGGGGr   c                     t          g d          }t                      5 }|                    t          d           t	          j        dd          }d d d            n# 1 swxY w Y   t          ||d           d S )N)rI   m?燿&k?gc[?r   r   rI   r   rF   r   r   r   r   r   r
   r   r   r   r(   r   )rK   cheb_odd_low_at_truer   r   s       r9   test_cheb_odd_low_attenuationz)TestChebWin.test_cheb_odd_low_attenuation  s    $ &0 &0 &0  1  1    	1CJJ{$ABBBqR000H	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	"(,@!LLLLLL   2AA"%A"c                     t          g d          }t                      5 }|                    t          d           t	          j        dd          }d d d            n# 1 swxY w Y   t          ||d           d S )N)rI   R?N(D!T?#R?r  r  r  rI   r      ir   r   r   r   )rK   cheb_even_low_at_truer   r   s       r9   test_cheb_even_low_attenuationz*TestChebWin.test_cheb_even_low_attenuation  s     % '; '; '; !< !<    	3CJJ{$ABBBc222I	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	")-BANNNNNNr  N)rO   rP   rQ   rL   r   r   r   r  r   rM   r9   r   r      sm        2 2 2,F F FH H HM M MO O O O OrM   r   )|dy?vS?{?rI   r
  )1B?%?r  r  )́R?8,6V?rI   r  )\Kr?
oh?r  r  )r	  r
  rI   r
  r	  )r  r  rI   r  r  ))r   N皙?F)r   Nr  T)r   NrI   F)r   NrI   T)r   r"   r  F)r   r"   r  T)r   r"   rI   F)r   r"   rI   T)rp   Nr  T)rp   NrI   T)rp   r"   r  T)rp   r"   rI   Tc                      t                                           D ]E\  } }|t          t          t          j        g| R   %t	          j        |  }t          ||d           Fd S )Nr^   rD   )exponential_dataitemsassert_raises
ValueErrorr   r*   r   )kvwins      r9   test_exponentialr  E  ss     &&(( 0 019*g&9>A>>>>>%q)CC/////0 0rM   c                       e Zd Zd ZdS )TestFlatTopc                 0   t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        d          g d           t          t          j        dd          g d	           d S )
Nr>   Fr?   )bF;s*?dR	p^?rI   r!  r   rF   )r  `p|ܢ?J?r$  r#  r"  )r  <#U_&k?r&  r%  r  T)r  r   r!  rI   r!  r   r  )r   r   r   rJ   s    r9   rL   zTestFlatTop.test_basicP  s    u5553 3 3	4 	4 	4 	u555/ / /	0 	0 	0
 	**' ' '	( 	( 	( 	400A A A	B 	B 	B 	B 	BrM   NrN   r   rM   r9   r  r  N  s(        B B B B BrM   r  c                       e Zd Zd ZdS )TestGaussianc                 0   t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        ddd	          g d
           d S )Nr>   rI   )|~?w$?"$j=?r,  r+  r*  rF   g333333?)r*  
"?;eܜ?rI   r.  r-  r*     )r  ?yLE?rI   r1  r0  r  F)r  r0  r1  rI   r1  r0  )r   r   r#   rJ   s    r9   rL   zTestGaussian.test_basicd  s    (C00B B B	C 	C 	C 	(C00B B B	C 	C 	C 	(A..A A A	B 	B 	B 	(Au55- - -	. 	. 	. 	. 	.rM   NrN   r   rM   r9   r(  r(  b  s#        . . . . .rM   r(  c                       e Zd Zd ZdS )TestGeneralCosinec                     t          t          j        dg d          g d           t          t          j        dg dd          g d           d S )Nrp   r%   333333?r  )rU   r6  r    r6  rU   r   Fr?   rU   r6  r    r6  )r   r   general_cosinerJ   s    r9   rL   zTestGeneralCosine.test_basicy  sm    .q///BB///	1 	1 	1.q///uMMM***	, 	, 	, 	, 	,rM   NrN   r   rM   r9   r3  r3  w  s#        , , , , ,rM   r3  c                       e Zd Zd ZdS )TestGeneralHammingc                     t          t          j        dd          g d           t          t          j        ddd          g d           t          t          j        ddd	          g d
           d S )Nrp   ffffff?rU   r<  rI   r<  rU         ?Fr?   )r%   y&"?x?r@  r?  r>   T)r%   r?  r@  r@  r?  r%   )r   r   general_hammingrJ   s    r9   rL   zTestGeneralHamming.test_basic  s    /377111	3 	3 	3/4UCCC5 5 5	6 	6 	6 	/4TBBB9 9 9	: 	: 	: 	: 	:rM   NrN   r   rM   r9   r:  r:    s#        : : : : :rM   r:  c                       e Zd Zd ZdS )TestHammingc                 0   t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        d          g d           t          t          j        dd          g d	           d S )
Nr>   F){Gz?ףp=
?p=
ף?rI   rG  rF  rF   r?   )rE  CW4?	/5?4Cъ?rJ  rI  rH  )rE  6 iv?P0?rL  rK  rE  T)rE  rF  rG  rI   rG  rF  rE  )r   r   r   rJ   s    r9   rL   zTestHamming.test_basic  s    511;;;	= 	= 	=u555A A A	B 	B 	B 	**G G G	H 	H 	H 	t444AAA	C 	C 	C 	C 	CrM   NrN   r   rM   r9   rC  rC    s(        C C C C CrM   rC  c                       e Zd Zd ZdS )TestHannc                 H   t          t          j        dd          g ddd           t          t          j        dd          g ddd           t          t          j        dd	          g d
dd           t          t          j        d          g ddd           d S )Nr>   Fr?   )r         ?r>  rI   r>  rP  rB   rC   rF   )r   \$:?H`r?8T^j?rS  rR  rQ  Tr   Xhd?Tͻ?rV  rU  r   r   rP  r>  rI   r>  rP  r   )r   r   r   rJ   s    r9   rL   zTestHann.test_basic  s    QE222888"	0 	0 	0 	0 	QE222A A A #		0 	0 	0 	0
 	Q--D D D"	0 	0 	0 	0 	Q;;;"	0 	0 	0 	0 	0 	0rM   NrN   r   rM   r9   rN  rN    s#        0 0 0 0 0rM   rN  c                       e Zd Zd ZdS )
TestKaiserc                 z   t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        ddd	          g d
           d S )Nr>   r%   )l?<3N?i>%?r]  r\  r[  rF   )r[  	$?6?rI   r_  r^  r[  g@)§Aը?O F?$?rb  ra  r`  )r`  *'?=a?rI   rd  rc  r`  F)r`  rc  rd  rI   rd  rc  )r   r   r   rJ   s    r9   rL   zTestKaiser.test_basic  s   q#..A A A	B 	B 	B 	q#..A A A	B 	B 	B 	q#..A A A	B 	B 	B 	q#..A A A	B 	B 	B 	q#u55- - -	. 	. 	. 	. 	.rM   NrN   r   rM   r9   rY  rY    s#        . . . . .rM   rY  c                       e Zd Zd Zd ZdS )TestKaiserBesselDerivedc                 l   d}t          j        |d          }t          j        d|d          }t          ||           t          |d |dz           dz  || dz  d          dz  z   d           t          t          j        dt          j        dz            d d	         t	          j        d          dz             t          t          j        d
t          j        dz            d d         ddg           t          t          j        dt          j        dz            d d         g d           d S )Nr         @beta)zkaiser bessel derivedrh  Ffftbinsr"   rI   r    r   gU?gU3|\?r>   r/  )gHZ1?gKf?g"iF5?)r   kaiser_bessel_derivedr   r   rw   pisqrt)rK   Mr   w2s       r9   rL   z"TestKaiserBesselDerived.test_basic  sS   )!#666 > !52 2 22 	'16'
a!QB!GHH+*::B??? 	5abeaiHHH!L

Q	( 	( 	( 	5abeaiHHH!L'8	: 	: 	: 	5abeaiHHH!LHHH	J 	J 	J 	J 	JrM   c                 2   d}d}t          t          |          5  t          j        |dz   d           d d d            n# 1 swxY w Y   d}t          t          |          5  t          j        |dz   dd	           d d d            d S # 1 swxY w Y   d S )
Nr   zHKaiser-Bessel Derived windows are only defined for even number of pointsr1   r    rh  ri  zCKaiser-Bessel Derived windows are only defined for symmetric shapesF)rj  r@   )r  r  r   rm  )rK   rp  r8   s      r9   test_exceptionsz'TestKaiserBesselDerived.test_exceptions  s>   ":S111 	: 	:)!a%b9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:":S111 	E 	E)!a%beDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es#   AAA$BBBN)rO   rP   rQ   rL   rs  r   rM   r9   rf  rf    s:        J J J0E E E E ErM   rf  c                       e Zd Zd ZdS )TestNuttallc                 0   t          t          j        dd          g d           t          t          j        dd          g d           t          t          j        d          g d           t          t          j        dd          g d	           d S )
Nr>   Fr?   )A"7?v;O<g?$2bUs?rI   ry  rx  rF   )rw  gx&yxXW?g??絑?rz  g??g&yxXW?)rw  gEJ?g=`T?g>`T?gEJ?rw  T)rw  rx  ry  rI   ry  rx  rw  )r   r   r   rJ   s    r9   rL   zTestNuttall.test_basic  s    u555$ $ $	% 	% 	% 	u555A A A	B 	B 	B 	**L L L	M 	M 	M 	400/ / /	0 	0 	0 	0 	0rM   NrN   r   rM   r9   ru  ru    s#        0 0 0 0 0rM   ru  c                       e Zd Zd ZdS )
TestParzenc                     t          t          j        d          g d           t          t          j        dd          g d           t          t          j        dd          g d           d S )	Nr>   )e/?rP  88?r  rP  r~  rF   Tr?   )%OZQ%w?2|&?݁?rI   r  r  r  F)r  r  r  rI   r  r  )r   r   r   rJ   s    r9   rL   zTestParzen.test_basic  s    q))I I I	J 	J 	J 	qd333B B B	C 	C 	C 	q%00- - -	. 	. 	. 	. 	.rM   NrN   r   rM   r9   r|  r|    s#        . . . . .rM   r|  c                       e Zd Zd ZdS )
TestTriangc                     t          t          j        dd          g d           t          t          j        d          g d           t          t          j        dd          g d           d S )	Nr>   T)UUUUUU?r%   竪?r  r%   r  rF   )rP  r%   r>  r    r>  r%   rP  Fr?   )rP  r%   r>  r    r>  r%   )r   r   r   rJ   s    r9   rL   zTestTriang.test_basic  s    q$//666	8 	8 	8q))999	; 	; 	;qe444444	6 	6 	6 	6 	6rM   NrN   r   rM   r9   r  r    s#        6 6 6 6 6rM   r  )r   r%   T)        rI   rI   r  )r   ?T)r  ?r  r  )r   rI   T)r  r>  r>  r  )r   r%   F)r  rI   rI   rI   )r   r  F)r  rnOC?rI   r  )r   rI   F)r  r%   rI   r%   )rp   r  T)rI   rI   rI   rI   rI   )rp   rV   T)r  Yx?rI   r  r  )rp   rI   T)r  r%   rI   r%   r  )r>   r   r   )rF   r   r   )r>   rP  )r   r    r    r    r    r   )rF   rP  )r   r    r    r    r    r    r   )r>   )r   rV  rI   rI   gRͻ?r   )rF   )r   r>  rI   rI   rI   r>  r   )r>   r>  )r   gxų	&?rI   rI   gvų	&?r   )rF   r>  )r   g#}`yq?)!?rI   r  g#}`yq?r   rT  rW  ))r>   r    )rF   r    c                       e Zd Zd Zd ZdS )	TestTukeyc                     t                                           D ]F\  }}|t          t          t          j        g|R   %t	          j        | }t          ||dd           Gd S )NrB   rC   )
tukey_datar  r  r  r   r,   r   )rK   r  r  r  s       r9   rL   zTestTukey.test_basic@  sw    $$&& 	@ 	@DAqyj'-<!<<<<<mQ'QU?????	@ 	@rM   c                     t          j        dd          }t          j        d          }t          ||           t          j        dd          }t          j        d          }t          ||           d S )Nr   r   r    )r   r,   r   r   r   )rK   tuk0box0tuk1han1s        r9   test_extremeszTestTukey.test_extremesI  sh    }S!$$~c""!$---}S!$$|C  !$-----rM   N)rO   rP   rQ   rL   r  r   rM   r9   r  r  >  s5        @ @ @. . . . .rM   r  )IP?;]L?r  r  )g/vI<t?gE@?gE@̿g/vI<tgV?g$aȲ`?)ыBA?gnjk?r  )g>ef?r  g>ef)	#n?gLor  )gm/ ?g96+?g雦br?)g w?V?g>J#?g;Wi?g֙}I#?gr?V?)g:7A!(?cHX?r  cHXS[@!(ܿ)qh4?T1a~²?gEܿr  r  )r  r  r  gS[@!(?r  )gu+t?X>߿g36?r  g;St?)gML?gh5"z?g\v4?gPa?gd?)dsk8Si?p&p?5Bu?OL{?08À?w-<?kF?^R?kPz?1?Y^Q?X9?dkѐ^ś?3aJ?)IQ?-?ѫ"?給.?~9P?~n[?8Wϭ?	%fҳ?!KI?PJd?/ĳ?$~s	?pkuP?%ꙷ?
?q*?%wo?Zo??矐Ӄ?磓B@%?g3?/ߗ#@?0?@?=?.F!?it3?:.?X.?GkNVs?玃"Hk? 'F?精`?iGU?#!5#?r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )dgUw|?gTP?gj?gwĢ?gDъO?g_{?g< ?gȁk?gꬃt?g(P;?gHñ?gBKXP?g.mˏ޴?g nik?g"=?gOu?g{?ggU?g/u?gN׏$s?g ]?gГE?goY*?gܛ?gbu?g`?gɪJS?ga`gT*r?g.{?gYn?g.|TK?g紸?gzþ?gfU?g,?gԙ=?gg'?gws䕽?g?g[\	?g#k	?g%*?gLw<w?g,h-A?g[::<?g199l?g.4䓦%?gG/?gƢhlO?g[$v?g[$vgƢhlOgG/g.4䓦%g199lg[::<񍭿g,h-AgLw<wg%*浿g#k	g[\	g㻿gws䕽gg'gԙ=g,gfUgzþg紸¿g.|TK¿gYn¿g.{¿ga`gT*r¿gɪJS¿g`¿gbugܛgoY*gГEg ]gN׏$sg/uggUg{캿gOug"=g nikg.mˏ޴gBKXPgHñg(P;gꬃtgȁkg< g_{gDъOgwĢgjgTPgUw|)d|W◰?煢	͓??
8ρ?\i?ٮ32A?!;f?+?3sXL2??J?5QG?Ao?W? }2?␉k?IǇ?F6?f?ch'?%"a?h/K?:?>}?DC1?XB?QST`?s\NK?
3?<s?o?@1O?5M?#$7?,9ṗ?C)?W]{?#Ys臈En꛿x;i6
v^
m-b3[Ehp[6a0_:WR~戺0ъҺr  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )dgI!w.?gMu?g%Pld?g3z?g>?gd?g!DKy?g+o ?gYh{b?g{^y?gSh1?gy%@?g|hzj??gP\D?gz	?gVx<҅?g?gq&?gb˱?g8|p?g_cH?g6K	?gwp΍?g"Q	q?g@m8Migǐ3g7/`_qgS!g8QJg68gu\qg/Z~ܳgpQZgCg3`g7<w䷿ggp鷿g<Wulg~`gTg#qvg,]Bigw|gvľg3gagLHgU,gvA]PvgvA]Pv?gU,?gLH?ga?g3?gvľ?gw|?g,]Bi?g#qv?gT?g~`?g<Wul?gp?g?g7<w?g3`?gC?gpQZ?g/Z~ܳ?gu\q?g68?g8QJ?gS!?g7/`_q?gǐ3?g@m8Mi?g"Q	qgwp΍g6K	g_cHg8|pgb˱gq&ggVx<҅gz	gP\Dg|hzj?gy%@¿gSh1ÿg{^yÿgYh{bĿg+o Ŀg!DKyſgdſg>ſg3zĿg%PldĿgMuÿgI!w.ÿ)g?g"?gy?'?g `?))r   r   r"   )r/  gffffff?r/  )rp   r'   rp   )r   r"   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestDPSSc                     t                                           D ]L\  }}t          j        |ddi\  }}t	          ||d         d|           t	          ||d         dd|           Md S )	Nreturn_ratiosTr   gHz>)rE   err_msgr    gh㈵>)rD   rE   r
  )	dpss_datar  r   r!   r   )rK   r  r  r  ratioss        r9   rL   zTestDPSS.test_basica  s    OO%% 	K 	KDAq!,>>>KCC1D!<<<<FAaDt$JJJJJ	K 	KrM   c                 f   t          dd          D ]}t          j        ||dz            }|dz  }t          t	          j        |d                                          ||            t          j        ||dz  d          }|dk    rJt          t	          j        |d                                          ||            t          ||d	
           t          j        ||dz  d          }|dk    rdnd}t          t	          j        |d                                          ||             d S )Nr       g @r"   rI   )r
  	subsamplerz   gQ?r  r   )ranger   r!   r   rw   isclosesumr   )rK   rp  r  expectedwin_subwin_2s         r9   
test_unityzTestDPSS.test_unityh  sS   q" 	- 	-A,q!c'**C1uHC,,0022H$'+ + + + l1a#gK@@@G1uuRZ4488::H(/\3 3 3 3W48888LAG!444EFFqqHE2..2244h$)- - - - -!	- 	-rM   c                    t          j        dddd          d         }t          |d           t          j        dddd          d         }t          |d           t          j        dd	dd          d         }t          |d           d S )
N   r>   r   T)r	  r    rI   rF   r  )r   r!   r   )rK   lams     r9   r  zTestDPSS.test_extremes}  s    l2q!4888;!#r***l2q!4888;!#r***l2q!4888;!#r*****rM   c                    t          t          t          j        ddd           t          t          t          j        ddd           t          t          t          j        ddd           t          t          t          j        ddd           t          t          t          j        ddd           t          t          t          j        ddd           t          t          t          j        ddd           d S )	Nr   r'   g?r/  r   r    )r  r  r   r!   	TypeErrorrJ   s    r9   test_degeneratezTestDPSS.test_degenerate  s    j',3;;;j',3;;;iq#s;;;j',3:::j',2q999j',1a888j',Aq99999rM   N)rO   rP   rQ   rL   r  r  r  r   rM   r9   r  r  _  sS        K K K- - -*+ + +: : : : :rM   r  c                       e Zd Zd Zd ZdS )TestLanczosc                     t          t          j        dd          g dd           t          t          j        d          g dd           t          t          j        dd	          g d
d           d S )Nr>   Fr?   r  qϾv?;Fv?rI   r$  r#  &.>r_   r  uH%?;9?r(  r'  r  rF   T)r  r#  r$  rI   r$  r#  r  )r   r   r-   rJ   s    r9   rL   zTestLanczos.test_basic  s     	u555& & & "		# 	# 	# 	#
 	*** * * "		# 	# 	# 	#
 	t444* * * "		# 	# 	# 	# 	# 	#rM   c           	          dD ]d}t          t          t          j        |d                    |           t          t          t          j        |d                    |           ed S )N)r   r      Fr?   T)r   lenr   r-   )rK   ns     r9   test_array_sizezTestLanczos.test_array_size  sl     	? 	?AW_QE:::;;Q???W_QD999::A>>>>	? 	?rM   N)rO   rP   rQ   rL   r-  r   rM   r9   r   r     s2        # # #2? ? ? ? ?rM   r   c                   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 )TestGetWindowc                     t          j        dd          }t          |t          j        |                     t          j        dd          }t          |t          j        |                     d S )Nr      )r      )r   r   r   rw   	ones_like)rK   r   s     r9   test_boxcarzTestGetWindow.test_boxcar  s^    x,,1bl1oo... {B//1bl1oo.....rM   c                     t                      5 }|                    t          d           t          j        ddd          }d d d            n# 1 swxY w Y   t          |t          d           d S )Nr   )r(   r   r   Frk  r   r   )r
   r   r   r   r   r   r   rK   r   r   s      r9   test_cheb_oddzTestGetWindow.test_cheb_odd  s       	HCJJ{$ABBB"#3RGGGA	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	"!]A>>>>>>   3AAAc                     t                      5 }|                    t          d           t          j        ddd          }d d d            n# 1 swxY w Y   t          |t          d           d S )Nr   )r(   r   r   Frk  r   r   )r
   r   r   r   r   r   r   r6  s      r9   test_cheb_evenzTestGetWindow.test_cheb_even  s       	GCJJ{$ABBB"?BFFFA	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	"!^Q??????r8  c                     t          j        ddd          }t          j        dd          }t          ||d           d S )N)r!   r/  @   Frk  r/  r   r   )r   r   r!   r   rK   win1win2s      r9   	test_dpsszTestGetWindow.test_dpss  sE    !+r5AAA|B""!$a888888rM   c                 |    t          j        dd          }t          j        ddd          }t          ||           d S )Ng@r<  F)r   r   r   r   r=  s      r9   test_kaiser_floatzTestGetWindow.test_kaiser_float  s=    !#r**~b#u--d#####rM   c                     t          t          t          j        t	          d          d           t          t          t          j        dd           d S )Nr   r  brokenr   )r  r  r   r   setrJ   s    r9   test_invalid_inputsz!TestGetWindow.test_invalid_inputs  s>    j'"4c&kk1EEE 	j'"4hBBBBBrM   c                    d}t          j        d          }t          j        d|dz            }t	          t
          d          5  t          |t          |          |z  |           d d d            d S # 1 swxY w Y   d S )N   )r   g       @r"   zmust have the same lengthr1   )window)rw   aranger   r   r  r  r   r+  )rK   osfactorsigr  s       r9   test_array_as_windowz"TestGetWindow.test_array_as_window  s    inn (a-@@:-HIII 	; 	;S#c((X-c::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   #A55A9<A9c                     t          t          dg dfd          g d           t          t          dg dfdd          g d           d S )Nr8  r5  r   r7  Frk  )rU   皙?rO  rU   r   r   rJ   s    r9   test_general_cosinez!TestGetWindow.test_general_cosine  sz    
$4ooo#FJJ***	, 	, 	,
$4ooo#F+02 2 2...	0 	0 	0 	0 	0rM   c                     t          t          dd          g d           t          t          ddd          g d           d S )N)rA  r<  rp   )rU   жn?男*?rT  rS  Frk  r=  rP  rJ   s    r9   test_general_hammingz"TestGetWindow.test_general_hamming  sd    
#;Q??III	K 	K 	K
#;QNNN111	3 	3 	3 	3 	3rM   c                     t          t          dd          g dd           t          t          ddd          g dd           t          t          dd          t          d	d                     d S )
Nr-   r>   r"  r%  r_   Frk  r&  sincrP  rJ   s    r9   test_lanczoszTestGetWindow.test_lanczos  s    
9a00& & &,0	2 	2 	2 	2 	
9a???* * *04	6 	6 	6 	6 	
9a00*VQ2G2GHHHHHrM   N)rO   rP   rQ   r4  r7  r:  r@  rB  rF  rM  rQ  rU  rX  r   rM   r9   r/  r/    s        / / /? ? ?@ @ @9 9 9
$ $ $
C C C; ; ;0 0 03 3 3I I I I IrM   r/  c                     t           D ]z\  } }t          t          |           }t                      5 }|                    t
          d            |dg|R ddi} |dg|R ddi}t          |d d         |            |dg|R ddi} |dg|R ddi}t          |d d         |           t          t           |d	g|R ddi          d	           t          t           |d	g|R ddi          d	           t          t           |dg|R ddi          d           t          t           |dg|R ddi          d           t          t          |d
g|R   t          t          |dg|R   t           |dg|R ddig            t           |dg|R ddig            t           |dg|R ddidg           t           |dg|R ddidg           t           |dg|R ddij        dk               t           |dg|R ddij        dk               t           |dg|R ddij        dk               t           |dg|R ddij        dk               t           |d	g|R ddij        dk               t           |d	g|R ddij        dk               t           |dg|R ddid           t           |dg|R ddid           t           |dg|R ddid           t           |dg|R ddid           t          t!           |dg|R ddi          j        dd           t          t!           |dg|R ddi          j        dd           d d d            n# 1 swxY w Y   |d S )Nr   r  r@   TrF   Fr  	   r>   g      @ir   r    floatr   g)\(?r^   r_   r*  )window_funcsr5   r   r
   r   r   r   r   r+  r  r  r   r   dtyper	   r   r   imag)window_nameparamsrI  r   w1rq  s         r9   test_windowfunc_basicsrb    sR   + /+ /+V+..   -	+CJJ{$ABBB-F-----B.F.....B%b"gr222-F-----B.F.....B%b"gr222 VVA9999D99::A>>>VVA::::E::;;Q???VVA9999D99::A>>>VVA::::E::;;Q??? *fc;F;;;;*fb:6:::: vva;&;;;d;;R@@@vva<&<<<e<<bAAAvva;&;;;d;;aSAAAvva<&<<<e<<qcBBB FF10v0004006'ABBBFF11v11151177BCCCFF10v0004006'ABBBFF11v11151177BCCCFF10v0004006'ABBBFF11v11151177BCCC ffR;&;;;d;;TBBBffR<&<<<e<<dCCCffQ::::T::DAAAffQ;;;;U;;TBBB Cr >F > > > > >??DE+ + + +Cr >F > > > > >??DE+ + + +Y-	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+ -	+/+ /+s   L:M77M;	>M;	c                  H    dD ]} t          t          t          | d           d S )N)r   ksrrm  kbdr#   gaussgsszgeneral gaussianr&   zgeneral gaussgeneral_gaussggsdssr!   zgeneral cosiner8  r(   chebzgeneral hammingrA  rF   )r  r  r   )winstrs    r9   test_needs_paramsrm  ,  s6     9 9 	j*fa88889 9rM   c                  j    dD ]/} t          | d          }t          t          |          d           0d S )N)r   r   r   r   r   r   r)   r   r   r   r   r+   r*   poissonr,   tuktriangler-   rW  rF   )r   r   r+  )rl  r  s     r9   test_not_needs_paramsrr  7  sG     " "( ##SXXq!!!!+" "rM   c                      t           j        =t          dt           j        v            t          dt          j        j        v           d S d S )Nzsignal.hann is deprecated
deprecated)dep_hann__doc__r   r   r   r   rM   r9   test_deprecationrw  P  sH    #+x/??@@@GL$8899999 $#rM   c                      t          j        t          j        t                              } t	          | t          u            d S )N)pickleloadsdumpsru  r   )	dep_hann2s    r9   test_deprecated_pickleabler}  V  s4    V\(3344II!"""""rM   c            	      ~   t           j        fD ]}  | d          }t          j        t          j        |t          j        |          z
                      }t          |d            | d          }t          j        t          j        |t          j        |          z
                      }t          |d           d S )Ni   r  i  )r   r-   rw   maxr   flipr   )r  r   errors      r9   test_symmetricr  [  s      	! 	!CIIrva

l++,,UC    CIIrva

l++,,UC    	! 	!rM   )@ry  numpyrw   r   numpy.testingr   r   r   r   r   r	   r
   r3   r   r  	scipy.fftr   scipy.signalr   r   r   r   ru  scipyr   r\  markparametrizer:   r<   rS   rZ   rf   rm   r   r   r   r   r   r  r  r  r(  r3  r:  rC  rN  rY  rf  ru  r|  r  r  r  r  r  r   r/  rb  rm  rr  rw  r}  r  r   rM   r9   <module>r     so
             . . . . . . . . . . . . . . . . . .  * * * * * *       H H H H H H H H H H H H        2 (F+\::  ;:0 0 0 0 0 0 0 06 6 6 6 6 6 6 6I I I I I I I I"# # # # # # # #"G3 G3 G3 G3 G3 G3 G3 G3TB B B B B B B BF F F F F F F F  ! ! ! " "  6 6 6 7 7(4O 4O 4O 4O 4O 4O 4O 4Or 	 ( ( ( 	) 	)  % !J !J !J K K 5 "7 "7 "7 8 8% !K !K !K L L 	 A A A 	B 	B 4 4 4 5 5 A A A 	B 	B  % !J !J !J K K3  :0 0 0B B B B B B B B(. . . . . . . .*, , , , , , , ,
: 
: 
: 
: 
: 
: 
: 
:C C C C C C C C 0 0 0 0 0 0 0 0(. . . . . . . .2&E &E &E &E &E &E &E &ER0 0 0 0 0 0 0 0$. . . . . . . . 	6 	6 	6 	6 	6 	6 	6 	6EE...//EE 5 5 5 6 6 EE00011	
 UU///00 UU 6 6 6 7 7 UU///00 EE33344 EE : : : ; ; EE33344  !!!     !" ####$ 	
B
B
B%& 	
+
+
+'( FFF)*  : : :+.$ $ $///3  
:. . . . . . . .4 HGGIII  A  DO  Q\  C]  ^:::<\<\<\  _G  _G  _G  H  Jq  Jq  Jq  rVVV  YU  YU  YU  WY  WY  WY  [V  [V  [V  Xa  Xa  Xa  b  dk  dk  dk  l |  |  |  ~J(  ~J(  ~J(  L(D<  L(D<  L(D<  F<`P  F<`P  F<`P  aP  cPWQ  cPWQ  cPWQ  XQ 	/: /: /: /: /: /: /: /:d? ? ? ? ? ? ? ?BDI DI DI DI DI DI DI DIN0+ 0+ 0+f9 9 9" " "2: : :# # #
! ! ! ! !rM   