
    (ph                        S r SSKrSSKJr  SSKJr  SSKJrJrJ	r	J
r
Jr  SSKrS rS rS rS	 r\R$                  R&                  S
 5       rS rS r\R$                  R/                  S/ SQ/ SQ\R0                  " \R2                  " / SQ5      \R4                  " S5      45      45      \R$                  R/                  SS5      \R$                  R/                  SS5      \R$                  R/                  SS5      S 5       5       5       5       rS rS r\R$                  R/                  S\
S4\S4/5      S 5       rS r\R$                  R/                  S/ SQ5      S  5       r \R$                  R/                  S!/ S"Q5      S# 5       r!g)$z
A unit test module for czt.py
    N)xp_assert_close)fft)cztzoom_fft
czt_pointsCZTZoomFFTc                     [        U 5      n[        U 5      n[        X!SS9  [        U S[        U 5      -  5      n[        U S[        U 5      -  5      n[        X!SS9  g )NvIh%<=rtold   -q=)r   r   r   len)xyy1s      N/var/www/html/venv/lib/python3.13/site-packages/scipy/signal/tests/test_czt.py	check_cztr      sR    AA	QBB& 	As3q6zA	QCF
	BB&    c           	         [        U 5      n[        U SSS[        U5      -  -
  /SS9n[        X!SSS9  [        U SS/5      n[        X!SSS9  [        U SS[        U5      -  -
  SS9n[        X!SSS9  [        U S5      n[        X!SSS9  S	n[        X[        U 5      -  5      n[        U SSS[        U5      -  -
  /[        U5      SS
9n[        XTSSS9  [        U SS/[        U5      S9n[        XTSSS9  [        R
                  " SSS[        U 5      -  -
  [        U 5      5      nUS   US   p[        XU/SU-  S-   SS
9n	[        SU-  SU-  S-   5      n
[        XU
   SS9  g )Nr             @Tendpointdy=g+=r   atol
   )mr   r   绽|=r             r   r   )r   r   r   r   nplinspaceslice)r   r   r   overyovery2wf1f2y3idx3s              r   check_zoom_fftr1      sp   AA	!a2c!f9%	5BBE2	!aV	BBE2 
!Qr#a&y[4	0BBE2	!QBBE2 DA;E	!a2c%j=)SZ$	GBBE6	!aVs5z	*BBE6 	AqCF{CF+AqT1Q4	!"X4D	9B44"DBd%0r   c                  p   [         R                  R                  S5      n U R                  SSS5      n[         R                  " US5        U H*  nU R                  U5      n[        U5        [        U5        M,     [         R                  " SSS5      n[         R                  " US-  * S	-  5      n[        U5        / S
Qn[        U5        [        [        S5      5        [        [        S5      5        [        [        S5      5        [        [        S5      5        [        [        S5      5        [         R                  " [         R                  " S5      S5      n[        USS/5      n[        USSS S 24   SS/5      n[        US   USSS9  [        USS/SS9n[        USSS S 24   SS/SS9n[        US   USSS9  U R                  S5      n[        U5        [         R                  " SSS5      n[         R                  " S[         R                   -  U-  S-  5      [         R                  " S[         R                   -  U-  S-  5      -   n[        U5        [         R"                  " S[$        S9nSU/ SQ'   [        U5        US[         R                  " SS UR&                  S   5      -  -  n[        U5        g )!Nr            r%   r      g{Gz?)r%   r   r#         r$      _   `   a   b   c      )r#   r      gm۶m?)r   r   r   r   r   Fr   e   r9      r   dtype)r%   r9      y              ?      ?)r&   randomRandomStaterandintappendr1   r   r'   exprangereshapearanger   r   randsinpizeroscomplexshape)rnglengthslengthr   tr   r+   s          r   test_1DrZ   7   s9    ))


"C kk!S"%GIIgqJJvq!  	B3A
1uTzA1 	A1 5=!5=!5=!5=!5=! 	

299V$j1A	!a\	"B	!Aq!G*q'l	+BBtHbu59	!aVe	,B	!Aq!G*q!fu	5BBtHbu59 	A1 	Aq#A
qwqy{BFF1RUU719R<00A1 	G$AAjM1 BKK3
+	++A1r   c                      [         R                  R                  S5      n S H4  nU R                  U5      n[	        U5      n[        U5      n[        X4SS9  M6     g )Nr   )rB   i  '  r   r   )r&   rH   rI   rP   r   r   r   )rV   Nr   r   r   s        r   test_large_prime_lengthsr^   q   sI    
))


"CHHQKFVE*	  r   c                      [         R                  R                  S5      n U R                  SSS9R	                  S5      nU H1  nU R                  U5      n[        [        U5      [        U5      SS9  M3     g )N{   i r   sizeintr   r   )	r&   rH   rI   exponentialastyperandnr   r   r   )rV   random_lengthsnas       r   test_czt_vs_fftrj   z   s^    
))


$C__V"_5<<UCNIIaLAAU3 r   c                      [         R                  " [        SS9   [        / 5        S S S 5        [         R                  " [        SS9   [	        / S5        S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)NInvalid number of CZTmatchrG   )pytestraises
ValueErrorr   r    r   r   test_empty_inputrs      sQ    	z)@	AB 
B	z)@	AS 
B	A 
B	A	A	A   AA.
A+.
A<c                      [         R                  " [        SS9   [        S5        S S S 5        [         R                  " [        SS9   [	        SS5        S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nztuple index out of rangerm   r9   rG   )ro   rp   
IndexErrorr   r   rr   r   r   test_0_rank_inputrw      sQ    	z)C	DA 
E	z)C	DC 
E	D 
E	D	D	Drt   impulse)r   r   r%   )r   r   r%   r   r   r   r    )r%   r#   r9   r3   rB   i  ri   )r%   r   rG   g?r,   )Nyn?1*?c           	          [        [        U SS  XUS9[        R                  " U[        R                  S9SS9  [        [        U SS  XUS9[        XUS9S-  SS9  [        [        XX#S9[        XUS9S-  SS9  g )	Nr   r    r,   ri   rD   r!   r   r%   r6   )r   r   r&   ones
complex128r   )rx   r    r,   ri   s       r   test_czt_mathr~      s     Cq3GGAR]]3%A Cq31-r1? C/1-r1?r   c            
          [        [        [        SS/SSS95      S[        R                  " S5      -  SS9  [        [        S	SS
9SS[        R                  " S	[        R                  S9-  -  SS9  g )Nr   r%   r   r   )r    ri   rG   gV瞯<r      r,   rD   KH9)r   absr   r&   r|   r   rO   r}   rr   r   r   test_int_argsr      s\    CQFbA./RWWR[uMJrQ'q"))Bbmm<<=EKr   c            
         S HV  n [        [        U 5      [        R                  " S[        R                  -  [        R
                  " U 5      -  U -  5      SS9  MX     [        [        SSS9[        R                  " S[        R                  S9SS9  [        [        S	S
S9SS[        R
                  " S	[        R                  S9-  -  SS9  [        SS	S
SS9n[        UR                  5       SS[        R
                  " S	5      -  -  SS9  g )N)r%   r   r#   r3   r   r   rB   r\   y               @r   r   r:   r%   r   rD   r   r   r      rz   )
r   r   r&   rL   rR   rO   r|   r}   r   points)r]   funcs     r   test_czt_pointsr      s    .
1rvvbhryy|.CA.E'F"	$ / JqA&(GeTJrR(q"))Bbmm<<=EK rR2#DDKKM1a2&6#7eDr   z	cls, args)r   )r   皙?c                     U " U6 n[         R                  " [        SS9   U" [        R                  " S5      5        S S S 5        g ! , (       d  f       g = f)NzCZT defined forrm   r9   )ro   rp   rq   r&   rO   )clsargsmyfuncs      r   test_CZT_size_mismatchr      s8     $ZF	z):	;ryy| 
<	;	;s   A
Ac                      [         R                  " [        SS9   [        S/ SQ5        S S S 5        g ! , (       d  f       g = f)Nz2-length sequencerm   r   r%   r   r#   )ro   rp   rq   r	   rr   r   r   test_invalid_ranger      s'    	z)<	=Y 
>	=	=s	   2
A )r   ig      @      @c                     [         R                  " [        SS9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nrl   rm   )ro   rp   rq   r   r"   s    r   test_czt_points_errorsr      s'     
z)@	A1 
B	A	As   /
=rb   )r   g      @r   c                    [         R                  " [        SS9   [        U S5        S S S 5        [         R                  " [        SS9   [	        U SS5        S S S 5        [         R                  " [        SS9   [        SU 5        S S S 5        [         R                  " [        SS9   [	        SSU 5        S S S 5        [         R                  " [        SS9   [        / SQU 5        S S S 5        [         R                  " [        SS9   [        / SQSU 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nrl   rm   r#   r   r   )ro   rp   rq   r   r	   r   r   ra   s    r   test_nonsense_sizer      s     
z)@	AD! 
B	z)@	Ac1 
B	z)@	AAt 
B	z)@	A3 
B	z)@	AIt 
B	z)@	AC& 
B	A 
B	A	A	A	A	A	A	A	A	A	A	AsG   DD.7D?%EE!E2
D+.
D<?
E
E!
E/2
F )"__doc__ro   scipy._lib._array_apir   	scipy.fftr   scipy.signalr   r   r   r   r	   numpyr&   r   r1   rZ   r^   markslowrj   rs   rw   parametrizeconcatenatearrayrS   r~   r   r   r   r   r   r   rr   r   r   <module>r      s    1  B B 	'1<7t+ 4 4 Y%'^^RXXi5H57XXc]5D &E%F G 56./ 89? : 0 7G?K
E V}w
6K&LM N 
 01 2 !23' 4'r   