
    Џkh                        d dl Z d dlZd dlm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mZmZmZmZmZmZmZ ej2                  j4                  Zej2                  j6                  Zg dZ G d	 d
      Z G d d      Z G d d      Z G d d      Z  edd       G d d             Z! G d d      Z" G d d      Z#g dZ$g dZ% edd       edd       G d d                    Z& eg d        eg d!       eg d"       eg d#       eg d       d eg d"      d eg d$       eg d%      ddd&Z'd' Z( G d( d)      Z) G d* d+      Z* G d, d-      Z+ G d. d/      Z, G d0 d1      Z- G d2 d3      Z. G d4 d5      Z/ G d6 d7      Z0 G d8 d9      Z1 G d: d;      Z2 G d< d=      Z3i d> eg d?      d@ eg dA      dB eg dC      dD eg dE      dF eg dG      dH eg dI      dJ eg dK      dL eg dM      dN eg dO      dPg dQdRg dSdTg dUdVg dWdXg dYdZg d[d\g d]d^g d_g d`g dadbZ4 G dc dd      Z5g deg dfgdgdhgfg dig djg dkgg dlfg dmg dng dog dpg dqgg drfg dsg dtg dug dvgg dwfdxZ6 edydz{       G d| d}             Z7 G d~ d      Z8 G d d      Z9 edd      d        Z:d Z;g dZ<ej2                  j{                  de<      d        Z>d Z?y)    N)array)suppress_warnings)raises)fft)windows
get_windowresample)	xp_assert_closexp_assert_equalarray_namespaceis_torchis_jaxis_cupyassert_array_almost_equalSCIPY_DEVICEis_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$?r7   gA,q?r   dtypeV瞯<rtolatol   r6   )r   HzG?\(\?      ?rA   r@   r   F)r   r@   rA   rB   rA   r@   )r
   r   r   asarrayfloat64selfr6   s     [/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/signal/tests/test_windows.py
test_basiczTestBartHann.test_basic0   s    ((<

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

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

#C2::
V"	0    N__name__
__module____qualname__rH   r   rI   rG   r1   r1   .   s    0rI   r1   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 )	Nr3   r?   )r   皙?皙?rR   rQ   r   r8   r>   )r   UUUUUU?UUUUUU?rB   rT   rS   r   F)r   rS   rT   rB   rT   rS   )r
   r   r   rC   rD   rE   s     rG   rH   zTestBartlett.test_basic@   s    ((r2

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

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

#?rzz
R	TrI   NrJ   r   rI   rG   rO   rO   >   s    TrI   rO   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 )Nr3   Fr4   )r   p=
ף?)\(?rB   rY   rX   r8   +=r=   r>   )r   Fi'?b@c?Zgs?r^   r]   r\   :0yE>r?   )r   쳩ֲ?,,?ra   r`   r   T)r   rX   rY   rB   rY   rX   r   )r
   r   r   rC   rD   rE   s     rG   rH   zTestBlackman.test_basicK   s    (("=

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

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

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

#F jj # *05	7rI   NrJ   r   rI   rG   rV   rV   I   s    7rI   rV   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 )Nr3   Fr?   )iUMu?0_^}?縯猨?rB   rg   rf   r8   r>   r4   )re   gjP?g'm$M?gu?gu?g*m$M?gjP?)re   ^?gU׈g?gU׈g?rh   re   T)re   rf   rg   rB   rg   rf   re   )r
   r   r   rC   rD   rE   s     rG   rH   zTestBlackmanHarris.test_basica   s    ..q%B?

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

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

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

 $7>@jj # J	KrI   NrJ   r   rI   rG   rc   rc   _   s    KrI   rc   	jax.numpyitem assignmentreasonc                   6    e Zd Zd Zd Z ed      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#      r?   rB   r8      )%6'HA?)T
?rB   rs   rr   r3   )δX?繡1E?PD3m?rv   ru   rt   Nr
   r   r-   rC   rD   rE   s     rG   test_normalizedzTestTaylor.test_normalizedv   s    
 	q!RB7

C5


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

 	NN1a+JJ  ZZ  !	
rI   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normr6   )	P ?sCp?g)8ux?r}   r|   r8   r3   ))S~?rB   kt#?r   rB   r~   Nrw   rE   s     rG   test_non_normalizedzTestTaylor.test_non_normalized   sx    
 	NN1a%B7JJ ZZ  !	
 	NN1a%B7JJ ZZ  !	
rI   T)cpu_onlyc           	         d}d}t        j                  |dddd|      }t        ||      }t        j                  |      }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{   r5   r6      r   r#   gX$g_2gAfAr!   )abs_tolgLJ?皙?gZӼ@N)r   r-   r   nprC   log10absmaxargmaxdiffmathisclose)rF   r6   M_winN_fftwff_npspec
first_zeroPSLLBW_3dBBW_18dBs               rG   test_correctnesszTestTaylor.test_correctness   s#      NN5qbu%BO5Mzz!}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9rI   N)rK   rL   rM   rx   r   skip_xp_backendsr   r   rI   rG   rn   rn   s   s%    
(
$ t$#: %#:rI   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 )Nr3   r?   )r   g$I ?6 D?r   g I ?r   r8   r>   Tr4   )r   PG?4}|?rB   6}|?r   r   F)r   r   r   rB   r   r   )r
   r   r   rC   rD   rE   s     rG   rH   zTestBohman.test_basic   s    qR0

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

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

 $L*,** # 6	7rI   NrJ   r   rI   rG   r   r      s    7rI   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 )Nr3   r?   rB   r!   r!   r!   r!   r!   r8   r>   rB   r!   r!   r!   r!   r!   r!   F)r
   r   r   rC   rD   rE   s     rG   rH   zTestBoxcar.test_basic   s    qR0

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

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

#7rzz
J	LrI   NrJ   r   rI   rG   r   r      s    LrI   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?rB   r   r   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?.?rB   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
dask.arraydata-dependent output shapesc                   *    e Zd Zd Zd Zd Zd Zd Zy)TestChebWinc           	         t               5 }|j                  t        d       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This window is not suitabler3   d   r?   )}	ɺ?L >?rB   rB   r   r   r8   r_   r[   r>   )S?D1mPC?%5R?rB   r   r   r   
   )rB   TEm?	-o?r   r   rB   )rB   F3?NO?	r]?r   r   rB   F)rB   r   r   r   r   r   )r   filterUserWarningr
   r   r)   rC   rD   )rF   r6   sups      rG   rH   zTestChebWin.test_basic  sQ     	PCJJ{$AB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E))E2c                     t               5 }|j                  t        d       t        j                  dd|      }d d d        t        |j                  t              d       y # 1 sw Y   +xY w)Nr   5   atr6   r   decimal)r   r   r   r   r)   r   rC   cheb_odd_true)rF   r6   r   cheb_odds       rG   test_cheb_odd_high_attenuationz*TestChebWin.test_cheb_odd_high_attenuation"  sW      	:CJJ{$ABrcb9H	: 	"(BJJ},EqQ	: 	:   /A$$A-c                     t               5 }|j                  t        d       t        j                  dd|      }d d d        t        |j                  t              d       y # 1 sw Y   +xY w)Nr   6   (   r   r   r   )r   r   r   r   r)   r   rC   cheb_even_true)rF   r6   r   	cheb_evens       rG   test_cheb_even_high_attenuationz+TestChebWin.test_cheb_even_high_attenuation(  sX      	:CJJ{$ABrb9I	: 	")RZZ-GQRS	: 	:r   c                     |j                  g d|j                        }t               5 }|j                  t        d       t        j                  dd|      }d d d        t        |d       y # 1 sw Y   xY w)	N)rB   m?燿&k?gc[?r  r  rB   r8   r   r>   r   r   r   r   rC   rD   r   r   r   r   r)   r   )rF   r6   cheb_odd_low_at_truer   r   s        rG   test_cheb_odd_low_attenuationz)TestChebWin.test_cheb_odd_low_attenuation.  sr    !zz +5<>JJ  *  H   	8CJJ{$ABqRB7H	8 	"(,@!L	8 	8   /A00A9c                     |j                  g d|j                        }t               5 }|j                  t        d       t        j                  dd|      }d d d        t        |d       y # 1 sw Y   xY w)	N)rB   R?N(D!T?#R?r  r  r  rB   r8   r      ir   r   r   r  )rF   r6   cheb_even_low_at_truer   r  s        rG   test_cheb_even_low_attenuationz*TestChebWin.test_cheb_even_low_attenuation7  ss     "

 ,@GIzz !+ !S   	:CJJ{$ABcb9I	: 	")-BAN	: 	:r
  N)rK   rL   rM   rH   r   r  r	  r  r   rI   rG   r   r     s     P8RTMOrI   r   )|dy?vS?{?rB   r  )1B?%?r  r  )́R?8,6V?rB   r  )\Kr?
oh?r  r  )r  r  rB   r  r  )r  r  rB   r  r  ))r   N皙?F)r   Nr  T)r   NrB   F)r   NrB   T)r   r#   r  F)r   r#   r  T)r   r#   rB   F)r   r#   rB   T)rq   Nr  T)rq   NrB   T)rq   r#   r  T)rq   r#   rB   Tc                     t         j                         D ]\  \  }}|#t        t        t        j
                  g|d| i +t	        j
                  |d| i}t        || j                  |      d       ^ y )Nr6   rZ   r<   )exponential_dataitemsassert_raises
ValueErrorr   r,   r
   rC   )r6   kvwins       rG   test_exponentialr$  ^  sf     &&( <19*g&9&9EAE"E%%q0R0CCAU;<rI   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 )Nr3   Fr4   )bF;s*?dR	p^?rB   r*  r)  r8   r>   )r(  `p|ܢ?J?r-  r,  r+  r?   )r(  <#U_&k?r/  r.  r(  T)r(  r)  r*  rB   r*  r)  r(  )r
   r   r   rC   rD   rE   s     rG   rH   zTestFlatTop.test_basici  s    u<

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

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

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

 $M+-:: # 7	8rI   NrJ   r   rI   rG   r&  r&  g  s    8rI   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 )Nr3   rB   r?   )|~?w$?"$j=?r5  r4  r3  r8   r>   g333333?)r3  
"?;eܜ?rB   r7  r6  r3     )r  ?yLE?rB   r:  r9  r  F)r  r9  r:  rB   r:  r9  )r
   r   r$   rC   rD   rE   s     rG   rH   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rI   NrJ   r   rI   rG   r1  r1  }  s    LrI   r1  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   )rQ   r?  r!   r?  rQ   r8   r   F)r5   rQ   r?  r!   r?  )rC   r
   r   general_cosinerD   )rF   r6   as      rG   rH   zTestGeneralCosine.test_basic  s|    JJ'..q!4

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

#5RZZ
H	JrI   NrJ   r   rI   rG   r<  r<    s    JrI   r<  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?r?   rQ   rF  rB   rF  rQ   r8         ?Fr4   )r&   y&"?x?rJ  rI  r3   T)r&   rI  rJ  rJ  rI  r&   )r
   r   general_hammingrC   rD   rE   s     rG   rH   zTestGeneralHamming.test_basic  s    //32>

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

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

 $ELNJJ # X	YrI   NrJ   r   rI   rG   rD  rD    s    YrI   rD  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 )Nr3   Fr?   ){Gz?ףp=
?p=
ף?rB   rQ  rP  r8   r>   r4   )rO  CW4?	/5?4Cъ?rT  rS  rR  )rO  6 iv?P0?rV  rU  rO  T)rO  rP  rQ  rB   rQ  rP  rO  )r
   r   r   rC   rD   rE   s     rG   rH   zTestHamming.test_basic  s    5R8

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

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

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

#L)+ # 5	6rI   NrJ   r   rI   rG   rM  rM    s    6rI   rM  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 )Nr3   Fr4   )r         ?rH  rB   rH  rZ  r8   r:   r;   r>   )r   \$:?H`r?8T^j?r]  r\  r[  Tr?   r   Xhd?Tͻ?r`  r_  r   r   rZ  rH  rB   rH  rZ  r   )r
   r   r+   rC   rD   rE   s     rG   rH   zTestHann.test_basic  s    QEb9

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

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

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

#F jj # *"	0rI   NrJ   r   rI   rG   rX  rX    s    0rI   rX  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 )Nr3   r&   r?   )l?<3N?i>%?rg  rf  re  r8   r>   )re  	$?6?rB   ri  rh  re  g@)§Aը?O F?$?rl  rk  rj  )rj  *'?=a?rB   rn  rm  rj  F)rj  rm  rn  rB   rn  rm  )r
   r   r   rC   rD   rE   s     rG   rH   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rI   NrJ   r   rI   rG   rc  rc    s    LrI   rc  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&         @betar6   r   )zkaiser bessel derivedrr  Ffftbinsr6   r#   r8   r!   g       @r   gU?gU3|\?r3   r8  )gHZ1?gKf?g"iF5?)r   kaiser_bessel_derivedr   rC   r   r
   onesshaper9   r   pi	ones_liker   sqrtrD   )rF   r6   r   Mw2actualdesireds          rG   rH   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	6rI   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!   rr  rs  zCKaiser-Bessel Derived windows are only defined for symmetric shapesF)rt  r5   r6   )r  r   r   rw  )rF   r6   r}  msgs       rG   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)rK   rL   rM   rH   r  r   rI   rG   rp  rp    s    6>LrI   rp  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 )Nr3   Fr4   )A"7?v;O<g?$2bUs?rB   r  r  r8   r>   )r  gx&yxXW?g??絑?r  g??g&yxXW?r?   )r  gEJ?g=`T?g>`T?gEJ?r  T)r  r  r  rB   r  r  r  )r
   r   r   rC   rD   rE   s     rG   rH   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rI   NrJ   r   rI   rG   r  r  &  s    YrI   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 )Nr3   r?   )e/?rZ  88?r  rZ  r  r8   r>   Tr4   )%OZQ%w?2|&?݁?rB   r  r  r  F)r  r  r  rB   r  r  )r
   r   r   rC   rD   rE   s     rG   rH   zTestParzen.test_basic=  s    qR0

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

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

 $8?Azz # K	LrI   NrJ   r   rI   rG   r  r  ;  s    LrI   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 )Nr3   Tr?   )UUUUUU?r&   竪?r  r&   r  r8   r>   )rZ  r&   rH  r!   rH  r&   rZ  Fr4   )rZ  r&   rH  r!   rH  r&   )r
   r   r   rC   rD   rE   s     rG   rH   zTestTriang.test_basicO  s    q$26

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

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

#?rzz
R	TrI   NrJ   r   rI   rG   r  r  M  s    TrI   r  )r   r&   T)        rB   rB   r  )r   ?T)r  ?r  r  )r   rB   T)r  rH  rH  r  )r   r&   F)r  rB   rB   rB   )r   r  F)r  rnOC?rB   r  )r   rB   F)r  r&   rB   r&   )rq   r  T)rB   rB   rB   rB   rB   )rq   rR   T)r  Yx?rB   r  r  )rq   rB   T)r  r&   rB   r&   r  )r3   r   r   )r>   r   r   )r3   rZ  )r  r!   r!   r!   r!   r   )r>   rZ  )r  r!   r!   r!   r!   r!   r   r3   )r   r`  rB   rB   gRͻ?r   )r>   )r   rH  rB   rB   rB   rH  r   r3   rH  )r   gxų	&?rB   rB   gvų	&?r   r>   rH  )r   g#}`yq?)!?rB   r  g#}`yq?r   r^  ra  )r3   r!   )r>   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 )	Nr6   )r  r  r  r  g+i)+`>r_   r;   r:   check_dtypeF)	
tukey_datar  r  r   r   r.   r   r
   rC   )rF   r6   r!  r"  	atol_rtolr#  s         rG   rH   zTestTukey.test_basicx  s    $$& 	@DAqyj'--C!CCB<A)J$J*.!=Y*/!@YmmQ.2.RZZ] @,1@5>@	@rI   c                     t        j                  dd|      }t        j                  d|      }t        ||       t        j                  dd|      }t        j                  d|      }t        ||       y )Nr   r   r?   r!   )r   r.   r   r
   r+   )rF   r6   tuk0box0tuk1han1s         rG   test_extremeszTestTukey.test_extremes  sZ    }}S!+~~cb)d#}}S!+||CB'd#rI   N)rK   rL   rM   rH   r  r   rI   rG   r  r  v  s    @$rI   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#   )r8  gffffff?r8  )rq   r(   rq   )r   r#   r   Tz#banded linear algebra is numpy-onlynp_onlyrl   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_ratiosr6   r   gHz>)r=   err_msgr!   gh㈵>)r<   r=   r%  )	dpss_datar  r   r"   r
   )rF   r6   r!  r"  r#  ratioss         rG   rH   zTestDPSS.test_basic  sZ    OO% 	KDAq!,,"EKCC1D!<FAaDt$J	KrI   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 @r?   r#   rB   )r%  	subsamplerz   gQ?r  r   )ranger   r"   r   r   r   sumr
   )rF   r6   r}  r#  expectedwin_subwin_2s          rG   
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-!	-rI   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   r3   r   Tr#  r!   r>   r  )r   r"   r
   r{  )rF   r6   lams      rG   r  zTestDPSS.test_extremes  s    ll2q!4B?BR\\#./ll2q!4B?BR\\#./ll2q!4B?BR\\#./rI   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(   皙?r8  r   r!   )r  r   r   r"   	TypeErrorrE   s     rG   test_degeneratezTestDPSS.test_degenerate  s    j',,3;j',,3;iq#s;j',,3:j',,2q9j',,1a8j',,Aq9rI   T)r  c                 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!   rB   T)r$  r   )Kmaxr$  r(   r5  r?   r6  r7  r8  r   )	r   r"   r   
isinstancer   ndarrayr  r   r8  )rF   r6   r   ratios       rG   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@rI   N)	rK   rL   rM   rH   r0  r  r9  r   r?  r   rI   rG   r!  r!    s2    K-*0: d#A $ArI   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 )Nr3   Fr4   r  qϾv?;Fv?rB   rE  rD  r8   &.>r[   r?   r  uH%?;9?rI  rH  r  r>   T)r  rD  rE  rB   rE  rD  r  )r
   r   r/   rC   rD   rE   s     rG   rH   zTestLanczos.test_basic  s     	u<

 $18:

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

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

 $5<>JJ # H "		#rI   c                     dD ]V  }t        j                  |d|      j                  d   |k(  sJ t        j                  |d|      j                  d   |k(  rVJ  y )N)r   r      Fr4   r   T)r   r/   ry  )rF   r6   ns      rG   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rI   N)rK   rL   rM   rH   rM  r   rI   rG   rA  rA    s    #2ErI   rA  c                       e Zd Zd Z edd       edd      d               Z edd       edd      d               Z ed	d
      d        Zd Zd Z	 e
d	d      d        Zd Zd Zd Zd Zy)TestGetWindowc                     t        j                  dd|      }t        ||j                  |             t        j                  dd|      }t        ||j                  |             y )Nr      r?   )r      )r   r   r   r{  )rF   r6   r   s      rG   test_boxcarzTestGetWindow.test_boxcar  sP    x32<<?+ {B262<<?+rI   ri   rj   rk   r   r   c                     t               5 }|j                  t        d       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   Fru  r8   r   r   )	r   r   r   r   r   r   rC   r   rD   rF   r6   r   r   s       rG   test_cheb_oddzTestGetWindow.test_cheb_odd  sm       	OCJJ{$AB""#3R2NA	O 	"rzz-rzzz:A	
	O 	Os   0A11A:c                     t               5 }|j                  t        d       t        j                  ddd|      }d d d        t        |j                  t              d       y # 1 sw Y   +xY w)Nr   )r)   r   r   Fru  r   r   )r   r   r   r   r   r   rC   r  rU  s       rG   test_cheb_evenzTestGetWindow.test_cheb_even  sa       	NCJJ{$AB""?B"MA	N 	"!RZZ%?K	N 	Ns   0A%%A.Tzeigh_tridiagonal is CPU-only)r   rl   c                     t        j                  ddd|      }t        j                  dd|      }t        ||d       y )	N)r"   r8  @   Fru  r8  r?   r   r   )r   r   r"   r   rF   r6   win1win2s       rG   	test_dpsszTestGetWindow.test_dpss"  s6    !!+r5RH||Bb)!$a8rI   c                 ~    t        j                  dd|      }t        j                  ddd|      }t        ||       y )Ng@rZ  r?   F)r   r   r   r
   r[  s       rG   test_kaiser_floatzTestGetWindow.test_kaiser_float(  s4    !!#rb1~~b#u4d#rI   c                     t        t        t        j                  t	        d      d|       t        t        t        j                  dd|       y )Nr+   r  r?   brokenr   )r  r   r   r   setrE   s     rG   test_invalid_inputsz!TestGetWindow.test_invalid_inputs-  s4    j'"4"4c&k1L 	j'"4"4hbIrI   z#TODO: make resample array API readyr  c                     d}|j                  d      }t        j                  d|dz  |      }t        t        d      5  t        |t        |      |z  |       d d d        y # 1 sw Y   y xY w)N   )r   g       @r#   r?   z^window.shape=r  )window)aranger   r   r  r   r	   len)rF   r6   osfactorsigr#  s        rG   test_array_as_windowz"TestGetWindow.test_array_as_window4  sc     iin  (a-BG:-=> 	;S#c(X-c:	; 	; 	;s    A$$A-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)
NrA  r>  r   r@  r8   F)rv  )rQ   皙?rn  rQ   r?   )r
   r   rC   rD   pytestr   r   rE   s     rG   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)rK  rF  rq   r?   )rQ   жn?男*?rs  rr  r8   Fru  rG  r
   r   rC   rD   rE   s     rG   test_general_hammingz"TestGetWindow.test_general_hammingH  s`    
#;Q2F

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

#<BJJ
O	QrI   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 )Nr/   r3   r?   rC  r8   rF  r[   Fru  rG  sincrt  rE   s     rG   test_lanczoszTestGetWindow.test_lanczosO  s    
9aB7

 $18:

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

 $5<>JJ # HNR	T 	
9aB7"614	6rI   c                     t        dd      }t        |t        j                        sJ t        dd|      }t	        |      st        |t        j                        rJ y y )Nr/   r3   r?   )r   r<  r   r=  r   )rF   r6   r#  s      rG   test_xp_defaultzTestGetWindow.test_xp_defaultY  sS    A&#rzz***A"-|!#rzz2222 rI   N)rK   rL   rM   rS  r   rV  rX  r^  r`  rd  xfail_xp_backendsrl  rp  ru  rx  rz  r   rI   rG   rO  rO    s    , k*;<l+IJ
 K =
 k*;<l+IJL K =L t,JK9 L9
$
J t,QR; S;FQ63rI   rO  z(https://github.com/dask/dask/issues/2620c           
      	   t         D ]i  \  }}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               5 }|j                  t        d	        |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        l y # 1 sw Y   xxY w)N)r-   r)   zwindow_name = : item assignmentrk   )r"   z'dpss window is not implemented for cupycpuz)needs eight_tridiagonal which is CPU onlyr   r  Tr4   r>   Fr5  	   r3   r   g      @r6   ir8   r!   rB   r   g)\(?rZ   r[   rK  )window_funcsgetattrr   r   ro  skipr   r   r   r   r   r   r
   ry  r  r   r   rC   rD   r9   allr   imag
zeros_like)r6   window_nameparamsrg  r   w1r~  ress           rG   test_windowfunc_basicsr  c  s   + >AV+.":+)>>KK.+!11BCD("r{#LM| 5#NO  4	ACJJ{$AB4F44B5F5"5BBsGR(4F44B5F5"5BBsGR( !6f6$26<<Q?1DDD!7f7%B7==a@AEEE!6f6$26<<Q?1DDD!7f7%B7==a@AEEE *fcBFBrB*fbA6AbA F1?v?4B?JJrJ<>F1@v@5R@JJrJ<>F1?v?4B?JJt2::J>@F1@v@5R@JJt2::J>@ !6f6$26<<

JJJ!7f7%B7==KKK!6f6$26<<

JJJ!7f7%B7==KKK!6f6$26<<

JJJ!7f7%B7==KKK 66&>f>$2>EFFF66&?f?%B?$FGGG66&=V="=DEEE66&>V>2>EFFF fR;&;e;<C''#,CCs!3%@fR;&;e;<C''#,CCs!3%@i4	A 4	A>A4	A 4	As    O	Q55Q?	c                 B    dD ]  }t        t        t        |d|         y )N)r   ksrrw  kbdr$   gaussgsszgeneral gaussianr'   zgeneral gaussgeneral_gaussggsdssr"   zgeneral cosinerA  r)   chebzgeneral hammingrK  r>   r?   )r  r   r   )r6   winstrs     rG   test_needs_paramsr    s'     @ 	j*faB?@rI   )r   r   r   r   r   r   r*   r   r   r   r   r-   r,   poissonr.   tuktriangler/   rw  r  c                     t        |       r|dv rt        j                  | d       t        |d|       }|j                  d   dk(  sJ y )N)r-   r}  rk   r>   r?   r   )r   ro  r  r   ry  )r6   r  r#  s      rG   test_not_needs_paramsr    sH    bzf
*fX%678
VQ2
&C99Q<1rI   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   r?   r  F)r  check_0di  )r   r/   r   flipr   r   r   rC   )r6   r#  r   r  errors        rG   test_symmetricr    s      
Sq!&&rvva$q'k*+rzz#EER rvva$q'k*+rzz#EER
SrI   )@r   numpyr   r   numpy.testingr   ro  r   r  	scipy.fftr   scipy.signalr   r   r	   scipy._lib._array_apir
   r   r   r   r   r   r   r   r   markr   r{  r  r1   rO   rV   rc   rn   r   r   r   r  r   r  r$  r&  r1  r<  rD  rM  rX  rc  rp  r  r  r  r  r  r&  r!  rA  rO  r  r  _winstrparametrizer  r  r   rI   rG   <module>r     s      +  *  6 6  
 ;;// KK11 40 0 T T7 7,K K( +&78L: L: 9L:^7 7"L L0( +&78,'EF:O :O G 9:O~ 	 ( 	)   !J K  "7 8 !K L 	 A 	B 4 5 A 	B   !J K3 :<8 8,L L0	J 	J
Y 
Y6 6(0 0.L L:-L -L`Y Y*L L$	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
:$ $@ 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	 $'LMDA DA NDANE EBZ3 Z3z ,'QR?A S?AD@, 7+ ,SrI   