
    doi                     
   S SK r S SKrS SKrS SKJr  S SKrS SKJr  S SKJ	r	  S SK
JrJrJr  S SKJrJr  S SKJrJrJrJrJrJrJrJrJrJrJrJr  \R<                  R>                  r\R<                  R@                  r \/r!/ SQr"\" \RF                  5       " S	 S
5      5       r$\" \RJ                  5       " S S5      5       r&\" \RN                  5       " S S5      5       r(\" \RR                  5       " S S5      5       r*\" \RV                  5       " S S5      5       r,\" \RZ                  5       " S S5      5       r.\" \R^                  5       " S S5      5       r0/ SQr1/ SQr2\" \Rf                  5       " S S5      5       r4\" / SQ5      \" / SQ5      \" / SQ5      \" / SQ5      \" / SQ5      S\" / SQ5      S\" / SQ5      \" / S Q5      SSS!.r5\" \Rl                  5      S" 5       r7\" \Rp                  5       " S# S$5      5       r9\" \Rt                  5       " S% S&5      5       r;\" \Rx                  5       " S' S(5      5       r=\" \R|                  5       " S) S*5      5       r?\" \R                  5       " S+ S,5      5       rA\" \R                  5       " S- S.5      5       rC\" \R                  5       " S/ S05      5       rE\" \R                  5       " S1 S25      5       rG " S3 S45      rH\" \R                  5       " S5 S65      5       rJ\" \R                  5       " S7 S85      5       rL0 S9\" / S:Q5      _S;\" / S<Q5      _S=\" / S>Q5      _S?\" / S@Q5      _SA\" / SBQ5      _SC\" / SDQ5      _SE\" / SFQ5      _SG\" / SHQ5      _SI\" / SJQ5      _SK/ SLQ_SM/ SNQ_SO/ SPQ_SQ/ SRQ_SS/ STQ_SU/ SVQ_SW/ SXQ_SY/ SZQ_/ S[Q/ S\QS].ErM\" \R                  5       " S^ S_5      5       rO/ S`Q/ SaQ/SbSc/4/ SdQ/ SeQ/ SfQ// SgQ4/ ShQ/ SiQ/ SjQ/ SkQ/ SlQ// SmQ4/ SnQ/ SoQ/ SpQ/ SqQ// SrQ4Ss.rP\" \R                  5       " St Su5      5       rR\" \R                  5       " Sv Sw5      5       rT\" \R                  5       " Sx Sy5      5       rU\" SzS{S|9\R<                  R                  S}\" V Vs/ s H  u  p\" \W" \U 5      X5      PM     snn 5      S~ 5       5       rX\" \5      S 5       rY/ SQrZ\R<                  R                  S\Z Vs/ s H  n\" \U   S    U5      PM     sn5      \" \5      S 5       5       r[\" \R                  5      S 5       r\gs  snn f s  snf )    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                       \ rS rSrS rSrg)TestBartHann2   c                 ^   [        [        R                  " SSUS9UR                  / SQUR                  S9SSS9  [        [        R                  " SUS	9UR                  / S
QUR                  S9SSS9  [        [        R                  " SSUS	9UR                  / SQUR                  S9SSS9  g )N   Tsymxp)r   gA,q?	5xB$?r<   gA,q?r   dtypeV瞯<rtolatol   r;   )r   HzG?\(\?      ?rF   rE   r   F)r   rE   rF   rG   rF   rE   )r   r   r!   asarrayfloat64selfr;   s     [/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/signal/tests/test_windows.py
test_basicTestBartHann.test_basic5   s    ((<

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

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

#C2::
V"	0    r   N__name__
__module____qualname____firstlineno__rM   __static_attributes__r   rO   rL   r5   r5   2   s    0rO   r5   c                       \ rS rSrS rSrg)TestBartlettC   c                 \   [        [        R                  " SUS9UR                  / SQUR                  S95        [        [        R                  " SUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        g )	Nr8   rD   )r   皙?皙?r[   rZ   r   r=   rC   )r   UUUUUU?UUUUUU?rG   r]   r\   r   F)r   r\   r]   rG   r]   r\   )r   r   r    rH   rI   rJ   s     rL   rM   TestBartlett.test_basicF   s    ((r2

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

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

#?rzz
R	TrO   r   NrP   r   rO   rL   rW   rW   C   s    TrO   rW   c                       \ rS rSrS rSrg)TestBlackmanO   c                    [        [        R                  " SSUS9UR                  / SQUR                  S9SS9  [        [        R                  " SSUS9UR                  / S	QUR                  S9S
S9  [        [        R                  " SUS9UR                  / SQUR                  S9SS9  [        [        R                  " SSUS9UR                  / SQUR                  S9SS9  g )Nr8   Fr9   )r   p=
ף?)\(?rG   rd   rc   r=   +=rB   rC   )r   Fi'?b@c?Zgs?ri   rh   rg   :0yE>rD   )r   쳩ֲ?,,?rl   rk   r   T)r   rc   rd   rG   rd   rc   r   )r   r   r   rH   rI   rJ   s     rL   rM   TestBlackman.test_basicR   s    (("=

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

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

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

#F jj # *05	7rO   r   NrP   r   rO   rL   r`   r`   O   s    7rO   r`   c                       \ rS rSrS rSrg)TestBlackmanHarrisf   c                    [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SUS9UR                  / S	QUR                  S95        [        [        R                  " SS
US9UR                  / SQUR                  S95        g )Nr8   FrD   )iUMu?0_^}?縯猨?rG   rt   rs   r=   rC   r9   )rr   gjP?g'm$M?gu?gu?g*m$M?gjP?)rr   ^?gU׈g?gU׈g?ru   rr   T)rr   rs   rt   rG   rt   rs   rr   )r   r   r   rH   rI   rJ   s     rL   rM   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rO   r   NrP   r   rO   rL   ro   ro   f   s    KrO   ro   c                   &    \ rS rSrS rS rS rSrg)
TestTaylor{   c           	      d   [        [        R                  " SSSUS9UR                  S/UR                  S95        [        [        R                  " SSSUS9UR                  / SQUR                  S95        [        [        R                  " S	SSUS9UR                  / S
QUR                  S95        g)zTests windows of small length that are normalized to 1. See the
documentation for the Taylor window for more information on
normalization.
r%   r'      rD   rG   r=      )%6'HA?)T
?rG   r~   r}   r8   )δX?繡1E?PD3m?r   r   r   Nr   r   r1   rH   rI   rJ   s     rL   test_normalizedTestTaylor.test_normalized~   s    
 	q!RB7

C5


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

 	NN1a+JJ  ZZ  !	
rO   c           
          [        [        R                  " SSSSUS9UR                  / SQUR                  S95        [        [        R                  " SSSSUS9UR                  / S	QUR                  S95        g
)zTest windows of small length that are not normalized to 1. See
the documentation for the Taylor window for more information on
normalization.
r|   r'   r{   Fnormr;   )	P ?sCp?g)8ux?r   r   r=   r8   ))S~?rG   kt#?r   rG   r   Nr   rJ   s     rL   test_non_normalizedTestTaylor.test_non_normalized   sx    
 	NN1a%B7JJ ZZ  !	
 	NN1a%B7JJ ZZ  !	
rO   c           	         SnSn[         R                  " USSSSUS9n[        [        U5      U5      nS[        R
                  " [        R                  " U[        R                  " U5      -  5      5      -  n[        R                  " [        R                  " U5      S:  5      n[        R                  " XgU*  5      nS	[        R                  " US
:*  5      -  U-  U-  n	S	[        R                  " US:*  5      -  U-  U-  n
[        R                  " USSS9(       d   e[        R                  " U	SSS9(       d   e[        R                  " U
SSS9(       d   eg)a  This test ensures the correctness of the implemented Taylor
Windowing function. A Taylor Window of 1024 points is created, its FFT
is taken, and the Peak Sidelobe Level (PSLL) and 3dB and 18dB bandwidth
are found and checked.

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

References
-----
.. [1] Armin Doerry, "Catalog of Window Taper Functions for
       Sidelobe Control", 2017.
       https://www.researchgate.net/profile/Armin_Doerry/publication/316281181_Catalog_of_Window_Taper_Functions_for_Sidelobe_Control/links/58f92cb2a6fdccb121c9d54d/Catalog-of-Window-Taper-Functions-for-Sidelobe-Control.pdf
i   i      #   F)nbarsllr   r:   r;      r   r'   gX$g_2gAfAr%   )abs_tolgLJ?皙?gZӼ@N)r   r1   r   r   nplog10absmaxargmaxdiffmathisclose)rK   r;   M_winN_fftwf_npspec
first_zeroPSLLBW_3dBBW_18dBs              rL   test_correctnessTestTaylor.test_correctness   s     NN5qbu%BO$Q'/BHHRVVD266$<$7899YYrwwt}q01
vvdzk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9rO   r   N)rQ   rR   rS   rT   r   r   r   rU   r   rO   rL   rx   rx   {   s    
(
$":rO   rx   c                       \ rS rSrS rSrg)
TestBohman   c                 ^   [        [        R                  " SUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SS	US9UR                  / S
QUR                  S95        g )Nr8   rD   )r   g$I ?6 D?r   g I ?r   r=   rC   Tr9   )r   PG?4}|?rG   6}|?r   r   F)r   r   r   rG   r   r   )r   r   r   rH   rI   rJ   s     rL   rM   TestBohman.test_basic   s    qR0

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

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

 $L*,** # 6	7rO   r   NrP   r   rO   rL   r   r      s    7rO   r   c                       \ rS rSrS rSrg)
TestBoxcar   c                 \   [        [        R                  " SUS9UR                  / SQUR                  S95        [        [        R                  " SUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        g )Nr8   rD   rG   r%   r%   r%   r%   r%   r=   rC   rG   r%   r%   r%   r%   r%   r%   F)r   r   r   rH   rI   rJ   s     rL   rM   TestBoxcar.test_basic   s    qR0

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

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

#7rzz
J	LrO   r   NrP   r   rO   rL   r   r      s    LrO   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?rG   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?.?rG   rG   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                   2    \ rS rSrS rS rS rS rS rSr	g)	TestChebWini
  c           
         [         R                  " 5          [         R                  " SS[        5        [	        [
        R                  " SSUS9UR                  / SQUR                  S9SS	9  [	        [
        R                  " S
SUS9UR                  / SQUR                  S95        [	        [
        R                  " SSUS9UR                  / SQUR                  S95        [	        [
        R                  " S
SUS9UR                  / SQUR                  S95        [	        [
        R                  " SSSUS9UR                  / SQUR                  S95        S S S 5        g ! , (       d  f       g = f)NignoreThis window is not suitabler8   d   rD   )}	ɺ?L >?rG   rG   r   r   r=   rj   rf   rC   )S?D1mPC?%5R?rG   r   r   r   
   )rG   TEm?	-o?r   r   rG   )rG   F3?NO?	r]?r   r   rG   F)rG   r   r   r   r   r   )	warningscatch_warningsfilterwarningsUserWarningr   r   r-   rH   rI   rJ   s     rL   rM   TestChebWin.test_basic  sP   $$&##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/ '&&s   D?E
E,c                    [         R                  " 5          [         R                  " SS[        5        [        R
                  " SSUS9nS S S 5        [        WUR                  [        5      SS9  g ! , (       d  f       N-= f)Nr   r   5   atr;   r   decimal)	r   r   r   r  r   r-   r   rH   cheb_odd_true)rK   r;   cheb_odds      rL   test_cheb_odd_high_attenuation*TestChebWin.test_cheb_odd_high_attenuation*  s\    $$&##7Frcb9H ' 	"(BJJ},EqQ	 '&   3A00
A>c                    [         R                  " 5          [         R                  " SS[        5        [        R
                  " SSUS9nS S S 5        [        WUR                  [        5      SS9  g ! , (       d  f       N-= f)Nr   r   6   (   r  r   r  )	r   r   r   r  r   r-   r   rH   cheb_even_true)rK   r;   	cheb_evens      rL   test_cheb_even_high_attenuation+TestChebWin.test_cheb_even_high_attenuation1  s]    $$&##7Frb9I ' 	")RZZ-GQRS	 '&r  c                    UR                  / SQUR                  S9n[        R                  " 5          [        R                  " SS[
        5        [        R                  " SSUS9nS S S 5        [        WUSS	9  g ! , (       d  f       N= f)
N)rG   m?燿&k?gc[?r  r  rG   r=   r   r   rC   r   r  r   r  	rH   rI   r   r   r   r  r   r-   r   )rK   r;   cheb_odd_low_at_truer  s       rL   test_cheb_odd_low_attenuation)TestChebWin.test_cheb_odd_low_attenuation8  sw    !zz +5<>JJ  *  H $$&##7FqRB7H ' 	"(,@!L	 '&   3A99
Bc                    UR                  / SQUR                  S9n[        R                  " 5          [        R                  " SS[
        5        [        R                  " SSUS9nS S S 5        [        WUSS	9  g ! , (       d  f       N= f)
N)rG   R?N(D!T?#R?r!  r   r  rG   r=   r   r      ir  r   r  r  )rK   r;   cheb_even_low_at_truer  s       rL   test_cheb_even_low_attenuation*TestChebWin.test_cheb_even_low_attenuationB  sx     "

 ,@GIzz !+ !S $$&##7Fcb9I ' 	")-BAN	 '&r  r   N)
rQ   rR   rS   rT   rM   r  r  r  r$  rU   r   rO   rL   r   r   
  s     P:RTMOrO   r   )|dy?vS?{?rG   r'  )1B?%?r)  r(  )́R?8,6V?rG   r+  )\Kr?
oh?r-  r,  )r&  r'  rG   r'  r&  )r*  r+  rG   r+  r*  ))r   N皙?F)r   Nr.  T)r   NrG   F)r   NrG   T)r   r'   r.  F)r   r'   r.  T)r   r'   rG   F)r   r'   rG   T)r|   Nr.  T)r|   NrG   T)r|   r'   r.  T)r|   r'   rG   Tc                     [         R                  5        H[  u  pUc$  [        [        [        R
                  /UQ7SU 06  M,  [        R
                  " USU 06n[        X0R                  U5      SS9  M]     g )Nr;   re   rA   )exponential_dataitemsassert_raises
ValueErrorr   r0   r   rH   )r;   kvwins       rL   test_exponentialr8  j  s]     &&(9*g&9&9EAE"E%%q0R0CCAU; )rO   c                       \ rS rSrS rSrg)TestFlatTopit  c                    [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SUS9UR                  / S	QUR                  S95        [        [        R                  " SS
US9UR                  / SQUR                  S95        g )Nr8   Fr9   )bF;s*?dR	p^?rG   r>  r=  r=   rC   )r<  `p|ܢ?J?rA  r@  r?  rD   )r<  <#U_&k?rC  rB  r<  T)r<  r=  r>  rG   r>  r=  r<  )r   r   r   rH   rI   rJ   s     rL   rM   TestFlatTop.test_basicw  s    u<

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

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

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

 $M+-:: # 7	8rO   r   NrP   r   rO   rL   r:  r:  t  s    8rO   r:  c                       \ rS rSrS rSrg)TestGaussiani  c           	         [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SS	US9UR                  / S
QUR                  S95        [        [        R                  " SS	SUS9UR                  / SQUR                  S95        g )Nr8   rG   rD   )|~?w$?"$j=?rJ  rI  rH  r=   rC   g333333?)rH  
"?;eܜ?rG   rL  rK  rH     )r-  ?yLE?rG   rO  rN  r-  F)r-  rN  rO  rG   rO  rN  )r   r   r(   rH   rI   rJ   s     rL   rM   TestGaussian.test_basic  s    ((CB7

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

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

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

 $8?Azz # K	LrO   r   NrP   r   rO   rL   rF  rF    s    LrO   rF  c                       \ rS rSrS rSrg)TestGeneralCosinei  c                 :   UR                  / SQ5      n[        [        R                  " SU5      UR                  / SQUR                  S95        UR                  / SQ5      n[        [        R                  " SUSS9UR                  / SQUR                  S95        g )	Nr*   333333?r.  r|   )rZ   rU  r%   rU  rZ   r=   r   F)r:   rZ   rU  r%   rU  )rH   r   r   general_cosinerI   )rK   r;   as      rL   rM   TestGeneralCosine.test_basic  s|    JJ'..q!4

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

#5RZZ
H	JrO   r   NrP   r   rO   rL   rR  rR    s    JrO   rR  c                       \ rS rSrS rSrg)TestGeneralHammingi  c           	      d   [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSSUS9UR                  / S	QUR                  S95        [        [        R                  " S
SSUS9UR                  / SQUR                  S95        g )Nr|   ffffff?rD   rZ   r]  rG   r]  rZ   r=         ?Fr9   )r*   y&"?x?ra  r`  r8   T)r*   r`  ra  ra  r`  r*   )r   r   general_hammingrH   rI   rJ   s     rL   rM   TestGeneralHamming.test_basic  s    //32>

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

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

 $ELNJJ # X	YrO   r   NrP   r   rO   rL   r[  r[    s    YrO   r[  c                       \ rS rSrS rSrg)TestHammingi  c                    [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SUS9UR                  / S	QUR                  S95        [        [        R                  " SS
US9UR                  / SQUR                  S95        g )Nr8   FrD   ){Gz?ףp=
?p=
ף?rG   ri  rh  r=   rC   r9   )rg  CW4?	/5?4Cъ?rl  rk  rj  )rg  6 iv?P0?rn  rm  rg  T)rg  rh  ri  rG   ri  rh  rg  )r   r   r"   rH   rI   rJ   s     rL   rM   TestHamming.test_basic  s    5R8

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

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

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

#L)+ # 5	6rO   r   NrP   r   rO   rL   re  re    s    6rO   re  c                       \ rS rSrS rSrg)TestHanni  c                    [        [        R                  " SSUS9UR                  / SQUR                  S9SSS9  [        [        R                  " SSUS9UR                  / S	QUR                  S9SSS9  [        [        R                  " SS
US9UR                  / SQUR                  S9SSS9  [        [        R                  " SUS9UR                  / SQUR                  S9SSS9  g )Nr8   Fr9   )r         ?r_  rG   r_  rs  r=   r?   r@   rC   )r   \$:?H`r?8T^j?rv  ru  rt  TrD   r   Xhd?Tͻ?ry  rx  r   r   rs  r_  rG   r_  rs  r   )r   r   r/   rH   rI   rJ   s     rL   rM   TestHann.test_basic  s    QEb9

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

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

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

#F jj # *"	0rO   r   NrP   r   rO   rL   rq  rq    s    0rO   rq  c                       \ rS rSrS rSrg)
TestKaiseri  c           	      J   [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / S	QUR                  S95        [        [        R                  " SSUS9UR                  / S
QUR                  S95        [        [        R                  " SSSUS9UR                  / SQUR                  S95        g )Nr8   r*   rD   )l?<3N?i>%?r  r  r  r=   rC   )r  	$?6?rG   r  r  r  g@)§Aը?O F?$?r  r  r  )r  *'?=a?rG   r  r  r  F)r  r  r  rG   r  r  )r   r   r#   rH   rI   rJ   s     rL   rM   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rO   r   NrP   r   rO   rL   r}  r}    s    LrO   r}  c                        \ rS rSrS rS rSrg)TestKaiserBesselDerivedi
  c                 X   [         R                  " SSUS9n[        X!R                  / 5      5        Sn[         R                  " USUS9n[         R                  " SUSUS9n[        X$5        US US-   S-  X#* S-  S  S-  -   n[        XQR                  UR                  UR                  S	95        [         R                  " S[        R                  S-  US9S S
 nUR                  U5      [        R                  " S5      -  S-  n[        XV5        [        [         R                  " S[        R                  S-  US9S S UR                  SS/UR                  S	95        [        [         R                  " S[        R                  S-  US9S S UR                  / SQUR                  S	95        g )Nr*         @betar;   r   )zkaiser bessel derivedr  Ffftbinsr;   r'   r=   r%   g       @r   gU?gU3|\?r8   rM  )gHZ1?gKf?g"iF5?)r   kaiser_bessel_derivedr   rH   r   r   onesshaper>   r   pi	ones_liker   sqrtrI   )rK   r;   r   Mw2actualdesireds          rL   rM   "TestKaiserBesselDerived.test_basic  s   ))#CB?::b>*))!#"= > !5R9 7AFq1R1WX;!#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	6rO   c                    SnSn[        [        US9   [        R                  " US-   SUS9  S S S 5        Sn[        [        US9   [        R                  " US-   SSUS	9  S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)
Nr   zHKaiser-Bessel Derived windows are only defined for even number of pointsmatchr%   r  r  zCKaiser-Bessel Derived windows are only defined for symmetric shapesF)r  r:   r;   )r3  r4  r   r  )rK   r;   r  msgs       rL   test_exceptions'TestKaiserBesselDerived.test_exceptions,  sv    ":S1))!a%bR@ 2":S1))!a%beK 21 21 21s   A)A:)
A7:
Br   N)rQ   rR   rS   rT   rM   r  rU   r   rO   rL   r  r  
  s    6>LrO   r  c                       \ rS rSrS rSrg)TestNuttalli;  c                    [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SUS9UR                  / S	QUR                  S95        [        [        R                  " SS
US9UR                  / SQUR                  S95        g )Nr8   Fr9   )A"7?v;O<g?$2bUs?rG   r  r  r=   rC   )r  gx&yxXW?g??絑?r  g??g&yxXW?rD   )r  gEJ?g=`T?g>`T?gEJ?r  T)r  r  r  rG   r  r  r  )r   r   r   rH   rI   rJ   s     rL   rM   TestNuttall.test_basic=  s    u<

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

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

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

 $ELNJJ # X	YrO   r   NrP   r   rO   rL   r  r  ;  s    YrO   r  c                       \ rS rSrS rSrg)
TestParzeniP  c                 ^   [        [        R                  " SUS9UR                  / SQUR                  S95        [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SS	US9UR                  / S
QUR                  S95        g )Nr8   rD   )e/?rs  88?r  rs  r  r=   rC   Tr9   )%OZQ%w?2|&?݁?rG   r  r  r  F)r  r  r  rG   r  r  )r   r   r   rH   rI   rJ   s     rL   rM   TestParzen.test_basicS  s    qR0

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

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

 $8?Azz # K	LrO   r   NrP   r   rO   rL   r  r  P  s    LrO   r  c                       \ rS rSrS rSrg)
TestTriangic  c                 ^   [        [        R                  " SSUS9UR                  / SQUR                  S95        [        [        R                  " SUS9UR                  / SQUR                  S95        [        [        R                  " SSUS	9UR                  / S
QUR                  S95        g )Nr8   TrD   )UUUUUU?r*   竪?r  r*   r  r=   rC   )rs  r*   r_  r%   r_  r*   rs  Fr9   )rs  r*   r_  r%   r_  r*   )r   r   r   rH   rI   rJ   s     rL   rM   TestTriang.test_basicf  s    q$26

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

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

#?rzz
R	TrO   r   NrP   r   rO   rL   r  r  c  s    TrO   r  )r   r*   T)        rG   rG   r  )r   ?T)r  ?r  r  )r   rG   T)r  r_  r_  r  )r   r*   F)r  rG   rG   rG   )r   r  F)r  rnOC?rG   r  )r   rG   F)r  r*   rG   r*   )r|   r  T)rG   rG   rG   rG   rG   )r|   r[   T)r  Yx?rG   r  r  )r|   rG   T)r  r*   rG   r*   r  )r8   r   r   )rC   r   r   )r8   rs  )r  r%   r%   r%   r%   r   )rC   rs  )r  r%   r%   r%   r%   r%   r   r8   )r   ry  rG   rG   gRͻ?r   )rC   )r   r_  rG   rG   rG   r_  r   r8   r_  )r   gxų	&?rG   rG   gvų	&?r   rC   r_  )r   g#}`yq?)!?rG   r  g#}`yq?r   rw  rz  )r8   r%   )rC   r%   c                        \ rS rSrS rS rSrg)	TestTukeyi  c                 4   [         R                  5        H  u  p#Uc$  [        [        [        R
                  /UQ7SU06  M,  [        U5      (       a  US;   a  SSS.nOSSS.n[        R
                  " USU06n[        XQR                  U5      4SS0UD6  M     g )	Nr;   )r  r  r  r  g+i)+`>rj   r@   r?   check_dtypeF)	
tukey_datar2  r3  r4  r   r2   r   r   rH   )rK   r;   r5  r6  	atol_rtolr7  s         rL   rM   TestTukey.test_basic  s    $$&DAyj'--C!CCB<<A)J$J*.!=Y*/!@YmmQ.2.ZZ] @,1@5>@ 'rO   c                     [         R                  " SSUS9n[         R                  " SUS9n[        X#5        [         R                  " SSUS9n[         R                  " SUS9n[        XE5        g )Nr   r   rD   r%   )r   r2   r   r   r/   )rK   r;   tuk0box0tuk1han1s         rL   test_extremesTestTukey.test_extremes  sV    }}S!+~~cb)#}}S!+||CB'#rO   r   N)rQ   rR   rS   rT   rM   r  rU   r   rO   rL   r  r    s    @$rO   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:  r9  r8  r7  r6  r5  r4  r3  r2  r1  r0  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'   )rM  gffffff?rM  )r|   r,   r|   )r   r'   r   c                   D    \ rS rSrS rS rS rS r\" SS9S 5       r	S	r
g
)TestDPSSi  c           	          [         R                  5        H;  u  p#[        R                  " USUS.6u  pE[	        XCS   SUS9  [	        XSS   SSUS9  M=     g )	NTreturn_ratiosr;   r   gHz>)rB   err_msgr%   gh㈵>)rA   rB   rE  )	dpss_datar2  r   r&   r   )rK   r;   r5  r6  r7  ratioss         rL   rM   TestDPSS.test_basic  sK    OO%DA!,,"EKCC1D!<FaDt$J &rO   c                    [        SS5       H  n[        R                  " X"S-  US9nUS-  n[        [        R
                  " US5      R                  5       UU S9  [        R                  " X"S-  SUS	9nUS:  a9  [        [        R
                  " US5      R                  5       UU S9  [        X5S
S9  [        R                  " X"S-  SUS	9nUS:X  a  SOSn[        [        R
                  " US5      R                  5       UU S9  M     g )Nr%      g @rD   r'   rG   )rE  	subsampler   gQ?r0  r   )ranger   r&   r   r   r   sumr   )rK   r;   r  r7  expectedwin_subwin_2s          rL   
test_unityTestDPSS.test_unity  s    q"A,,qc'b1C1uHBJJsB/335x$'5+ ll1#gKBGG1u

7B 7 ; ; =x(/y348LLG!;EFqHBJJub1557$)7-! rO   c                 B   [         R                  " SSSSUS9S   n[        X!R                  U5      5        [         R                  " SSSSUS9S   n[        X!R                  U5      5        [         R                  " SSSSUS9S   n[        X!R                  U5      5        g )	N   r8   r   TrC  r%   rC   r"  )r   r&   r   r  )rK   r;   lams      rL   r  TestDPSS.test_extremes  s    ll2q!4B?B\\#./ll2q!4B?B\\#./ll2q!4B?B\\#./rO   c                    [        [        [        R                  SSS5        [        [        [        R                  SSS5        [        [        [        R                  SSS5        [        [        [        R                  SSS5        [        [        [        R                  SSS5        [        [        [        R                  SSS5        [        [        [        R                  SSS5        g )	Nr   r,   皙?rM  r   r%   )r3  r4  r   r&   	TypeErrorrJ   s     rL   test_degenerateTestDPSS.test_degenerate  s    j',,3;j',,3;iq#s;j',,3:j',,2q9j',,1a8j',,Aq9rO   T)np_onlyc           	         [         R                  " SS5      n[        US/5        [         R                  " SSSS9u  p#[        US/5        US:X  d   e[         R                  " SSSSS9u  p#[        US/5        [        U[        R
                  5      (       d   e[        US/5        [        [        [         R                  SSSUS	9  [        [        [         R                  SSS
US	9  [        [        [         R                  SSSUS	9  [        [        [         R                  SSSUS	9  [        [        [         R                  SSSUS	9  [        [        [         R                  SSSUS	9  [        [        [         R                  SSSUS	9  g )Nr%   rG   T)rD  r   )KmaxrD  r,   rX  rD   rY  rZ  rM  r   )	r   r&   r   
isinstancer   ndarrayr3  r4  r[  )rK   r;   r   ratios       rL   test_degenerate_signle_samples'TestDPSS.test_degenerate_signle_samples  s+    LLBB4 <<2T:B4 {{<<2ATBB4 %,,,,t$j',,3rBj',,3rBiq#srBj',,3bAj',,2qR@j',,1aB?j',,AqR@rO   r   N)rQ   rR   rS   rT   rM   rQ  r  r\  skip_xp_backendsrd  rU   r   rO   rL   rA  rA    s2    K-*0: d#A $ArO   rA  c                        \ rS rSrS rS rSrg)TestLanczosi  c                 X   [        [        R                  " SSUS9UR                  / SQUR                  S9SS9  [        [        R                  " SUS9UR                  / S	QUR                  S9SS9  [        [        R                  " S
SUS9UR                  / SQUR                  S9SS9  g )Nr8   Fr9   r  qϾv?;Fv?rG   rl  rk  r=   &.>rf   rD   r  uH%?;9?rp  ro  r  rC   T)r  rk  rl  rG   rl  rk  r  )r   r   r3   rH   rI   rJ   s     rL   rM   TestLanczos.test_basic   s     	u<

 $18:

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

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

 $5<>JJ # H "		#rO   c                     S HU  n[         R                  " USUS9R                  S   U:X  d   e[         R                  " USUS9R                  S   U:X  a  MU   e   g )N)r   r      Fr9   r   T)r   r3   r  )rK   r;   ns      rL   test_array_sizeTestLanczos.test_array_size  sX    A??1%B7==a@AEEE??1$26<<Q?1DDD rO   r   N)rQ   rR   rS   rT   rM   ru  rU   r   rO   rL   rh  rh    s    #2ErO   rh  c                      \ rS rSrSrS r\" \R                  5      S 5       r	\" \R                  5      S 5       r\" \R                  5      S 5       r\" \R                  5      S 5       r\" \R                  5      S 5       r\R$                  R'                  S	S
S\R*                  " S5      /5      \" \R,                  5      S 5       5       rS r\" \R2                  5      S 5       r\" \R                  5      S 5       r\" \R8                  5      S 5       r\" \R<                  5      S 5       r\" \R@                  5      S 5       r!S r"Sr#g)TestGetWindowi  z*Unit test for `scipy.signal.get_windows`. c                     [         R                  " 5        H1  u  pUS   R                  nSU S3nX1;   d   U5       eUS   S;   a  M1   e   g)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	   r2  rQ   )rK   nn_v_	func_namer  s        rL   test_WIN_FUNC_DATA_integrity*TestGetWindow.test_WIN_FUNC_DATA_integrity#  sY     &++-GC1I%cU*TUC#(S(#a55555	 .rO   c                     [         R                  " SSUS9n[        X!R                  U5      5        [         R                  " SSUS9n[        X!R                  U5      5        g )Nr      rD   )r      )r   r   r   r  rK   r;   r   s      rL   test_boxcarTestGetWindow.test_boxcar7  sL    x3<<?+ {B26<<?+rO   c                    [         R                  " 5          [         R                  " SS[        5        [        R
                  " SSSUS9nS S S 5        [        WUR                  [        UR                  S9SS	9  g ! , (       d  f       N6= f)
Nr   r   )r-   r  r  Fr  r=   r   r  )
r   r   r   r  r   r   r   rH   r
  rI   r  s      rL   test_cheb_oddTestGetWindow.test_cheb_odd@  sl    $$&##7F""#3R2NA ' 	"rzz-rzzz:A	
	 '&s   4A::
Bc                    [         R                  " 5          [         R                  " SS[        5        [        R
                  " SSSUS9nS S S 5        [        WUR                  [        5      SS9  g ! , (       d  f       N-= f)	Nr   r   )r-   r  r  Fr  r   r  )	r   r   r   r  r   r   r   rH   r  r  s      rL   test_cheb_evenTestGetWindow.test_cheb_evenJ  s`    $$&##7F""?B"MA ' 	"!RZZ%?K	 '&s   4A11
A?c                 t    [         R                  " SSSUS9n[         R                  " SSUS9n[        X#5        g )N)r&   rM  @   Fr  rM  rD   )r   r   r&   r   rK   r;   win1win2s       rL   	test_dpssTestGetWindow.test_dpssR  s2    !!+r5RH||Bb)#rO   c                     [         R                  " SSUS9n[         R                  " SSSUS9n[        U5      (       a.  [	        X#UR                  UR                  5      R                  S9  g [        X#5        g )Ng@r  rD   Fr0  )	r   r   r#   r   r   finfor>   epsr   r  s       rL   test_kaiser_floatTestGetWindow.test_kaiser_floatX  sZ    !!#rb1~~b#u4":: DRXXdjj-A-E-EFD'rO   NxrX  g      @rM  c                     [         R                  " [        SS9   [        R                  " SXS9  S S S 5        g ! , (       d  f       g = f)Nz^Parameter Nx=.*r  r/   rD   )pytestr   r4  r   r   )rK   r  r;   s      rL   test_invalid_parameter_NX'TestGetWindow.test_invalid_parameter_NXc  s0     ]]:-?@vr1 A@@s	   9
Ac                    [         R                  " [        SS9   [        R                  " SSSUS9  SSS5        [         R                  " [        SS9   [        R                  " S/SUS	9  SSS5        [         R                  " [        S
S9   [        R                  " SSUS	9  SSS5        [         R                  " [        SS9   [        R                  " SSUS	9  SSS5        [         R                  " [        SS9   [        R                  " SSUS	9  SSS5        [         R                  " [        SS9   [        R                  " SSUS	9  SSS5        [         R                  " [        SS9   [        R                  " SSUS	9  SSS5        [         R                  " [        SS9   U=(       d    [
        n[        R                  " SSS/4SUS	9  SSS5        g! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN_= f! , (       d  f       GN9= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)z?Raise all exceptions (except those concerning parameter `Nx`). z^Parameter fftbins=.*r  r/   r|   r%   r  Nz^Parameter window=.*rD   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'   )r  r   r4  r   r   r   )rK   r;   xp_s      rL   test_invalid_inputs!TestGetWindow.test_invalid_inputsj  s   ]]:-DEvq!; F]]:-CDy!3 E]]:-TUuaB/ V]]:-OPy!3 Q]]:-RS{A"5 T]]:-OPxr2 Q]]:-KL~qR8 M]]:-RS(C 01a&91E TS FEDDUUPPSSPPLLSSs_   GG)G;H<H4H1,I$*I
G&)
G8;
H

H
H.1
H?
I
I!c           	         [         R                  " SSUS9n[        [        SSSUS9U5        [        [        SSUS9U5        [        [        SSSUS9U5        [         R                  " SSUS9n[        [        SSUS9U5        [        [        SSSUS9U5        [        [        S	SUS9U5        [        [        S	SSUS9U5        g
)zIEnsure that suffixes `_periodic` and `_symmetric` work for window names. r|   Tr9   r    Fr  bartlett_symmetricrD   bartlett_periodicN)r   r    r   r   )rK   r;   w_symw_pers       rL   test_symmetric_periodic%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	rO   c                    SnUR                  S5      n[        R                  " SUS-  US9n[        U5      (       a  SOSn[	        [
        US9   [        X3R                  S   U-  US	9  S S S 5        g ! , (       d  f       g = f)
N   )r#   g       @r'   rD   z^window mustz^window.shape=r  r   )window)aranger   r   r   r3  r4  r   r  )rK   r;   osfactorsigr7  mesgs         rL   test_array_as_window"TestGetWindow.test_array_as_window  sk     iin  (a-BG!(~2B:T2S))A,1#> 322s   A33
Bc           	         [        [        SUR                  / SQ5      4S5      UR                  / SQUR                  S95        [        [        SUR                  / SQ5      4SSS9UR                  / SQUR                  S95        [        R
                  " [        5         [        S/ SQ4SUS	9  S S S 5        g ! , (       d  f       g = f)
NrW  rT  r   rV  r=   F)r  )rZ   皙?r  rZ   rD   )r   r   rH   rI   r  r   r4  rJ   s     rL   test_general_cosine!TestGetWindow.test_general_cosine  s    
$4bjj6Q#RTUV

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

#9
L	N ]]:&(/:A"E '&&s    B99
Cc           	          [        [        SSUS9UR                  / SQUR                  S95        [        [        SSSUS9UR                  / SQUR                  S95        g )	N)rb  r]  r|   rD   )rZ   жn?男*?r  r  r=   Fr  r^  r   r   rH   rI   rJ   s     rL   test_general_hamming"TestGetWindow.test_general_hamming  s`    
#;Q2F

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

#<BJJ
O	QrO   c           	          [        [        SSUS9UR                  / SQUR                  S9SS9  [        [        SSSUS	9UR                  / S
QUR                  S9SS9  [        [        SSUS9[        SSUS95        g )Nr3   r8   rD   rj  r=   rm  rf   Fr  rn  sincr  rJ   s     rL   test_lanczosTestGetWindow.test_lanczos  s    
9aB7

 $18:

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

 $5<>JJ # HNR	T 	
9aB7"614	6rO   c                     [        SS5      n[        U[        R                  5      (       d   e[        SSUS9n[	        U5      (       d"  [        U[        R                  5      (       a   eg g )Nr3   r8   rD   )r   ra  r   rb  r   )rK   r;   r7  s      rL   test_xp_defaultTestGetWindow.test_xp_default  s[    A&#rzz****A"-||!#rzz22222 rO   r   N)$rQ   rR   rS   rT   __doc__r~  r   r   r   r  r-   r  r  r&   r  r#   r  r  markparametrizer   rI   r/   r  r  r    r  r  rW  r  rb  r  r3   r  r  rU   r   rO   rL   rx  rx    s   46( w~~&, ', w'
 (
 w'L (L w||$$ %$
 w~~&( '( [[TBRZZ]#;<w||$2 % =2
F( w''( )  w~~&? '? w--.F /F w../Q 0Q w'6 (63rO   rx  z
dask.arrayz(https://github.com/dask/dask/issues/2620reasonzwindow,window_name,paramsc           	      @	   [        [        U5      n [        U5      (       a  US;   a  [        R                  " SU< S3S9  US;   aR  [        U5      (       a  [        R                  " SS9  [        U5      (       a  [        S:w  a  [        R                  " SS9  [        R                  " 5          [        R                  " S	S
[        5        U " S/UQ7SUS.6nU " S/UQ7SUS.6n[        US S U5        U " S/UQ7SUS.6nU " S/UQ7SUS.6n[        US S U5        U " S/UQ7SUS.6R                  S   S:X  d   eU " S/UQ7SUS.6R                  S   S:X  d   eU " S/UQ7SUS.6R                  S   S:X  d   eU " S/UQ7SUS.6R                  S   S:X  d   e[        [        U S/UQ7SU06  [        [        U S/UQ7SU06  [!        U " S/UQ7SUS.6UR#                  / UR$                  S95        [!        U " S/UQ7SUS.6UR#                  / UR$                  S95        [!        U " S/UQ7SUS.6UR#                  S/UR$                  S95        [!        U " S/UQ7SUS.6UR#                  S/UR$                  S95        U " S/UQ7SUS.6R&                  UR$                  :X  d   eU " S/UQ7SUS.6R&                  UR$                  :X  d   eU " S/UQ7SUS.6R&                  UR$                  :X  d   eU " S/UQ7SUS.6R&                  UR$                  :X  d   eU " S/UQ7SUS.6R&                  UR$                  :X  d   eU " S/UQ7SUS.6R&                  UR$                  :X  d   eUR)                  U " S/UQ7SUS.6S:  5      (       d   eUR)                  U " S/UQ7SUS.6S:  5      (       d   eUR)                  U " S/UQ7SUS.6S:  5      (       d   eUR)                  U " S/UQ7SUS.6S:  5      (       d   e[+        U " S/UQ7SUS.65      nUR-                  U5      n[        XcR/                  U5      SS9  [+        U " S/UQ7SUS.65      nUR-                  U5      n[        XcR/                  U5      SS9  S S S 5        g ! , (       d  f       g = f)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"  Tr9   rC   FrX  	   r8   r   g      @r;   ir=   r%   rG   r   g)\(?re   rf   rs  )getattrr   r   r  skipr   r   r   r   r   r   r  r   r  r3  r4  r   rH   rI   r>   allr   imag
zeros_like)r  window_nameparamsr;   w1r  ress          rL   test_windowfunc_basicsr    s    Wk*Fbzzk%::nk-->?@h2;;KKHIB<<LE1KKJK		 	 	"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BvvfR;&;e;dBCCCCvvfQ99Tb9D@AAAAvvfQ::Ur:TABBBB &7f7%B78ggcl]]3/e<&7f7%B78ggcl]]3/e<k 
#	"	"s   -OR
Rc           	      @    S H  n[        [        [        USU S9  M     g )N)r#   ksrr  kbdr(   gaussgsszgeneral gaussianr+   zgeneral gaussgeneral_gaussggsdssr&   r  rW  r-   chebzgeneral hammingrb  rC   rD   )r3  r4  r   )r;   winstrs     rL   test_needs_paramsr    s      	j*faB?rO   )r!   r    r   r   r   r   r.   r   r"   r   r   r1   r0   poissonr2   tuktriangler3   r  zwindow,winstrc                     [        U 5      (       a  US;   a  [        R                  " U S3S9  [        USU S9nUR                  S   S:X  d   eg )N)r1   r  r  rC   rD   r   )r   r  r  r   r  )r;   r  r  r7  s       rL   test_not_needs_paramsr  .  sL     bzzf
*fX%678
VQ2
&C99Q<1rO   c           	         [         R                  4 H  nU" SU S9n[        U5      R                  nU R	                  U R                  X#" U5      -
  5      5      n[        X@R                  S5      SSS9  U" SU S9nU R	                  U R                  X#" U5      -
  5      5      n[        X@R                  S5      SSS9  M     g )Ni   rD   r  F)r  check_0di  )r   r3   r   flipr   r   r   rH   )r;   r7  r   r  errors        rL   test_symmetricr  =  s      q!&&rvva$q'k*+zz#EER rvva$q'k*+zz#EER !rO   )]r   r   numpyr   r   r  r   r3  	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  rf  xfail_xp_backendslazy_xp_moduleswindow_funcsr!   r5   r    rW   r   r`   r   ro   r1   rx   r   r   r   r   r
  r  r-   r   r1  r0   r8  r   r:  r(   rF  rW  rR  rb  r[  r"   re  r/   rq  r#   r}  r  r  r  r   r  r   r  r  r2   r  rF  r&   rA  r3   rh  rx  r  r  r  r  _winstrr  r  )r  r  r  s   000rL   <module>r     sW        *  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 :@ @,  F 	Z/2F; :  7??#S $SsVs   U9U	
