a
    p=ic2                     @   s   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	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G dd dZdS )    N)random)assert_array_equalassert_raisesassert_allclosec                 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   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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g dd d S )N)r         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.   r0   c                 C   s|   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 d    n1 sn0    Y  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.        @r0   )r   r   r   r   fft2r1   r2   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 r8   )r   r   r   r   r#   ifft2r1   r2   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@r0   )r   r   r   r   fftnr1   r2   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 rA   )r   r   r   r   r#   ifftnr1   r2   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   r4   nr-   r   r*   r    )rK   r+   r.   r0   )r   sizer   r   r   r%   r1   )r   r   rK   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.   r0   )r   r   r   r   r$   r%   r2   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 )Nr9      r*   r    r+   r,   r;   r.   r<   r0   )r   r   r   r   r=   rfft2r1   r2   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 )Nr9   r*   r    r+   r,   r.   r0   )r   r   r   r   Zirfft2rP   r2   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 )NrB      r*   r    r+   r,   rD   r.   rE   r0   )r   r   r   r   rF   rfftnr1   r2   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 )NrB   r*   r    r+   r,   r.   r0   )r   r   r   r   irfftnrT   r2   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.   r/   r0   )r   r   concatenateconjr   r   hfftr1   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 )NrX   r   r   r   r*   r    r+   r,   r.   r0   )r   r   rY   rZ   r   r   ihfftr[   r\   r   r   r   
test_ihfft   s2    zTestFFT1D.test_ihfftopc                 C   sP   t d}g d}|D ]6}|t||}t|||d|}t||dd qd S )NrB   ))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   r`   r   rb   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   r4   rJ   r*   r    )r   r   Zlinalgr-   rL   r   r#   r%   r$   r^   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   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   rh   r   r   r   r   test_dtypes   s    zTestFFT1D.test_dtypesN)"r   r   r   r(   r3   r6   markparametrizer7   r>   r@   rG   rI   rM   rN   rQ   rR   rU   rW   r]   r_   r   r   rF   rH   rT   rV   rd   rg   ZhalfsingledoubleZ
longdoublerj   r   r   r   r   r      s2   
	







r   rh   orderFznon-contiguousr   c                 C   s0  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 qnj|jdr&g d}
|jdr|
g d |
D ],}|||d}|||d}	t||	||d qnt d S )N*            F)copyg       @rp   r   r   r   r   )r!   Zrtol)r=   rF   ))r   r   )r   r   )r   r   rF   ))r   )r   )r   Nra   )r   r   ZRandomStateZrandri   r1   log2rL   Zfinforh   ZepsZasfortranarrayZascontiguousarrayr   endswithr"   r   extendr   )rh   ro   r   rngXZ_tolYr	   ZX_resZY_resrb   axr   r   r   test_fft_with_order   s*    $r}   c                   @   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         c                 S   s   g | ]}|  qS r   )joinr   r   r   r   r     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d d }| t jj| d S Nr   y                )r   onesinput_shaper   r   r   rc   r   r   r   r3   %  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   r7   )  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   rM   -  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   rN   1  s    zTestFFTThreadSafe.test_irfftN)
r   r   r   r   r   r   r3   r7   rM   rN   r   r   r   r   r~     s   r~   )numpyr   r6   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r   r   r   rk   rl   float32float64Z	complex64Z
complex128r   r=   rF   r#   r?   rH   r}   r~   r   r   r   r   <module>   s,    Q