
    tKg                     T    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      Z
y)    N)fft)assert_almost_equalassert_array_almost_equalassert_equal)ndimagec                   F   e Zd Zej                  j                  dg d      ej                  j                  dej                  dfej                  dfg      d               Z	ej                  j                  dddg      ej                  j                  dej                  dfej                  dfg      d	               Zej                  j                  dg d      ej                  j                  dej                  dfej                  dfg      d
               Zej                  j                  dddg      ej                  j                  dej                  dfej                  dfg      d               Zej                  j                  dddg      ej                  j                  dej                  dfej                  dfg      d               Zej                  j                  dddg      ej                  j                  dej                  dfej                  dfg      d               Zej                  j                  dg d      ej                  j                  dej                  dfej                  dfg      d               Zej                  j                  dddg      ej                  j                  dej                  dfej                  dfg      d               Zd Zd Zej                  j                  dg d      ej                  j                  dej                  ej                  ej                  ej                  g      ej                  j                  dej,                  ej.                  ej0                  g      d                      Zy)TestNdimageFouriershape)             )   
   z
dtype, dec      c                    t        j                  ||      }d|d<   t        j                  ||d   d      }t        j                  ||d   d      }t	        j
                  |ddg|d   d      }t        j                  ||d   d      }t        j                  ||d   d      }t        t	        j                  |      d|       y N      ?r   r   r   r         @      @decimal)
npzerosr   rfftr   fourier_gaussianifftirfftr   sumselfr
   dtypedecas        d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01z/TestNdimageFourier.test_fourier_gaussian_real01   s     HHUE"$HHQa!$GGAuQx#$$Qc
E!Ha@HHQa!$IIaq1%GKKNAs;    r   r   c                    t        j                  ||      }d|d<   t        j                  ||d   d      }t        j                  ||d   d      }t        j                  |ddgdd      }t        j
                  ||d   d      }t        j
                  ||d   d      }t        t        j                  |j                        d|       y 	Nr   r   r   r   r   r   r   )	r   r   r   r   r    r!   r   r#   realr$   s        r)   test_fourier_gaussian_complex01z2TestNdimageFourier.test_fourier_gaussian_complex01   s     HHUE"$GGAuQx#GGAuQx#$$Qc
B:HHQa!$HHQa!$GKK/cBr+   c                    t        j                  ||      }d|d<   t        j                  ||d   d      }t        j                  ||d   d      }t	        j
                  |ddg|d   d      }t        j                  ||d   d      }t        j                  ||d   d      }t        t	        j                  |      d|       y r   )
r   r   r   r   r   fourier_uniformr!   r"   r   r#   r$   s        r)   test_fourier_uniform_real01z.TestNdimageFourier.test_fourier_uniform_real01%   s     HHUE"$HHQa!$GGAuQx###ASz58Q?HHQa!$IIaq1%GKKNC=r+   c                    t        j                  ||      }d|d<   t        j                  ||d   d      }t        j                  ||d   d      }t        j                  |ddgdd      }t        j
                  ||d   d      }t        j
                  ||d   d      }t        t        j                  |j                        d|       y r-   )	r   r   r   r   r2   r!   r   r#   r/   r$   s        r)   test_fourier_uniform_complex01z1TestNdimageFourier.test_fourier_uniform_complex011   s     HHUE"$GGAuQx#GGAuQx###ASz2q9HHQa!$HHQa!$GKK/cBr+         c                    t        j                  |d   |d   z  |      }||_        t        j                  ||d   d      }t        j                  ||d   d      }t        j                  |ddg|d   d      }t        j                  ||d   d      }t        j                  ||d   d      }t        |dd dd f   |d dd df   |       t        |j                  t        j                  |      |       y Nr   r   r&   r.   r   )r   aranger
   r   r   r   fourier_shiftr!   r"   r   imagr   r%   r
   r&   r'   expectedr(   s         r)   test_fourier_shift_real01z,TestNdimageFourier.test_fourier_shift_real01=   s     99U1Xa0>HHXuQx+GGAuQx#!!!aVU1Xq9HHQa!$IIaq1%!!ABF)Xcrc3B3h-?M!!&&"((5/3Gr+   c                     t        j                  |d   |d   z  |      }||_        t        j                  ||d   d      }t        j                  ||d   d      }t	        j
                  |ddgdd      }t        j                  ||d   d      }t        j                  ||d   d      }t        |j                  dd dd f   |d dd df   |       t        |j                  t        j                  |      |       y r9   )r   r;   r
   r   r   r<   r!   r   r/   r=   r   r>   s         r)   test_fourier_shift_complex01z/TestNdimageFourier.test_fourier_shift_complex01J   s     99U1Xa0>GGHeAh*GGAuQx#!!!aVR3HHQa!$HHQa!$!!&&QR.(3B382DcR!!&&"((5/3Gr+      c                    t        j                  ||      }d|d<   t        j                  ||d   d      }t        j                  ||d   d      }t	        j
                  |ddg|d   d      }t        j                  ||d   d      }t        j                  ||d   d      }t        t	        j                  |      d|       y r   )
r   r   r   r   r   fourier_ellipsoidr!   r"   r   r#   r$   s        r)   test_fourier_ellipsoid_real01z0TestNdimageFourier.test_fourier_ellipsoid_real01W   s     HHUE"$HHQa!$GGAuQx#%%a#s&+Ah3HHQa!$IIaq1%GKKNC=r+   c                    t        j                  ||      }d|d<   t        j                  ||d   d      }t        j                  ||d   d      }t        j                  |ddgdd      }t        j
                  ||d   d      }t        j
                  ||d   d      }t        t        j                  |j                        d|       y r-   )	r   r   r   r   rE   r!   r   r#   r/   r$   s        r)    test_fourier_ellipsoid_complex01z3TestNdimageFourier.test_fourier_ellipsoid_complex01d   s     HHUE"$GGAuQx#GGAuQx#%%a#sR;HHQa!$HHQa!$GKK/cBr+   c                     t        j                  dt         j                        }t        j                  t
              5  t        j                  |d       d d d        y # 1 sw Y   y xY w)N)r6   r      r   r:      )r   ones
complex128pytestraisesNotImplementedErrorr   rE   )r%   xs     r)   )test_fourier_ellipsoid_unimplemented_ndimz<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndimp   s?    GGM7]]./%%a+ 0//s   AA(c                 $   dD ]  }t        t        j                  t        j                  gddg      D ]Z  \  }}t        j                  ||      }t        j                  |ddd      }t        j                  |ddd      }t        |||       \  y )N))r   )r   rC   r   r:   r.   r   r   )	zipr   	complex64rM   rL   r   rE   r2   r   )r%   r
   type_r'   rQ   r(   bs          r)   !test_fourier_ellipsoid_1d_complexz4TestNdimageFourier.test_fourier_ellipsoid_1d_complexv   s{    %E!2<<"?!RI
sGGE/--aB:++Aq"a8)!Q<	 J &r+   ))r   )r   r   )r   r   r&   	test_funcc                 Z    t        j                  ||      } ||d      }t        ||       y )NrK   )r   rL   r   )r%   r
   r&   rY   r(   rW   s         r)   test_fourier_zero_length_dimsz0TestNdimageFourier.test_fourier_zero_length_dims   s)     GGE5!aOQr+   N)__name__
__module____qualname__rN   markparametrizer   float32float64r*   rU   rM   r0   r3   r5   r@   rB   rF   rH   rR   rX   r   rE   r    r2   r[    r+   r)   r	   r	      sy   [[W&CD[[\RZZObjj"=M+NO< P E< [[Wx&:;[[\R\\1,=r?R+STC U <C [[W&CD[[\RZZObjj"=M+NO> P E> [[Wx&:;[[\R\\1,=r?R+STC U <C [[Wx&:;[[\RZZObjj"=M+NO	H P <	H [[Wx&:;[[\R\\1,=r?R+ST	H U <	H [[W&CD[[\RZZObjj"=M+NO	> P E	> [[Wx&:;[[\R\\1,=r?R+STC U <C,= [[W&?@[[Wrzz2::')||R]]'D E[[[%77%66%5578	8E Ar+   r	   )numpyr   r   numpy.testingr   r   r   rN   scipyr   r	   rc   r+   r)   <module>rg      s)     ) )  ~ ~r+   