o
    Ö­jV  ã                   @   sŒ   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d	�gZedd
d�G d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                   @   sÂ  e Zd Zej dg d¢¡ej dddg¡dd„ ƒƒZej ddd	g¡ej dd
dg¡dd„ ƒƒZej dg d¢¡ej dddg¡dd„ ƒƒZej ddd	g¡ej dd
dg¡dd„ ƒƒZ	ej ddd	g¡ej dddg¡dd„ ƒƒZ
ej ddd	g¡ej dddg¡dd„ ƒƒZej dg d¢¡ej dddg¡dd„ ƒƒZej ddd	g¡ej dddg¡dd„ ƒƒZd d!„ Zd"d#„ Zej dg d$¢¡ej d%g d&¢¡ej d'ejejejg¡d(d)„ ƒƒƒZd*S )+ÚTestNdimageFourierÚshape)©é    é   ©é   é   )é   é
   z
dtype, dec)Úfloat32é   )Úfloat64é   c                 C   s²   t |dƒ}tj||d�}d|d< | |¡}|j||d dd�}|j||d dd�}t |dd	g|d d¡}|j||d dd�}|j	||d dd�}t
t |¡| d¡|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   Úa© r7   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/ndimage/tests/test_fourier.pyÚtest_fourier_gaussian_real01   ó   


ÿz/TestNdimageFourier.test_fourier_gaussian_real01r   r   )Ú	complex64r   )Ú
complex128r   c                 C   ó´   t |dƒ}tj||d�}d|d< | |¡}|j||d dd�}|j||d dd�}t |dd	gd
d¡}|j||d dd�}|j||d dd�}tt 	| 
|¡¡| d¡|dd� d S ©Nr   r   r   r    r   r!   r   r$   r%   éÿÿÿÿFr&   )r)   r*   r+   r,   r   r   r.   r/   r   r1   Úrealr2   r7   r7   r8   Útest_fourier_gaussian_complex01)   ó   


ÿz2TestNdimageFourier.test_fourier_gaussian_complex01c                 C   ó²   t |dƒ}tj||d�}d|d< | |¡}|j||d dd�}|j||d dd�}t |dd	g|d d¡}|j||d dd�}|j	||d dd�}t
t |¡| d¡|d
d� d S r   )r)   r*   r+   r,   r-   r   r   Úfourier_uniformr/   r0   r   r1   r2   r7   r7   r8   Útest_fourier_uniform_real01:   r:   z.TestNdimageFourier.test_fourier_uniform_real01c                 C   r=   r>   )r)   r*   r+   r,   r   r   rD   r/   r   r1   r@   r2   r7   r7   r8   Útest_fourier_uniform_complex01K   rB   z1TestNdimageFourier.test_fourier_uniform_complex01)r   é   )r   é   c                 C   sÎ   t |dƒ}tj|d |d  |d� |¡}| |¡}|j||d dd�}|j||d dd�}t |ddg|d d¡}|j	||d dd�}|j
||d dd�}t|dd …dd …f |d d…d d…f |d� d S ©Nr   r   r   r   r!   r?   ©r'   )r)   r*   ÚarangeÚreshaper,   r-   r   r   Úfourier_shiftr/   r0   r   ©r3   r   r   r4   r5   r   Úexpectedr6   r7   r7   r8   Útest_fourier_shift_real01\   s   
 
2z,TestNdimageFourier.test_fourier_shift_real01)r;   rG   )r<   rH   c                 C   sê   t |dƒ}tj|d |d  |d� |¡}| |¡}|j||d dd�}|j||d dd�}t |ddgdd¡}|j||d dd�}|j||d dd�}t	| 
|¡dd …dd …f |d d…d d…f |d� t	| |¡| |¡|d� d S rI   )r)   r*   rK   rL   r,   r   r   rM   r/   r   r@   Úimagr+   rN   r7   r7   r8   Útest_fourier_shift_complex01k   s   
 
4z/TestNdimageFourier.test_fourier_shift_complex01)r   é   c                 C   rC   r   )r)   r*   r+   r,   r-   r   r   Úfourier_ellipsoidr/   r0   r   r1   r2   r7   r7   r8   Útest_fourier_ellipsoid_real01{   r:   z0TestNdimageFourier.test_fourier_ellipsoid_real01)r;   rS   c                 C   r=   r>   )r)   r*   r+   r,   r   r   rT   r/   r   r1   r@   r2   r7   r7   r8   Ú test_fourier_ellipsoid_complex01Œ   rB   z3TestNdimageFourier.test_fourier_ellipsoid_complex01c                 C   sL   |j d|jd�}t t¡� t |d¡ W d   ƒ d S 1 sw   Y  d S )N)rG   r   é   r   r   é   )Úonesr<   ÚpytestÚraisesÚNotImplementedErrorr   rT   )r3   r5   Úxr7   r7   r8   Ú)test_fourier_ellipsoid_unimplemented_ndim�   s   "ÿz<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndimc                 C   sj   dD ]0}t |j|jgddgƒD ]"\}}|j||d�}t |ddd¡}t |ddd¡}t|||d� qqd S )N))r   )r   rS   r   r   r?   r   rJ   )Úzipr;   r<   rY   r   rT   rD   r   )r3   r5   r   Útype_r4   r]   r6   Úbr7   r7   r8   Ú!test_fourier_ellipsoid_1d_complex£   s   üÿz4TestNdimageFourier.test_fourier_ellipsoid_1d_complex))r   )r   r   )r   r   r   )r   r   r;   r<   Ú	test_funcc                 C   sZ   t |ƒr|jdkrt |¡dkrt d¡ t||ƒ}|j||d�}||dƒ}t||ƒ d S )NrT   r   z7CuPy's fourier_ellipsoid does not accept size==0 arraysr   rX   )	r   Ú__name__ÚmathÚprodrZ   Úxfailr)   rY   r   )r3   r   r   rc   r5   r6   ra   r7   r7   r8   Útest_fourier_zero_length_dims¬   s   
ÿ

z0TestNdimageFourier.test_fourier_zero_length_dimsN)rd   Ú
__module__Ú__qualname__rZ   ÚmarkÚparametrizer9   rA   rE   rF   rP   rR   rU   rV   r^   rb   r   rT   r.   rD   rh   r7   r7   r7   r8   r      sH    	þÿr   )re   Únumpyr*   Úscipy._lib._array_apir   r   r   r   rZ   Úscipyr   Úscipy.conftestr   rk   r   ÚusefixturesÚ
pytestmarkr   r7   r7   r7   r8   Ú<module>   s    ÿ
