
    bi                         d dl Z d dlZd dlmZmZmZmZmZm	Z	 d dl
Z
d dlmZ e
j                  j                  Z G d d      Zy)    N)xp_assert_equalassert_array_almost_equalassert_almost_equalis_cupymake_xp_test_casemake_xp_pytest_param)ndimagec            
       :   e Zd Zej                  j                  dg d      ej                  j                  dddg       eej                        d                      Z	ej                  j                  dddg      ej                  j                  dd	d
g       eej                        d                      Z
ej                  j                  dg d      ej                  j                  dddg       eej                        d                      Zej                  j                  dddg      ej                  j                  dd	d
g       eej                        d                      Zej                  j                  dddg      ej                  j                  dddg       eej                        d                      Zej                  j                  dddg      ej                  j                  dddg       eej                        d                      Zej                  j                  dg d      ej                  j                  dddg       eej"                        d                      Zej                  j                  dddg      ej                  j                  ddd
g       eej"                        d                      Z eej"                        d        Z eej"                        d        Zej                  j                  dg d      ej                  j                  dg d      ej                  j                  d eej"                         eej                         eej                        g      d                      Zy) TestNdimageFouriershape)             )   
   z
dtype, dec)float32   )float64   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j                  ||d   d      }t        j                  |dd	g|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |      |j                  d      |d
       y Nfftdtype      ?r   r   r   naxisr         @      @Fdecimalcheck_0d)getattrnpzerosasarrayrfftr   r	   fourier_gaussianifftirfftr   sumselfr   r   decxpr   as          [/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01z/TestNdimageFourier.test_fourier_gaussian_real01   s     b% HHU%($JJqMHHQ%(H+GGAqG*$$Qc
E!Ha@HHQ%(H+IIa58!I,GKKNBJJqM3%*	,    r   r   )	complex64r   )
complex128r   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j	                  ||d   d      }t        j                  |dd	gd
d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |j                  |            |j                  d      |d       y Nr   r   r   r   r   r    r   r#   r$   Fr%   )r(   r)   r*   r+   r   r	   r-   r.   r   r0   realr1   s          r6   test_fourier_gaussian_complex01z2TestNdimageFourier.test_fourier_gaussian_complex01(   s     b% HHU%($JJqMGGAqG*GGAqG*$$Qc
B:HHQ%(H+HHQ%(H+GKK
3RZZ_c%*	,r8   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j                  ||d   d      }t        j                  |dd	g|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |      |j                  d      |d
       y r   )r(   r)   r*   r+   r,   r   r	   fourier_uniformr.   r/   r   r0   r1   s          r6   test_fourier_uniform_real01z.TestNdimageFourier.test_fourier_uniform_real01:   s     b% HHU%($JJqMHHQ%(H+GGAqG*##ASz58Q?HHQ%(H+IIa58!I,GKKNBJJsOS%*	,r8   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j	                  ||d   d      }t        j                  |dd	gd
d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |j                  |            |j                  d      |d       y r<   )r(   r)   r*   r+   r   r	   rA   r.   r   r0   r>   r1   s          r6   test_fourier_uniform_complex01z1TestNdimageFourier.test_fourier_uniform_complex01L   s     b% HHU%($JJqMGGAqG*GGAqG*##ASz2q9HHQ%(H+HHQ%(H+GKK
3RZZ_c%*	,r8   )r      )r      c                    t        |d      }t        j                  |d   |d   z  |      j                  |      }|j	                  |      }|j                  ||d   d      }|j                  ||d   d      }t        j                  |ddg|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        |dd dd f   |d dd df   |       y Nr   r   r   r   r    r=   r&   )r(   r)   arangereshaper+   r,   r   r	   fourier_shiftr.   r/   r   r2   r   r   r3   r4   r   expectedr5   s           r6   test_fourier_shift_real01z,TestNdimageFourier.test_fourier_shift_real01^   s     b% 99U1Xa0>FFuM::h'HHXqH2GGAqG*!!!aVU1Xq9HHQ%(H+IIa58!I,!!ABF)Xcrc3B3h-?Mr8   )r9   rE   )r:   rF   c                 >   t        |d      }t        j                  |d   |d   z  |      j                  |      }|j	                  |      }|j                  ||d   d      }|j                  ||d   d      }t        j                  |ddgdd      }|j                  ||d   d      }|j                  ||d   d      }t        |j                  |      dd dd f   |d dd df   |       t        |j                  |      |j                  |      |       y rH   )r(   r)   rJ   rK   r+   r   r	   rL   r.   r   r>   imagr*   rM   s           r6   test_fourier_shift_complex01z/TestNdimageFourier.test_fourier_shift_complex01n   s    b% 99U1Xa0>FFuM::h'GGHaqG1GGAqG*!!!aVR3HHQ%(H+HHQ%(H+!"''!*QRV"4hssCRCx6HRUV!"''!*bhhuosKr8   )r      c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j                  ||d   d      }t        j                  |dd	g|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |      |j                  d      |d
       y r   )r(   r)   r*   r+   r,   r   r	   fourier_ellipsoidr.   r/   r   r0   r1   s          r6   test_fourier_ellipsoid_real01z0TestNdimageFourier.test_fourier_ellipsoid_real01   s     b% HHU%($JJqMHHQ%(H+GGAqG*%%a#sU1XqAHHQ%(H+IIa58!I,GKKNBJJsOS%*	,r8   )r9   rS   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j	                  ||d   d      }t        j                  |dd	gd
d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |j                  |            |j                  d      |d       y r<   )r(   r)   r*   r+   r   r	   rU   r.   r   r0   r>   r1   s          r6    test_fourier_ellipsoid_complex01z3TestNdimageFourier.test_fourier_ellipsoid_complex01   s     b% HHU%($JJqMGGAqG*GGAqG*%%a#sR;HHQ%(H+HHQ%(H+GKK
3RZZ_c%*	,r8   c                     |j                  d|j                        }t        j                  t              5  t        j                  |d       d d d        y # 1 sw Y   y xY w)N)rE   r      r   r      )onesr:   pytestraisesNotImplementedErrorr	   rU   )r2   r4   xs      r6   )test_fourier_ellipsoid_unimplemented_ndimz<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndim   sL     GGMG7]]./ 	,%%a+	, 	, 	,s   AA c                    dD ]  }t        |j                  |j                  gddg      D ]V  \  }}|j                  ||      }t	        j
                  |ddd      }t	        j                  |ddd      }t        |||       X  y )N))r   )r   rS   r   r   r=   r   rI   )zipr9   r:   r\   r	   rU   rA   r   )r2   r4   r   type_r3   r`   r5   bs           r6   !test_fourier_ellipsoid_1d_complexz4TestNdimageFourier.test_fourier_ellipsoid_1d_complex   s     & 	=E!2<<"?!RI =
sGGEG/--aB:++Aq"a8)!Q<	=	=r8   ))r   )r   r   )r   r   r   )r   r   r9   r:   	test_funcc                     t        |      r<|j                  dk(  r-t        j                  |      dk(  rt	        j
                  d       t        ||      }|j                  ||      } ||d      }t        ||       y )NrU   r   z7CuPy's fourier_ellipsoid does not accept size==0 arraysr   r[   )	r   __name__mathprodr]   xfailr(   r\   r   )r2   r   r   rg   r4   r5   re   s          r6   test_fourier_zero_length_dimsz0TestNdimageFourier.test_fourier_zero_length_dims   sk     BK""&99		% A%LLRSE"GGEG'aO1r8   N)ri   
__module____qualname__r]   markparametrizer   r	   r-   r7   r?   rA   rB   rD   rL   rO   rR   rU   rV   rX   ra   rf   r   rm    r8   r6   r   r      s   [[W&CD[[\NO+LMw//0, 1 N E, [[Wx&:;[[\,<>P+QRw//0, 1 S <, [[W&CD[[\NO+LMw../, 0 N E, [[Wx&:;[[\,<>P+QRw../, 0 S <, [[Wx&:;[[\NO+LMw,,-N . N <N [[Wx&:;[[\,<>P+QRw,,-L . S <L [[W&CD[[\NO+LMw001, 2 N E, [[Wx&:;[[\,<>P+QRw001, 2 S <, w001, 2, w001= 2= [[W&?@[[W 'B C[[[273L3LM273K3KL273J3JKMN
	NC A
r8   r   )rj   numpyr)   scipy._lib._array_apir   r   r   r   r   r   r]   scipyr	   rp   skip_xp_backendsr   rr   r8   r6   <module>rw      s9        ;;// q qr8   