o
    ØËh  ã                   @   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                   @   s.  e Zd Zej dg d¢¡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g d¢¡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g d¢¡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g d¢¡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&   ú[/var/www/html/scripts/venv/lib/python3.10/site-packages/scipy/ndimage/tests/test_fourier.pyÚtest_fourier_gaussian_real01   ó   z/TestNdimageFourier.test_fourier_gaussian_real01r	   r   c                 C   óŠ   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   ó   z2TestNdimageFourier.test_fourier_gaussian_complex01c                 C   óŒ   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'   r)   z.TestNdimageFourier.test_fourier_uniform_real01c                 C   r*   r+   )	r   r   r   r   r1   r   r   r    r-   r!   r&   r&   r'   Útest_fourier_uniform_complex014   r/   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 r6   )r   r8   r   r   r   r9   r   r   r-   r:   r   r;   r&   r&   r'   Útest_fourier_shift_complex01Q   s   (ÿ
ÿz/TestNdimageFourier.test_fourier_shift_complex01é   c                 C   r0   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   r*   r+   )	r   r   r   r   r@   r   r   r    r-   r!   r&   r&   r'   Ú test_fourier_ellipsoid_complex01o   r/   z3TestNdimageFourier.test_fourier_ellipsoid_complex01c                 C   sL   t jdt jd}t t¡ t |d¡ W d   ƒ d S 1 sw   Y  d S )N)r4   r   é   r   r7   é   )r   ÚonesÚ
complex128ÚpytestÚraisesÚNotImplementedErrorr   r@   )r"   Úxr&   r&   r'   Ú)test_fourier_ellipsoid_unimplemented_ndim|   s   "ÿz<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndimc                 C   sj   dD ]0}t tjtjgddgƒD ]"\}}tj||d}t |ddd¡}t |ddd¡}t|||d qqd S )N))r
   )r   r?   r   r7   r,   r   r   )	Úzipr   Ú	complex64rF   rE   r   r@   r1   r   )r"   r   Útype_r$   rJ   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 )NrD   )r   rE   r   )r"   r   r#   rQ   r%   rO   r&   r&   r'   Útest_fourier_zero_length_dimsŒ   s   	
z0TestNdimageFourier.test_fourier_zero_length_dimsN)Ú__name__Ú
__module__Ú__qualname__rG   ÚmarkÚparametrizer   Úfloat32Úfloat64r(   rM   rF   r.   r2   r3   r=   r>   rA   rB   rK   rP   r   r@   r   r1   rR   r&   r&   r&   r'   r      sp    ÿ
ÿ
ÿ
ÿ
ÿÿÿÿ

ÿÿþÿr   )
r   r   Únumpy.testingr   r   r   rG   Úscipyr   r   r&   r&   r&   r'   Ú<module>   s    