U
    9%e_2                     @   s   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	 d dl
Z
d dl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gejdddgejdejjejjejjejjejjejjgdd Zejje	ddG dd dZdS )    N)random)assert_array_equalassert_raisesassert_allcloseIS_WASMc                 C   sN   t | }dtj t||  }t|dd| }tj| t| ddS )Ny                 axis)lennppiZarangeZreshapesumexp)xLZphase r   ]/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numpy/fft/tests/test_pocketfft.pyfft1   s    r   c                   @   s   e Zd Zdd ZdS )TestFFTShiftc                 C   s   t ttjjdddgd d S )Nr         r   )r   
ValueErrorr   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                   @   s   e Zd Zdd Zdd Zejdd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jejjejjejjgd"d# Zd$d% Zejd&ejejejej gd'd( Z!d)S )*	TestFFT1Dc              	   C   s   d}t |dt |  }t |}td|D ]b}ttjtj|d| |d| dd ttjtj|d| ||d| dd q*d S )Ni                 ?r   r   g-q=atol)r   ranger   r   r   ifftirfftrfft)r   maxlenr   Zxrir   r   r   test_identity   s    &
 zTestFFT1D.test_identityc                 C   s   t ddt d  }tt|tj|dd tt|tjj|dddd tt|td tjj|dddd tt|d tjj|d	ddd d S )
N   r    ư>r!   backwardnormortho      >@forward)r   r   r   r   r   sqrtr   r   r   r   r   test_fft$   s      zTestFFT1D.test_fftr.   Nr,   r/   r1   c              	   C   sh   t ddt d  }t|tjjtjj||d|ddd tjtdd tjjg |d W 5 Q R X d S )Nr*   r    r-   r+   r!   z!Invalid number of FFT data points)match)r   r   r   r   r$   pytestZraisesr   )r   r.   r   r   r   r   	test_ifft-   s     zTestFFT1D.test_ifftc                 C   s   t ddt d  }ttjjtjj|ddddtj|dd ttj|tjj|dd	dd ttj|td
 tjj|dd	dd ttj|d tjj|dd	dd d S Nr*      r    r   r	   r   r+   r!   r,   r-   X  r/        @r1   )r   r   r   r   fft2r2   r3   r   r   r   	test_fft28   s"    
    zTestFFT1D.test_fft2c                 C   s   t ddt d  }ttjjtjj|ddddtj|dd ttj|tjj|dd	dd ttj|td
 tjj|dd	dd ttj|d tjj|dd	dd d S r9   )r   r   r   r   r$   ifft2r2   r3   r   r   r   
test_ifft2C   s"    
    zTestFFT1D.test_ifft2c                 C   s   t ddt d  }ttjjtjjtjj|ddddddtj|dd ttj|tjj|d	d
dd ttj|td tjj|dd
dd ttj|d tjj|dd
dd d S Nr*   r;   
   r    r   r	   r   r   r+   r!   r,   r-   p  r/        p@r1   )r   r   r   r   fftnr2   r3   r   r   r   	test_fftnN   s$    &
    zTestFFT1D.test_fftnc                 C   s   t ddt d  }ttjjtjjtjj|ddddddtj|dd ttj|tjj|d	d
dd ttj|td tjj|dd
dd ttj|d tjj|dd
dd d S rB   )r   r   r   r   r$   ifftnr2   r3   r   r   r   
test_ifftnZ   s$    &
    zTestFFT1D.test_ifftnc              	   C   s   t d}|jd|j fD ]}dD ]>}ttjj|||dd |d d  tjj|||ddd q ttjj||dtjj||d	ddd ttjj||dt| tjj||d
ddd ttjj||d| tjj||dddd qd S )Nr*   r   r5   nr.   r   r+   r!   )rL   r,   r/   r1   )r   sizer   r   r   r&   r2   )r   r   rL   r.   r   r   r   	test_rfftf   s.         zTestFFT1D.test_rfftc                 C   s   t d}t|tjtj|dd t|tjjtjj|dddddd t|tjjtjj|dddddd t|tjjtjj|dddddd d S )Nr*   r+   r!   r,   r-   r/   r1   )r   r   r   r   r%   r&   r3   r   r   r   
test_irfftw   s"    zTestFFT1D.test_irfftc                 C   s   t d}ttj|d d d df tj|dd ttj|tjj|dddd ttj|td tjj|dddd ttj|d	 tjj|d
ddd d S )Nr:      r+   r!   r,   r-   r<   r/   r=   r1   )r   r   r   r   r>   rfft2r2   r3   r   r   r   
test_rfft2   s    .   zTestFFT1D.test_rfft2c                 C   s   t d}t|tjtj|dd t|tjjtjj|dddddd t|tjjtjj|dddddd t|tjjtjj|dddddd d S )Nr:   r+   r!   r,   r-   r/   r1   )r   r   r   r   Zirfft2rQ   r3   r   r   r   test_irfft2   s"    zTestFFT1D.test_irfft2c                 C   s   t d}ttj|d d d d d df tj|dd ttj|tjj|dddd ttj|td tjj|dddd ttj|d	 tjj|d
ddd d S )NrC      r+   r!   r,   r-   rE   r/   rF   r1   )r   r   r   r   rG   rfftnr2   r3   r   r   r   
test_rfftn   s    4   zTestFFT1D.test_rfftnc                 C   s   t d}t|tjtj|dd t|tjjtjj|dddddd t|tjjtjj|dddddd t|tjjtjj|dddddd d S )NrC   r+   r!   r,   r-   r/   r1   )r   r   r   r   irfftnrU   r3   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j|tj|dd ttj|tjj|dddd ttj|td	 tjj|d
ddd ttj|d tjj|dddd d S )N   r    r   r   r+   r!   r,   r-   r*   r/   r0   r1   )r   r   concatenateconjr   r   hfftr2   r   r   Zx_hermr   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jtj|dd t|tjjtjj|dddddd t|tjjtjj|d	dd	ddd t|tjjtjj|d
dd
ddd d S )NrY   r    r   r   r+   r!   r,   r-   r/   r1   )r   r   rZ   r[   r   r   ihfftr\   r]   r   r   r   
test_ihfft   s2    zTestFFT1D.test_ihfftopc                 C   sX   t d}ddddddg}|D ]6}|t||}t|||d|}t||d	d
 qd S )NrC   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   axesr+   r!   )r   r   Z	transposer   )r   ra   r   rc   aZop_trZtr_opr   r   r   	test_axes   s    zTestFFT1D.test_axesc           	      C   s   t d}tj|}|jd }tjjtjjftjjtjjftjj	tjj
fg}|D ]Z\}}|jd|j fD ]@}dD ]6}||||d}||||d}t|tj|dd qpqhqPd S )Nr*   r   r5   rK   r+   r!   )r   r   Zlinalgr.   rM   r   r$   r&   r%   r_   r\   r   )	r   r   Zx_normrL   Z
func_pairsZforwbackr.   tmpr   r   r   test_all_1d_norm_preserving   s     

 z%TestFFT1D.test_all_1d_norm_preservingdtypec                 C   sN   t d|}ttjtj||dd ttjtj||dd d S )Nr*   r+   r!   )r   astyper   r   r   r$   r%   r&   )r   ri   r   r   r   r   test_dtypes   s    zTestFFT1D.test_dtypesN)"r   r   r   r)   r4   r7   markparametrizer8   r?   rA   rH   rJ   rN   rO   rR   rS   rV   rX   r^   r`   r   r   rG   rI   rU   rW   re   rh   ZhalfZsingledoubleZ
longdoublerk   r   r   r   r   r      s4   
	






 
r   ri   orderFznon-contiguousr   c                 C   s6  t jd}|dddj| dd}dt t |j t |j	j
 }|dkr\t |}n"|d d d	 }t |d d d	 }|jd
rtdD ],}|||d}|||d}	t||	||d qnp|jdr,dddg}
|jdr|
dddd g |
D ],}|||d}|||d}	t||	||d qnt d S )N*            F)copyg       @rp   r   r   r   r	   )r"   Zrtol)r>   rG   )r   r   )r   r   )r   r   rG   )r   )r   )r   rb   )r   r   ZRandomStateZrandrj   r2   log2rM   Zfinfori   ZepsZasfortranarrayZascontiguousarrayr   endswithr#   r   extendr   )ri   ro   r   rngXZ_tolYr
   ZX_resZY_resrc   Zaxr   r   r   test_fft_with_order   s*    $
r|   zCannot start thread)reasonc                   @   s<   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dS )TestFFTThreadSafe   )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).0r(   )r   r   r   r   r   
<listcomp>  s   z2TestFFTThreadSafe._test_mtsame.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   )startr   r   r   r   r   r     s     c                 S   s   g | ]}|  qS r   )joinr   r   r   r   r      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d d }| t jj| d S Nr   y                )r   onesinput_shaper   r   r   rd   r   r   r   r4   &  s    zTestFFTThreadSafe.test_fftc                 C   s(   t | jd d }| t jj| d S r   )r   r   r   r   r   r$   r   r   r   r   r8   *  s    zTestFFTThreadSafe.test_ifftc                 C   s    t | j}| t jj| d S r   )r   r   r   r   r   r&   r   r   r   r   rN   .  s    zTestFFTThreadSafe.test_rfftc                 C   s(   t | jd d }| t jj| d S r   )r   r   r   r   r   r%   r   r   r   r   rO   2  s    zTestFFTThreadSafe.test_irfftN)
r   r   r   r   r   r   r4   r8   rN   rO   r   r   r   r   r~     s   r~   )numpyr   r7   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r   r   r   r   rl   rm   Zfloat32Zfloat64Z	complex64Z
complex128r   r>   rG   r$   r@   rI   r|   Zskipifr~   r   r   r   r   <module>   s2    Q  