
    bi                     
   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jF                         G d	 d
             Z$ eejJ                         G d d             Z& eejN                         G d d             Z( eejR                         G d d             Z* eejV                         G d d             Z, eejZ                         G d d             Z. eej^                         G d d             Z0g dZ1g dZ2 eejf                         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jl                        d"        Z7 eejp                         G d# d$             Z9 eejt                         G d% d&             Z; eejx                         G d' d(             Z= eej|                         G d) d*             Z? eej                         G d+ d,             ZA eej                         G d- d.             ZC eej                         G d/ d0             ZE eej                         G d1 d2             ZG G d3 d4      ZH eej                         G d5 d6             ZJ eej                         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j                         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j                         G dt du             ZR eej                         G dv dw             ZT eej                         G dx dy             ZU edzd{|      ej<                  j                  d}e"D  cg c]  \  } } e eWe|       | |       c}}       d~               ZX ee      d        ZYg dZZej<                  j                  deZD cg c]  } ee|   d    |       c}       ee      d               Z[ eej                        d        Z\yc c}} w c c}w )    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y)TestBartHannc                    t        t        j                  dd|      |j                  g d|j                        dd       t        t        j                  d|	      |j                  g d
|j                        dd       t        t        j                  dd|	      |j                  g d|j                        dd       y )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     Z/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/signal/tests/test_windows.py
test_basiczTestBartHann.test_basic5   s    ((<

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

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

#C2::
V"	0    N__name__
__module____qualname__rL   r   rM   rK   r5   r5   2   s    0rM   r5   c                       e Zd Zd Zy)TestBartlettc                 z   t        t        j                  d|      |j                  g d|j                               t        t        j                  d|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               y )	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

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

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

#?rzz
R	TrM   NrN   r   rM   rK   rS   rS   C   s    TrM   rS   c                       e Zd Zd Zy)TestBlackmanc                 
   t        t        j                  dd|      |j                  g d|j                        d       t        t        j                  dd|      |j                  g d	|j                        d
       t        t        j                  d|      |j                  g d|j                        d       t        t        j                  dd|      |j                  g d|j                        d       y )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   s    (("=

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

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

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

#F jj # *05	7rM   NrN   r   rM   rK   rZ   rZ   O   s    7rM   rZ   c                       e Zd Zd Zy)TestBlackmanHarrisc                    t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  d|      |j                  g d	|j                               t        t        j                  dd
|      |j                  g d|j                               y )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   s    ..q%B?

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

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

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

 $7>@jj # J	KrM   NrN   r   rM   rK   rg   rg   f   s    KrM   rg   c                       e Zd Zd Zd Zd Zy)
TestTaylorc                    t        t        j                  ddd|      |j                  dg|j                               t        t        j                  ddd|      |j                  g d|j                               t        t        j                  d	dd|      |j                  g d
|j                               y)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

C5


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

 	NN1a+JJ  ZZ  !	
rM   c           	         t        t        j                  dddd|      |j                  g d|j                               t        t        j                  dddd|      |j                  g d	|j                               y
)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   sx    
 	NN1a%B7JJ ZZ  !	
 	NN1a%B7JJ ZZ  !	
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kD        }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 y)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   s     NN5qbu%BO$Q'/BHHRVVD266$<$7899YYrwwt}q01
vvd:zk23299T%8899EAEIBIId&99::UBUJ||D(A666||FFC888||GVS999rM   N)rO   rP   rQ   rx   r   r   r   rM   rK   rn   rn   {   s    
(
$":rM   rn   c                       e Zd Zd Zy)
TestBohmanc                 |   t        t        j                  d|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd	|      |j                  g d
|j                               y )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

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

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

 $L*,** # 6	7rM   NrN   r   rM   rK   r   r      s    7rM   r   c                       e Zd Zd Zy)
TestBoxcarc                 z   t        t        j                  d|      |j                  g d|j                               t        t        j                  d|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               y )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

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

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

#7rzz
J	LrM   NrN   r   rM   rK   r   r      s    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y)TestChebWinc           	         t        j                         5  t        j                  ddt               t	        t        j                  dd|      |j                  g d|j                        d	       t	        t        j                  d
d|      |j                  g d|j                               t	        t        j                  dd|      |j                  g d|j                               t	        t        j                  d
d|      |j                  g d|j                               t	        t        j                  ddd|      |j                  g d|j                               d d d        y # 1 sw Y   y xY w)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  s]   $$& 	P##7FGOOAsr:JJ (P /1jj ' : "& GOOAsr:JJ (P /1jj ' :;
 GOOArb9JJ (U.0jj ' :; GOOArb9JJ (AHJ

 ' TU GOOAr5R@JJ (<CE:: ' OP/	P 	P 	Ps   EE88Fc                     t        j                         5  t        j                  ddt               t	        j
                  dd|      }d d d        t        |j                  t              d       y # 1 sw Y   +xY w)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*  sc    $$& 	:##7Frcb9H	: 	"(BJJ},EqQ		: 	:   4A33A<c                     t        j                         5  t        j                  ddt               t	        j
                  dd|      }d d d        t        |j                  t              d       y # 1 sw Y   +xY w)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  sd    $$& 	:##7Frb9I	: 	")RZZ-GQRS		: 	:r   c                    |j                  g d|j                        }t        j                         5  t        j                  ddt
               t        j                  dd|      }d d d        t        |d	       y # 1 sw Y   xY w)
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<>JJ  *  H $$& 	8##7FqRB7H	8 	"(,@!L		8 	8   4A??Bc                    |j                  g d|j                        }t        j                         5  t        j                  ddt
               t        j                  dd|      }d d d        t        |d	       y # 1 sw Y   xY w)
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     "

 ,@GIzz !+ !S $$& 	:##7Fcb9I	: 	")-BAN		: 	:r  N)rO   rP   rQ   rL   r   r   r  r  r   rM   rK   r   r   
  s     P:RTM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         j                         D ]\  \  }}|#t        t        t        j
                  g|d| i +t	        j
                  |d| i}t        || j                  |      d       ^ y )Nr:   r^   r@   )exponential_dataitemsassert_raises
ValueErrorr   r0   r   rG   )r:   kvwins       rK   test_exponentialr!  j  sf     &&( <19*g&9&9EAE"E%%q0R0CCAU;<rM   c                       e Zd Zd Zy)TestFlatTopc                    t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  d|      |j                  g d	|j                               t        t        j                  dd
|      |j                  g d|j                               y )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  s    u<

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

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

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

 $M+-:: # 7	8rM   NrN   r   rM   rK   r#  r#  t  s    8rM   r#  c                       e Zd Zd Zy)TestGaussianc                    t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd	|      |j                  g d
|j                               t        t        j                  dd	d|      |j                  g d|j                               y )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  s    ((CB7

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

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

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

 $8?Azz # K	LrM   NrN   r   rM   rK   r.  r.    s    LrM   r.  c                       e Zd Zd Zy)TestGeneralCosinec                 H   |j                  g d      }t        t        j                  d|      |j                  g d|j                               |j                  g d      }t        t        j                  d|d      |j                  g d|j                               y )	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

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

#5RZZ
H	JrM   NrN   r   rM   rK   r9  r9    s    JrM   r9  c                       e Zd Zd Zy)TestGeneralHammingc                    t        t        j                  dd|      |j                  g d|j                               t        t        j                  ddd|      |j                  g d	|j                               t        t        j                  d
dd|      |j                  g d|j                               y )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>

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

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

 $ELNJJ # X	YrM   NrN   r   rM   rK   rA  rA    s    YrM   rA  c                       e Zd Zd Zy)TestHammingc                    t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  d|      |j                  g d	|j                               t        t        j                  dd
|      |j                  g d|j                               y )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  s    5R8

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

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

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

#L)+ # 5	6rM   NrN   r   rM   rK   rJ  rJ    s    6rM   rJ  c                       e Zd Zd Zy)TestHannc                    t        t        j                  dd|      |j                  g d|j                        dd       t        t        j                  dd|      |j                  g d	|j                        dd       t        t        j                  dd
|      |j                  g d|j                        dd       t        t        j                  d|      |j                  g d|j                        dd       y )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  s    QEb9

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

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

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

#F jj # *"	0rM   NrN   r   rM   rK   rU  rU    s    0rM   rU  c                       e Zd Zd Zy)
TestKaiserc                 |   t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd|      |j                  g d	|j                               t        t        j                  dd|      |j                  g d
|j                               t        t        j                  ddd|      |j                  g d|j                               y )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

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

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

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

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

 $8?Azz # K	LrM   NrN   r   rM   rK   r`  r`    s    LrM   r`  c                       e Zd Zd Zd Zy)TestKaiserBesselDerivedc                    t        j                  dd|      }t        ||j                  g              d}t        j                  |d|      }t        j                  d|d|      }t        ||       |d |dz   dz  || dz  d  dz  z   }t        ||j                  |j                  |j                  	             t        j                  dt        j                  dz  |      d d
 }|j                  |      t        j                  d      z  dz  }t        ||       t        t        j                  dt        j                  dz  |      d d |j                  ddg|j                  	             t        t        j                  dt        j                  dz  |      d d |j                  g d|j                  	             y )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2 7AFq1aR1WX;!#33FLL IJ ..qruuqyRH!L,,v&15;(55abeeaiBOPRQRS

NN#C2::
V	X 	55abeeaiBOPRQRS

#S)+ # 5	6rM   c                    d}d}t        t        |      5  t        j                  |dz   d|       d d d        d}t        t        |      5  t        j                  |dz   dd|	       d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)
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,  s    ":S1 	A))!a%bR@	A":S1 	L))!a%beK	L 	L	A 	A	L 	Ls   A3A?3A<?BN)rO   rP   rQ   rL   r  r   rM   rK   rm  rm  
  s    6>LrM   rm  c                       e Zd Zd Zy)TestNuttallc                    t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  d|      |j                  g d	|j                               t        t        j                  dd
|      |j                  g d|j                               y )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=  s    u<

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

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

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

 $ELNJJ # X	YrM   NrN   r   rM   rK   r  r  ;  s    YrM   r  c                       e Zd Zd Zy)
TestParzenc                 |   t        t        j                  d|      |j                  g d|j                               t        t        j                  dd|      |j                  g d|j                               t        t        j                  dd	|      |j                  g d
|j                               y )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

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

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

 $8?Azz # K	LrM   NrN   r   rM   rK   r  r  P  s    LrM   r  c                       e Zd Zd Zy)
TestTriangc                 |   t        t        j                  dd|      |j                  g d|j                               t        t        j                  d|      |j                  g d|j                               t        t        j                  dd|	      |j                  g d
|j                               y )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

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

#DBJJ
W	Yqe;

#?rzz
R	TrM   NrN   r   rM   rK   r  r  c  s    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y)	TestTukeyc                     t         j                         D ]w  \  }}|#t        t        t        j
                  g|d|i +t        |      r
|dv rddd}nddd}t	        j
                  |d|i}t        ||j                  |      fddi| y y )	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B<A)J$J*.!=Y*/!@YmmQ.2.RZZ] @,1@5>@	@rM   c                     t        j                  dd|      }t        j                  d|      }t        ||       t        j                  dd|      }t        j                  d|      }t        ||       y )Nr   r   rC   r%   )r   r2   r   r   r/   )rJ   r:   tuk0box0tuk1han1s         rK   test_extremeszTestTukey.test_extremes  sZ    }}S!+~~cb)d#}}S!+||CB'd#rM   N)rO   rP   rQ   rL   r  r   rM   rK   r  r    s    @$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                   B    e Zd Zd Zd Zd Zd Z ed      d        Zy)	TestDPSSc                     t         j                         D ]C  \  }}t        j                  |d|d\  }}t	        ||d   d|       t	        ||d   dd|       E y )	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  sZ    OO% 	KDAq!,,"EKCC1D!<FAaDt$J	KrM   c                 8   t        dd      D ]
  }t        j                  ||dz  |      }|dz  }t        t	        j
                  |d      j                         ||        t        j                  ||dz  d|	      }|dkD  r?t        t	        j
                  |d      j                         ||        t        ||d
       t        j                  ||dz  d|	      }|dk(  rdnd}t        t	        j
                  |d      j                         ||         y )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1C1uHBJJsB/335x$'5+ ll1a#gKBGG1u

7B 7 ; ; =x(/y3W48LLAG!;EFqHBJJub1557$)7-!	-rM   c                 T   t        j                  dddd|      d   }t        ||j                  |             t        j                  dddd|      d   }t        ||j                  |             t        j                  dddd|      d   }t        ||j                  |             y )	N   r7   r   Tr  r%   rB   r  )r   r&   r   rx  )rJ   r:   lams      rK   r  zTestDPSS.test_extremes  s    ll2q!4B?BR\\#./ll2q!4B?BR\\#./ll2q!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       y )	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j',,1a8j',,Aq9rM   T)np_onlyc                 6   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|	       y )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,    LLBB4 <<2T:5B4 {{<<2ATB5B4 %,,,t$j',,3rBj',,3rBiq#srBj',,3bAj',,2qR@j',,1aB?j',,AqR@rM   N)	rO   rP   rQ   rL   r+  r  r4  skip_xp_backendsr;  r   rM   rK   r  r    s2    K-*0: d#A $ArM   r  c                       e Zd Zd Zd Zy)TestLanczosc                    t        t        j                  dd|      |j                  g d|j                        d       t        t        j                  d|      |j                  g d	|j                        d       t        t        j                  d
d|      |j                  g d|j                        d       y )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<

 $18:

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

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

 $5<>JJ # H "		#rM   c                     dD ]V  }t        j                  |d|      j                  d   |k(  sJ t        j                  |d|      j                  d   |k(  rVJ  y )N)r   r      Fr8   r   T)r   r3   rv  )rJ   r:   ns      rK   test_array_sizezTestLanczos.test_array_size  s_     	EA??1%B7==a@AEEE??1$26<<Q?1DDD	ErM   N)rO   rP   rQ   rL   rJ  r   rM   rK   r>  r>    s    #2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"                  j%                  dd	d
 ej(                  d      g       eej*                        d               Zd Z eej0                        d        Z eej                        d        Z eej6                        d        Z eej:                        d        Z eej>                        d        Z d Z!y)TestGetWindowz*Unit test for `scipy.signal.get_windows`. c                     t        j                         D ].  \  }}|d   j                  }d| d}||v sJ |       |d   dv r.J  y)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#  sb     &++- 	6GC1I%cU*TUC#(S(#a55555		6rM   c                     t        j                  dd|      }t        ||j                  |             t        j                  dd|      }t        ||j                  |             y )Nr      rC   )r      )r   r   r   rx  rJ   r:   r   s      rK   test_boxcarzTestGetWindow.test_boxcar7  sP    x32<<?+ {B262<<?+rM   c                    t        j                         5  t        j                  ddt               t	        j
                  ddd|      }d d d        t        |j                  t        |j                        d	       y # 1 sw Y   7xY w)
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@  sw    $$& 	O##7F""#3R2NA	O 	"rzz-rzzz:A	
		O 	Os   5B  B	c                     t        j                         5  t        j                  ddt               t	        j
                  ddd|      }d d d        t        |j                  t              d       y # 1 sw Y   +xY w)	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  sk    $$& 	N##7F""?B"MA	N 	"!RZZ%?K		N 	Ns   5A44A=c                 ~    t        j                  ddd|      }t        j                  dd|      }t        ||       y )N)r&   r5  @   Frr  r5  rC   )r   r   r&   r   rJ   r:   win1win2s       rK   	test_dpsszTestGetWindow.test_dpssR  s4    !!+r5RH||Bb)d#rM   c                     t        j                  dd|      }t        j                  ddd|      }t        |      r2t	        |||j                  |j                        j                         y t        ||       y )Ng@r]  rC   Fr  )	r   r   r#   r   r   finfor=   epsr   r^  s       rK   test_kaiser_floatzTestGetWindow.test_kaiser_floatX  s\    !!#rb1~~b#u4": D$RXXdjj-A-E-EFD$'rM   Nxr0  g      @r5  c                     t        j                  t        d      5  t        j                  d||       d d d        y # 1 sw Y   y xY w)Nz^Parameter Nx=.*r  r/   rC   )pytestr   r  r   r   )rJ   rf  r:   s      rK   test_invalid_parameter_NXz'TestGetWindow.test_invalid_parameter_NXc  s:     ]]:-?@ 	2vrb1	2 	2 	2s	   >Ac                    t        j                  t        d      5  t        j                  ddd|       ddd       t        j                  t        d      5  t        j                  dgd|	       ddd       t        j                  t        d
      5  t        j                  dd|	       ddd       t        j                  t        d      5  t        j                  dd|	       ddd       t        j                  t        d      5  t        j                  dd|	       ddd       t        j                  t        d      5  t        j                  dd|	       ddd       t        j                  t        d      5  t        j                  dd|	       ddd       t        j                  t        d      5  |xs t
        }t        j                  dddgfd|	       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)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'   )rh  r   r  r   r   r   )rJ   r:   xp_s      rK   test_invalid_inputsz!TestGetWindow.test_invalid_inputsj  s   ]]:-DE 	<vq!;	<]]:-CD 	4y!3	4]]:-TU 	0uaB/	0]]:-OP 	4y!3	4]]:-RS 	6{A"5	6]]:-OP 	3xr2	3]]:-KL 	9~qR8	9]]:-RS 	F(C 01a&91E	F 	F	< 	<	4 	4	0 	0	4 	4	6 	6	3 	3	9 	9	F 	Fs_   G2G?HHH&
H3H?'I2G<?H	HH#&H03H<?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|      |       y
)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
:q%BGO
#7rBEJ
#7DRPRWX  "5
:qR8%@
:q$2FN
#6bA5I
#65RP	rM   c                    d}|j                  d      }t        j                  d|dz  |      }t        |      rdnd}t	        t
        |      5  t        ||j                  d   |z  |	       d d d        y # 1 sw Y   y xY w)
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  st     iin  (a-BG!(~2B:T2 	?S#))A,1#>	? 	? 	?s   A77B c           	         t        t        d|j                  g d      fd      |j                  g d|j                               t        t        d|j                  g d      fdd      |j                  g d|j                               t	        j
                  t              5  t        dg dfd|	       d d d        y # 1 sw Y   y xY w)
Nr>  r;  r   r=  r<   F)rs  )rU   皙?r  rU   rC   )r   r   rG   rH   rh  r   r  rI   s     rK   test_general_cosinez!TestGetWindow.test_general_cosine  s    
$4bjj6Q#RTUV

#5RZZ
H	J
$4bjj6Q#RTU+02

#9
L	N ]]:& 	F(/:A"E	F 	F 	Fs   (CCc                     t        t        dd|      |j                  g d|j                               t        t        ddd|      |j                  g d|j                               y )	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

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

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

 $18:

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

 $5<>JJ # HNR	T 	
9aB7"614	6rM   c                     t        dd      }t        |t        j                        sJ t        dd|      }t	        |      st        |t        j                        rJ y y )Nr3   r7   rC   )r   r8  r   r9  r   )rJ   r:   r   s      rK   test_xp_defaultzTestGetWindow.test_xp_default  sS    A&#rzz***A"-|!#rzz2222 rM   N)"rO   rP   rQ   __doc__rR  r   r   r   rW  r-   rY  r[  r&   ra  r#   re  rh  markparametrizer   rH   r/   ri  ro  r    ru  r}  r>  r  rH  r  r3   r  r  r   rM   rK   rL  rL    s   46( w~~&, ', w'
 (
 w'L (L w||$$ %$
 w~~&( '( [[TBZRZZ]#;<w||$2 % =2
F( w''( )  w~~&? '? w--.F /F w../Q 0Q w'6 (63rM   rL  z
dask.arrayz(https://github.com/dask/dask/issues/2620reasonzwindow,window_name,paramsc           	       	   t        t        |      } t        |      r|dv rt        j                  d|d       |dv rKt        |      rt        j                  d       t        |      rt        dk7  rt        j                  d       t        j                         5  t        j                  d	d
t                | dg|d|d} | dg|d|d}t        |d d |        | dg|d|d} | dg|d|d}t        |d d |        | dg|d|dj                  d   dk(  sJ  | dg|d|dj                  d   dk(  sJ  | dg|d|dj                  d   dk(  sJ  | dg|d|dj                  d   dk(  sJ t        t        | dg|d|i t        t        | dg|d|i t!         | dg|d|d|j#                  g |j$                               t!         | dg|d|d|j#                  g |j$                               t!         | dg|d|d|j#                  dg|j$                               t!         | dg|d|d|j#                  dg|j$                                | dg|d|dj&                  |j$                  k(  sJ  | dg|d|dj&                  |j$                  k(  sJ  | dg|d|dj&                  |j$                  k(  sJ  | dg|d|dj&                  |j$                  k(  sJ  | dg|d|dj&                  |j$                  k(  sJ  | dg|d|dj&                  |j$                  k(  sJ |j)                   | dg|d|ddk        sJ |j)                   | dg|d|ddk        sJ |j)                   | dg|d|ddk        sJ |j)                   | dg|d|ddk        sJ t+         | dg|d|d      }|j-                  |      }t        ||j/                  |      d       t+         | dg|d|d      }|j-                  |      }t        ||j/                  |      d       d d d        y # 1 sw Y   y xY w)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  )getattrr   r   rh  skipr   r   r   r   r   r   r   r   rv  r  r  r   rG   rH   r=   allr   imag
zeros_like)rx  window_nameparamsr:   w1r{  ress          rK   test_windowfunc_basicsr    s    Wk*Fbzk%::nk-->?@h2;KKHIB<LE1KKJK		 	 	" 5=3[	B A00DR0A11Eb13B$A00DR0A11Eb13B$ a2&2dr288;q@@@a3&3e399!<AAAa2&2dr288;q@@@a3&3e399!<AAA 	j&#>>2>j&"=v="= 	q;6;t;

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

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

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

B4rzz
:	< a2&2dr288BJJFFFa3&3e399RZZGGGa2&2dr288BJJFFFa3&3e399RZZGGGa2&2dr288BJJFFFa3&3e399RZZGGG vvfR:&:dr:TABBBvvfR;&;e;dBCCCvvfQ99Tb9D@AAAvvfQ::Ur:TABBB &7f7%B78ggclR]]3/e<&7f7%B78ggclR]]3/e<k5= 5= 5=s   OQ44Q=c                 B    dD ]  }t        t        t        |d|         y )N)r#   ksrrt  kbdr(   gaussgsszgeneral gaussianr+   zgeneral gaussgeneral_gaussggsdssr&   rm  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                     t        |       r|dv rt        j                  | d       t        |d|       }|j                  d   dk(  sJ y )N)r1   r  r  rB   rC   r   )r   rh  r  r   rv  )r:   rx  r  r   s       rK   test_not_needs_paramsr  .  sJ     bzf
*fX%678
VQ2
&C99Q<1rM   c           	         t         j                  fD ]  } |d|       }t        |      j                  }| j	                  | j                  | ||      z
              }t        || j                  d      dd        |d|       }| j	                  | j                  | ||      z
              }t        || j                  d      dd        y )Ni   rC   r  F)r  check_0di  )r   r3   r   flipr   r   r   rG   )r:   r   r   r  errors        rK   test_symmetricr  =  s       
Sq!&&rvva$q'k*+rzz#EER rvva$q'k*+rzz#EER
SrM   )]r   r   numpyr   r   rh  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  r  _winstrr  r  )r  r  r  s   000rK   <module>r     sP        *  6 6 D    ;;// KK11 )4 7##$0 0 %0  7##$T T %T 7##$7 7 %7, 7))*K K +K( 7>>"J: J: #J:Z 7>>"7 7 #7" 7>>"L L #L0( 7??#?O ?O $?OH 	 ( 	)   !J K  "7 8 !K L 	 A 	B 4 5 A 	B   !J K3 : 7&&'< (< 7??#8 8 $8, 7##$L L %L0 7))*	J 	J +	J 7**+
Y 
Y ,
Y 7??#6 6 $6( 7<< 0 0 !0. 7>>"L L #L: 7001-L -L 2-L`Y Y* 7>>"L L #L$ 7>>"	T 	T #	TE./E 5 6 E01	
 U/0 U 6 7 U/0 E34 E : ; E34   #  "!" %#$ 	
B%& 	
+'( F)*  :+.$/3
: 7==!$ $ "$@ HI  A  DO  Q\  C]  ^:<\  _G  H  Jq  rV  YU  WY  [V  Xa  b  dk  l |  ~J(  L(D<  F<`P  aP  cPWQ  XQ	 7<< DA DA !DAN 7??#E E $EB 7%%&_3 _3 '_3D ,'QR $0K 	WWk:KP?= S?=D :@ @,   	Z/2F; :  7??#S $SsVs   "U;U
