o
    ”e  ć                   @   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&   śO/var/www/myenv/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    