
    S_f                     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)
numpyzerosr   rfftr   fourier_gaussianifftirfftr   sumselfr
   dtypedecas        @lib/python3.12/site-packages/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01z/TestNdimageFourier.test_fourier_gaussian_real01   s     KKu%$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     KKu%$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     KKu%$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_complex014   s     KKu%$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_real01A   s     <<a58 35AHHXuQx+GGAuQx#!!!aVU1Xq9HHQa!$IIaq1%!!ABF)Xcrc3B3h-?*-	/!!&&%++e*<*-	/r+   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_complex01Q   s     <<a58 35AGGHeAh*GGAuQx#!!!aVR3HHQa!$HHQa!$!!&&QR.(3B382D*-	/!!&&%++e*<*-	/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                  |      d|       y r   )
r   r   r   r   r   fourier_ellipsoidr!   r"   r   r#   r$   s        r)   test_fourier_ellipsoid_real01z0TestNdimageFourier.test_fourier_ellipsoid_real01a   s     KKu%$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_complex01o   s     KKu%$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_ndim|   sJ    JJ}E,<,<=]]./ 	,%%a+	, 	, 	,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_complex   s    % 	=E!5??E4D4D"E#$b'+ =
sJJuE2--aB:++Aq"a8)!Q<=	=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)     JJue$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	      s   [[W&CD[[\$}}a05=="2EFH<H E< [[Wx&:;[[\$2U5E5Er4JKMCM <C [[W&CD[[\$}}a05=="2EFH>H E> [[Wx&:;[[\$2U5E5Er4JKMCM <C [[Wx&:;[[\$}}a05=="2EFH/H </ [[Wx&:;[[\$2U5E5Er4JKM/M </ [[W&CD[[\$}}a05=="2EFH	>H E	> [[Wx&:;[[\$2U5E5Er4JKMCM <C,= [[W&?@[[W#mmU]]#oou/?/?AB [[[%77%66%5578	8B Ar+   r	   )
r   r   numpy.testingr   r   r   rN   scipyr   r	   rc   r+   r)   <module>rf      s)     ) )  L Lr+   