
    (phV                         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
  S SKJr  \R                  R                  r\\R                  R                  S5      \" 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)ndimage)array_api_compatibleskip_xp_backendsT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/   r0   r    r   r2   r3   r   r5   realr6   s          r;   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/   r0   r1   r    r   fourier_uniformr3   r4   r   r5   r6   s          r;   test_fourier_uniform_real01.TestNdimageFourier.test_fourier_uniform_real01:   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 rB   )r-   r.   r/   r0   r    r   rH   r3   r   r5   rD   r6   s          r;   test_fourier_uniform_complex011TestNdimageFourier.test_fourier_uniform_complex01K   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%   rC   r+   )r-   r.   arangereshaper0   r1   r    r   fourier_shiftr3   r4   r   r7   r   r"   r8   r9   r    expectedr:   s           r;   test_fourier_shift_real01,TestNdimageFourier.test_fourier_shift_real01\   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?   rN   )r@   rO   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 rQ   )r-   r.   rS   rT   r0   r    r   rU   r3   r   rD   imagr/   rV   s           r;   test_fourier_shift_complex01/TestNdimageFourier.test_fourier_shift_complex01k   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/   r0   r1   r    r   fourier_ellipsoidr3   r4   r   r5   r6   s          r;   test_fourier_ellipsoid_real010TestNdimageFourier.test_fourier_ellipsoid_real01{   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 rB   )r-   r.   r/   r0   r    r   r`   r3   r   r5   rD   r6   s          r;    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)rN   r      r   r!      )onesr@   pytestraisesNotImplementedErrorr   r`   )r7   r9   xs      r;   )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!   rC   r   rR   )zipr?   r@   ri   r   r`   rH   r   )r7   r9   r   type_r8   rm   r:   bs           r;   !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!   rh   )	r   __name__mathprodrj   xfailr-   ri   r   )r7   r   r"   rv   r9   r:   rs   s          r;   test_fourier_zero_length_dims0TestNdimageFourier.test_fourier_zero_length_dims   sk     2;;!!%88yy1$||L "GGEG'aOr>    N)rx   
__module____qualname____firstlineno__rj   markparametrizer<   rE   rI   rL   rX   r\   ra   rd   rn   rt   r   r`   r2   rH   r|   __static_attributes__r~   r>   r;   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   )ry   numpyr.   scipy._lib._array_apir   r   r   r   rj   scipyr   scipy.conftestr   r   r	   usefixtures
pytestmarkr   r~   r>   r;   <module>r      s         /;;// "FKK$;$;<N$O&+9NPR
 +&89g g :gr>   