o
    Ö­jZw  ã                   @   sD  d dl mZmZmZmZmZ d dlZd dlmZ d dl	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlZd dlZd dlmZ g d¢Z g d¢Z!d	gZ"d
g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+G dd„ dƒZ,G dd„ de,ƒZ-G dd „ d e,ƒZ.G d!d"„ d"ƒZ/G d#d$„ d$ƒZ0G d%d&„ d&e0ƒZ1G d'd(„ d(e0ƒZ2G d)d*„ d*ƒZ3G d+d,„ d,e3ƒZ4G d-d.„ d.e3ƒZ5G d/d0„ d0ƒZ6G d1d2„ d2e6ƒZ7G d3d4„ d4e6ƒZ8G d5d6„ d6ƒZ9G d7d8„ d8ƒZ:G d9d:„ d:ƒZ;G d;d<„ d<ƒZ<G d=d>„ d>ƒZ=G d?d@„ d@ƒZ>G dAdB„ dBƒZ?ej@ AdCeeeg¡dDdE„ ƒZBdS )Fé    )Úassert_Úassert_equalÚassert_array_almost_equalÚassert_array_almost_equal_nulpÚassert_array_lessN)Úraises)ÚifftÚfftÚfftnÚifftnÚrfftÚirfftÚfft2)
ÚarangeÚarrayÚasarrayÚzerosÚdotÚexpÚpiÚswapaxesÚdoubleÚcdouble©Úrand)i    i`  i  )é   é   é$   iÛ  é   c                 C   s8   d|› d|› �}t tj | | ¡|tj | ¡ |ƒ d S )Nzsize: z  rdt: )r   ÚnpÚlinalgÚnorm)ÚxÚyÚrtolÚsizeÚrdtÚerr_msg© r(   ú[/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/fftpack/tests/test_basic.pyÚ_assert_close_in_norm#   s   (r*   c                 C   s   t | Ž S ©Nr   )r%   r(   r(   r)   Úrandom)   s   r,   c                 C   sZ   t | ƒ} t| ƒ}t|td�}t|ƒ dt |  }t|ƒD ]}tt|| ƒ| ƒ||< q|S ©N©Údtypeù               @©	r   Úlenr   r   r   r   Úranger   r   ©r"   Únr#   ÚwÚir(   r(   r)   Ú
direct_dft-   s   r8   c                 C   s\   t | ƒ} t| ƒ}t|td�}t|ƒdt |  }t|ƒD ]}tt|| ƒ| ƒ| ||< q|S r-   r1   r4   r(   r(   r)   Údirect_idft7   s   r9   c                 C   ó,   t | ƒ} tt| jƒƒD ]}t| |d�} q| S ©N)Úaxis)r   r3   r2   Úshaper	   ©r"   r<   r(   r(   r)   Údirect_dftnA   ó   r?   c                 C   r:   r;   )r   r3   r2   r=   r   r>   r(   r(   r)   Údirect_idftnH   r@   rA   c                 C   sš   t | ƒ} t| ƒ}t|ƒ dt |  }t|td�}t|d d ƒD ])}tt|| ƒ| ƒ}|rE|j	|d| d < d| |k rD|j
|d| < q!|j	|d< q!|S )Nr0   r.   r   é   r   )r   r2   r   r   r   r   r3   r   r   ÚrealÚimag)r"   r5   r6   Úrr7   r#   r(   r(   r)   Údirect_rdftO   s   €rF   c                 C   s¼   t | ƒ} t| ƒ}t|td�}t|d d ƒD ]B}|rRd| |k rG| d| d  d| d|    ||< | d| d  d| d|    ||| < q| d| d  ||< q| d |d< qt|ƒjS )Nr.   r   rB   ù              ð?r   )r   r2   r   r   r3   r9   rC   )r"   r5   Úx1r7   r(   r(   r)   Údirect_irdft_   s   $*
rI   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú_TestFFTBasec                 C   s   d | _ d | _tj d¡ d S ©NéÒ  )Úcdtr&   r   r,   Úseed©Úselfr(   r(   r)   Úsetup_methodp   s   z_TestFFTBase.setup_methodc                 C   sf   t jg d¢| jd�}t|ƒ}t|j| jƒ t|ƒ}t||ƒ t jg d¢| jd�}tt|ƒt|ƒƒ d S )N©rB   r   é   ù      @      ð?rB   r   rS   y      @       @r.   ©rB   r   rS   y      @        é   )r   r   rM   r	   r   r/   r8   r   ©rP   r"   r#   Úy1r(   r(   r)   Útest_definitionu   s   
z_TestFFTBase.test_definitionc                 C   sz   t jg d¢| jd�}t jg d¢| jd�}t||gdd�}t|j| jƒ t|jdƒ t|d t	|ƒƒ t|d t	|ƒƒ d S ©N©rB   r   rS   é   r.   r\   ©r5   ©r   r\   r   rB   )
r   r   r&   r	   r   r/   rM   r=   r   r8   ©rP   rH   Úx2r#   r(   r(   r)   Útest_n_argument_real~   ó   z!_TestFFTBase.test_n_argument_realc                 C   sz   t jg d¢| jd�}t jg d¢| jd�}t||gdd�}t|j| jƒ t|jdƒ t|d t|ƒƒ t|d t|ƒƒ d S )N)rB   r   rS   rT   r.   r\   r]   r^   r   rB   )	r   r   rM   r	   r   r/   r=   r   r8   r_   r(   r(   r)   Ú_test_n_argument_complex‡   rb   z%_TestFFTBase._test_n_argument_complexc                 C   ó*   t ttg ƒ t ttddgddggdƒ d S ©NrB   r   éûÿÿÿ)Úassert_raisesÚ
ValueErrorr	   rO   r(   r(   r)   Útest_invalid_sizes�   ó   z_TestFFTBase.test_invalid_sizesN)Ú__name__Ú
__module__Ú__qualname__rQ   rY   ra   rc   ri   r(   r(   r(   r)   rJ   o   s    			rJ   c                   @   ó   e Zd Zdd„ ZdS )ÚTestDoubleFFTc                 C   ó   t j| _t j| _d S r+   ©r   Ú
complex128rM   Úfloat64r&   rO   r(   r(   r)   rQ   –   ó   zTestDoubleFFT.setup_methodN©rk   rl   rm   rQ   r(   r(   r(   r)   ro   •   ó    ro   c                   @   s0   e Zd Zdd„ ZdZejjded�dd„ ƒZdS )	ÚTestSingleFFTc                 C   rp   r+   ©r   Ú	complex64rM   Úfloat32r&   rO   r(   r(   r)   rQ   œ   rt   zTestSingleFFT.setup_methodzusingle-precision FFT implementation is partially disabled, until accuracy issues with large prime powers are resolvedF)ÚrunÚreasonc                 C   s   d S r+   r(   rO   r(   r(   r)   Útest_notice£   s   zTestSingleFFT.test_noticeN)	rk   rl   rm   rQ   r|   ÚpytestÚmarkÚxfailr}   r(   r(   r(   r)   rw   ›   s
    rw   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚTestFloat16FFTc                 C   sT   t jg d¢t jd�}t|dd�}t|jt jƒ t|jdƒ t|t	| 
t j¡ƒƒ d S )Nr[   r.   r\   r]   )r\   ©r   r   Úfloat16r	   r   r/   ry   r=   r   r8   Úastyperz   )rP   rH   r#   r(   r(   r)   Útest_1_argument_realª   s
   z#TestFloat16FFT.test_1_argument_realc                 C   sŠ   t jg d¢t jd�}t jg d¢t jd�}t||gdd�}t|jt jƒ t|jdƒ t|d t	| 
t j¡ƒƒ t|d t	| 
t j¡ƒƒ d S rZ   rƒ   r_   r(   r(   r)   ra   ±   s   z#TestFloat16FFT.test_n_argument_realN)rk   rl   rm   r†   ra   r(   r(   r(   r)   r‚   ¨   s    r‚   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Ú_TestIFFTBasec                 C   ó   t j d¡ d S rK   ©r   r,   rN   rO   r(   r(   r)   rQ   ¼   ó   z_TestIFFTBase.setup_methodc                 C   sb   t  g d¢| j¡}t|ƒ}t|ƒ}t|j| jƒ t||ƒ t  g d¢| j¡}tt|ƒt|ƒƒ d S )NrR   rU   )r   r   rM   r   r9   r   r/   r   rW   r(   r(   r)   rY   ¿   s   
z_TestIFFTBase.test_definitionc                 C   sr   t  g d¢| j¡}t|ƒ}t|j| jƒ t|ƒ}t||ƒ t jg d¢| jd�}t|j| jƒ tt|ƒt|ƒƒ d S )N©rB   r   rS   r\   rB   r   rS   r\   ©rB   r   rS   r\   rV   r.   )	r   r   r&   r   r   r/   rM   r9   r   rW   r(   r(   r)   Útest_definition_realÉ   s   
z"_TestIFFTBase.test_definition_realc                 C   s‚   dD ]<}t |gƒ | j¡}t |gƒ | j¡d|  }tt|ƒƒ}tt|ƒƒ}t|j| jƒ t|j| jƒ t||ƒ t||ƒ qd S )N©	rB   é3   éo   éd   éÈ   é@   é€   é   i   rG   )r,   r…   rM   r   r	   r   r/   r   ©rP   r%   r"   rX   Úy2r(   r(   r)   Útest_random_complexÔ   s   
øz!_TestIFFTBase.test_random_complexc                 C   sh   dD ]/}t |gƒ | j¡}tt|ƒƒ}tt|ƒƒ}t|j| jƒ t|j| jƒ t||ƒ t||ƒ qd S )NrŽ   )	r,   r…   r&   r   r	   r   r/   rM   r   r–   r(   r(   r)   Útest_random_realß   s   
ùz_TestIFFTBase.test_random_realc                 C   sè   | j tjkr	d}n| j tjkrd}tt D ]\}tj d¡ tj |¡ 	| j ¡}t
t|ƒƒ}t||||| j ƒ tt
|ƒƒ}t||||| j ƒ |dtj |¡   	| j¡}t
t|ƒƒ}t||||| j ƒ tt
|ƒƒ}t||||| j ƒ qd S )Nçñhãˆµøä>ç»½×Ùß|Û=rL   rG   )r&   r   rz   rs   ÚLARGE_COMPOSITE_SIZESÚLARGE_PRIME_SIZESr,   rN   r   r…   r   r	   r*   rM   ©rP   r$   r%   r"   r#   r(   r(   r)   Útest_size_accuracyé   s"   ôz _TestIFFTBase.test_size_accuracyc                 C   rd   re   )rg   rh   r   rO   r(   r(   r)   ri   þ   rj   z _TestIFFTBase.test_invalid_sizesN)
rk   rl   rm   rQ   rY   r�   r˜   r™   rŸ   ri   r(   r(   r(   r)   r‡   »   s    

r‡   c                   @   rn   )ÚTestDoubleIFFTc                 C   rp   r+   rq   rO   r(   r(   r)   rQ     rt   zTestDoubleIFFT.setup_methodNru   r(   r(   r(   r)   r      rv   r    c                   @   rn   )ÚTestSingleIFFTc                 C   rp   r+   rx   rO   r(   r(   r)   rQ   
  rt   zTestSingleIFFT.setup_methodNru   r(   r(   r(   r)   r¡   	  rv   r¡   c                   @   sB   e Zd Zdd„ Zdd„ Zdd„ ZG dd„ dƒZd	d
„ Zdd„ ZdS )Ú_TestRFFTBasec                 C   rˆ   rK   r‰   rO   r(   r(   r)   rQ     rŠ   z_TestRFFTBase.setup_methodc                 C   sR   g d¢g d¢fD ]}t j|| jd�}t|ƒ}t|ƒ}t||ƒ t|j| jƒ qd S )Nr‹   ©	rB   r   rS   r\   rB   r   rS   r\   rV   r.   )r   r   r&   r   rF   r   r   r/   )rP   Útr"   r#   rX   r(   r(   r)   rY     s   
ûz_TestRFFTBase.test_definitionc                 C   rd   re   )rg   rh   r   rO   r(   r(   r)   ri     rj   z _TestRFFTBase.test_invalid_sizesc                   @   r�   )z_TestRFFTBase.MockSeriesc                 C   s   t  |¡| _d S r+   )r   r   Údata©rP   r¥   r(   r(   r)   Ú__init__!  rŠ   z!_TestRFFTBase.MockSeries.__init__c              
   C   s:   zt | j|ƒW S  ty } z	td|› d�ƒ|‚d }~ww )Nz&'MockSeries' object has no attribute 'ú')Úgetattrr¥   ÚAttributeError)rP   ÚitemÚer(   r(   r)   Ú__getattr__$  s   ÿÿ€ÿz$_TestRFFTBase.MockSeries.__getattr__N)rk   rl   rm   r§   r­   r(   r(   r(   r)   Ú
MockSeries   s    r®   c                 C   sB   t  g d¢¡}t |¡}g d¢}t|ƒ t||ƒ t|j|ƒ d S )N)g      ð?g       @g      @g      @g      @rŒ   )r   r   r¢   r®   r   r   r¥   )rP   r"   ÚxsÚexpectedr(   r(   r)   Útest_non_ndarray_with_dtype+  s   

z)_TestRFFTBase.test_non_ndarray_with_dtypec                 C   ó   t tttjdtjd�ƒ d S ©Nr\   r.   )rg   Ú	TypeErrorr   r   r   ry   rO   r(   r(   r)   Útest_complex_input6  ó   z _TestRFFTBase.test_complex_inputN)	rk   rl   rm   rQ   rY   ri   r®   r±   rµ   r(   r(   r(   r)   r¢     s    r¢   c                   @   rn   )ÚTestRFFTDoublec                 C   rp   r+   rq   rO   r(   r(   r)   rQ   ;  rt   zTestRFFTDouble.setup_methodNru   r(   r(   r(   r)   r·   :  rv   r·   c                   @   rn   )ÚTestRFFTSinglec                 C   rp   r+   rx   rO   r(   r(   r)   rQ   A  rt   zTestRFFTSingle.setup_methodNru   r(   r(   r(   r)   r¸   @  rv   r¸   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú_TestIRFFTBasec                 C   rˆ   rK   r‰   rO   r(   r(   r)   rQ   G  rŠ   z_TestIRFFTBase.setup_methodc                    sD   g d¢}g d¢}g d¢}g d¢}‡ fdd„}|||ƒ |||ƒ d S )Nr‹   )rB   ù       @      @rT   rº   r\   ù       @      Àù      @      ð¿r»   r£   )	rB   rº   rT   rº   y      @      @y      @      Àr»   r¼   r»   c                    sR   t tj| ˆ jd�ƒ}t| ƒ}t|jˆ jƒ t||ˆ jd� t|t	|ƒˆ jd� d S )Nr.   )Údecimal)
r   r   r   r&   rI   r   r/   r   Úndecr   )r"   Úxrr#   rX   rO   r(   r)   Ú_testP  s
   z-_TestIRFFTBase.test_definition.<locals>._testr(   )rP   rH   Úx1_1r`   Úx2_1rÀ   r(   rO   r)   rY   J  s   
z_TestIRFFTBase.test_definitionc                 C   s€   dD ];}t |gƒ | j¡}tt|ƒƒ}tt|ƒƒ}t|j| jƒ t|j| jƒ t||| jd| d� t||| jd| d� qd S )NrŽ   zsize=%d)r½   r'   )	r,   r…   r&   r   r   r   r/   r   r¾   r–   r(   r(   r)   r™   Z  s   
ÿ
ÿøz_TestIRFFTBase.test_random_realc                 C   s�   | j tjkr	d}n| j tjkrd}tt D ]0}tj d¡ tj |¡ 	| j ¡}t
t|ƒƒ}t||||| j ƒ tt
|ƒƒ}t||||| j ƒ qd S )Nrš   r›   rL   )r&   r   rz   rs   rœ   r�   r,   rN   r   r…   r   r   r*   rž   r(   r(   r)   rŸ   f  s   úz!_TestIRFFTBase.test_size_accuracyc                 C   rd   re   )rg   rh   r   rO   r(   r(   r)   ri   u  rj   z!_TestIRFFTBase.test_invalid_sizesc                 C   r²   r³   )rg   r´   r   r   r   ry   rO   r(   r(   r)   rµ   y  r¶   z!_TestIRFFTBase.test_complex_inputN)	rk   rl   rm   rQ   rY   r™   rŸ   ri   rµ   r(   r(   r(   r)   r¹   F  s    r¹   c                   @   rn   )ÚTestIRFFTDoublec                 C   ó   t j| _t j| _d| _d S )Né   )r   rr   rM   rs   r&   r¾   rO   r(   r(   r)   rQ   �  ó   
zTestIRFFTDouble.setup_methodNru   r(   r(   r(   r)   rÃ   €  rv   rÃ   c                   @   rn   )ÚTestIRFFTSinglec                 C   rÄ   )NrV   )r   ry   rM   rz   r&   r¾   rO   r(   r(   r)   rQ   ˆ  rÆ   zTestIRFFTSingle.setup_methodNru   r(   r(   r(   r)   rÇ   ‡  rv   rÇ   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestfft2c                 C   rˆ   rK   r‰   rO   r(   r(   r)   rQ   �  rŠ   zTestfft2.setup_methodc                 C   s8   t  d¡}t|ddd�}t jj|ddd�}t||ƒ dS )z-FFT returns wrong result with axes parameter.©r\   r\   r   ©é   rË   ©éýÿÿÿéþÿÿÿ©r=   Úaxes)ÚsrÐ   N)ÚnumpyÚonesr   r	   r
   r   ©rP   r"   r#   Úy_rr(   r(   r)   Útest_regression_244’  s   
zTestfft2.test_regression_244c                 C   s,   t ttg gƒ t ttddgddggdƒ d S )NrB   r   ©r\   rÍ   )rg   rh   r   rO   r(   r(   r)   ri   ›  s   zTestfft2.test_invalid_sizesN)rk   rl   rm   rQ   rÖ   ri   r(   r(   r(   r)   rÈ   Ž  s    	rÈ   c                   @   sŒ   e Zd Zdd„ Zdd„ Zej dee	 ¡dd„ ƒZ
ej dee ¡dd	„ ƒZd
d„ Zej dee	 ¡dd„ ƒZej dee ¡dd„ ƒZdS )ÚTestFftnSinglec                 C   rˆ   rK   r‰   rO   r(   r(   r)   rQ   ¡  rŠ   zTestFftnSingle.setup_methodc                 C   s\   g d¢g d¢g d¢g}t t |tj¡ƒ}t|jtjkdd� t t |ƒtj¡}t||ƒ d S )N©rB   r   rS   ©r\   rV   é   ©é   rË   é	   z-double precision output with single precision)Úmsg)r
   r   r   rz   r   r/   ry   r   rÔ   r(   r(   r)   rY   ¤  s   þÿzTestFftnSingle.test_definitionr%   c                 C   óv   t j d¡}| ||f¡d| ||f¡  }t|j t j¡ƒ}t|j t j¡ƒ t j¡}t	|j
t jƒ t||dƒ d S )NrL   rG   éÐ  ©r   r,   Údefault_rngr
   rC   r…   rz   rs   ry   r   r/   r   ©rP   r%   Úrngr"   rX   r—   r(   r(   r)   Útest_size_accuracy_small¯  ó    z'TestFftnSingle.test_size_accuracy_smallc                 C   óv   t j d¡}| |df¡d| |df¡  }t|j t j¡ƒ}t|j t j¡ƒ t j¡}t	|j
t jƒ t||dƒ d S )NrL   rS   rG   rá   râ   )rP   r%   r   r"   rX   r—   r(   r(   r)   Útest_size_accuracy_large¹  rç   z'TestFftnSingle.test_size_accuracy_largec                 C   sV   g d¢g d¢g d¢g}t t |tj¡ƒ}t|jtjƒ t t |ƒtj¡}t||ƒ d S )NrÙ   rÚ   rÜ   )r
   r   r   r„   r   r/   ry   r   rÔ   r(   r(   r)   Útest_definition_float16Ã  s   þz&TestFftnSingle.test_definition_float16c                 C   rà   )NrL   rG   g    €„A©r   r,   rã   r
   rC   r…   r„   rs   ry   r   r/   r   rä   r(   r(   r)   Útest_float16_input_smallÌ  rç   z'TestFftnSingle.test_float16_input_smallc                 C   rè   )NrL   rS   rG   g    €„>Arë   rä   r(   r(   r)   Útest_float16_input_largeÖ  rç   z'TestFftnSingle.test_float16_input_largeN)rk   rl   rm   rQ   rY   r~   r   ÚparametrizeÚSMALL_COMPOSITE_SIZESÚSMALL_PRIME_SIZESræ   rœ   r�   ré   rê   rì   rí   r(   r(   r(   r)   rØ      s    
	
		
	rØ   c                   @   sL   e Z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S )ÚTestFftnc                 C   rˆ   rK   r‰   rO   r(   r(   r)   rQ   â  rŠ   zTestFftn.setup_methodc                 C   sd   g d¢g d¢g d¢g}t |ƒ}t|t|ƒƒ tdƒ}tt |ƒt|ƒƒ tdƒ}tt |ƒt|ƒƒ d S )NrÙ   rÚ   rÜ   ©é   é   ©rV   r\   rS   ró   )r
   r   r?   r,   ©rP   r"   r#   r(   r(   r)   rY   å  s   þzTestFftn.test_definitionc              	   C   s  g d¢g d¢g d¢g}g d¢g d¢g d¢g}g d¢g d¢g d	¢g}g d¢g d¢g d¢g}g d¢g d¢g d¢g}g d¢g d¢g d	¢g}g d
¢g d¢g d¢g}g d¢g d¢g d¢g}g d¢g d¢g d¢g}	g d¢g d¢g d¢g}
g d¢g d¢g d¢g}g d¢g d¢g d¢g}g d¢g d¢g d¢g}g d¢g d¢g d¢g}g d¢g d¢g d¢g}g d
¢g d¢g d¢g}g d¢g d¢g d¢g}g d¢g d¢g d¢g}|||	g}|
||g}|||g}|||g}|||g}t |||gƒ}tt|ƒt|dd�ƒ tt|ƒt|dd�ƒ tt|dd�t|d d�ƒ t|d!d�}tt|d"d#ƒt|ƒƒ t|d$d�}ttt|d"d#ƒd"d%ƒt|ƒƒ t|d&d�}ttt|d"d#ƒd#d%ƒt|ƒƒ t|d'd�}tt|d%d#ƒt|ƒƒ t|d(d�}tt|d%d"ƒt|ƒƒ t|d)d�}tt|ƒ|d* ƒ tt|ƒ|d+ ƒ tt|ƒ|d, ƒ t|d-d�}tt|ƒ|d* ƒ tt|ƒ|d+ ƒ tt|ƒ|d, ƒ t|d.d�}tt|d d …d d …d*f ƒ|d d …d d …d*f ƒ tt|d d …d d …d+f ƒ|d d …d d …d+f ƒ tt|d d …d d …d,f ƒ|d d …d d …d,f ƒ t|d/d�}tt|d d …d*d d …f ƒ|d d …d*d d …f ƒ tt|d d …d+d d …f ƒ|d d …d+d d …f ƒ tt|d d …d,d d …f ƒ|d d …d,d d …f ƒ t|d0d�}tt|ƒt|d* d%d"ƒƒ tt|ƒt|d+ d%d"ƒƒ tt|ƒt|d, d%d"ƒƒ t|d1d�}tt|ƒt|d d …d*d d …f d"d%ƒƒ tt|ƒt|d d …d+d d …f d"d%ƒƒ tt|ƒt|d d …d,d d …f d"d%ƒƒ t|d2d�}tt|ƒt|d d …d d …d*f d"d%ƒƒ tt|ƒt|d d …d d …d+f d"d%ƒƒ tt|	ƒt|d d …d d …d,f d"d%ƒƒ t|d3d�}td4ƒD ] }td4ƒD ]}tt|||d d …f ƒ|||d d …f ƒ �q�qt|d5d�}td4ƒD ] }td4ƒD ]}tt||d d …|f ƒ||d d …|f ƒ �q6�q0t|d6d�}td4ƒD ] }td4ƒD ]}tt|d d …||f ƒ|d d …||f ƒ �qa�q[t|d7d�}t||ƒ d S )8NrÙ   rÚ   rÜ   )é
   é   é   )é   rÅ   é   )é   é   é   )é   ró   é   )é   é   é   )é   rô   é   )rB   r÷   rÿ   )r\   rú   r  )rÝ   rü   r  )r   rø   ró   )rV   rÅ   r  )rË   rý   rô   )rS   rù   r   )rÛ   rû   r  )rÞ   rþ   r  )rB   r\   rÝ   )r÷   rú   rü   )rÿ   r  r  )r   rV   rË   )rø   rÅ   rý   )ró   r  rô   )rS   rÛ   rÞ   )rù   rû   rþ   )r   r  r  )rÍ   rÎ   éÿÿÿÿ©rÐ   ©r   rB   r   )r   r   )r   r  )r   rB   r   r  rÍ   )r   r   rB   rÎ   )rB   r   r   )rB   r   r   )r   r   rB   ©rÎ   r  r   rB   r   ©rB   r   rÌ   )rÍ   r  ©r  rÎ   )r  rÍ   )rÎ   rÍ   ©r  rS   ©rÎ   ©r   r(   )r   r   r
   r   r3   r	   )rP   Úplane1Úplane2Úplane3Ú	ki_plane1Ú	ki_plane2Ú	ki_plane3Ú	jk_plane1Ú	jk_plane2Ú	jk_plane3Ú	kj_plane1Ú	kj_plane2Ú	kj_plane3Ú	ij_plane1Ú	ij_plane2Ú	ij_plane3Ú	ik_plane1Ú	ik_plane2Ú	ik_plane3Ú	ijk_spaceÚ	ikj_spaceÚ	jik_spaceÚ	jki_spaceÚ	kij_spacer"   r#   r7   Újr(   r(   r)   Útest_axes_argumentò  s.  þþþþþþþþþÿÿÿþþþþþþ





ÿÿÿ222222ÿÿÿÿÿÿ.ÿ.ÿ.ÿzTestFftn.test_axes_argumentc                 C   sl   g d¢g d¢g}g d¢g d¢g d¢g d¢g}t |dd�}t|t |ƒƒ t |dd�}t|t |d d	… ƒƒ d S )
NrÙ   rÚ   ©rB   r   rS   r   ©r\   rV   rÛ   r   ©r   r   r   r   ©r\   r\   ©r=   )rS   r\   r  )r
   r   ©rP   Úsmall_xÚlarge_x1r#   r(   r(   r)   Útest_shape_argumentx  s   ÿýzTestFftn.test_shape_argumentc                 C   s‚   g d¢g d¢g d¢g}t g d¢g d¢g d¢g d¢gƒ}t|dd	d
�}t|t|ƒƒ t|ddd
�}t|ttt|ddƒƒddƒƒ d S )NrÙ   rÚ   rÜ   r(  r)  )rÝ   rË   rÞ   r   r*  r+  r	  rÏ   r  r  rÎ   )r   r
   r   r   r-  r(   r(   r)   Útest_shape_axes_argument†  s   þý
ÿz!TestFftn.test_shape_axes_argumentc                 C   s’   t j d¡}t|ddd�}t|t|ddd�ƒ t j d¡}t|ddd�}t|t|d	dd�ƒ t j d
¡}t|ddd�}t|t jj|ddd�ƒ d S )N)r÷   rV   rS   rÝ   r  )rË   )rÐ   r=   r  rË   )r<   r5   r  rÎ   rÉ   rÌ   rÊ   )rÐ   rÑ   )rÒ   r,   r
   r   r	   rö   r(   r(   r)   Útest_shape_axes_argument2•  s   ÿz"TestFftn.test_shape_axes_argument2c                 C   sF   t dƒ}ttdd�� t|dd� W d   ƒ d S 1 sw   Y  d S )NrÉ   zBwhen given, axes and shape arguments have to be of the same length©Úmatch)rË   rË   r   rB   r,  )r   rg   rh   r
   )rP   r"   r(   r(   r)   Útest_shape_argument_more¦  s   ÿ"ýz!TestFftn.test_shape_argument_morec                 C   ó~   t tdd�� tg gƒ W d   ƒ n1 sw   Y  t tdd�� tddgddggdƒ W d   ƒ d S 1 s8w   Y  d S ©Nz4invalid number of data points \(\[1, 0\]\) specifiedr3  z5invalid number of data points \(\[4, -3\]\) specifiedrB   r   r×   )rg   rh   r
   rO   r(   r(   r)   ri   ­  ó   ÿýÿ"ýzTestFftn.test_invalid_sizesN)rk   rl   rm   rQ   rY   r'  r0  r1  r2  r5  ri   r(   r(   r(   r)   rñ   á  s     rñ   c                   @   s~   e Zd ZdZdZdd„ Zej de	j
e	jdfe	je	jdfg¡dd„ ƒZej d	ddg¡ej d
g d¢¡dd„ ƒƒZdd„ ZdS )Ú	TestIfftnNc                 C   rˆ   rK   r‰   rO   r(   r(   r)   rQ   ½  rŠ   zTestIfftn.setup_methodzdtype,cdtype,maxnlprá   i¬  c                 C   s�   t j d¡}t jg d¢g d¢g d¢g|d�}t|ƒ}t|j|ƒ t|t|ƒ|ƒ | d¡}tt|ƒt|ƒ|ƒ | d¡}tt|ƒt|ƒ|ƒ d S )NrL   rÙ   rÚ   rÜ   r.   rò   rõ   )	r   r,   rã   r   r   r   r/   r   rA   )rP   r/   ÚcdtypeÚmaxnlprå   r"   r#   r(   r(   r)   rY   À  s   
þþ

zTestIfftn.test_definitionr;  r%   )rB   r   r�   é    r“   é\   c                 C   sX   t j d¡}| ||g¡d| ||g¡  }ttt|ƒƒ||ƒ ttt|ƒƒ||ƒ d S )NrL   rG   )r   r,   rã   r   r   r
   )rP   r;  r%   rå   r"   r(   r(   r)   r˜   Ò  s    zTestIfftn.test_random_complexc                 C   r6  r7  )rg   rh   r   rO   r(   r(   r)   ri   Ú  r8  zTestIfftn.test_invalid_sizes)rk   rl   rm   r/   r:  rQ   r~   r   rî   r   rs   rr   rz   ry   rY   r˜   ri   r(   r(   r(   r)   r9  ¹  s    ÿÿ
r9  c                   @   rn   )Ú	FakeArrayc                 C   s   || _ |j| _d S r+   )Ú_dataÚ__array_interface__r¦   r(   r(   r)   r§   ç  s   zFakeArray.__init__N)rk   rl   rm   r§   r(   r(   r(   r)   r>  æ  rv   r>  c                   @   s   e Zd Zdd„ Zddd„ZdS )Ú
FakeArray2c                 C   s
   || _ d S r+   ©r?  r¦   r(   r(   r)   r§   í  s   
zFakeArray2.__init__Nc                 C   s   | j S r+   rB  )rP   r/   Úcopyr(   r(   r)   Ú	__array__ð  s   zFakeArray2.__array__)NN)rk   rl   rm   r§   rD  r(   r(   r(   r)   rA  ì  s    rA  c                   @   s  e Zd ZdZejejfZeejej	f Z
g d¢Zdd„ Zdd„ Zej de
¡ej de¡ej d	d
dg¡ej dg d¢¡dd„ ƒƒƒƒZej de¡ej de¡ej d	d
dg¡ej dg d¢¡dd„ ƒƒƒƒZdd„ Zej de
¡ej d	d
dg¡ej dg d¢¡dd„ ƒƒƒZdS )ÚTestOverwritez4Check input overwrite behavior of the FFT functions.)rË   rü   r<  c           	      C   sx   |  ¡ }dd„ ttfD ].}|||ƒ|||d� |j› d|j› |j›d|›d|›d|›d�}|s9t||d	|› �d
� qd S )Nc                 S   s   | S r+   r(   )r"   r(   r(   r)   Ú<lambda>ý  s    z&TestOverwrite._check.<locals>.<lambda>©Úoverwrite_xú(z, z, axis=z, overwrite_x=ú)zspurious overwrite in )r'   )rC  r>  rA  rk   r/   r=   r   )	rP   r"   ÚroutineÚfftsizer<   rH  r`   ÚfakeÚsigr(   r(   r)   Ú_checkû  s   ÿÿ€úzTestOverwrite._checkc           	      C   sf   t j d¡ t  |t j¡rt jj|Ž dt jj|Ž   }nt jj|Ž }| |¡}| j|||||d� d S )NrL   rG   rG  )r   r,   rN   Ú
issubdtypeÚcomplexfloatingÚrandnr…   rO  )	rP   rK  r/   r=   r<   Úoverwritable_dtypesrL  rH  r¥   r(   r(   r)   Ú	_check_1d  s   

ÿzTestOverwrite._check_1dr/   rL  rH  TFz
shape,axes))©rü   r  )©rü   r   r   )©r   rü   rB   c              	   C   s<   t jt jf}|  t||||||¡ |  t||||||¡ d S r+   )r   rr   ry   rT  r	   r   ©rP   r/   rL  rH  r=   rÐ   Úoverwritabler(   r(   r)   Útest_fft_ifft  s   ÿÿzTestOverwrite.test_fft_ifftc              	   C   s6   | j }|  t||||||¡ |  t||||||¡ d S r+   )Úreal_dtypesrT  r   r   rX  r(   r(   r)   Útest_rfft_irfft  s   ÿÿzTestOverwrite.test_rfft_irfftc           
         s¾   t j d¡ t  |t j¡rt jj|Ž dt jj|Ž   }nt jj|Ž }| |¡}‡ fdd„‰ |d u r4|}ntt  ||¡ƒ}ˆ |ƒD ]}	| j	|||	||d� |j
dkr\| j	|j||	||d� q@d S )NrL   rG   c                 3   sb   � t | ƒdkrdV  d S | d d | d | d d fD ]}ˆ | dd … ƒD ]}|f| V  q%qd S )Nr   r(   r   rB   )r2   )Úshpr&  Úrest©Úfftshape_iterr(   r)   r`  4  s   €
"ÿÿz2TestOverwrite._check_nd_one.<locals>.fftshape_iterrG  rB   )r   r,   rN   rP  rQ  rR  r…   ÚtupleÚtakerO  ÚndimÚT)
rP   rK  r/   r=   rÐ   rS  rH  r¥   Ú
part_shapeÚfftshaper(   r_  r)   Ú_check_nd_one+  s&   
ÿ
ÿ€üzTestOverwrite._check_nd_one))rU  N)rU  r  )rV  r  )rW  ©rB   )©rË   rü   N)ri  ©r   rB   )©rË   rü   r   rj  )rk  r
  )rk  r  )rk  rh  )rk  )r   )rk  N)rk  r  c                 C   s8   t jt jf}|  t|||||¡ |  t|||||¡ d S r+   )r   rr   ry   rg  r
   r   )rP   r/   rH  r=   rÐ   rY  r(   r(   r)   Útest_fftn_ifftnH  s   ÿÿzTestOverwrite.test_fftn_ifftnN)rk   rl   rm   Ú__doc__r   rz   rs   r[  ry   rr   ÚdtypesÚfftsizesrO  rT  r~   r   rî   rZ  r\  rg  rl  r(   r(   r(   r)   rE  ô  s,    
rE  Úfuncc                 C   s¢   t j dd¡}| |dd�}| |t  ddg¡d�}t||ƒ | |dd�}| |t  dg¡d�}t||ƒ | |dd	d
�}| |t  ddg¡t  ddg¡d
�}t||ƒ d S )Nr÷   )rV   rV   r,  rV   r  r  r  )r\   rÝ   )rB   r   rÏ   r\   rÝ   rB   r   )r   r,   r   r   r   )rp  ÚaÚexpectÚactualr(   r(   r)   Útest_shape_axes_ndarray_  s   

"rt  )CÚnumpy.testingr   r   r   r   r   r~   r   rg   Úscipy.fftpackr   r	   r
   r   r   r   r   rÒ   r   r   r   r   r   r   r   r   r   r   r   Ú	numpy.fftÚnumpy.randomr   rœ   rï   r�   rð   r*   r,   r8   r9   r?   rA   rF   rI   rJ   ro   rw   r‚   r‡   r    r¡   r¢   r·   r¸   r¹   rÃ   rÇ   rÈ   rØ   rñ   r9  r>  rA  rE  r   rî   rt  r(   r(   r(   r)   Ú<module>   sZ   $0ÿÿ

&H+:A Y-k