o
    Je_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   l/home/seandotau/au.memorygallery.club/gallery/lib/python3.10/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 ]1}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   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    d S 1 s8w   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/        @r1   )r   r   r   r   fft2r2   r3   r   r   r   	test_fft28      
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   r@   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      &
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 rC   )r   r   r   r   r$   ifftnr2   r3   r   r   r   
test_ifftnZ   rJ   zTestFFT1D.test_ifftnc              	   C   s   t d}|jd|j fD ]g}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!   )rN   r,   r/   r1   )r   sizer   r   r   r&   r2   )r   r   rN   r.   r   r   r   	test_rfftf   s(    zTestFFT1D.test_rfftc                 C      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   "   
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   rQ   )Nr:   r+   r!   r,   r-   r/   r1   )r   r   r   r   Zirfft2rU   r3   r   r   r   test_irfft2   rS   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 )NrD      r+   r!   r,   r-   rF   r/   rG   r1   )r   r   r   r   rH   rfftnr2   r3   r   r   r   
test_rfftn   s   4
zTestFFT1D.test_rfftnc                 C   rQ   )NrD   r+   r!   r,   r-   r/   r1   )r   r   r   r   irfftnrY   r3   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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 )Nr]   r    r   r   r+   r!   r,   r-   r/   r1   )r   r   r^   r_   r   r   ihfftr`   ra   r   r   r   
test_ihfft   s2   
zTestFFT1D.test_ihfftopc                 C   sP   t d}g d}|D ]}|t||}t|||d|}t||dd q
d S )NrD   ))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   re   r   rg   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 ]-\}}|jd|j fD ] }dD ]}||||d}||||d}t|tj|dd q8q4q(d S )Nr*   r   r5   rM   r+   r!   )r   r   Zlinalgr.   rO   r   r$   r&   r%   rc   r`   r   )	r   r   Zx_normrN   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   rm   r   r   r   r   test_dtypes   s   "zTestFFT1D.test_dtypesN)"r   r   r   r)   r4   r7   markparametrizer8   r?   rB   rI   rL   rP   rR   rV   rW   rZ   r\   rb   rd   r   r   rH   rK   rY   r[   ri   rl   ZhalfsingledoubleZ
longdoublero   r   r   r   r   r      s4    
	







r   rm   orderFznon-contiguousr   c                 C   s.  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
rbtdD ]}|||d}|||d}	t||	||d qId S |jdrg d}
|jdry|
g d |
D ]}|||d}|||d}	t||	||d q{d S t )N*            F)copyg       @ru   r   r   r   r	   )r"   Zrtol)r>   rH   ))r   r   )r   r   )r   r   rH   ))r   )r   )r   Nrf   )r   r   ZRandomStateZrandrn   r2   log2rO   Zfinform   ZepsZasfortranarrayZascontiguousarrayr   endswithr#   r   extendr   )rm   rt   r   rngXZ_tolYr
   ZX_resZY_resrg   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      g | ]}|  qS r   )startr   r   r   r   r   r         c                 S   r   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   rh   r   r   r   r4   &     zTestFFTThreadSafe.test_fftc                 C   (   t | jd d }| t jj| d S r   )r   r   r   r   r   r$   r   r   r   r   r8   *  r   zTestFFTThreadSafe.test_ifftc                 C   s    t | j}| t jj| d S r   )r   r   r   r   r   r&   r   r   r   r   rP   .  s   zTestFFTThreadSafe.test_rfftc                 C   r   r   )r   r   r   r   r   r%   r   r   r   r   rR   2  r   zTestFFTThreadSafe.test_irfftN)
r   r   r   r   r   r   r4   r8   rP   rR   r   r   r   r   r     s    r   )numpyr   r7   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r   r   r   r   rp   rq   Zfloat32Zfloat64Z	complex64Z
complex128r   r>   rH   r$   rA   rK   r   Zskipifr   r   r   r   r   <module>   s0     Q