
    -ii                     X   d dl Z d dlZd dlZd dl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 d dlmZ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 ej        j        Zej        j         Z egZ!g dZ" eej#                   G d	 d
                      Z$ eej%                   G d d                      Z& eej'                   G d d                      Z( eej)                   G d d                      Z* eej+                   G d d                      Z, eej-                   G d d                      Z. eej/                   G d d                      Z0g dZ1g dZ2 eej3                   G d d                      Z4 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!Z5 eej6                  d"             Z7 eej8                   G d# d$                      Z9 eej:                   G d% d&                      Z; eej<                   G d' d(                      Z= eej>                   G d) d*                      Z? eej@                   G d+ d,                      ZA eejB                   G d- d.                      ZC eejD                   G d/ d0                      ZE eejF                   G d1 d2                      ZG G d3 d4          ZH eejI                   G d5 d6                      ZJ eejK                   G d7 d8                      ZLi d9 eg d:          d; eg d<          d= eg d>          d? eg d@          dA eg dB          dC eg dD          dE eg dF          dG eg dH          dI eg dJ          dKg dLdMg dNdOg dPdQg dRdSg dTdUg dVdWg dXdYg dZg d[g d\d]ZM eejN                   G d^ d_                      ZOg d`g dagdbdcgfg ddg deg dfgg dgfg dhg dig djg dkg dlgg dmfg dng dog dpg dqgg drfdsZP eejQ                   G dt du                      ZR eejS                   G dv dw                      ZT eej                   G dx dy                      ZU edzd{|          ej        V                    d}d~ e"D                       d                         ZW ee          d             ZXg dZYej        V                    dd eYD                        ee          d                         ZZ eejS                  d             Z[dS )    N)array)raises)fft)windows
get_windowresample)_WIN_FUNC_DATA
_WIN_FUNCS)xp_assert_closexp_assert_equalarray_namespaceis_torchis_jaxis_cupyassert_array_almost_equalSCIPY_DEVICEis_numpymake_xp_test_casemake_xp_pytest_param_xp_copy_to_numpy))boxcar )triangr   )parzenr   )bohmanr   )blackmanr   )nuttallr   )blackmanharrisr   )flattopr   )bartlettr   )barthannr   )hammingr   )kaiser   )dpss)   )gaussian      ?)general_gaussian)      ?r'   )chebwinr$   )cosiner   )hannr   )exponentialr   )taylorr   )tukeyr)   )lanczosr   c                       e Zd Zd ZdS )TestBartHannc                    t          t          j        dd|          |                    g d|j                  dd           t          t          j        d|	          |                    g d
|j                  dd           t          t          j        dd|	          |                    g d|j                  dd           d S )N   Tsymxp)r   gA,q?	5xB$?r;   gA,q?r   dtypeV瞯<rtolatol   r:   )r   HzG?\(\?      ?rE   rD   r   F)r   rD   rE   rF   rE   rD   )r   r   r!   asarrayfloat64selfr:   s     e/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/signal/tests/test_windows.py
test_basiczTestBartHann.test_basic5   s   (<<<

 $D $D $DKM: # W W"	0 	0 	0 	0 	(r222

#F#F#F)+ # 5 5"	0 	0 	0 	0 	(Eb999

#C#C#C2:
VV"	0 	0 	0 	0 	0 	0    N__name__
__module____qualname__rL   r   rM   rK   r5   r5   2   s#        0 0 0 0 0rM   r5   c                       e Zd Zd ZdS )TestBartlettc                    t          t          j        d|          |                    g d|j                             t          t          j        d|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             d S )	Nr7   rC   )r   皙?皙?rV   rU   r   r<   rB   )r   UUUUUU?UUUUUU?rF   rX   rW   r   F)r   rW   rX   rF   rX   rW   )r   r   r    rG   rH   rI   s     rK   rL   zTestBartlett.test_basicF   s    (r222

#=#=#=RZ
PP	R 	R 	R(r222

#B#B#B"*
UU	W 	W 	W(Eb999

#?#?#?rz
RR	T 	T 	T 	T 	TrM   NrN   r   rM   rK   rS   rS   C   s(        T T T T TrM   rS   c                       e Zd Zd ZdS )TestBlackmanc                    t          t          j        dd|          |                    g d|j                  d           t          t          j        dd|          |                    g d	|j                  d
           t          t          j        d|          |                    g d|j                  d           t          t          j        dd|          |                    g d|j                  d           d S )Nr7   Fr8   )r   p=
ף?)\(?rF   r]   r\   r<   +=rA   rB   )r   Fi'?b@c?Zgs?rb   ra   r`   :0yE>rC   )r   쳩ֲ?,,?re   rd   r   T)r   r\   r]   rF   r]   r\   r   )r   r   r   rG   rH   rI   s     rK   rL   zTestBlackman.test_basicR   sh   ("===

#C#C#C2:
VV"	$ 	$ 	$ 	$ 	("===

 $M $M $M +-* # 6 6 "	# 	# 	# 	# 	(r222

 $O $O $O*,* # 6 6 #		$ 	$ 	$ 	$
 	(DR888

#F#F#F j # * *05	7 	7 	7 	7 	7 	7rM   NrN   r   rM   rK   rZ   rZ   O   s#        7 7 7 7 7rM   rZ   c                       e Zd Zd ZdS )TestBlackmanHarrisc                    t          t          j        dd|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        d|          |                    g d	|j                             t          t          j        dd
|          |                    g d|j                             d S )Nr7   FrC   )iUMu?0_^}?縯猨?rF   rk   rj   r<   rB   r8   )ri   gjP?g'm$M?gu?gu?g*m$M?gjP?)ri   ^?gU׈g?gU׈g?rl   ri   T)ri   rj   rk   rF   rk   rj   ri   )r   r   r   rG   rH   rI   s     rK   rL   zTestBlackmanHarris.test_basici   sd   .q%B???

 $= $= $=DFJ # P P	Q 	Q 	Q 	.qeCCC

 $M $M $M +-* # 6 6	7 	7 	7
 	.qR888

 $U $U $U*,* # 6 6	7 	7 	7 	.qdrBBB

 $7 $7 $7>@j # J J	K 	K 	K 	K 	KrM   NrN   r   rM   rK   rg   rg   f   s(        K K K K KrM   rg   c                        e Zd Zd Zd Zd ZdS )
TestTaylorc                    t          t          j        ddd|          |                    dg|j                             t          t          j        ddd|          |                    g d|j                             t          t          j        d	dd|          |                    g d
|j                             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'      rC   rF   r<      )%6'HA?)T
?rF   rs   rr   r7   )δX?繡1E?PD3m?rv   ru   rt   Nr   r   r1   rG   rH   rI   s     rK   test_normalizedzTestTaylor.test_normalized~   s    
 	q!RB777

C5

;;	= 	= 	=N1a+++JJLLLZ  ) )	
 	
 	

 	N1a+++JJ    Z  ! !	
 	
 	
 	
 	
rM   c           	         t          t          j        dddd|          |                    g d|j                             t          t          j        dddd|          |                    g d	|j                             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.
        rq   r'   rp   Fnormr:   )	P ?sCp?g)8ux?r}   r|   r<   r7   ))S~?rF   kt#?r   rF   r~   Nrw   rI   s     rK   test_non_normalizedzTestTaylor.test_non_normalized   s    
 	N1a%B777JJ   Z  ! !	
 	
 	
 	N1a%B777JJ   Z  ! !	
 	
 	
 	
 	
rM   c           	         d}d}t          j        |dddd|          }t          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          j        |dd          sJ t          j        |	dd          sJ t          j        |
dd          sJ 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{   r9   r:      r   r'   gX$g_2gAfAr%   )abs_tolgLJ?皙?gZӼ@N)r   r1   r   r   nplog10absmaxargmaxdiffmathisclose)rJ   r:   M_winN_fftwf_npspec
first_zeroPSLLBW_3dBBW_18dBs              rK   test_correctnesszTestTaylor.test_correctness   sK     N5qbu%BOOO$Q''//BHRVD26$<<$788999Yrwt}}q011
vd:zk123329T%88999EAEIBId&99:::UBUJ|D(A666666|FFC888888|GVS99999999rM   N)rO   rP   rQ   rx   r   r   r   rM   rK   rn   rn   {   sA        
 
 
(
 
 
$": ": ": ": ":rM   rn   c                       e Zd Zd ZdS )
TestBohmanc                    t          t          j        d|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        dd	|          |                    g d
|j                             d S )Nr7   rC   )r   g$I ?6 D?r   g I ?r   r<   rB   Tr8   )r   PG?4}|?rF   6}|?r   r   F)r   r   r   rF   r   r   )r   r   r   rG   rH   rI   s     rK   rL   zTestBohman.test_basic   s   qR000

 $O $O $O*,* # 6 6	7 	7 	7 	qdr:::

 $O $O $O*,* # 6 6	7 	7 	7 	q%B777

 $L $L $L*,* # 6 6	7 	7 	7 	7 	7rM   NrN   r   rM   rK   r   r      s#        7 7 7 7 7rM   r   c                       e Zd Zd ZdS )
TestBoxcarc                    t          t          j        d|          |                    g d|j                             t          t          j        d|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             d S )Nr7   rC   rF   r%   r%   r%   r%   r%   r<   rB   rF   r%   r%   r%   r%   r%   r%   F)r   r   r   rG   rH   rI   s     rK   rL   zTestBoxcar.test_basic   s    qR000

#7#7#7rz
JJ	L 	L 	LqR000

#:#:#:"*
MM	O 	O 	Oq%B777

#7#7#7rz
JJ	L 	L 	L 	L 	LrM   NrN   r   rM   rK   r   r      s(        L L L L L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?rF   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?.?rF   rF   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          j                    5  t          j        ddt                     t	          t          j        dd|          |                    g d|j                  d	           t	          t          j        d
d|          |                    g d|j                             t	          t          j        dd|          |                    g d|j                             t	          t          j        d
d|          |                    g d|j                             t	          t          j        ddd|          |                    g d|j                             d d d            d S # 1 swxY w Y   d S )NignoreThis window is not suitabler7   d   rC   )}	ɺ?L >?rF   rF   r   r   r<   rc   r_   rB   )S?D1mPC?%5R?rF   r   r   r   
   )rF   TEm?	-o?r   r   rF   )rF   F3?NO?	r]?r   r   rF   F)rF   r   r   r   r   r   )	warningscatch_warningsfilterwarningsUserWarningr   r   r-   rG   rH   rI   s     rK   rL   zTestChebWin.test_basic  sb   $&& 	P 	P#7F F FGOAsr:::JJ (P (P (P /1j ' : : "&    GOAsr:::JJ (P (P (P /1j ' : :; ; ;
 GOArb999JJ (U (U (U.0j ' : :; ; ; GOArb999JJ (A (A (AHJ
 ' T TU U U GOAr5R@@@JJ (< (< (<CE: ' O OP P P/	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   E$FF	F	c                    t          j                    5  t          j        ddt                     t	          j        dd|          }d d d            n# 1 swxY w Y   t          ||                    t                    d           d S )Nr   r   5   atr:   r   decimal)	r   r   r   r   r   r-   r   rG   cheb_odd_true)rJ   r:   cheb_odds      rK   test_cheb_odd_high_attenuationz*TestChebWin.test_cheb_odd_high_attenuation*  s    $&& 	: 	:#7F F Frcb999H	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	"(BJJ},E,EqQQQQQQ   3AAAc                    t          j                    5  t          j        ddt                     t	          j        dd|          }d d d            n# 1 swxY w Y   t          ||                    t                    d           d S )Nr   r   6   (   r   r   r   )	r   r   r   r   r   r-   r   rG   cheb_even_true)rJ   r:   	cheb_evens      rK   test_cheb_even_high_attenuationz+TestChebWin.test_cheb_even_high_attenuation1  s    $&& 	: 	:#7F F Frb999I	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	")RZZ-G-GQRSSSSSSr   c                     |                     g d|j                  }t          j                    5  t          j        ddt
                     t          j        dd|          }d d d            n# 1 swxY w Y   t          ||d	           d S )
N)rF   m?燿&k?gc[?r  r  rF   r<   r   r   rB   r   r   r   r   	rG   rH   r   r   r   r   r   r-   r   )rJ   r:   cheb_odd_low_at_truer   s       rK   test_cheb_odd_low_attenuationz)TestChebWin.test_cheb_odd_low_attenuation8  s    !zz +5 +5 +5<>J  *  H  H $&& 	8 	8#7F F FqRB777H	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	"(,@!LLLLLL   3A11A58A5c                     |                     g d|j                  }t          j                    5  t          j        ddt
                     t          j        dd|          }d d d            n# 1 swxY w Y   t          ||d	           d S )
N)rF   R?N(D!T?#R?r  r
  r	  rF   r<   r   r      ir   r   r   r  )rJ   r:   cheb_even_low_at_truer   s       rK   test_cheb_even_low_attenuationz*TestChebWin.test_cheb_even_low_attenuationB  s     "

 ,@ ,@ ,@GIz !+ !S !S $&& 	: 	:#7F F Fcb999I	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	")-BANNNNNNr  N)rO   rP   rQ   rL   r   r   r  r  r   rM   rK   r   r   
  sp        P P P:R R RT T TM M MO O O O OrM   r   )|dy?vS?{?rF   r  )1B?%?r  r  )́R?8,6V?rF   r  )\Kr?
oh?r  r  )r  r  rF   r  r  )r  r  rF   r  r  ))r   N皙?F)r   Nr  T)r   NrF   F)r   NrF   T)r   r'   r  F)r   r'   r  T)r   r'   rF   F)r   r'   rF   T)rq   Nr  T)rq   NrF   T)rq   r'   r  T)rq   r'   rF   Tc                     t                                           D ]^\  }}|!t          t          t          j        g|R d| i (t	          j        |d| i}t          ||                     |          d           _d S )Nr:   r^   r@   )exponential_dataitemsassert_raises
ValueErrorr   r0   r   rG   )r:   kvwins       rK   test_exponentialr!  j  s     &&(( < <19*g&9EAEEE"EEEE%q0R00CCAU;;;;;< <rM   c                       e Zd Zd ZdS )TestFlatTopc                    t          t          j        dd|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        d|          |                    g d	|j                             t          t          j        dd
|          |                    g d|j                             d S )Nr7   Fr8   )bF;s*?dR	p^?rF   r'  r&  r<   rB   )r%  `p|ܢ?J?r*  r)  r(  rC   )r%  <#U_&k?r,  r+  r%  T)r%  r&  r'  rF   r'  r&  r%  )r   r   r   rG   rH   rI   s     rK   rL   zTestFlatTop.test_basicw  sb   u<<<

 $? $? $?FHj # R R	S 	S 	S 	u<<<

 $: $: $: BD # M M	N 	N 	N
 	b111

 $G $G $G +-* # 6 6	7 	7 	7
 	4B777

 $M $M $M+-: # 7 7	8 	8 	8 	8 	8rM   NrN   r   rM   rK   r#  r#  t  s#        8 8 8 8 8rM   r#  c                       e Zd Zd ZdS )TestGaussianc                    t          t          j        dd|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        dd	|          |                    g d
|j                             t          t          j        dd	d|          |                    g d|j                             d S )Nr7   rF   rC   )|~?w$?"$j=?r2  r1  r0  r<   rB   g333333?)r0  
"?;eܜ?rF   r4  r3  r0     )r  ?yLE?rF   r7  r6  r  F)r  r6  r7  rF   r7  r6  )r   r   r(   rG   rH   rI   s     rK   rL   zTestGaussian.test_basic  sj   (CB777

 $M $M $M +-* # 6 6	7 	7 	7
 	(CB777

 $M $M $M +-* # 6 6	7 	7 	7
 	(A"555

 $L $L $L +-* # 6 6	7 	7 	7
 	(Au<<<

 $8 $8 $8?Az # K K	L 	L 	L 	L 	LrM   NrN   r   rM   rK   r.  r.    s(        L L L L LrM   r.  c                       e Zd Zd ZdS )TestGeneralCosinec                 b   |                     g d          }t          t          j        d|          |                     g d|j                             |                     g d          }t          t          j        d|d          |                     g d|j                             d S )	Nr*   333333?r  rq   )rU   r<  r%   r<  rU   r<   r   F)r9   rU   r<  r%   r<  )rG   r   r   general_cosinerH   )rJ   r:   as      rK   rL   zTestGeneralCosine.test_basic  s    JJ''.q!44

#:#:#:"*
MM	O 	O 	O JJ''.q!???

#5#5#5RZ
HH	J 	J 	J 	J 	JrM   NrN   r   rM   rK   r9  r9    s(        J J J J JrM   r9  c                       e Zd Zd ZdS )TestGeneralHammingc                    t          t          j        dd|          |                    g d|j                             t          t          j        ddd|          |                    g d	|j                             t          t          j        d
dd|          |                    g d|j                             d S )Nrq   ffffff?rC   rU   rC  rF   rC  rU   r<         ?Fr8   )r*   y&"?x?rG  rF  r7   T)r*   rF  rG  rG  rF  r*   )r   r   general_hammingrG   rH   rI   s     rK   rL   zTestGeneralHamming.test_basic  s	   /32>>>

#<#<#<BJ
OO	Q 	Q 	Q/4UrJJJ

 $@ $@ $@GIz # S S	T 	T 	T 	/4TbIII

 $E $E $ELNJ # X X	Y 	Y 	Y 	Y 	YrM   NrN   r   rM   rK   rA  rA    s(        Y Y Y Y YrM   rA  c                       e Zd Zd ZdS )TestHammingc                    t          t          j        dd|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        d|          |                    g d	|j                             t          t          j        dd
|          |                    g d|j                             d S )Nr7   FrC   ){Gz?ףp=
?p=
ף?rF   rN  rM  r<   rB   r8   )rL  CW4?	/5?4Cъ?rQ  rP  rO  )rL  6 iv?P0?rS  rR  rL  T)rL  rM  rN  rF   rN  rM  rL  )r   r   r"   rG   rH   rI   s     rK   rL   zTestHamming.test_basic  sH   5R888

#F#F#F)+ # 5 5	6 	6 	6 	u<<<

 $L $L $L +-* # 6 6	7 	7 	7
 	b111

 $R $R $R*,* # 6 6	7 	7 	7 	t;;;

#L#L#L)+ # 5 5	6 	6 	6 	6 	6rM   NrN   r   rM   rK   rJ  rJ    s#        6 6 6 6 6rM   rJ  c                       e Zd Zd ZdS )TestHannc                 $   t          t          j        dd|          |                    g d|j                  dd           t          t          j        dd|          |                    g d	|j                  dd           t          t          j        dd
|          |                    g d|j                  dd           t          t          j        d|          |                    g d|j                  dd           d S )Nr7   Fr8   )r         ?rE  rF   rE  rW  r<   r>   r?   rB   )r   \$:?H`r?8T^j?rZ  rY  rX  TrC   r   Xhd?Tͻ?r]  r\  r   r   rW  rE  rF   rE  rW  r   )r   r   r/   rG   rH   rI   s     rK   rL   zTestHann.test_basic  sl   QEb999

#C#C#C2:
VV"	0 	0 	0 	0 	QEb999

 $L $L $L +-* # 6 6 #	0 	0 	0 	0 	Q444

 $O $O $O*,* # 6 6 #		0 	0 	0 	0
 	Q2...

#F#F#F j # * *"	0 	0 	0 	0 	0 	0rM   NrN   r   rM   rK   rU  rU    s#        0 0 0 0 0rM   rU  c                       e Zd Zd ZdS )
TestKaiserc                    t          t          j        dd|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        dd|          |                    g d	|j                             t          t          j        dd|          |                    g d
|j                             t          t          j        ddd|          |                    g d|j                             d S )Nr7   r*   rC   )l?<3N?i>%?rd  rc  rb  r<   rB   )rb  	$?6?rF   rf  re  rb  g@)§Aը?O F?$?ri  rh  rg  )rg  *'?=a?rF   rk  rj  rg  F)rg  rj  rk  rF   rk  rj  )r   r   r#   rG   rH   rI   s     rK   rL   zTestKaiser.test_basic  s   q#"555

 $L $L $L +-* # 6 6	7 	7 	7
 	q#"555

 $L $L $L +-* # 6 6	7 	7 	7
 	q#"555

 $L $L $L +-* # 6 6	7 	7 	7
 	q#"555

 $L $L $L +-* # 6 6	7 	7 	7
 	q#u<<<

 $8 $8 $8?Az # K K	L 	L 	L 	L 	LrM   NrN   r   rM   rK   r`  r`    s(        L L L L LrM   r`  c                       e Zd Zd Zd ZdS )TestKaiserBesselDerivedc                    t          j        dd|          }t          ||                    g                      d}t          j        |d|          }t          j        d|d|          }t          ||           |d |dz           dz  || dz  d          dz  z   }t          ||                    |j        |j        	                     t          j        dt          j
        dz  |          d d
         }|                    |          t          j        d          z  dz  }t          ||           t          t          j        dt          j
        dz  |          d d         |                    ddg|j        	                     t          t          j        dt          j
        dz  |          d d         |                    g d|j        	                     d S )Nr*         @betar:   r   )zkaiser bessel derivedro  Ffftbinsr:   r'   r<   r%   g       @r   gU?gU3|\?r7   r5  )gHZ1?gKf?g"iF5?)r   kaiser_bessel_derivedr   rG   r   r   onesshaper=   r   pi	ones_liker   sqrtrH   )rJ   r:   r   Mw2actualdesireds          rK   rL   z"TestKaiserBesselDerived.test_basic  s   )#CB???2::b>>***)!#"=== > !5R9 9 92 7AF7q1aR1WXX;!#33FL I IJJJ .qruqyRHHH!L,,v&&15;(((5abeaiBOOOPRQRPRS

NN#C2:
VV	X 	X 	X 	5abeaiBOOOPRQRPRS

#S#S#S)+ # 5 5	6 	6 	6 	6 	6rM   c                 6   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%   ro  rp  zCKaiser-Bessel Derived windows are only defined for symmetric shapesF)rq  r9   r:   )r  r  r   rt  )rJ   r:   rz  msgs       rK   test_exceptionsz'TestKaiserBesselDerived.test_exceptions,  sS   ":S111 	A 	A)!a%bR@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A":S111 	L 	L)!a%beKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls#   AA	A%BBBN)rO   rP   rQ   rL   r  r   rM   rK   rm  rm  
  s7        6 6 6>L L L L LrM   rm  c                       e Zd Zd ZdS )TestNuttallc                    t          t          j        dd|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        d|          |                    g d	|j                             t          t          j        dd
|          |                    g d|j                             d S )Nr7   Fr8   )A"7?v;O<g?$2bUs?rF   r  r  r<   rB   )r  gx&yxXW?g??絑?r  g??g&yxXW?rC   )r  gEJ?g=`T?g>`T?gEJ?r  T)r  r  r  rF   r  r  r  )r   r   r   rG   rH   rI   s     rK   rL   zTestNuttall.test_basic=  sh   u<<<

 $/ $/ $/68j # B B	C 	C 	C 	u<<<

 $L $L $L +-*	 # 6 6	7 	7 	7 	b111

 $C $C $CJL* # V V	W 	W 	W 	4B777

 $E $E $ELNJ # X X	Y 	Y 	Y 	Y 	YrM   NrN   r   rM   rK   r  r  ;  s(        Y Y Y Y YrM   r  c                       e Zd Zd ZdS )
TestParzenc                    t          t          j        d|          |                    g d|j                             t          t          j        dd|          |                    g d|j                             t          t          j        dd	|          |                    g d
|j                             d S )Nr7   rC   )e/?rW  88?r  rW  r  r<   rB   Tr8   )%OZQ%w?2|&?݁?rF   r  r  r  F)r  r  r  rF   r  r  )r   r   r   rG   rH   rI   s     rK   rL   zTestParzen.test_basicS  s
   qR000

 $T $T $T*,* # 6 6	7 	7 	7 	qdr:::

 $M $M $M +-* # 6 6	7 	7 	7
 	q%B777

 $8 $8 $8?Az # K K	L 	L 	L 	L 	LrM   NrN   r   rM   rK   r  r  P  s(        L L L L LrM   r  c                       e Zd Zd ZdS )
TestTriangc                    t          t          j        dd|          |                    g d|j                             t          t          j        d|          |                    g d|j                             t          t          j        dd|	          |                    g d
|j                             d S )Nr7   TrC   )UUUUUU?r*   竪?r  r*   r  r<   rB   )rW  r*   rE  r%   rE  r*   rW  Fr8   )rW  r*   rE  r%   rE  r*   )r   r   r   rG   rH   rI   s     rK   rL   zTestTriang.test_basicf  s    q$2666

#A#A#A
TT	V 	V 	VqR000

#D#D#DBJ
WW	Y 	Y 	Yqe;;;

#?#?#?rz
RR	T 	T 	T 	T 	TrM   NrN   r   rM   rK   r  r  c  s(        T T T T TrM   r  )r   r*   T)        rF   rF   r  )r   ?T)r  ?r  r  )r   rF   T)r  rE  rE  r  )r   r*   F)r  rF   rF   rF   )r   r  F)r  rnOC?rF   r  )r   rF   F)r  r*   rF   r*   )rq   r  T)rF   rF   rF   rF   rF   )rq   rV   T)r  Yx?rF   r  r  )rq   rF   T)r  r*   rF   r*   r  )r7   r   r   )rB   r   r   )r7   rW  )r  r%   r%   r%   r%   r   )rB   rW  )r  r%   r%   r%   r%   r%   r   r7   )r   r]  rF   rF   gRͻ?r   )rB   )r   rE  rF   rF   rF   rE  r   r7   rE  )r   gxų	&?rF   rF   gvų	&?r   rB   rE  )r   g#}`yq?)!?rF   r  g#}`yq?r   r[  r^  )r7   r%   )rB   r%   c                       e Zd Zd Zd ZdS )	TestTukeyc                 .   t                                           D ]z\  }}|!t          t          t          j        g|R d|i (t          |          r
|dv rddd}nddd}t	          j        |d|i}t          ||                    |          fddi| {d S )	Nr:   )r  r  r  r  g+i)+`>rc   r?   r>   check_dtypeF)	
tukey_datar  r  r  r   r2   r   r   rG   )rJ   r:   r  r  	atol_rtolr   s         rK   rL   zTestTukey.test_basic  s    $$&& 	@ 	@DAqyj'-C!CCCCCCCB<< AA)J$J$J*.!=!=YY*/!@!@YmQ.2..RZZ]] @ @,1@5>@ @ @ @	@ 	@rM   c                     t          j        dd|          }t          j        d|          }t          ||           t          j        dd|          }t          j        d|          }t          ||           d S )Nr   r   rC   r%   )r   r2   r   r   r/   )rJ   r:   tuk0box0tuk1han1s         rK   test_extremeszTestTukey.test_extremes  s|    }S!+++~cb)))d###}S!+++|CB'''d#####rM   N)rO   rP   rQ   rL   r  r   rM   rK   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'   )r5  gffffff?r5  )rq   r,   rq   )r   r'   r   c                   P    e Zd Zd Zd Zd Zd Z ed          d             ZdS )	TestDPSSc                     t                                           D ]M\  }}t          j        |d|d\  }}t	          ||d         d|           t	          ||d         dd|           Nd S )	NTreturn_ratiosr:   r   gHz>)rA   err_msgr%   gh㈵>)r@   rA   r   )	dpss_datar  r   r&   r   )rJ   r:   r  r  r   ratioss         rK   rL   zTestDPSS.test_basic  s    OO%% 	K 	KDAq!,"EEEKCC1D!<<<<FAaDt$JJJJJ	K 	KrM   c                 n   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 @rC   r'   rF   )r   	subsamplerz   gQ?r  r   )ranger   r&   r   r   r   sumr   )rJ   r:   rz  r   expectedwin_subwin_2s          rK   
test_unityzTestDPSS.test_unity  s\   q" 	- 	-A,q!c'b111C1uHBJsB//3355x$'+ + + + l1a#gKBGGGG1uu
7B 7 7 ; ; = =x(/\3 3 3 3W48888LAG!;;;EFFqqHBJub115577$)- - - - -!	- 	-rM   c                    t          j        dddd|          d         }t          ||                    |                     t          j        dddd|          d         }t          ||                    |                     t          j        dddd|          d         }t          ||                    |                     d S )	N   r7   r   Tr  r%   rB   r  )r   r&   r   rx  )rJ   r:   lams      rK   r  zTestDPSS.test_extremes  s    l2q!4B???BR\\#..///l2q!4B???BR\\#..///l2q!4B???B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,   皙?r5  r   r%   )r  r  r   r&   	TypeErrorrI   s     rK   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   T)np_onlyc                 b   t          j        dd          }t          |dg           t          j        ddd          \  }}t          |dg           |dk    sJ t          j        dddd          \  }}t          |dg           t          |t          j                  sJ t          |dg           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%   rF   T)r  r   )Kmaxr  r,   r0  rC   r1  r2  r5  r   )	r   r&   r   
isinstancer   ndarrayr  r  r3  )rJ   r:   r   ratios       rK   test_degenerate_signle_samplesz'TestDPSS.test_degenerate_signle_samples  s    LBB4   <2T:::5B4   {{{{<2ATBBB5B4   %,,,,,t$$$j',3rBBBBj',3rBBBBiq#srBBBBj',3bAAAAj',2qR@@@@j',1aB????j',AqR@@@@@@rM   N)	rO   rP   rQ   rL   r+  r  r4  skip_xp_backendsr;  r   rM   rK   r  r    s        K K K- - -*0 0 0: : : d###A A $#A A ArM   r  c                       e Zd Zd Zd ZdS )TestLanczosc                    t          t          j        dd|          |                    g d|j                  d           t          t          j        d|          |                    g d	|j                  d           t          t          j        d
d|          |                    g d|j                  d           d S )Nr7   Fr8   r  qϾv?;Fv?rF   rB  rA  r<   &.>r_   rC   r  uH%?;9?rF  rE  r  rB   T)r  rA  rB  rF   rB  rA  r  )r   r   r3   rG   rH   rI   s     rK   rL   zTestLanczos.test_basic   s!    	u<<<

 $1 $1 $18:
 # D D "		# 	# 	# 	#
 	b111

 $5 $5 $5<>J # H H "		# 	# 	# 	#
 	t;;;

 $5 $5 $5<>J # H H "		# 	# 	# 	# 	# 	#rM   c                     dD ]R}t          j        |d|          j        d         |k    sJ t          j        |d|          j        d         |k    sJ Sd S )N)r   r      Fr8   r   T)r   r3   rv  )rJ   r:   ns      rK   test_array_sizezTestLanczos.test_array_size  sv     	E 	EA?1%B777=a@AEEEE?1$2666<Q?1DDDDD	E 	ErM   N)rO   rP   rQ   rL   rJ  r   rM   rK   r>  r>    s7        # # #2E E E E ErM   r>  c                      e Zd ZdZd Z eej                  d             Z eej	                  d             Z
 eej	                  d             Z eej                  d             Z eej                  d             Zej                            dd	d
 ej        d          g           eej                  d                         Zd Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z d Z!dS )TestGetWindowz*Unit test for `scipy.signal.get_windows`. c                     t          j                    D ]2\  }}|d         j        }d| d}||v s
J |            |d         dv sJ 3dS )a|  Verify that the `_windows._WIN_FUNC_DATA` dict is consistent.

          The keys of _WIN_FUNC_DATA are made of tuples of strings of allowed window
          names. Its values are 2-tuples made up of the window function and a
          entry characterizing the existence of window parameters as ``True``,
          ``False`` or ``'OPTIONAL'``.


          It is verified that the correct window name (i.e., corresponding to the
          function in the value tuple) is included in the key tuple. It is also checked
          that the second entry in the value tuple is either ``True``, ``False`` or
          ``'OPTIONAL'``.
          r   zFunction name in z* does not contain name of actual function!r%   )TFOPTIONALN)r	   r  rO   )rJ   nn_v_	func_namer  s        rK   test_WIN_FUNC_DATA_integrityz*TestGetWindow.test_WIN_FUNC_DATA_integrity#  sw     &+-- 	6 	6GC1IUcUUUC###S###a5555555		6 	6rM   c                     t          j        dd|          }t          ||                    |                     t          j        dd|          }t          ||                    |                     d S )Nr      rC   )r      )r   r   r   rx  rJ   r:   r   s      rK   test_boxcarzTestGetWindow.test_boxcar7  sl    x3332<<??+++ {B26662<<??+++++rM   c                 $   t          j                    5  t          j        ddt                     t	          j        ddd|          }d d d            n# 1 swxY w Y   t          ||                    t          |j	                  d	           d S )
Nr   r   )r-   r   r   Frr  r<   r   r   )
r   r   r   r   r   r   r   rG   r   rH   rV  s      rK   test_cheb_oddzTestGetWindow.test_cheb_odd@  s    $&& 	O 	O#7F F F"#3R2NNNA	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	"rzz-rzz::A	
 	
 	
 	
 	
 	
   4AAAc                    t          j                    5  t          j        ddt                     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   r   Frr  r   r   )	r   r   r   r   r   r   r   rG   r   rV  s      rK   test_cheb_evenzTestGetWindow.test_cheb_evenJ  s    $&& 	N 	N#7F F F"?B"MMMA	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	"!RZZ%?%?KKKKKKrZ  c                     t          j        ddd|          }t          j        dd|          }t          ||           d S )N)r&   r5  @   Frr  r5  rC   )r   r   r&   r   rJ   r:   win1win2s       rK   	test_dpsszTestGetWindow.test_dpssR  sG    !+r5RHHH|Bb)))d#####rM   c                    t          j        dd|          }t          j        ddd|          }t          |          r1t	          |||                    |j                  j                   d S t          ||           d S )Ng@r^  rC   Fr  )	r   r   r#   r   r   finfor=   epsr   r_  s       rK   test_kaiser_floatzTestGetWindow.test_kaiser_floatX  s    !#rb111~b#u444":: 	( D$RXXdj-A-A-EFFFFFFD$'''''rM   Nxr0  g      @r5  c                     t          j        t          d          5  t          j        d||           d d d            d S # 1 swxY w Y   d S )Nz^Parameter Nx=.*r  r/   rC   )pytestr   r  r   r   )rJ   rg  r:   s      rK   test_invalid_parameter_NXz'TestGetWindow.test_invalid_parameter_NXc  s     ]:-?@@@ 	2 	2vrb1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AAAc                    t          j        t          d          5  t          j        ddd|           ddd           n# 1 swxY w Y   t          j        t          d          5  t          j        dgd|	           ddd           n# 1 swxY w Y   t          j        t          d
          5  t          j        dd|	           ddd           n# 1 swxY w Y   t          j        t          d          5  t          j        dd|	           ddd           n# 1 swxY w Y   t          j        t          d          5  t          j        dd|	           ddd           n# 1 swxY w Y   t          j        t          d          5  t          j        dd|	           ddd           n# 1 swxY w Y   t          j        t          d          5  t          j        dd|	           ddd           n# 1 swxY w Y   t          j        t          d          5  |pt
          }t          j        dddgfd|	           ddd           dS # 1 swxY w Y   dS )z?Raise all exceptions (except those concerning parameter `Nx`). z^Parameter fftbins=.*r  r/   rq   r%   rr  Nz^Parameter window=.*rC   z%^First tuple entry of parameter win.*)*   z ^Invalid window name 'INVALID'.*INVALIDz#^'hann' does not allow parameters.*)r/   r%   z ^'kaiser' must have parameters.*r#   z^Window dpss must have one.*)r&   r%   r'   z#^'general_cosine' does not accept.*general cosiner'   )ri  r   r  r   r   r   )rJ   r:   xp_s      rK   test_invalid_inputsz!TestGetWindow.test_invalid_inputsj  sT   ]:-DEEE 	< 	<vq!;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<]:-CDDD 	4 	4y!3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]:-TUUU 	0 	0uaB////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]:-OPPP 	4 	4y!3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]:-RSSS 	6 	6{A"5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6]:-OPPP 	3 	3xr2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]:-KLLL 	9 	9~qR8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]:-RSSS 	F 	F(C 01a&91EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   AAA'BBB2CCC<D  D$'D$E**E.1E.F44F8;F8G>>HH$%IIIc                 *   t          j        dd|          }t          t          ddd|          |           t          t          dd|          |           t          t          ddd|          |           t          j        dd|          }t          t          dd|          |           t          t          ddd|          |           t          t          d	d|          |           t          t          d	dd|          |           d
S )zIEnsure that suffixes `_periodic` and `_symmetric` work for window names. rq   Tr8   r    Frr  bartlett_symmetricrC   bartlett_periodicN)r   r    r   r   )rJ   r:   w_symw_pers       rK   test_symmetric_periodicz%TestGetWindow.test_symmetric_periodic~  s)     444
:q%BGGGOOO
#7rBBBEJJJ
#7DRPPPRWXXX "555
:qR888%@@@
:q$2FFFNNN
#6bAAA5III
#65RPPP	 	 	 	 	rM   c                 ,   d}|                     d          }t          j        d|dz  |          }t          |          rdnd}t	          t
          |          5  t          ||j        d         |z  |	           d d d            d S # 1 swxY w Y   d S )
N   )r#   g       @r'   rC   z^window mustz^window.shape=r  r   )window)aranger   r   r   r  r  r   rv  )rJ   r:   osfactorsigr   mesgs         rK   test_array_as_windowz"TestGetWindow.test_array_as_window  s     iinn (a-BGGG!(B~~2B:T222 	? 	?S#)A,1#>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   !B		BBc           	         t          t          d|                    g d          fd          |                    g d|j                             t          t          d|                    g d          fdd          |                    g d|j                             t	          j        t                    5  t          dg dfd|	           d d d            d S # 1 swxY w Y   d S )
Nr>  r;  r   r=  r<   F)rs  )rU   皙?r  rU   rC   )r   r   rG   rH   ri  r   r  rI   s     rK   test_general_cosinez!TestGetWindow.test_general_cosine  s_   
$4bjj6Q6Q#RTUVV

#5#5#5RZ
HH	J 	J 	J
$4bjj6Q6Q#RTU+02 2 2

#9#9#9
LL	N 	N 	N ]:&& 	F 	F(///:A"EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   >C""C&)C&c                     t          t          dd|          |                    g d|j                             t          t          ddd|          |                    g d|j                             d S )	N)rH  rC  rq   rC   )rU   жn?男*?r  r  r<   Frr  rD  r   r   rG   rH   rI   s     rK   test_general_hammingz"TestGetWindow.test_general_hamming  s    
#;Q2FFF

#T#T#T)+ # 5 5	6 	6 	6 	
#;QRTUUU

#<#<#<BJ
OO	Q 	Q 	Q 	Q 	QrM   c                 `   t          t          dd|          |                    g d|j                  d           t          t          ddd|	          |                    g d
|j                  d           t          t          dd|          t          dd|                     d S )Nr3   r7   rC   r@  r<   rC  r_   Frr  rD  sincr  rI   s     rK   test_lanczoszTestGetWindow.test_lanczos  s    
9aB777

 $1 $1 $18:
 # D DJN	P 	P 	P 	P 	
9a2FFF

 $5 $5 $5<>J # H HNR	T 	T 	T 	T 	
9aB777"61444	6 	6 	6 	6 	6rM   c                     t          dd          }t          |t          j                  sJ t          dd|          }t	          |          st          |t          j                  rJ d S d S )Nr3   r7   rC   )r   r8  r   r9  r   )rJ   r:   r   s      rK   test_xp_defaultzTestGetWindow.test_xp_default  ss    A&&#rz*****A"---|| 	3!#rz22222	3 	322rM   N)"rO   rP   rQ   __doc__rR  r   r   r   rW  r-   rY  r\  r&   rb  r#   rf  ri  markparametrizer   rH   r/   rj  rp  r    rv  r~  r>  r  rH  r  r3   r  r  r   rM   rK   rL  rL    sG       446 6 6( w~&&, , '&, w''
 
 ('
 w''L L ('L w|$$$ $ %$$
 w~&&( ( '&( [TBZRZ]]#;<<w|$$2 2 %$ =<2
F F F( w'((  )(  w~&&? ? '&? w-..F F /.F w.//Q Q 0/Q w''6 6 ('63 3 3 3 3rM   rL  z
dask.arrayz(https://github.com/dask/dask/issues/2620reasonzwindow,window_name,paramsc                 \    g | ])\  }}t          t          t          |          ||          *S r   )r   getattrr   ).0window_nameparamss      rK   
<listcomp>r    sB       K 	WWk::KPP  rM   c           	      `	   t          t          |          } t          |          r|dv rt          j        d|d           |dv rSt          |          rt          j        d           t          |          r t          dk    rt          j        d           t          j	                    5  t          j
        d	d
t                      | dg|R d|d} | dg|R d|d}t          |d d         |            | dg|R d|d} | dg|R d|d}t          |d d         |            | dg|R d|dj        d         dk    sJ  | dg|R d|dj        d         dk    sJ  | dg|R d|dj        d         dk    sJ  | dg|R d|dj        d         dk    sJ t          t          | dg|R d|i t          t          | dg|R d|i t!           | dg|R d|d|                    g |j                             t!           | dg|R d|d|                    g |j                             t!           | dg|R d|d|                    dg|j                             t!           | dg|R d|d|                    dg|j                              | dg|R d|dj        |j        k    sJ  | dg|R d|dj        |j        k    sJ  | dg|R d|dj        |j        k    sJ  | dg|R d|dj        |j        k    sJ  | dg|R d|dj        |j        k    sJ  | dg|R d|dj        |j        k    sJ |                     | dg|R d|ddk               sJ |                     | dg|R d|ddk               sJ |                     | dg|R d|ddk               sJ |                     | dg|R d|ddk               sJ t+           | dg|R d|d          }|                    |          }t          ||                    |          d           t+           | dg|R d|d          }|                    |          }t          ||                    |          d           d d d            d S # 1 swxY w Y   d S )N)r1   r-   zwindow_name = : item assignmentr  )r&   z'dpss window is not implemented for cupycpuz)needs eight_tridiagonal which is CPU onlyr   r   r  Tr8   rB   Fr0  	   r7   r   g      @r:   ir<   r%   rF   r   g)\(?r^   r_   rH  )r  r   r   ri  skipr   r   r   r   r   r   r   r   rv  r  r  r   rG   rH   r=   allr   imag
zeros_like)ry  r  r  r:   w1r{  ress          rK   test_windowfunc_basicsr    s    Wk**Fbzz Ak%:::?k???@@@@h2;; 	JKHIIIIB<< 	LLE11KJKKKK		 	"	" 5= 5=3[	B 	B 	B VA000DR000VA111Eb1113B3$$$VA000DR000VA111Eb1113B3$$$ va2&22dr2228;q@@@@va3&33e3339!<AAAAva2&22dr2228;q@@@@va3&33e3339!<AAAA 	j&#>>>>2>>>j&"=v==="=== 	q;6;;t;;;

2RZ
88	: 	: 	:q<6<<u<<<

2RZ
88	: 	: 	:q;6;;t;;;

B4rz
::	< 	< 	<q<6<<u<<<

B4rz
::	< 	< 	< va2&22dr2228BJFFFFva3&33e3339RZGGGGva2&22dr2228BJFFFFva3&33e3339RZGGGGva2&22dr2228BJFFFFva3&33e3339RZGGGG vvffR:&::dr:::TABBBBBvvffR;&;;e;;;dBCCCCCvvffQ999Tb999D@AAAAAvvffQ:::Ur:::TABBBBB &&7f77%B77788ggcllR]]3//e<<<<&&7f77%B77788ggcllR]]3//e<<<<k5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5= 5=s   ,O*R##R'*R'c                 L    dD ] }t          t          t          |d|            !d S )N)r#   ksrrt  kbdr(   gaussgsszgeneral gaussianr+   zgeneral gaussgeneral_gaussggsdssr&   rn  r>  r-   chebzgeneral hammingrH  rB   rC   )r  r  r   )r:   winstrs     rK   test_needs_paramsr    s?     @ @ 	j*faB?????@ @rM   )r!   r    r   r   r   r   r.   r   r"   r   r   r1   r0   poissonr2   tuktriangler3   r  zwindow,winstrc                 P    g | ]#}t          t          |         d          |          $S )r   )r   r
   )r  r  s     rK   r  r  0  s<        	Z/2F;;  rM   c                     t          |           r|dv rt          j        | d           t          |d|           }|j        d         dk    sJ d S )N)r1   r  r  rB   rC   r   )r   ri  r  r   rv  )r:   ry  r  r   s       rK   test_not_needs_paramsr  .  si     bzz 9f
**f7778888
VQ2
&
&
&C9Q<1rM   c           	         t           j        fD ]} |d|           }t          |          j        }|                     |                     | ||          z
                      }t          ||                     d          dd            |d|           }|                     |                     | ||          z
                      }t          ||                     d          dd           d S )Ni   rC   r  F)r  check_0di  )r   r3   r   flipr   r   r   rG   )r:   r   r   r  errors        rK   test_symmetricr  =  s       
S 
SCq!!&rvva$$q''k**++rzz#EERRRR Crvva$$q''k**++rzz#EERRRRR
S 
SrM   )\r   r   numpyr   r   ri  r   r  	scipy.fftr   scipy.signalr   r   r   scipy.signal.windows._windowsr	   r
   scipy._lib._array_apir   r   r   r   r   r   r   r   r   r   r   r   r  r<  xfail_xp_backendslazy_xp_moduleswindow_funcsr!   r5   r    rS   r   rZ   r   rg   r1   rn   r   r   r   r   r   r   r-   r   r  r0   r!  r   r#  r(   r.  r>  r9  rH  rA  r"   rJ  r/   rU  r#   r`  rt  rm  r  r   r  r   r  r  r2   r  r!  r&   r  r3   r>  rL  r  r  r  _winstrr  r  r   rM   rK   <module>r     s                * * * * * *       6 6 6 6 6 6 6 6 6 6 D D D D D D D D                            ;/ K1 )  4 7#$$0 0 0 0 0 0 0 %$0  7#$$T T T T T T T %$T 7#$$7 7 7 7 7 7 7 %$7, 7)**K K K K K K K +*K( 7>""J: J: J: J: J: J: J: #"J:Z 7>""7 7 7 7 7 7 7 #"7" 7>""L L L L L L L #"L  0 0 0( 7?##?O ?O ?O ?O ?O ?O ?O $#?OH 	 ( ( ( 	) 	)  % !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  : 7&''< < ('< 7?##8 8 8 8 8 8 8 $#8, 7#$$L L L L L L L %$L0 7)**	J 	J 	J 	J 	J 	J 	J +*	J 7*++
Y 
Y 
Y 
Y 
Y 
Y 
Y ,+
Y 7?##6 6 6 6 6 6 6 $#6( 7<  0 0 0 0 0 0 0 ! 0. 7>""L L L L L L L #"L: 7011-L -L -L -L -L -L -L 21-L`Y Y Y Y Y Y Y Y* 7>""L L L L L L L #"L$ 7>""	T 	T 	T 	T 	T 	T 	T #"	T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  
: 7=!!$ $ $ $ $ $ $ "!$@ 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 	 7<  DA DA DA DA DA DA DA ! DAN 7?##E E E E E E E $#EB 7%&&_3 _3 _3 _3 _3 _3 _3 '&_3D ,'QRRR #/   ?= ?=  SR?=D :@ @ @  ,      :    7?##S S $#S S SrM   