o
    U=ºiN3  ã                   @   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ÚLÚphase© r   údC:\Users\psant\Downloads\PAF backend\school\venv\Lib\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¡r”g 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‚   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   ó   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   1  r£   zTestFFTThreadSafe.test_irfftN)
r   r   r   rš   r¡   rž   r4   r8   rP   rR   r   r   r   r   rƒ     s    rƒ   )Znumpyr   r7   Znumpy.randomr   Znumpy.testingr   r   r   r�   r˜   r   r   r   rp   rq   Zfloat32Zfloat64Z	complex64Z
complex128r   r>   rH   r$   rA   rK   r‚   rƒ   r   r   r   r   Ú<module>   s.     Qþÿþ