
    -i                         S SK r S SKrS SKJrJrJrJr  S SKrS SK	J
r
  \R                  R                  r\" SSS/S9/r\" SSS	9 " S
 S5      5       rg)    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                   z   \ rS rSr\R
                  R                  S/ SQ5      \R
                  R                  SSS/5      S 5       5       r\R
                  R                  SSS	/5      \R
                  R                  SS
S/5      S 5       5       r\R
                  R                  S/ SQ5      \R
                  R                  SSS/5      S 5       5       r	\R
                  R                  SSS	/5      \R
                  R                  SS
S/5      S 5       5       r
\R
                  R                  SSS	/5      \R
                  R                  SSS/5      S 5       5       r\R
                  R                  SSS	/5      \R
                  R                  SSS/5      S 5       5       r\R
                  R                  S/ SQ5      \R
                  R                  SSS/5      S 5       5       r\R
                  R                  SSS	/5      \R
                  R                  SSS/5      S 5       5       rS rS r\R
                  R                  S/ SQ5      \R
                  R                  S/ SQ5      \R
                  R                  S\R$                  \R&                  \R(                  /5      S 5       5       5       rS rg!)"TestNdimageFourier   shape)             )   
   z
dtype, dec)float32   )float64   c                    [        US5      n[        R                  " XS9nSUS'   UR                  U5      nUR	                  XaS   SS9nUR                  XaS   SS9n[        R                  " USS	/US   S5      nUR                  XaS   SS9nUR                  XaS   SS9n[        [        R                  " U5      UR                  S5      US
S9  g 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          S/var/www/html/venv/lib/python3.13/site-packages/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01/TestNdimageFourier.test_fourier_gaussian_real01   s     b% HHU($JJqMHHQ(H+GGAqG*$$Qc
E!Ha@HHQ(H+IIa8!I,GKKNBJJqM3%*	,    r   r   )	complex64r   )
complex128r   c                    [        US5      n[        R                  " XS9nSUS'   UR                  U5      nUR	                  XaS   SS9nUR	                  XaS   SS9n[
        R                  " USS	/S
S5      nUR                  XaS   SS9nUR                  XaS   SS9n[        [
        R                  " UR                  U5      5      UR                  S5      USS9  g Nr   r   r!   r"   r   r#   r   r&   r'   Fr(   )r+   r,   r-   r.   r   r   r0   r1   r   r3   realr4   s          r9   test_fourier_gaussian_complex012TestNdimageFourier.test_fourier_gaussian_complex01'   s     b% HHU($JJqMGGAqG*GGAqG*$$Qc
B:HHQ(H+HHQ(H+GKK
3RZZ_c%*	,r<   c                    [        US5      n[        R                  " XS9nSUS'   UR                  U5      nUR	                  XaS   SS9nUR                  XaS   SS9n[        R                  " USS	/US   S5      nUR                  XaS   SS9nUR                  XaS   SS9n[        [        R                  " U5      UR                  S5      US
S9  g r   )r+   r,   r-   r.   r/   r   r   fourier_uniformr1   r2   r   r3   r4   s          r9   test_fourier_uniform_real01.TestNdimageFourier.test_fourier_uniform_real018   s     b% HHU($JJqMHHQ(H+GGAqG*##ASz58Q?HHQ(H+IIa8!I,GKKNBJJsOS%*	,r<   c                    [        US5      n[        R                  " XS9nSUS'   UR                  U5      nUR	                  XaS   SS9nUR	                  XaS   SS9n[
        R                  " USS	/S
S5      nUR                  XaS   SS9nUR                  XaS   SS9n[        [
        R                  " UR                  U5      5      UR                  S5      USS9  g r@   )r+   r,   r-   r.   r   r   rF   r1   r   r3   rB   r4   s          r9   test_fourier_uniform_complex011TestNdimageFourier.test_fourier_uniform_complex01I   s     b% HHU($JJqMGGAqG*GGAqG*##ASz2q9HHQ(H+HHQ(H+GKK
3RZZ_c%*	,r<   )r      )r      c                    [        US5      n[        R                  " US   US   -  US9R                  U5      nUR	                  U5      nUR                  XaS   SS9nUR                  XqS   SS9n[        R                  " USS/US   S5      nUR                  XqS   SS9nUR                  XqS   SS9n[        USS 2SS 24   US S2S S24   US9  g Nr   r   r   r   r#   rA   r)   )r+   r,   arangereshaper.   r/   r   r   fourier_shiftr1   r2   r   r5   r   r    r6   r7   r   expectedr8   s           r9   test_fourier_shift_real01,TestNdimageFourier.test_fourier_shift_real01Z   s     b% 99U1Xa0>FFuM::h'HHXqH2GGAqG*!!!aVU1Xq9HHQ(H+IIa8!I,!!ABF)Xcrc3B3h-?Mr<   )r=   rL   )r>   rM   c                    [        US5      n[        R                  " US   US   -  US9R                  U5      nUR	                  U5      nUR                  XaS   SS9nUR                  XqS   SS9n[        R                  " USS/SS5      nUR                  XqS   SS9nUR                  XqS   SS9n[        UR                  U5      SS 2SS 24   US S2S S24   US9  [        UR                  U5      UR                  U5      US9  g rO   )r+   r,   rQ   rR   r.   r   r   rS   r1   r   rB   imagr-   rT   s           r9   test_fourier_shift_complex01/TestNdimageFourier.test_fourier_shift_complex01i   s    b% 99U1Xa0>FFuM::h'GGHaqG1GGAqG*!!!aVR3HHQ(H+HHQ(H+!"''!*QRV"4hssCRCx6HRUV!"''!*bhhuosKr<   )r      c                    [        US5      n[        R                  " XS9nSUS'   UR                  U5      nUR	                  XaS   SS9nUR                  XaS   SS9n[        R                  " USS	/US   S5      nUR                  XaS   SS9nUR                  XaS   SS9n[        [        R                  " U5      UR                  S5      US
S9  g r   )r+   r,   r-   r.   r/   r   r   fourier_ellipsoidr1   r2   r   r3   r4   s          r9   test_fourier_ellipsoid_real010TestNdimageFourier.test_fourier_ellipsoid_real01y   s     b% HHU($JJqMHHQ(H+GGAqG*%%a#sU1XqAHHQ(H+IIa8!I,GKKNBJJsOS%*	,r<   )r=   r\   c                    [        US5      n[        R                  " XS9nSUS'   UR                  U5      nUR	                  XaS   SS9nUR	                  XaS   SS9n[
        R                  " USS	/S
S5      nUR                  XaS   SS9nUR                  XaS   SS9n[        [
        R                  " UR                  U5      5      UR                  S5      USS9  g r@   )r+   r,   r-   r.   r   r   r^   r1   r   r3   rB   r4   s          r9    test_fourier_ellipsoid_complex013TestNdimageFourier.test_fourier_ellipsoid_complex01   s     b% HHU($JJqMGGAqG*GGAqG*%%a#sR;HHQ(H+HHQ(H+GKK
3RZZ_c%*	,r<   c                     UR                  SUR                  S9n[        R                  " [        5         [
        R                  " US5        S S S 5        g ! , (       d  f       g = f)N)rL   r      r   r      )onesr>   pytestraisesNotImplementedErrorr   r^   )r5   r7   xs      r9   )test_fourier_ellipsoid_unimplemented_ndim<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndim   sA    GGMG7]]./%%a+ 0//s   A
A$c                    S H{  n[        UR                  UR                  /SS/5       HP  u  p4UR                  X#S9n[        R
                  " USSS5      n[        R                  " USSS5      n[        XgUS9  MR     M}     g )N))r   )r   r\   r   r   rA   r   rP   )zipr=   r>   rg   r   r^   rF   r   )r5   r7   r   type_r6   rk   r8   bs           r9   !test_fourier_ellipsoid_1d_complex4TestNdimageFourier.test_fourier_ellipsoid_1d_complex   sw    %E!2<<"?!RI
GGEG/--aB:++Aq"a8)!<	 J &r<   ))r   )r   r   )r   r   r    )r   r   r=   r>   	test_funcc                     [        U5      (       a@  UR                  S:X  a0  [        R                  " U5      S:X  a  [        R
                  " S5        [        XB5      nUR                  XS9nU" US5      n[        XV5        g )Nr^   r   z7CuPy's fourier_ellipsoid does not accept size==0 arraysr   rf   )	r   __name__mathprodrh   xfailr+   rg   r   )r5   r   r    rt   r7   r8   rq   s          r9   test_fourier_zero_length_dims0TestNdimageFourier.test_fourier_zero_length_dims   sg     BKK""&99		% A%LLRS"GGEG'aOr<    N)rv   
__module____qualname____firstlineno__rh   markparametrizer:   rC   rG   rJ   rV   rZ   r_   rb   rl   rr   r   r^   r0   rF   rz   __static_attributes__r|   r<   r9   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   )rw   numpyr,   scipy._lib._array_apir   r   r   r   rh   scipyr   r   skip_xp_backends
pytestmarkr   r|   r<   r9   <module>r      se        ;;// &+9NOP
 +&89g g :gr<   