o
    Eb                     @   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         @      @Zdecimal)
numpyzerosr   rfftr   fourier_gaussianifftirfftr   sumselfr   dtypedeca r%   B/usr/lib/python3/dist-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   r0   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#   Z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 r5   )r   r7   r   r   r   r8   r   r   r,   r9   r   r:   r%   r%   r&   test_fourier_shift_complex01Q   s   (
z/TestNdimageFourier.test_fourier_shift_complex01   c                 C   r/   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)r3   r      r   r6      )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 ]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   r6   r+   r   r   )	zipr   	complex64rD   rC   r   r>   r0   r   )r!   r   Ztype_r#   rG   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 )NrB   )r   rC   r   )r!   r   r"   rM   r$   rK   r%   r%   r&   test_fourier_zero_length_dims   s   	
z0TestNdimageFourier.test_fourier_zero_length_dimsN)__name__
__module____qualname__rE   ZmarkZparametrizer   Zfloat32Zfloat64r'   rJ   rD   r-   r1   r2   r;   r<   r?   r@   rH   rL   r   r>   r   r0   rN   r%   r%   r%   r&   r      sp    





r   )
r   r   Znumpy.testingr   r   r   rE   Zscipyr   r   r%   r%   r%   r&   <module>   s    