
    Џkh                         d dl Z d dlZd dlmZmZmZmZ d dlZd dl	m
Z
 ej                  j                  Z edddg      gZ edd	       G d
 d             Zy)    N)xp_assert_equalassert_array_almost_equalassert_almost_equalis_cupy)ndimageTcupyz	jax.numpy)cpu_only
exceptionszjax-ml/jax#23827)reasonc                   r   e Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zej                  j                  dddg      ej                  j                  dd	d
g      d               Zej                  j                  dg d      ej                  j                  dddg      d               Zej                  j                  dddg      ej                  j                  dd	d
g      d               Z	ej                  j                  dddg      ej                  j                  dddg      d               Z
ej                  j                  dddg      ej                  j                  dddg      d               Zej                  j                  dg d      ej                  j                  dddg      d               Zej                  j                  dddg      ej                  j                  ddd
g      d               Zd Zd Zej                  j                  dg d      ej                  j                  dg d      ej                  j                  dej"                  ej$                  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          \/var/www/teggl/fontify/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/   r0   r   r2   realr3   s          r8   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%*	,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_uniformr0   r1   r   r2   r3   s          r8   test_fourier_uniform_real01z.TestNdimageFourier.test_fourier_uniform_real018   s     b% HHU%($JJqMHHQ%(H+GGAqG*##ASz58Q?HHQ%(H+IIa58!I,GKKNBJJsOS%*	,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                  |            |j                  d      |d       y r>   )r*   r+   r,   r-   r   r   rC   r0   r   r2   r@   r3   s          r8   test_fourier_uniform_complex01z1TestNdimageFourier.test_fourier_uniform_complex01I   s     b% HHU%($JJqMGGAqG*GGAqG*##ASz2q9HHQ%(H+HHQ%(H+GKK
3RZZ_c%*	,r:   )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_shiftr0   r1   r   r4   r   r   r5   r6   r   expectedr7   s           r8   test_fourier_shift_real01z,TestNdimageFourier.test_fourier_shift_real01Z   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-?Mr:   )r;   rG   )r<   rH   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 rJ   )r*   r+   rL   rM   r-   r   r   rN   r0   r   r@   imagr,   rO   s           r8   test_fourier_shift_complex01z/TestNdimageFourier.test_fourier_shift_complex01i   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Kr:   )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_ellipsoidr0   r1   r   r2   r3   s          r8   test_fourier_ellipsoid_real01z0TestNdimageFourier.test_fourier_ellipsoid_real01y   s     b% HHU%($JJqMHHQ%(H+GGAqG*%%a#sU1XqAHHQ%(H+IIa58!I,GKKNBJJsOS%*	,r:   )r;   rU   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   rW   r0   r   r2   r@   r3   s          r8    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%*	,r:   c                     |j                  d|j                        }t        j                  t              5  t        j                  |d       d d d        y # 1 sw Y   y xY w)N)rG   r      r   r      )onesr<   pytestraisesNotImplementedErrorr   rW   )r4   r6   xs      r8   )test_fourier_ellipsoid_unimplemented_ndimz<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndim   sJ    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   rU   r   r   r?   r   rK   )zipr;   r<   r^   r   rW   rC   r   )r4   r6   r   type_r5   rb   r7   bs           r8   !test_fourier_ellipsoid_1d_complexz4TestNdimageFourier.test_fourier_ellipsoid_1d_complex   s    % 	=E!2<<"?!RI =
sGGEG/--aB:++Aq"a8)!Q<	=	=r:   ))r   )r   r   )r   r   r   )r   r   r;   r<   	test_funcc                     t        |      r<|j                  dk(  r-t        j                  |      dk(  rt	        j
                  d       t        ||      }|j                  ||      } ||d      }t        ||       y )NrW   r   z7CuPy's fourier_ellipsoid does not accept size==0 arraysr   r]   )	r   __name__mathprodr_   xfailr*   r^   r   )r4   r   r   ri   r6   r7   rg   s          r8   test_fourier_zero_length_dimsz0TestNdimageFourier.test_fourier_zero_length_dims   sk     BK""&99		% A%LLRSE"GGEG'aO1r:   N)rk   
__module____qualname__r_   markparametrizer9   rA   rD   rF   rQ   rT   rX   rZ   rc   rh   r   rW   r/   rC   ro    r:   r8   r   r      s    [[W&CD[[\NO+LM, N E, [[Wx&:;[[\,<>P+QR, S <, [[W&CD[[\NO+LM, N E, [[Wx&:;[[\,<>P+QR, S <, [[Wx&:;[[\NO+LMN N <N [[Wx&:;[[\,<>P+QRL S <L [[W&CD[[\NO+LM, N E, [[Wx&:;[[\,<>P+QR, S <,,= [[W&?@[[W 'B C[[[%77%66%5578
	8C A
r:   r   )rl   numpyr+   scipy._lib._array_apir   r   r   r   r_   scipyr   rr   skip_xp_backends
pytestmarkr   rt   r:   r8   <module>rz      se        ;;// &+9NOP
 +&89g g :gr:   