o
    ?Hh                     @   sb  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d Zdd	 Zd
d Zdd Zejjdd Zdd Zdd Zejdg dg deeg dedffejddejddejdddd Zd d! Zd"d# Zejd$e
d%fed&fgd'd( Zd)d* Zejdg d+d,d- Z ejd.g d/d0d1 Z!dS )2z
A unit test module for czt.py
    N)xp_assert_close)fft)cztzoom_fft
czt_pointsCZTZoomFFTc                 C   sT   t | }t| }t||dd t | dt|  }t| dt|  }t||dd d S )NvIh%<=rtold   -q=)r   r   r   len)xyy1 r   [/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/signal/tests/test_czt.py	check_czt   s   r   c                 C   s  t | }t| dddt|  gdd}t||ddd t| ddg}t||ddd t| ddt|  dd}t||ddd t| d}t||ddd d	}t | |t|  }t| dddt|  gt|dd
}t||ddd t| ddgt|d}t||ddd tdddt|   t| }|d |d }}t| ||gd| d dd
}	td| d| d }
t|	||
 dd d S )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idx3r   r   r   check_zoom_fft   s(   
$r.   c                  C   s  t jd} | ddd}t |d |D ]}| |}t| t| qt ddd}t |d  d	 }t| g d
}t| tt	d tt	d tt	d tt	d tt	d t 
t dd}t|ddg}t|ddd d f ddg}t|d |ddd t|ddgdd}t|ddd d f ddgdd}t|d |ddd | d}t| t ddd}t dt j | d t dt j | d  }t| t jdtd}d|g d< t| |dt dd |jd  7 }t| d S )!Nr            r"   r      g{Gz?)r"   r   r          r!      _   `   a   b   c      )r    r      gm۶m?)r   r   r	   r   r   Fr   e   r5      r   dtype)r"   r5      y              ?      ?)r#   randomRandomStaterandintappendr.   r   r$   exprangereshapearanger   r   randsinpizeroscomplexshape)rnglengthslengthr   tr   r(   r   r   r   test_1D7   sD   

 
0rV   c                  C   sB   t jd} dD ]}| |}t|}t|}t||dd qd S )Nr   )r>   i  '  r   r
   )r#   rD   rE   rL   r   r   r   )rR   Nr   r   r   r   r   r   test_large_prime_lengthsq   s   
rY   c                  C   sN   t jd} | jdddd}|D ]}| |}tt|t|dd qd S )N{   i r   sizeintr   r
   )	r#   rD   rE   exponentialastyperandnr   r   r   )rR   random_lengthsnar   r   r   test_czt_vs_fftz   s   
rd   c                   C   st   t jtdd tg  W d    n1 sw   Y  t jtdd tg d W d    d S 1 s3w   Y  d S )NInvalid number of CZTmatchrC   )pytestraises
ValueErrorr   r   r   r   r   r   test_empty_input      
"rk   c                   C   st   t jtdd td W d    n1 sw   Y  t jtdd tdd W d    d S 1 s3w   Y  d S )Nztuple index out of rangerf   r5   rC   )rh   ri   
IndexErrorr   r   r   r   r   r   test_0_rank_input   rl   rn   impulse)r   r   r"   )r   r   r"   r   r   r   r   )r"   r    r5   r/   r>   i  rc   )r"   r   rC   g?r)   )Nyn?1*?c                 C   s   t t| dd  |||dtj|tjddd t t| dd  |||dt|||dd dd t t| |||dt|||dd dd d S )	Nr   r   r)   rc   r@   r   r
   r"   r2   )r   r   r#   ones
complex128r   )ro   r   r)   rc   r   r   r   test_czt_math   s   

rt   c                   C   sX   t ttddgddddtd dd t td	dd
ddtjd	tjd  dd d S )Nr   r"   r   r   )r   rc   rC   gV瞯<r
      r)   r@   KH9)r   absr   r#   rr   r   rK   rs   r   r   r   r   test_int_args   s   *
ry   c               	   C   s   dD ]} t t| tdtj t|  |  dd qt tdddtjdtjddd t td	d
dddtjd	tjd  dd tdd	d
dd}t |	 ddtd	  dd d S )N)r"   r   r    r/   ru   r   r>   rW   y               @rw   r
   r6   r"   rv   r@   ru   r   r      rp   )
r   r   r#   rH   rN   rK   rr   rs   r   points)rX   funcr   r   r   test_czt_points   s   $"$r}   z	cls, args)r   )r   皙?c                 C   sJ   | | }t jtdd |td W d    d S 1 sw   Y  d S )NzCZT defined forrf   r5   )rh   ri   rj   r#   rK   )clsargsmyfuncr   r   r   test_CZT_size_mismatch   s   "r   c                   C   sB   t jtdd tdg d W d    d S 1 sw   Y  d S )Nz2-length sequencerf   r   r"   r   r    )rh   ri   rj   r   r   r   r   r   test_invalid_range   s   "r   )r   ig      @      @c                 C   s<   t jtdd t|  W d    d S 1 sw   Y  d S )Nre   rf   )rh   ri   rj   r   r   r   r   r   test_czt_points_errors   s   
"r   r\   )r   g      @r   c                 C   sd  t jtdd t| d W d    n1 sw   Y  t jtdd t| dd W d    n1 s4w   Y  t jtdd td|  W d    n1 sPw   Y  t jtdd tdd|  W d    n1 smw   Y  t jtdd tg d|  W d    n1 sw   Y  t jtdd tg dd|  W d    d S 1 sw   Y  d S )Nre   rf   r    r~   r   )rh   ri   rj   r   r   r   r   r[   r   r   r   test_nonsense_size   s$   "r   )"__doc__rh   scipy._lib._array_apir   	scipy.fftr   scipy.signalr   r   r   r   r   numpyr#   r   r.   rV   rY   markslowrd   rk   rn   parametrizeconcatenatearrayrO   rt   ry   r}   r   r   r   r   r   r   r   r   <module>   s@   :	


