o
    Ô­j_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ÚpiÚarangeÚreshapeÚsumÚexp)ÚxÚLÚphase© r   ú[/var/www/html/CropPilot/venv/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   Ú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_fftr2   ©Nr0   r3   r5   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#   r1   r/   r$   z!Invalid number of FFT data points)Úmatch)r   r   r   r   r'   ÚpytestÚraisesr   )r   r2   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$   r0   r1   éX  r3   ç     À‚@r5   )r   r   r   r   Úfft2r6   r7   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 r>   )r   r   r   r   r'   Úifft2r6   r7   r   r   r   Ú
test_ifft2C   rE   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$   r0   r1   ép  r3   ç     p·@r5   )r   r   r   r   Úfftnr6   r7   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 rH   )r   r   r   r   r'   Úifftnr6   r7   r   r   r   Ú
test_ifftnZ   rO   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   r9   ©Únr2   r   r/   r$   )rS   r0   r3   r5   )r   Úsizer   r   r   r)   r6   )r   r   rS   r2   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$   r0   r1   r3   r5   )r   r   r   r   r(   r)   r7   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$   r0   r1   rA   r3   rB   r5   )r   r   r   r   rC   Úrfft2r6   r7   r   r   r   Ú
test_rfft2�   s   .ÿÿ
ÿzTestFFT1D.test_rfft2c                 C   rV   )Nr?   r/   r$   r0   r1   r3   r5   )r   r   r   r   Úirfft2rZ   r7   r   r   r   Útest_irfft2‹   rX   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 )NrI   é   r/   r$   r0   r1   rK   r3   rL   r5   )r   r   r   r   rM   Úrfftnr6   r7   r   r   r   Ú
test_rfftn•   s   4ÿÿ
ÿzTestFFT1D.test_rfftnc                 C   rV   )NrI   r/   r$   r0   r1   r3   r5   )r   r   r   r   Úirfftnr_   r7   r   r   r   Útest_irfftnŸ   rX   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$   r0   r1   r.   r3   r4   r5   )r   r   ÚconcatenateÚconjr   r   Úhfftr6   ©r   r   Ú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 )Nrc   r#   r   r   r/   r$   r0   r1   r3   r5   )r   r   rd   re   r   r   Úihfftrf   rg   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 )NrI   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   ©Úaxesr/   r$   )r   r   Ú	transposer   )r   rl   r   rn   ÚaÚop_trÚ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   r9   rR   r/   r$   )r   r   Úlinalgr2   rT   r   r'   r)   r(   rj   rf   r   )	r   r   Úx_normrS   Ú
func_pairsÚforwÚbackr2   Ú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   r{   r   r   r   r   Útest_dtypesÞ   s   "zTestFFT1D.test_dtypesN)"r   r    r!   r-   r8   r;   ÚmarkÚparametrizer=   rD   rG   rN   rQ   rU   rW   r[   r]   r`   rb   ri   rk   r   r   rM   rP   r_   ra   rs   rz   ÚhalfÚsingleÚdoubleÚ
longdoubler}   r   r   r   r   r"      s4    
	






ÿ
ÿr"   r{   Ú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       @r…   r   r   r   r	   )r%   Úrtol)rC   rM   ))r   r   )r   r   )r   r   rM   ))r   )r   )r   Nrm   )r   r   ÚRandomStateÚrandr|   r6   Úlog2rT   Úfinfor{   ÚepsÚasfortranarrayÚascontiguousarrayr   Úendswithr&   r   Úextendr   )r{   r„   r   ÚrngÚXÚ_tolÚYr
   ÚX_resÚY_resrn   Ú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   rp   r   r   r   r8   &  ó   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   r=   *  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   rU   .  s   zTestFFTThreadSafe.test_rfftc                 C   r¿   rº   )r   r»   r¼   r¹   r   r(   r½   r   r   r   rW   2  r¾   zTestFFTThreadSafe.test_irfftN)
r   r    r!   rµ   r¼   r¹   r8   r=   rU   rW   r   r   r   r   rž     s    rž   )Únumpyr   r;   Únumpy.randomr   Únumpy.testingr   r   r   r   r¨   r³   r   r   r"   r~   r   Úfloat32Úfloat64Ú	complex64Ú
complex128r   rC   rM   r'   rF   rP   rœ   Úskipifrž   r   r   r   r   Ú<module>   s0     Qþÿþ