§
    µ³ÙgV  ã                   óú   — 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          úV/granary/edev/quantum/lib/python3.11/site-packages/scipy/ndimage/tests/test_fourier.pyÚtest_fourier_gaussian_real01z/TestNdimageFourier.test_fourier_gaussian_real01   s  € õ �b˜%Ñ Ô ˆåŒH�U %Ð(Ñ(Ô(ˆØˆˆ$‰Ø�JŠJ�q‰MŒMˆà�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ$ Q¨¨c¨
°E¸!´H¸aÑ@Ô@ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�IŠI�a˜5 œ8¨!ˆIÑ,Ô,ˆÝ�GœK¨™NœN¨B¯JªJ°q©M¬MÀ3Ø%*ð	,ñ 	,ô 	,ð 	,ð 	,ð 	,ó    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˜%Ñ Ô ˆåŒH�U %Ð(Ñ(Ô(ˆØˆˆ$‰Ø�JŠJ�q‰MŒMˆà�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ$ Q¨¨c¨
°B¸Ñ:Ô:ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆÝ�GœK¨¯ª°©
¬
Ñ3Ô3°R·Z²ZÀ±_´_È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˜%Ñ Ô ˆåŒH�U %Ð(Ñ(Ô(ˆØˆˆ$‰Ø�JŠJ�q‰MŒMˆà�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ# A¨¨S z°5¸´8¸QÑ?Ô?ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�IŠI�a˜5 œ8¨!ˆIÑ,Ô,ˆÝ�GœK¨™NœN¨B¯JªJ°s©O¬OÀSØ%*ð	,ñ 	,ô 	,ð 	,ð 	,ð 	,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˜%Ñ Ô ˆåŒH�U %Ð(Ñ(Ô(ˆØˆˆ$‰Ø�JŠJ�q‰MŒMˆà�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ# A¨¨S z°2°qÑ9Ô9ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆÝ�GœK¨¯ª°©
¬
Ñ3Ô3°R·Z²ZÀ±_´_È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˜%Ñ Ô ˆå”9˜U 1œX¨¨a¬Ñ0¸Ð>Ñ>Ô>×FÒFÀuÑMÔMˆØ—:’:˜hÑ'Ô'ˆà�HŠH�X  q¤°ˆHÑ2Ô2ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ! ! a¨ V¨U°1¬X°qÑ9Ô9ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�IŠI�a˜5 œ8¨!ˆIÑ,Ô,ˆÝ! ! A B B¨¨¨ F¤)¨X°c°r°c¸3¸B¸3°hÔ-?ÈÐ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˜%Ñ Ô ˆå”9˜U 1œX¨¨a¬Ñ0¸Ð>Ñ>Ô>×FÒFÀuÑMÔMˆØ—:’:˜hÑ'Ô'ˆà�GŠG�H  a¤¨qˆGÑ1Ô1ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ! ! a¨ V¨R°Ñ3Ô3ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆÝ! "§'¢'¨!¡*¤*¨Q¨R¨R°°°¨VÔ"4°h¸sÀ¸sÀCÀRÀC¸xÔ6HÐRUÐVÑVÔVÐVÝ! "§'¢'¨!¡*¤*¨b¯hªh°u©o¬oÀsÐ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˜%Ñ Ô ˆåŒH�U %Ð(Ñ(Ô(ˆØˆˆ$‰Ø�JŠJ�q‰MŒMˆà�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ% a¨#¨s¨°U¸1´X¸qÑAÔAˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�IŠI�a˜5 œ8¨!ˆIÑ,Ô,ˆÝ�GœK¨™NœN¨B¯JªJ°s©O¬OÀSØ%*ð	,ñ 	,ô 	,ð 	,ð 	,ð 	,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˜%Ñ Ô ˆåŒH�U %Ð(Ñ(Ô(ˆØˆˆ$‰Ø�JŠJ�q‰MŒMˆà�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆØ�GŠG�A˜˜qœ¨ˆGÑ*Ô*ˆÝÔ% a¨#¨s¨°R¸Ñ;Ô;ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆØ�HŠH�Q˜% œ(¨ˆHÑ+Ô+ˆÝ�GœK¨¯ª°©
¬
Ñ3Ô3°R·Z²ZÀ±_´_È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¡   € à�GŠG�M¨¬ˆ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Ø—G’G˜E¨�GÑ/Ô/�ÝÔ-¨a°°B¸Ñ:Ô:�ÝÔ+¨A¨q°"°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Ñ"Ô"ˆØ�GŠG�E ˆGÑ'Ô'ˆØˆI�a˜‰OŒOˆÝ˜˜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Ø„[×Ò˜\¨N¸OÐ+LÑMÔMð,ð ,ñ NÔMñ EÔDð,ð „[×Ò˜W x°Ð&:Ñ;Ô;Ø„[×Ò˜\Ð,<Ð>PÐ+QÑRÔRð,ð ,ñ SÔRñ <Ô;ð,ð „[×Ò˜WÐ&CÐ&CÐ&CÑDÔDØ„[×Ò˜\¨N¸OÐ+LÑMÔMð,ð ,ñ NÔMñ EÔDð,ð „[×Ò˜W x°Ð&:Ñ;Ô;Ø„[×Ò˜\Ð,<Ð>PÐ+QÑRÔRð,ð ,ñ SÔRñ <Ô;ð,ð „[×Ò˜W x°Ð&:Ñ;Ô;Ø„[×Ò˜\¨N¸OÐ+LÑMÔMðNð Nñ NÔMñ <Ô;ðNð „[×Ò˜W x°Ð&:Ñ;Ô;Ø„[×Ò˜\Ð,<Ð>PÐ+QÑRÔRðLð Lñ SÔRñ <Ô;ðLð „[×Ò˜WÐ&CÐ&CÐ&CÑDÔDØ„[×Ò˜\¨N¸OÐ+LÑMÔMð,ð ,ñ NÔMñ EÔDð,ð „[×Ò˜W x°Ð&:Ñ;Ô;Ø„[×Ò˜\Ð,<Ð>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   ðØ €€€Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ø”;Ô/Ð Ø" F¤K×$;Ò$;Ð<NÑ$OÔ$OØÐ¨¸&À+Ð9NÐPÑPÔPðR€
ð Ð�+Ð&8Ð9Ñ9Ô9ðgð gð gð gð gñ gô gñ :Ô9ðgð gð gr<   