o
    i`8                     @   s0  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ dd ZG dd dZG d	d
 d
Zejdejejejejejejgejdddgejdejejejejejejgdd Z G dd dZ!ejdejejej"ej#gdd Z$G dd dZ%dS )    N)random)assert_array_almost_equalassert_array_equalassert_allclose)raisesc                 C   sR   t | }dtj t|t|  }t|dd| }tj| t| ddS )Ny                 axis)lennppiZarangefloatZreshapesumexp)xLZphase r   i/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/scipy/fft/tests/test_numpy.pyfft1   s   r   c                   @      e Zd Zdd ZdS )TestFFTShiftc                 C   s   t ttjg dd d S )N)r         r   )assert_raises
ValueErrorfft)selfr   r   r   
test_fft_n   s   zTestFFTShift.test_fft_nN)__name__
__module____qualname__r   r   r   r   r   r          r   c                   @   sF  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zejd'ejejejejejejgd(d) Z ejd'ej!ej"ej#ej$ej%ej&ejejejejejejgd*d+ Z'd,d- Z(ejd.e)j*e)j+e)j,e)j-gd/d0 Z.d1S )2	TestFFT1Dc              	   C   s   d}t |dt |  }t |}td|D ]-}ttt|d| |d| dd ttt|d| ||d| dd qd S )Ni                 ?r   r      )decimal)r   ranger   r   ifftirfftrfft)r   maxlenr   Zxrir   r   r   test_identity   s   "zTestFFT1D.test_identityc                 C   sz   t ddt d  }t|}t|t| t|tj|dd t|td tj|dd t|d tj|dd d S )N   r$   backwardnormorthoforward)r   r   r   r   r   sqrtr   r   expectr   r   r   test_fft&   s   zTestFFT1D.test_fftc                 C   sV   t ddt d  }t|tt| dD ]}t|tjtj||d|d qd S )Nr.   r$   r/   r2   r3   r0   )r   r   r   r(   r   r   r1   r   r   r   	test_ifft/   s   zTestFFT1D.test_ifftc                 C   s   t ddt d  }tjtj|dddd}t|t| t|tj|dd t|td tj|d	d t|d tj|d
d d S Nr.      r$   r   r	   r   r/   r0   X  r2   r3   )r   r   r   fft2r   r4   r5   r   r   r   	test_fft26      zTestFFT1D.test_fft2c                 C   s   t ddt d  }tjtj|dddd}t|t| t|tj|dd t|td tj|d	d t|d tj|d
d d S r;   )r   r   r(   r   ifft2r   r4   r5   r   r   r   
test_ifft2@   rA   zTestFFT1D.test_ifft2c                 C   s   t ddt d  }tjtjtj|dddddd}t|t| t|tj|dd t|td	 tj|d
d t|d	 tj|dd d S Nr.   r=   
   r$   r   r	   r   r   r/   r0   p  r2   r3   )r   r   r   fftnr   r4   r5   r   r   r   	test_fftnJ   s   "zTestFFT1D.test_fftnc                 C   s   t ddt d  }tjtjtj|dddddd}t|t| t|tj|dd tt|td	 tj|d
d t|d	 tj|dd d S rD   )r   r   r(   r   ifftnr   r4   r5   r   r   r   
test_ifftnT   s   "zTestFFT1D.test_ifftnc              	   C   s   t d}|jd|j fD ]5}dD ]}ttj|||dd |d d  tj|||d qttj||dt| tj||dd qd S )N   r   )Nr/   r2   r3   nr1   r   )rN   r2   )r   sizer   r   r*   r   r4   )r   r   rN   r1   r   r   r   	test_rfft^   s   zTestFFT1D.test_rfftc                 C   J   t d}t|tt| dD ]}t|tjtj||d|d qd S )Nr.   r8   r0   )r   r   r   r)   r*   r9   r   r   r   
test_irffth      zTestFFT1D.test_irfftc                 C   s   t d}t|d d d df }t|t| t|tj|dd t|td tj|dd t|d tj|dd d S Nr<      r/   r0   r>   r2   r3   )r   r   r?   r   rfft2r   r4   r5   r   r   r   
test_rfft2o      zTestFFT1D.test_rfft2c                 C   rQ   Nr<   r8   r0   )r   r   r   irfft2rV   r9   r   r   r   test_irfft2y   rS   zTestFFT1D.test_irfft2c                 C   s   t d}t|d d d d d df }t|t| t|tj|dd t|td tj|dd t|d tj|dd d S NrE      r/   r0   rG   r2   r3   )r   r   rH   r   rfftnr   r4   r5   r   r   r   
test_rfftn       zTestFFT1D.test_rfftnc                 C   rQ   NrE   r8   r0   )r   r   r   irfftnr^   r9   r   r   r   test_irfftn   rS   zTestFFT1D.test_irfftnc                 C   s   t ddt d  }tt d|t df}t||d d d  f}t|}t|t| t|tj|dd t|td tj|dd t|d tj|d	d d S )
N   r$   r   r   r/   r0   r.   r2   r3   )r   r   concatenateconjr   r   hfftr4   )r   r   x_hermr6   r   r   r   	test_hfft   s   
zTestFFT1D.test_hfftc                 C   s   t ddt d  }tt d|t df}t||d d d  f}t|tt| dD ]}t|tjtj||d|d q1d S )Nrd   r$   r   r   r8   r0   )r   r   re   rf   r   r   ihfftrg   )r   r   rh   r1   r   r   r   
test_ihfft   s   zTestFFT1D.test_ihfftc                 C   rQ   rY   )r   r   r   hfft2ihfft2r9   r   r   r   
test_hfft2   rS   zTestFFT1D.test_hfft2c                 C   s   t d}t|d d d df }t|t| t|tj|dd t|td tj|dd t|d tj|dd d S rT   )r   r   rB   r   rm   r   r4   r5   r   r   r   test_ihfft2   rX   zTestFFT1D.test_ihfft2c                 C   rQ   ra   )r   r   r   hfftnihfftnr9   r   r   r   
test_hfftn   rS   zTestFFT1D.test_hfftnc                 C   s   t d}t|d d d d d df }t|t| t|tj|dd t|td tj|dd t|d tj|dd d S r\   )r   r   rJ   r   rq   r   r4   r5   r   r   r   test_ihfftn   r`   zTestFFT1D.test_ihfftnopc                 C   sL   t d}g d}|D ]}|t||}t|||d|}t|| q
d S )NrE   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   )r   r   r   axes)r   r   	transposer   )r   rt   r   ry   aop_trtr_opr   r   r   	test_axes   s   zTestFFT1D.test_axesc              	      s   t dg d}|D ]8 t fddtjD }|t |d d dd}t||d d  d d d }t|| q
d S )N)         )ru   rv   rw   c                    s4   g | ]}| d d v rdj |  nj | qS )Nr   )shape).0axr{   r   r   r   
<listcomp>   s    ,z9TestFFT1D.test_axes_subset_with_shape.<locals>.<listcomp>r   r   r   )sry   )r   tupler'   ndimr   rz   r   )r   rt   ry   r   r|   r}   r   r   r   test_axes_subset_with_shape   s   &z%TestFFT1D.test_axes_subset_with_shapec           	      C   s   t d}tj|}|jd }tjtjftjtjftj	tj
fg}|D ]+\}}|jd|j fD ]}dD ]}||||d}||||d}t|tj| q2q.q"d S )Nr.   r   r8   rM   )r   r   Zlinalgr1   rO   r   r(   r*   r)   rj   rg   r   )	r   r   Zx_normrN   Z
func_pairsZforwbackr1   tmpr   r   r   test_all_1d_norm_preserving   s$   




z%TestFFT1D.test_all_1d_norm_preservingdtypec                 C   sZ   t d|}ttt|| ttt|| ttt|t	|| d S )Nr.   )
r   astyper   r   r(   r)   r*   rg   rj   r   )r   r   r   r   r   r   test_dtypes   s    zTestFFT1D.test_dtypesN)/r   r    r!   r-   r7   r:   r@   rC   rI   rK   rP   rR   rW   r[   r_   rc   ri   rk   rn   ro   rr   rs   pytestmarkparametrizer   rH   rJ   r^   rb   rp   rq   r~   r?   rB   rV   rZ   rl   rm   r   r   r   ZhalfsingledoubleZ
longdoubler   r   r   r   r   r#      sL    
	






	



r#   r   orderFznon-contiguousr   c                 C   s   t jd}|dddj| dd}|dkrt |}n|d d d }t |d d d }|jd	rMt	d
D ]}|||d}|||d}t
|| q7d S |jdr|g d}	|jdrd|	g d |	D ]}
|||
d}|||
d}t
|| qfd S t)N*   r         F)copyr   r   r   r   r	   )r?   rH   )r   )r   r   )r   r   rH   ))r   )r   )r   Nrx   )r   r   ZRandomStateZrandr   ZasfortranarrayZascontiguousarrayr   endswithr'   r   extendr   )r   r   r   rngXYr
   ZX_resZY_resry   r   r   r   r   test_fft_with_order  s,   r   c                   @   sL   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )TestFFTThreadSafer   )i      c                    s|   fddt    } fddt| jD }dd |D  dd |D  t| jD ]}tjdd|d	 q/d S )
Nc                    s   |  |   d S N)put)argsq)funcr   r   worker-  s   z.TestFFTThreadSafe._test_mtsame.<locals>.workerc                    s   g | ]}t j fd qS ))targetr   )	threadingThread)r   r,   )r   r   r   r   r   r   4  s    z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>c                 S      g | ]}|  qS r   )startr   r   r   r   r   r   6      c                 S   r   r   )joinr   r   r   r   r   8  r      )timeoutz6Function returned wrong value in multithreaded context)queueQueuer'   threadsr   get)r   r   r   expectedtr,   r   )r   r   r   r   r   _test_mtsame,  s   zTestFFTThreadSafe._test_mtsamec                 C   s$   t j| jt jd}| tj| d S )N)r   )r   onesinput_shape
complex128r   r   r   r{   r   r   r   r7   >  s   zTestFFTThreadSafe.test_fftc                 C       t | jd}| tj| d S Ny      ?        )r   fullr   r   r   r(   r   r   r   r   r:   B     zTestFFTThreadSafe.test_ifftc                 C      t | j}| tj| d S r   )r   r   r   r   r   r*   r   r   r   r   rP   F     zTestFFTThreadSafe.test_rfftc                 C   r   r   )r   r   r   r   r   r)   r   r   r   r   rR   J  r   zTestFFTThreadSafe.test_irfftc                 C   s"   t | jt j}| tj| d S r   )r   r   r   	complex64r   r   rg   r   r   r   r   ri   N  s   zTestFFTThreadSafe.test_hfftc                 C   r   r   )r   r   r   r   r   rj   r   r   r   r   rk   R  r   zTestFFTThreadSafe.test_ihfftN)r   r    r!   r   r   r   r7   r:   rP   rR   ri   rk   r   r   r   r   r   (  s    r   r   c                 C   sj   t d}|| dd tdD }W d    n1 sw   Y  | td}|D ]}t|| q+d S )Nr   c                 S   s   g | ]}t d qS )d   )r   r   )r   _r   r   r   r   \  s    z%test_multiprocess.<locals>.<listcomp>r   r   )multiprocessingZPoolmapr'   r   r   r   )r   presr6   r   r   r   r   test_multiprocessW  s   r   c                   @   r   )
TestIRFFTNc                 C   s2   t jd\}}|d|  }d}tj||d d S )N)r   r   r       r$   )rx   )r   r   r   rb   )r   arZair{   ry   r   r   r   test_not_last_axis_successe  s   z%TestIRFFTN.test_not_last_axis_successN)r   r    r!   r   r   r   r   r   r   c  r"   r   )&r   r   r   numpyr   r   Znumpy.randomr   Znumpy.testingr   r   r   r   r   Z	scipy.fftr   r   r   r#   r   r   Zfloat32Zfloat64Z	longfloatr   r   Zlongcomplexr?   rH   r(   rB   rJ   r   r   r*   r)   r   r   r   r   r   r   <module>   s>     i/
