U
    Gvf  ã                   @   sN   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mZ G dd„ dƒZ	dS )é    N)Úfft)Úassert_almost_equalÚassert_array_almost_equalÚassert_equal)Úndimagec                   @   s6  e Zd Zej ddddg¡ej dejdfejdfg¡dd	„ ƒƒZ	ej dddg¡ej dej
dfejdfg¡d
d„ ƒƒZej ddddg¡ej dejdfejdfg¡dd„ ƒƒZej dddg¡ej dej
dfejdfg¡dd„ ƒƒZej dddg¡ej dejdfejdfg¡dd„ ƒƒZej dddg¡ej dej
dfejdfg¡dd„ ƒƒZej ddddg¡ej dejdfejdfg¡dd„ ƒƒZej dddg¡ej dej
dfejdfg¡dd„ ƒƒZdd„ Zdd„ Zej ddd d!g¡ej d"ejejej
ejg¡ej d#ejejejg¡d$d%„ ƒƒƒZd&S )'ÚTestNdimageFourierÚshape)é    é   )é   é   )é   é
   z
dtype, decé   é   c                 C   sŒ   t  ||¡}d|d< t ||d d¡}t ||d d¡}t |ddg|d d¡}t ||d d¡}t ||d d¡}tt 	|¡d|d d S ©Nç      ð?©r   r   r   r   ç      @ç      @©Údecimal)
ÚnumpyÚzerosr   Úrfftr   Úfourier_gaussianÚifftÚirfftr   Úsum©Úselfr   ÚdtypeÚdecÚa© r$   úD/tmp/pip-unpacked-wheel-96ln3f52/scipy/ndimage/tests/test_fourier.pyÚtest_fourier_gaussian_real01   s    z/TestNdimageFourier.test_fourier_gaussian_real01c                 C   sŠ   t  ||¡}d|d< t ||d d¡}t ||d d¡}t |ddgdd¡}t ||d d¡}t ||d d¡}tt |j¡d|d d S ©	Nr   r   r   r   r   r   éÿÿÿÿr   )	r   r   r   r   r   r   r   r   Úrealr   r$   r$   r%   Útest_fourier_gaussian_complex01   s    z2TestNdimageFourier.test_fourier_gaussian_complex01c                 C   sŒ   t  ||¡}d|d< t ||d d¡}t ||d d¡}t |ddg|d d¡}t ||d d¡}t ||d d¡}tt 	|¡d|d d S r   )
r   r   r   r   r   Úfourier_uniformr   r   r   r   r   r$   r$   r%   Útest_fourier_uniform_real01'   s    z.TestNdimageFourier.test_fourier_uniform_real01c                 C   sŠ   t  ||¡}d|d< t ||d d¡}t ||d d¡}t |ddgdd¡}t ||d d¡}t ||d d¡}tt |j¡d|d d S r'   )	r   r   r   r   r+   r   r   r   r)   r   r$   r$   r%   Útest_fourier_uniform_complex014   s    z1TestNdimageFourier.test_fourier_uniform_complex01é   é   c                 C   sÈ   t j|d |d  |d}||_t ||d d¡}t ||d d¡}t |ddg|d d¡}t ||d d¡}t ||d d¡}t	|dd …dd …f |d d…d d…f |d t	|j
t  |¡|d d S ©Nr   r   ©r!   r(   r   )r   Úaranger   r   r   r   Úfourier_shiftr   r   r   Úimagr   ©r    r   r!   r"   Úexpectedr#   r$   r$   r%   Útest_fourier_shift_real01A   s    &ÿÿz,TestNdimageFourier.test_fourier_shift_real01c                 C   sÆ   t j|d |d  |d}||_t ||d d¡}t ||d d¡}t |ddgdd¡}t ||d d¡}t ||d d¡}t|jdd …dd …f |d d…d d…f |d t|j	t  
|¡|d d S r0   )r   r2   r   r   r   r3   r   r   r)   r4   r   r5   r$   r$   r%   Útest_fourier_shift_complex01Q   s    (ÿÿz/TestNdimageFourier.test_fourier_shift_complex01é   c                 C   sŒ   t  ||¡}d|d< t ||d d¡}t ||d d¡}t |ddg|d d¡}t ||d d¡}t ||d d¡}tt 	|¡d|d d S r   )
r   r   r   r   r   Úfourier_ellipsoidr   r   r   r   r   r$   r$   r%   Útest_fourier_ellipsoid_real01a   s     ÿz0TestNdimageFourier.test_fourier_ellipsoid_real01c                 C   sŠ   t  ||¡}d|d< t ||d d¡}t ||d d¡}t |ddgdd¡}t ||d d¡}t ||d d¡}tt |j¡d|d d S r'   )	r   r   r   r   r:   r   r   r   r)   r   r$   r$   r%   Ú test_fourier_ellipsoid_complex01o   s    z3TestNdimageFourier.test_fourier_ellipsoid_complex01c              	   C   s6   t jdt jd}t t¡ t |d¡}W 5 Q R X d S )N)r.   r   é   r   r1   é   )r   ÚonesÚ
complex128ÚpytestZraisesÚNotImplementedErrorr   r:   )r    Úxr#   r$   r$   r%   Ú)test_fourier_ellipsoid_unimplemented_ndim|   s    z<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndimc                 C   sj   dD ]`}t tjtjgddgƒD ]D\}}tj||d}t |ddd¡}t |ddd¡}t|||d qqd S )N))r	   )r   r9   r   r1   r(   r   r   )	Úzipr   Ú	complex64r@   r?   r   r:   r+   r   )r    r   Útype_r"   rC   r#   Úbr$   r$   r%   Ú!test_fourier_ellipsoid_1d_complex‚   s    ÿz4TestNdimageFourier.test_fourier_ellipsoid_1d_complex)r   )r   r   )r   r   r!   Ú	test_funcc                 C   s$   t  ||¡}||dƒ}t||ƒ d S )Nr>   )r   r?   r   )r    r   r!   rJ   r#   rH   r$   r$   r%   Útest_fourier_zero_length_dimsŒ   s    	
z0TestNdimageFourier.test_fourier_zero_length_dimsN)Ú__name__Ú
__module__Ú__qualname__rA   ÚmarkZparametrizer   Zfloat32Zfloat64r&   rF   r@   r*   r,   r-   r7   r8   r;   r<   rD   rI   r   r:   r   r+   rK   r$   r$   r$   r%   r      sp   ÿ
ÿ
ÿ
ÿ
ÿÿÿÿ

 ÿÿþÿr   )
r   r   Znumpy.testingr   r   r   rA   Zscipyr   r   r$   r$   r$   r%   Ú<module>   s
   