
    ^MhV                         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
 d dlmZ ej        j        Zeej                            d           edddg	          gZ edd
           G d d                      ZdS )    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                      e Zd Zej                            dg d          ej                            dddg          d                         Zej                            dddg          ej                            dd	d
g          d                         Zej                            dg d          ej                            dddg          d                         Zej                            dddg          ej                            dd	d
g          d                         Z	ej                            dddg          ej                            dddg          d                         Z
ej                            dddg          ej                            dddg          d                         Zej                            dg d          ej                            dddg          d                         Zej                            dddg          ej                            ddd
g          d                         Zd Zd Zej                            dg d          ej                            dg d          ej                            dej        ej        ej        g          d                                     ZdS ) TestNdimageFouriershape)             )   
   z
dtype, dec)float32   )float64   c                 $   t          |d          }t          j        ||          }d|d<   |                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |dd	g|d         d          }|                    ||d         d          }|	                    ||d         d          }t          t          j        |          |                    d          |d
           d S 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/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01z/TestNdimageFourier.test_fourier_gaussian_real01   s    b%  HU%((($JJqMMHHQ%(H++GGAqG**$Qc
E!Ha@@HHQ%(H++IIa58!I,,GKNNBJJqMM3%*	, 	, 	, 	, 	, 	,    r   r   )	complex64r   )
complex128r   c                 >   t          |d          }t          j        ||          }d|d<   |                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |dd	gd
d          }|                    ||d         d          }|                    ||d         d          }t          t          j	        |
                    |                    |                    d          |d           d S Nr   r    r"   r#   r   r$   r   r'   r(   Fr)   )r,   r-   r.   r/   r   r   r1   r2   r   r4   realr5   s          r:   test_fourier_gaussian_complex01z2TestNdimageFourier.test_fourier_gaussian_complex01)   s    b%  HU%((($JJqMMGGAqG**GGAqG**$Qc
B::HHQ%(H++HHQ%(H++GK

33RZZ__c%*	, 	, 	, 	, 	, 	,r<   c                 $   t          |d          }t          j        ||          }d|d<   |                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |dd	g|d         d          }|                    ||d         d          }|	                    ||d         d          }t          t          j        |          |                    d          |d
           d S r   )r,   r-   r.   r/   r0   r   r   fourier_uniformr2   r3   r   r4   r5   s          r:   test_fourier_uniform_real01z.TestNdimageFourier.test_fourier_uniform_real01:   s    b%  HU%((($JJqMMHHQ%(H++GGAqG**#ASz58Q??HHQ%(H++IIa58!I,,GKNNBJJsOOS%*	, 	, 	, 	, 	, 	,r<   c                 >   t          |d          }t          j        ||          }d|d<   |                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |dd	gd
d          }|                    ||d         d          }|                    ||d         d          }t          t          j	        |
                    |                    |                    d          |d           d S r@   )r,   r-   r.   r/   r   r   rE   r2   r   r4   rB   r5   s          r:   test_fourier_uniform_complex01z1TestNdimageFourier.test_fourier_uniform_complex01K   s    b%  HU%((($JJqMMGGAqG**GGAqG**#ASz2q99HHQ%(H++HHQ%(H++GK

33RZZ__c%*	, 	, 	, 	, 	, 	,r<   )r      )r      c                 B   t          |d          }t          j        |d         |d         z  |                              |          }|                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |ddg|d         d          }|	                    ||d         d          }|
                    ||d         d          }t          |dd dd f         |d dd df         |           d S Nr   r   r   r    r$   rA   r*   )r,   r-   arangereshaper/   r0   r   r   fourier_shiftr2   r3   r   r6   r   r!   r7   r8   r   expectedr9   s           r:   test_fourier_shift_real01z,TestNdimageFourier.test_fourier_shift_real01\   s    b%  9U1Xa0>>>FFuMM::h''HHXqH22GGAqG**!!aVU1Xq99HHQ%(H++IIa58!I,,!!ABBF)Xcrc3B3h-?MMMMMMr<   )r=   rI   )r>   rJ   c                    t          |d          }t          j        |d         |d         z  |                              |          }|                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |ddgdd          }|                    ||d         d          }|                    ||d         d          }t          |
                    |          dd dd f         |d dd df         |           t          |                    |          |                    |          |           d S rL   )r,   r-   rN   rO   r/   r   r   rP   r2   r   rB   imagr.   rQ   s           r:   test_fourier_shift_complex01z/TestNdimageFourier.test_fourier_shift_complex01k   sJ    b%  9U1Xa0>>>FFuMM::h''GGHaqG11GGAqG**!!aVR33HHQ%(H++HHQ%(H++!"''!**QRRV"4hssCRCx6HRUVVVV!"''!**bhhuoosKKKKKKr<   )r      c                 $   t          |d          }t          j        ||          }d|d<   |                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |dd	g|d         d          }|                    ||d         d          }|	                    ||d         d          }t          t          j        |          |                    d          |d
           d S r   )r,   r-   r.   r/   r0   r   r   fourier_ellipsoidr2   r3   r   r4   r5   s          r:   test_fourier_ellipsoid_real01z0TestNdimageFourier.test_fourier_ellipsoid_real01{   s    b%  HU%((($JJqMMHHQ%(H++GGAqG**%a#sU1XqAAHHQ%(H++IIa58!I,,GKNNBJJsOOS%*	, 	, 	, 	, 	, 	,r<   )r=   rW   c                 >   t          |d          }t          j        ||          }d|d<   |                    |          }|                    ||d         d          }|                    ||d         d          }t          j        |dd	gd
d          }|                    ||d         d          }|                    ||d         d          }t          t          j	        |
                    |                    |                    d          |d           d S r@   )r,   r-   r.   r/   r   r   rY   r2   r   r4   rB   r5   s          r:    test_fourier_ellipsoid_complex01z3TestNdimageFourier.test_fourier_ellipsoid_complex01   s    b%  HU%((($JJqMMGGAqG**GGAqG**%a#sR;;HHQ%(H++HHQ%(H++GK

33RZZ__c%*	, 	, 	, 	, 	, 	,r<   c                     |                     d|j                  }t          j        t                    5  t          j        |d           d d d            d S # 1 swxY w Y   d S )N)rI   r      r   r       )onesr>   pytestraisesNotImplementedErrorr   rY   )r6   r8   xs      r:   )test_fourier_ellipsoid_unimplemented_ndimz<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndim   s    GGMG77].// 	, 	,%a+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   AA Ac                    dD ]}}t          |j        |j        gddg          D ]\\  }}|                    ||          }t	          j        |ddd          }t	          j        |ddd          }t          |||           ]~d S )N))r   )r   rW   r   r    rA   r   rM   )zipr=   r>   r`   r   rY   rE   r   )r6   r8   r   type_r7   rd   r9   bs           r:   !test_fourier_ellipsoid_1d_complexz4TestNdimageFourier.test_fourier_ellipsoid_1d_complex   s    % 	= 	=E!2<"?!RII = =
sGGEG//-aB::+Aq"a88)!Q<<<<<	=	= 	=r<   ))r   )r   r   )r   r   r!   )r   r   r=   r>   	test_funcc                    t          |          r7|j        dk    r,t          j        |          dk    rt	          j        d           t          ||          }|                    ||          } ||d          }t          ||           d S )NrY   r   z7CuPy's fourier_ellipsoid does not accept size==0 arraysr    r_   )	r   __name__mathprodra   xfailr,   r`   r   )r6   r   r!   rk   r8   r9   ri   s          r:   test_fourier_zero_length_dimsz0TestNdimageFourier.test_fourier_zero_length_dims   s     2;; 	!%888y1$$|L   E""GGEG''IaOO1r<   N)rm   
__module____qualname__ra   markparametrizer;   rC   rF   rH   rS   rV   rZ   r\   re   rj   r   rY   r1   rE   rq    r<   r:   r   r      s        [W&C&C&CDD[\NO+LMM, , NM ED, [Wx&:;;[\,<>P+QRR, , SR <;, [W&C&C&CDD[\NO+LMM, , NM ED, [Wx&:;;[\,<>P+QRR, , SR <;, [Wx&:;;[\NO+LMMN N NM <;N [Wx&:;;[\,<>P+QRRL L SR <;L [W&C&C&CDD[\NO+LMM, , NM ED, [Wx&:;;[\,<>P+QRR, , SR <;,, , ,= = = [W&?&?&?@@[W 'B 'B 'B C C[[%7%6%578 8
 
	8 8C C A@
 
 
r<   r   )rn   numpyr-   scipy._lib._array_apir   r   r   r   ra   scipyr   scipy.conftestr   rt   r	   usefixtures
pytestmarkr   rv   r<   r:   <module>r}      s                           / / / / / /;/ "FK$;$;<N$O$O&+9NPPPR
 +&8999g g g g g g g :9g g gr<   