U
    -e`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   [/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/scipy/fft/tests/test_numpy.pyfft1   s    r   c                   @   s   e Zd Zdd ZdS )TestFFTShiftc                 C   s   t ttjdddgd d S )Nr         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      s   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 ]Z}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-   r0   r1   r.   )r   r   r   r&   r   r   r/   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-   r.   X  r0   r1   )r   r   r   fft2r   r2   r3   r   r   r   	test_fft26   s    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 r9   )r   r   r&   r   ifft2r   r2   r3   r   r   r   
test_ifft2@   s    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-   r.   p  r0   r1   )r   r   r   fftnr   r2   r3   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 rA   )r   r   r&   r   ifftnr   r2   r3   r   r   r   
test_ifftnT   s    "zTestFFT1D.test_ifftnc              	   C   s   t d}|jd|j fD ]j}dD ]6}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-   r0   r1   nr/   r   )rK   r0   )r   sizer   r   r(   r   r2   )r   r   rK   r/   r   r   r   	test_rfft^   s    zTestFFT1D.test_rfftc                 C   sJ   t d}t|tt| dD ]"}t|tjtj||d|d q"d S )Nr,   r6   r.   )r   r   r   r'   r(   r7   r   r   r   
test_irffth   s     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-   r.   r<   r0   r1   )r   r   r=   r   rfft2r   r2   r3   r   r   r   
test_rfft2o   s    zTestFFT1D.test_rfft2c                 C   sJ   t d}t|tt| dD ]"}t|tjtj||d|d q"d S Nr:   r6   r.   )r   r   r   irfft2rQ   r7   r   r   r   test_irfft2y   s     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 NrB      r-   r.   rD   r0   r1   )r   r   rE   r   rfftnr   r2   r3   r   r   r   
test_rfftn   s     zTestFFT1D.test_rfftnc                 C   sJ   t d}t|tt| dD ]"}t|tjtj||d|d q"d S NrB   r6   r.   )r   r   r   irfftnrX   r7   r   r   r   test_irfftn   s     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-   r.   r,   r0   r1   )r   r   concatenateconjr   r   hfftr2   )r   r   x_hermr4   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 qbd S )Nr]   r"   r   r   r6   r.   )r   r   r^   r_   r   r   ihfftr`   )r   r   ra   r/   r   r   r   
test_ihfft   s     zTestFFT1D.test_ihfftc                 C   sJ   t d}t|tt| dD ]"}t|tjtj||d|d q"d S rS   )r   r   r   hfft2ihfft2r7   r   r   r   
test_hfft2   s     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 rO   )r   r   r?   r   rf   r   r2   r3   r   r   r   test_ihfft2   s    zTestFFT1D.test_ihfft2c                 C   sJ   t d}t|tt| dD ]"}t|tjtj||d|d q"d S rZ   )r   r   r   hfftnihfftnr7   r   r   r   
test_hfftn   s     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 rV   )r   r   rG   r   rj   r   r2   r3   r   r   r   test_ihfftn   s     zTestFFT1D.test_ihfftnopc                 C   sT   t d}ddddddg}|D ]2}|t||}t|||d|}t|| qd S )	NrB   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   )r   r   r   axes)r   r   	transposer   )r   rm   r   rr   aop_trtr_opr   r   r   	test_axes   s    zTestFFT1D.test_axesc              	      s   t ddddg}|D ]p t fddtjD }|t |d d dd	}t||d d  d d d	 }t|| qd S )
N)         rn   ro   rp   c                    s4   g | ],}| d d kr&dj |  nj | qS )Nr   )shape).0axrt   r   r   r   
<listcomp>   s   z9TestFFT1D.test_axes_subset_with_shape.<locals>.<listcomp>r   r   r   )srr   )r   tupler%   ndimr   rs   r   )r   rm   rr   r{   ru   rv   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 ]V\}}|jd|j fD ]<}dD ]2}||||d}||||d}t|tj| qdq\qDd S )Nr,   r   r6   rJ   )r   r   Zlinalgr/   rL   r   r&   r(   r'   rc   r`   r   )	r   r   Zx_normrK   Z
func_pairsZforwbackr/   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(   r`   rc   r   )r   r   r   r   r   r   test_dtypes   s    zTestFFT1D.test_dtypesN)/r   r   r    r+   r5   r8   r>   r@   rF   rH   rM   rN   rR   rU   rY   r\   rb   rd   rg   rh   rk   rl   pytestmarkparametrizer   rE   rG   rX   r[   ri   rj   rw   r=   r?   rQ   rT   re   rf   r   r   r   ZhalfZsingledoubleZ
longdoubler   r   r   r   r   r!      sX   
	






	

  
     
r!   r   orderFznon-contiguousr   c                 C   s  t jd}|dddj| dd}|dkr8t |}n"|d d d }t |d d d }|jd	rt	d
D ]&}|||d}|||d}t
|| qnnf|jdrdddg}	|jdr|	dddd g |	D ]&}
|||
d}|||
d}t
|| qntd S )N*   ry         F)copyr   r   r   r   r	   )r=   rE   r   )r   r   )r   r   rE   )r   )r   )r   rq   )r   r   ZRandomStateZrandr   ZasfortranarrayZascontiguousarrayr   endswithr%   r   extendr   )r   r   r   rngXYr
   ZX_resZY_resrr   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 )TestFFTThreadSaferx   )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   s   g | ]}|  qS r   )startr|   r   r   r   r   r   6  s     c                 S   s   g | ]}|  qS r   )joinr   r   r   r   r   8  s        )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   rt   r   r   r   r5   >  s    zTestFFTThreadSafe.test_fftc                 C   s    t | jd}| tj| d S Ny      ?        )r   fullr   r   r   r&   r   r   r   r   r8   B  s    zTestFFTThreadSafe.test_ifftc                 C   s   t | j}| tj| d S r   )r   r   r   r   r   r(   r   r   r   r   rM   F  s    zTestFFTThreadSafe.test_rfftc                 C   s    t | jd}| tj| d S r   )r   r   r   r   r   r'   r   r   r   r   rN   J  s    zTestFFTThreadSafe.test_irfftc                 C   s"   t | jt j}| tj| d S r   )r   r   r   	complex64r   r   r`   r   r   r   r   rb   N  s    zTestFFTThreadSafe.test_hfftc                 C   s   t | j}| tj| d S r   )r   r   r   r   r   rc   r   r   r   r   rd   R  s    zTestFFTThreadSafe.test_ihfftN)r   r   r    r   r   r   r5   r8   rM   rN   rb   rd   r   r   r   r   r   (  s   r   r   c              	   C   sV   t d }|| dd tdD }W 5 Q R X | td}|D ]}t|| qBd S )Nr   c                 S   s   g | ]}t d qS )d   )r   r   )r|   _r   r   r   r   \  s     z%test_multiprocess.<locals>.<listcomp>rz   r   )multiprocessingZPoolmapr%   r   r   r   )r   presr4   r   r   r   r   test_multiprocessW  s
    $r   c                   @   s   e Zd Zdd ZdS )
TestIRFFTNc                 C   s2   t jd\}}|d|  }d}tj||d d S )N)r   rx   ry       r"   )rq   )r   r   r   r[   )r   arZairt   rr   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  s   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=   rE   r&   r?   rG   r   r   r(   r'   r   r   r   r   r   r   <module>   sD    i    /
