
    Yh                         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dS )    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                      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          r/var/www/tools.fuzzalab.pt/emblema-extractor/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   r/   r0   r   r2   realr3   s          r8   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-   r.   r   r   fourier_uniformr0   r1   r   r2   r3   s          r8   test_fourier_uniform_real01z.TestNdimageFourier.test_fourier_uniform_real018   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   rC   r0   r   r2   r@   r3   s          r8   test_fourier_uniform_complex01z1TestNdimageFourier.test_fourier_uniform_complex01I   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"   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%  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;   rG   )r<   rH   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 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   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-   r.   r   r   fourier_ellipsoidr0   r1   r   r2   r3   s          r8   test_fourier_ellipsoid_real01z0TestNdimageFourier.test_fourier_ellipsoid_real01y   s    b%  HU%((($JJqMMHHQ%(H++GGAqG**%a#sU1XqAAHHQ%(H++IIa58!I,,GKNNBJJsOOS%*	, 	, 	, 	, 	, 	,r:   )r;   rU   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   rW   r0   r   r2   r@   r3   s          r8    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)rG   r      r   r      )onesr<   pytestraisesNotImplementedErrorr   rW   )r4   r6   xs      r8   )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   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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 )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   s     BKK	T"&999	%  A%%LRSSSE""GGEG''IaOO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&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   )rl   numpyr+   scipy._lib._array_apir   r   r   r   r_   scipyr   rr   skip_xp_backends
pytestmarkr   rt   r:   r8   <module>rz      s                          ;/ &+9NOOOP
 +&8999g g g g g g g :9g g gr:   