
     h;                        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mZ d dlmZ d dlmZmZmZmZ g 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 d, d-          Z) G d. d/          Z* G d0 d1          Z+ G d2 d3          Z, G d4 d5          Z- G d6 d7          Z.i d8 eg d9          d: eg d;          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          dJg dKdLg dMdNg dOdPg dQdRg dSdTg dUdVg dWdXg dYg dZg d[d\Z/ G d] d^          Z0g d_g d`gdadbgfg dcg ddg degg dffg dgg dhg dig djg dkgg dlfg dmg dng dog dpgg dqfdrZ1 G ds dt          Z2 G du dv          Z3 G dw dx          Z4dy Z5dz Z6d{ Z7d| Z8d} Z9d~ 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))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   c                       e Zd Zd ZdS )TestBartHannc                     t          t          j        dd          g d           t          t          j        d          g d           t          t          j        dd          g d           d S )	N   Tsym)r   gA,q?	5xB$?r3   gA,q?r      )r   HzG?\(\?      ?r6   r5   r   F)r   r5   r6   r7   r6   r5   )r   r   r   selfs    [/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/signal/tests/test_windows.py
test_basiczTestBartHann.test_basic+   s    (555D D D	E 	E 	E 	(++;;;	= 	= 	=(E22888	: 	: 	: 	: 	:    N__name__
__module____qualname__r;   r   r<   r:   r.   r.   )   s#        : : : : :r<   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 )Nr0   )r   皙?皙?rE   rD   r   r4   )r   UUUUUU?UUUUUU?r7   rG   rF   r   F)r   rF   rG   r7   rG   rF   )r   r   r   r8   s    r:   r;   zTestBartlett.test_basic7   sz    (++-G-G-GHHH(++-L-L-LMMM(E22444	6 	6 	6 	6 	6r<   Nr=   r   r<   r:   rB   rB   5   s#        6 6 6 6 6r<   rB   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 )Nr0   Fr1   )r   p=
ף?)\(?r7   rL   rK   +=atolr4   )r   Fi'?b@c?Zgs?rR   rQ   rP   g:0yE>)r   쳩ֲ?,,?rT   rS   r   T)r   rK   rL   r7   rL   rK   r   )r   r   r   r8   s    r:   r;   zTestBlackman.test_basic@   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r<   Nr=   r   r<   r:   rI   rI   >   s(        I I I I Ir<   rI   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 )
Nr0   F)iUMu?0_^}?縯猨?r7   rZ   rY   r4   r1   )rX   gjP?g'm$M?gu?gu?g*m$M?gjP?)rX   ^?gU׈g?gU׈g?r[   rX   T)rX   rY   rZ   r7   rZ   rY   rX   )r   r   r   r8   s    r:   r;   zTestBlackmanHarris.test_basicQ   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;;;" " "	# 	# 	# 	# 	#r<   Nr=   r   r<   r:   rV   rV   O   s#        # # # # #r<   rV   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!      r7      )%6'HA?)T
?r7   rb   ra   r0   )δX?繡1E?PD3m?re   rd   rc   Nr   r   r*   npr   r8   s    r:   test_normalizedzTestTaylor.test_normalizedb   s    
 	q!R00#666N1a$$HJJJKK	
 	
 	
 	N1a$$H     	
 	
 	
 	
 	
r<   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.
        r`   r!   r_   Fnorm)	P ?sCp?g)8ux?rm   rl   r0   ))S~?r7   kt#?ro   r7   rn   Nrf   r8   s    r:   test_non_normalizedzTestTaylor.test_non_normalizedt   s    
 	N1a%000H     	
 	
 	
 	N1a%000H     	
 	
 	
 	
 	
r<   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sllrk   r2      r   r!   gX$g_2gAfAr   rN   gLJ?皙?gZӼ@N)
r   r*   r   rg   log10absamaxargmaxdiffr   )
r9   M_winN_fftwfspec
first_zeroPSLLBW_3dBBW_18dBs
             r:   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2r<   N)r>   r?   r@   rh   rp   r   r   r<   r:   r]   r]   `   sA        
 
 
$
 
 
$!3 !3 !3 !3 !3r<   r]   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 )	Nr0   )r   g$I ?6 D?r   g I ?r   r4   Tr1   )r   PG?4}|?r7   6}|?r   r   F)r   r   r   r7   r   r   )r   r   r   r8   s    r:   r;   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r<   Nr=   r   r<   r:   r   r      s(        	B 	B 	B 	B 	Br<   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 )Nr0   r   r   r   r   r   r   r4   r   r   r   r   r   r   r   F)r   r   r   r8   s    r:   r;   zTestBoxcar.test_basic   sm    q))+=+=+=>>>q))+@+@+@AAAq%002D2D2DEEEEEr<   Nr=   r   r<   r:   r   r      s(        F F F F Fr<   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?r7   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?.?r7   r7   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 suitabler0   d   )}	ɺ?L >?r7   r7   r   r   r4   )S?D1mPC?%5R?r7   r   r   r   
   )r7   TEm?	-o?r   r   r7   )r7   F3?NO?	r]?r   r   r7   F)r7   r   r   r   r   r   )r
   filterUserWarningr   r   r'   )r9   sups     r:   r;   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   atrr   decimal)r
   r   r   r   r'   r   cheb_odd_true)r9   r   cheb_odds      r:   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   rr   r   )r
   r   r   r   r'   r   cheb_even_true)r9   r   	cheb_evens      r:   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)r7   m?燿&k?gc[?r   r   r7   r   r4   r   r   rr   r   r   r
   r   r   r   r'   r   )r9   cheb_odd_low_at_truer   r   s       r:   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)r7   R?N(D!T?#R?r   r   r   r7   r      ir   rr   r   r   )r9   cheb_even_low_at_truer   r   s       r:   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)r>   r?   r@   r;   r   r   r   r   r   r<   r:   r   r      sm        2 2 2,F F FH H HM M MO O O O Or<   r   )|dy?vS?{?r7   r   )1B?%?r   r   )́R?8,6V?r7   r   )\Kr?
oh?r   r   )r   r   r7   r   r   )r   r   r7   r   r   ))rr   N皙?F)rr   Nr  T)rr   Nr7   F)rr   Nr7   T)rr   r!   r  F)rr   r!   r  T)rr   r!   r7   F)rr   r!   r7   T)r`   Nr  T)r`   Nr7   T)r`   r!   r  T)r`   r!   r7   Tc                      t                                           D ]E\  } }|t          t          t          j        g| R   %t	          j        |  }t          ||d           Fd S NrM   rtol)exponential_dataitemsassert_raises
ValueErrorr   r)   r   )kvwins      r:   test_exponentialr  7  ss     &&(( 0 019*g&9>A>>>>>%q)CC/////0 0r<   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 )
Nr0   Fr1   )bF;s*?dR	p^?r7   r  r  r4   )r  `p|ܢ?J?r  r  r  )r  <#U_&k?r  r  r  T)r  r  r  r7   r  r  r  )r   r   r   r8   s    r:   r;   zTestFlatTop.test_basicB  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r<   Nr=   r   r<   r:   r  r  @  s(        B B B B Br<   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 )Nr0   r7   )|~?w$?"$j=?r  r  r  r4   g333333?)r  
"?;eܜ?r7   r   r  r     )r   ?yLE?r7   r#  r"  r   F)r   r"  r#  r7   r#  r"  )r   r   r"   r8   s    r:   r;   zTestGaussian.test_basicV  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- - -	. 	. 	. 	. 	.r<   Nr=   r   r<   r:   r  r  T  s#        . . . . .r<   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 )Nr`   r$   333333?r  )rD   r(  r   r(  rD   rr   Fr1   rD   r(  r   r(  )r   r   general_cosiner8   s    r:   r;   zTestGeneralCosine.test_basick  sm    .q///BB///	1 	1 	1.q///uMMM***	, 	, 	, 	, 	,r<   Nr=   r   r<   r:   r%  r%  i  s#        , , , , ,r<   r%  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 )Nr`   ffffff?rD   r.  r7   r.  rD         ?Fr1   )r$   y&"?x?r2  r1  r0   T)r$   r1  r2  r2  r1  r$   )r   r   general_hammingr8   s    r:   r;   zTestGeneralHamming.test_basict  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	: 	: 	: 	: 	:r<   Nr=   r   r<   r:   r,  r,  r  s#        : : : : :r<   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 )
Nr0   F){Gz?ףp=
?p=
ף?r7   r9  r8  r4   r1   )r7  CW4?	/5?4Cъ?r<  r;  r:  )r7  6 iv?P0?r>  r=  r7  T)r7  r8  r9  r7   r9  r8  r7  )r   r   r   r8   s    r:   r;   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r<   Nr=   r   r<   r:   r5  r5    s(        C C C C Cr<   r5  c                       e Zd Zd ZdS )TestHannc                 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          g d	           d S )
Nr0   Fr1   )r         ?r0  r7   r0  rB  r4   )r   \$:?H`r?8T^j?rE  rD  rC  Tr   Xhd?Tͻ?rH  rG  r   r   rB  r0  r7   r0  rB  r   )r   r   r   r8   s    r:   r;   zTestHann.test_basic  s    QE222888	: 	: 	:QE222A A A	B 	B 	B 	Q--D D D	E 	E 	E 	Q;;;	= 	= 	= 	= 	=r<   Nr=   r   r<   r:   r@  r@    s#        = = = = =r<   r@  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 )Nr0   r$   )l?<3N?i>%?rO  rN  rM  r4   )rM  	$?6?r7   rQ  rP  rM  g@)§Aը?O F?$?rT  rS  rR  )rR  *'?=a?r7   rV  rU  rR  F)rR  rU  rV  r7   rV  rU  )r   r   r   r8   s    r:   r;   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- - -	. 	. 	. 	. 	.r<   Nr=   r   r<   r:   rK  rK    s#        . . . . .r<   rK  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 derivedrZ  Ffftbinsr!   r7   r   rr   gU?gU3|\?r0   r!  )gHZ1?gKf?g"iF5?)r   kaiser_bessel_derivedr   r   rg   pisqrt)r9   Mr   w2s       r:   r;   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r<   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 pointsmatchr   rZ  r[  zCKaiser-Bessel Derived windows are only defined for symmetric shapesF)r\  r2   )r  r	  r   r_  )r9   rb  msgs      r:   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)r>   r?   r@   r;   rh  r   r<   r:   rX  rX    s:        J J J0E E E E Er<   rX  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 )
Nr0   Fr1   )A"7?v;O<g?$2bUs?r7   rn  rm  r4   )rl  gx&yxXW?g??絑?ro  g??g&yxXW?)rl  gEJ?g=`T?g>`T?gEJ?rl  T)rl  rm  rn  r7   rn  rm  rl  )r   r   r   r8   s    r:   r;   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 	0r<   Nr=   r   r<   r:   rj  rj    s#        0 0 0 0 0r<   rj  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 )	Nr0   )e/?rB  88?rt  rB  rs  r4   Tr1   )%OZQ%w?2|&?݁?r7   rw  rv  ru  F)ru  rv  rw  r7   rw  rv  )r   r   r   r8   s    r:   r;   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- - -	. 	. 	. 	. 	.r<   Nr=   r   r<   r:   rq  rq    s#        . . . . .r<   rq  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 )	Nr0   T)UUUUUU?r$   竪?r|  r$   r{  r4   )rB  r$   r0  r   r0  r$   rB  Fr1   )rB  r$   r0  r   r0  r$   )r   r   r   r8   s    r:   r;   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 	6r<   Nr=   r   r<   r:   ry  ry    s#        6 6 6 6 6r<   ry  )rr   r$   T)        r7   r7   r}  )rr   ?T)r}  ?r  r}  )rr   r7   T)r}  r0  r0  r}  )rr   r$   F)r}  r7   r7   r7   )rr   r~  F)r}  rnOC?r7   r  )rr   r7   F)r}  r$   r7   r$   )r`   r}  T)r7   r7   r7   r7   r7   )r`   rE   T)r}  Yx?r7   r  r}  )r`   r7   T)r}  r$   r7   r$   r}  )r0   r   r   )r4   r   r   )r0   rB  )r   r   r   r   r   r   )r4   rB  )r   r   r   r   r   r   r   )r0   )r   rH  r7   r7   gRͻ?r   )r4   )r   r0  r7   r7   r7   r0  r   )r0   r0  )r   gxų	&?r7   r7   gvų	&?r   )r4   r0  )r   g#}`yq?)!?r7   r  g#}`yq?r   rF  rI  ))r0   r   )r4   r   c                       e Zd Zd Zd ZdS )	TestTukeyc                     t                                           D ]E\  }}|t          t          t          j        g|R   %t	          j        | }t          ||d           Fd S r  )
tukey_datar  r  r	  r   r+   r   )r9   r
  r  r  s       r:   r;   zTestTukey.test_basic.  sq    $$&& 	4 	4DAqyj'-<!<<<<<mQ'QU33333	4 	4r<   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   )r9   tuk0box0tuk1han1s        r:   test_extremeszTestTukey.test_extremes7  sh    }S!$$~c""!$---}S!$$|C  !$-----r<   N)r>   r?   r@   r;   r  r   r<   r:   r  r  ,  s2        4 4 4. . . . .r<   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 `?))rr   rw   r!   )r!  gffffff?r!  )r`   r&   r`   )r   r!   rr   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>)rO   err_msgr   gh㈵>)r  rO   r  )	dpss_datar  r   r    r   )r9   r
  r  r  ratioss        r:   r;   zTestDPSS.test_basicO  s    OO%% 	K 	KDAq!,>>>KCC1D!<<<<FAaDt$JJJJJ	K 	Kr<   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!   r7   )r  	subsamplerj   gQ?r  r   )ranger   r    r   rg   isclosesumr   )r9   rb  r  expectedwin_subwin_2s         r:   
test_unityzTestDPSS.test_unityV  sS   q" 	2 	2A,q!c'**C1uHC,,0022H),0 0 0 0 l1a#gK@@@G1uuRZ4488::H-4W8 8 8 8W48888LAG!444EFFqqHE2..2244h).2 2 2 2 2!	2 	2r<   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   r0   rr   T)r  r   r7   r4   r   )r   r    r   )r9   lams     r:   r  zTestDPSS.test_extremesk  s    l2q!4888;!#r***l2q!4888;!#r***l2q!4888;!#r*****r<   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 )	Nrr   r&   g?r!  r   r   )r  r	  r   r    	TypeErrorr8   s    r:   test_degeneratezTestDPSS.test_degeneratet  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9r<   N)r>   r?   r@   r;   r  r  r  r   r<   r:   r  r  M  sS        K K K2 2 2*+ + +: : : : :r<   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 )Nr0   Fr1   r}  qϾv?;Fv?r7   r  r  &.>rN   r}  uH%?;9?r  r  r}  r4   T)r}  r  r  r7   r  r  r}  )r   r   r,   r8   s    r:   r;   zTestLanczos.test_basic  s     	u555& & & "		# 	# 	# 	#
 	*** * * "		# 	# 	# 	#
 	t444* * * "		# 	# 	# 	# 	# 	#r<   c           	          dD ]d}t          t          t          j        |d                    |           t          t          t          j        |d                    |           ed S )N)r   r      Fr1   T)r   lenr   r,   )r9   ns     r:   test_array_sizezTestLanczos.test_array_size  sl     	? 	?AW_QE:::;;Q???W_QD999::A>>>>	? 	?r<   N)r>   r?   r@   r;   r"  r   r<   r:   r  r    s2        # # #2? ? ? ? ?r<   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   rg   	ones_like)r9   r   s     r:   test_boxcarzTestGetWindow.test_boxcar  s^    x,,1bl1oo... {B//1bl1oo.....r<   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   Fr]  rr   r   )r
   r   r   r   r   r   r   r9   r   r   s      r:   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   Fr]  rr   r   )r
   r   r   r   r   r   r   r+  s      r:   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??????r-  c                     t          j        ddd          }t          j        dd          }t          ||d           d S )N)r    r!  @   Fr]  r!  rr   r   )r   r   r    r   r9   win1win2s      r:   	test_dpsszTestGetWindow.test_dpss  sE    !+r5AAA|B""!$a888888r<   c                 |    t          j        dd          }t          j        ddd          }t          ||           d S )Ng@r1  F)r   r   r   r   r2  s      r:   test_kaiser_floatzTestGetWindow.test_kaiser_float  s=    !#r**~b#u--d#####r<   c                     t          t          t          j        t	          d          d           t          t          t          j        dd           d S )Nr   r   brokenrr   )r  r	  r   r   setr8   s    r:   test_invalid_inputsz!TestGetWindow.test_invalid_inputs  s>    j'"4c&kk1EEE 	j'"4hBBBBBr<   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 lengthre  )window)rg   aranger   r   r  r	  r   r   )r9   osfactorsigr  s       r:   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 )Nr*  r'  rr   r)  Fr]  )rD   皙?rD  rD   r   r   r8   s    r:   test_general_cosinez!TestGetWindow.test_general_cosine  sz    
$4ooo#FJJ***	, 	, 	,
$4ooo#F+02 2 2...	0 	0 	0 	0 	0r<   c                     t          t          dd          g d           t          t          ddd          g d           d S )N)r3  r.  r`   )rD   жn?男*?rI  rH  Fr]  r/  rE  r8   s    r:   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 	3r<   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,   r0   r  r  rN   Fr]  r  sincrE  r8   s    r:   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Hr<   N)r>   r?   r@   r)  r,  r/  r5  r7  r;  rB  rF  rJ  rM  r   r<   r:   r$  r$    s        / / /? ? ?@ @ @9 9 9
$ $ $
C C C; ; ;0 0 03 3 3I I I I Ir<   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   r2   Tr4   Fr  	   r0   g      @ir   r   floatr   g)\(?rM   rN   r  )window_funcsgetattrr   r
   r   r   r   r   r   r  r	  r   r   dtyper	   r   r   imag)window_nameparamsr>  r   w1rc  s         r:   test_windowfunc_basicsrX    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   ksrr_  kbdr"   gaussgsszgeneral gaussianr%   zgeneral gaussgeneral_gaussggsdssr    zgeneral cosiner*  r'   chebzgeneral hammingr3  r4   )r  r	  r   )winstrs    r:   test_needs_paramsrc    s6     9 9 	j*fa88889 9r<   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,   rL  r4   )r   r   r   )rb  r  s     r:   test_not_needs_paramsrh  %  sG     " "( ##SXXq!!!!+" "r<   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   r<   r:   test_deprecationrm  >  sH    #+x/??@@@GL$8899999 $#r<   c                      t          j        t          j        t                              } t	          | t          u            d S )N)pickleloadsdumpsrk  r   )	dep_hann2s    r:   test_deprecated_pickleablers  D  s4    V\(3344II!"""""r<   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,   rg   maxry   flipr   )r  r   errors      r:   test_symmetricrx  I  s      	! 	!CIIrva

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

l++,,UC    	! 	!r<   );ro  numpyrg   r   numpy.testingr   r   r   r   r   r	   r
   pytestr   r  	scipy.fftr   scipy.signalr   r   r   r   rk  rQ  r.   rB   rI   rV   r]   r   r   r   r   r   r  r  r  r  r%  r,  r5  r@  rK  rX  rj  rq  ry  r  r  r   r  r  r$  rX  rc  rh  rm  rs  rx  r   r<   r:   <module>r~     s!
             . . . . . . . . . . . . . . . . . . + * * * * *       H H H H H H H H H H H H  4	: 	: 	: 	: 	: 	: 	: 	: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 = = = = = = = = . . . . . . . .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: : :# # #
! ! ! ! !r<   