
    tKgQ                        d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZ ddlZd Zd Zd Zd	 Zej$                  j&                  d
        Zd Zd Zej$                  j/                  dg dg d ej0                   ej2                  g d       ej4                  d      f      f      ej$                  j/                  dd      ej$                  j/                  dd      ej$                  j/                  dd      d                             Zd Zd Zej$                  j/                  de
dfedfg      d        Zd Zej$                  j/                  dg d      d         Z ej$                  j/                  d!g d"      d#        Z!y)$z
A unit test module for czt.py
    N)assert_allclose)fft)cztzoom_fft
czt_pointsCZTZoomFFTc                     t        |       }t        |       }t        ||d       t        | dt        |       z        }t        | dt        |       z        }t        ||d       y )NvIh%<=rtold   -q=)r   r   r   len)xyy1s      _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/signal/tests/test_czt.py	check_cztr      sV    AA	QBB& 	As3q6zA	QCF
	BB&    c           	         t        |       }t        | dddt        |      z  z
  gd      }t        ||dd       t        | ddg      }t        ||dd       t        | ddt        |      z  z
  d      }t        ||dd       t        | d      }t        ||dd       d	}t        | |t        |       z        }t        | dddt        |      z  z
  gt        |      d
      }t        ||dd       t        | ddgt        |            }t        ||dd       t	        j
                  dddt        |       z  z
  t        |             }|d   |d   }}t        | ||gd|z  dz   d
      }	t        d|z  d|z  dz         }
t        |	||
   d       y )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      s   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4A;E	!a2c%j=)SZ$	GBBE6	!aVs5z	*BBE6 	AqCF{CF+AqT1Q4B	!b"X4D	9B44"DBd%0r   c                     t         j                  j                  d       t         j                  j                  ddd      } t        j                  | d       | D ]7  }t         j                  j                  |      }t        |       t        |       9 t        j                  ddd      }t        j                  |dz   d	z        }t        |       g d
}t        |       t        t        d             t        t        d             t        t        d             t        t        d             t        t        d             t        j                  t        j                  d      d      }t        |ddg      }t        |ddd d f   ddg      }t        |d   |dd       t        |ddgd      }t        |ddd d f   ddgd      }t        |d   |dd       t         j                  j                  d      }t        |       t        j                  ddd      }t        j                  dt         j                   z  |z  dz        t        j                  dt         j                   z  |z  dz        z   }t        |       t        j"                  dt$              }d|g d<   t        |       |dt        j                  dd |j&                  d         z  z  }t        |       y )!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seedrandintappendr1   r   r'   exprangereshapearanger   r   randsinpizeroscomplexshape)lengthslengthr   tr   r+   s         r   test_1DrX   7   sF    IINN1 ii3+GIIgqIIV$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 			sA1 	Aq#A
qwqy{BFF1RUU719R<00A1 	G$AAjM1 BKK3
+	++A1r   c                      t         j                  j                  d       dD ]E  } t         j                  j                  |       }t	        |      }t        |      }t        ||d       G y )Nr   )rB   i  '  r   r   )r&   rG   rH   rO   r   r   r   )Nr   r   r   s       r   test_large_prime_lengthsr\   q   sL    IINN1IINN1FV2E*	  r   c                  .   t         j                  j                  d       t         j                  j                  dd      j	                  d      } | D ]A  }t         j                  j                  |      }t        t        |      t        |      d       C y )N{   i r   sizeintr   r   )	r&   rG   rH   exponentialastyperandnr   r   r   )random_lengthsnas      r   test_czt_vs_fftrh   z   sf    IINN3YY**6*;BB5INIIOOAAAU3 r   c                      t        j                  t        d      5  t        g        d d d        t        j                  t        d      5  t	        g d       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)NInvalid number of CZTmatchrF   )pytestraises
ValueErrorr   r    r   r   test_empty_inputrq      sQ    	z)@	AB 
B	z)@	AS 
B	A 
B	A	A	A   A!A-!A*-A6c                      t        j                  t        d      5  t        d       d d d        t        j                  t        d      5  t	        dd       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)Nztuple index out of rangerk   r9   rF   )rm   rn   
IndexErrorr   r   rp   r   r   test_0_rank_inputru      sQ    	z)C	DA 
E	z)C	DC 
E	D 
E	D	D	Drr   impulse)r   r   r%   )r   r   r%   r   r   r   r    )r%   r#   r9   r3   rB   i  rg   )r%   r   rF   g?r,   )Nyn?1*?c                    t        t        | dd  |||      t        j                  |      d       t        t        | dd  |||      t	        |||      dz  d       t        t        | |||      t	        |||      dz  d       y )Nr   r    r,   rg   r!   r   r%   r6   )r   r   r&   onesr   )rv   r    r,   rg   s       r   test_czt_mathr{      s     CqA3GGAJU, CqA3a1-r1? C1Q/a1-r1?r   c            	          t        t        t        ddgdd            dt        j                  d      z  d       t        t        d	d
      ddt        j                  d	      z  z  d       y )Nr   r%   r   r   )r    rg   rF   gV瞯<r      r,   KH9)r   absr   r&   rz   r   rN   rp   r   r   test_int_argsr      sQ    CQFbA./RWWR[uMJrQ'Aryy},<)=EJr   c            
         dD ]V  } t        t        |       t        j                  dt        j                  z  t        j
                  |       z  | z        d       X t        t        dd      t        j                  d      d       t        t        dd	      dd
t        j
                  d      z  z  d       t        ddd	d      }t        |j                         dd
t        j
                  d      z  z  d       y )N)r%   r   r#   r3   r}   r   rB   rZ   y               @r   r   r:   r%   r~   r}   r   r      rx   )	r   r   r&   rK   rQ   rN   rz   r   points)r[   funcs     r   test_czt_pointsr      s    .
1rvvbhryy|.CA.E'F"	$ / JqA&
?JrR(!Q		"-=*>UKrR2#DDKKM1a2&6#7eDr   z	cls, args)r   )r   皙?c                      | | }t        j                  t        d      5   |t        j                  d             d d d        y # 1 sw Y   y xY w)NzCZT defined forrk   r9   )rm   rn   ro   r&   rN   )clsargsmyfuncs      r   test_CZT_size_mismatchr      s8     $ZF	z):	;ryy| 
<	;	;s   AAc                      t        j                  t        d      5  t        dg d       d d d        y # 1 sw Y   y xY w)Nz2-length sequencerk   r   r%   r   r#   )rm   rn   ro   r	   rp   r   r   test_invalid_ranger      s'    	z)<	=Y 
>	=	=s   4=)r   ig      @      @c                 z    t        j                  t        d      5  t        |        d d d        y # 1 sw Y   y xY w)Nrj   rk   )rm   rn   ro   r   r"   s    r   test_czt_points_errorsr      s'     
z)@	A1 
B	A	As   1:r`   )r   g      @r   c                    t        j                  t        d      5  t        | d       d d d        t        j                  t        d      5  t	        | dd       d d d        t        j                  t        d      5  t        d|        d d d        t        j                  t        d      5  t	        dd|        d d d        t        j                  t        d      5  t        g d|        d d d        t        j                  t        d      5  t        g dd|        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   y xY w)Nrj   rk   r#   r   r   )rm   rn   ro   r   r	   r   r   r_   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)D6=E-EEE&)D36D?EEE#&E/)"__doc__rm   numpy.testingr   	scipy.fftr   scipy.signalr   r   r   r   r	   numpyr&   r   r1   rX   r\   markslowrh   rq   ru   parametrizeconcatenatearrayrR   r{   r   r   r   r   r   r   rp   r   r   <module>r      s    )  B B 	'1<7t+ 4 4 Y%3R^^XRXXi5H5=RXXc]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   