Ë
    âQ(hV  ã                   óö   — 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                  j                  d«       edddg¬	«      gZ edd
¬«       G d„ d«      «       Zy)é    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                   ór  — e Zd Zej                  j                  dg d¢«      ej                  j                  dddg«      d„ «       «       Zej                  j                  dddg«      ej                  j                  dd	d
g«      d„ «       «       Zej                  j                  dg d¢«      ej                  j                  dddg«      d„ «       «       Zej                  j                  dddg«      ej                  j                  dd	d
g«      d„ «       «       Z	ej                  j                  dddg«      ej                  j                  dddg«      d„ «       «       Z
ej                  j                  dddg«      ej                  j                  dddg«      d„ «       «       Zej                  j                  dg d¢«      ej                  j                  dddg«      d„ «       «       Zej                  j                  dddg«      ej                  j                  ddd
g«      d„ «       «       Zd„ Zd„ Zej                  j                  dg d¢«      ej                  j                  dg d¢«      ej                  j                  dej"                  ej$                  ej&                  g«      d„ «       «       «       Zy) ÚTestNdimageFourierÚshape)©é    é   ©é   é   )é   é
   z
dtype, dec)Úfloat32é   )Úfloat64é   c                 óÊ  — t        |d«      }t        j                  ||¬«      }d|d<   |j                  |«      }|j	                  ||d   d¬«      }|j                  ||d   d¬«      }t        j                  |dd	g|d   d«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        t        j                  |«      |j                  d«      |d
¬«       y ©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/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/ndimage/tests/test_fourier.pyÚtest_fourier_gaussian_real01z/TestNdimageFourier.test_fourier_gaussian_real01   sÕ   € ô �b˜%Ó ˆä�H‰H�U %Ô(ˆØˆˆ$‰Ø�J‰J�q‹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™K¨›N¨B¯J©J°q«MÀ3Ø%*ö	,ó    r   r   )Ú	complex64r   )Ú
complex128r   c                 óâ  — t        |d«      }t        j                  ||¬«      }d|d<   |j                  |«      }|j	                  ||d   d¬«      }|j	                  ||d   d¬«      }t        j                  |dd	gd
d«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        t        j                  |j                  |«      «      |j                  d«      |d¬«       y ©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‰H�U %Ô(ˆØˆˆ$‰Ø�J‰J�q‹Mˆà�G‰G�A˜˜q™¨ˆGÓ*ˆØ�G‰G�A˜˜q™¨ˆGÓ*ˆÜ×$Ñ$ Q¨¨c¨
°B¸Ó:ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆÜœGŸK™K¨¯©°«
Ó3°R·Z±ZÀ³_ÈcØ%*ö	,r<   c                 óÊ  — t        |d«      }t        j                  ||¬«      }d|d<   |j                  |«      }|j	                  ||d   d¬«      }|j                  ||d   d¬«      }t        j                  |dd	g|d   d«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        t        j                  |«      |j                  d«      |d
¬«       y 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‰H�U %Ô(ˆØˆˆ$‰Ø�J‰J�q‹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™K¨›N¨B¯J©J°s«OÀSØ%*ö	,r<   c                 óâ  — t        |d«      }t        j                  ||¬«      }d|d<   |j                  |«      }|j	                  ||d   d¬«      }|j	                  ||d   d¬«      }t        j                  |dd	gd
d«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        t        j                  |j                  |«      «      |j                  d«      |d¬«       y 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‰H�U %Ô(ˆØˆˆ$‰Ø�J‰J�q‹Mˆà�G‰G�A˜˜q™¨ˆGÓ*ˆØ�G‰G�A˜˜q™¨ˆGÓ*ˆÜ×#Ñ# A¨¨S z°2°qÓ9ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆÜœGŸK™K¨¯©°«
Ó3°R·Z±ZÀ³_ÈcØ%*ö	,r<   )r   é   )r   é   c                 óÎ  — t        |d«      }t        j                  |d   |d   z  |¬«      j                  |«      }|j	                  |«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        j                  |ddg|d   d«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        |dd …dd …f   |d d…d d…f   |¬«       y ©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‘9˜U 1™X¨¨a©Ñ0¸Ô>×FÑFÀuÓMˆØ—:‘:˜hÓ'ˆà�H‰H�X  q¡°ˆHÓ2ˆØ�G‰G�A˜˜q™¨ˆGÓ*ˆÜ×!Ñ! ! a¨ V¨U°1©X°qÓ9ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆØ�I‰I�a˜5 ™8¨!ˆIÓ,ˆÜ! ! A¡B¨© F¡)¨X°c°r°c¸3¸B¸3°hÑ-?ÈÖMr<   )r=   rI   )r>   rJ   c                 ó>  — t        |d«      }t        j                  |d   |d   z  |¬«      j                  |«      }|j	                  |«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        j                  |ddgdd«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        |j                  |«      dd …dd …f   |d d…d d…f   |¬«       t        |j                  |«      |j                  |«      |¬«       y 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   s  € ô �b˜%Ó ˆä—9‘9˜U 1™X¨¨a©Ñ0¸Ô>×FÑFÀuÓMˆØ—:‘:˜hÓ'ˆà�G‰G�H  a¡¨qˆGÓ1ˆØ�G‰G�A˜˜q™¨ˆGÓ*ˆÜ×!Ñ! ! a¨ V¨R°Ó3ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆÜ! "§'¡'¨!£*¨Q©R°±¨VÑ"4°h¸sÀ¸sÀCÀRÀC¸xÑ6HÐRUÕVÜ! "§'¡'¨!£*¨b¯h©h°u«oÀsÖKr<   )r   é   c                 óÊ  — t        |d«      }t        j                  ||¬«      }d|d<   |j                  |«      }|j	                  ||d   d¬«      }|j                  ||d   d¬«      }t        j                  |dd	g|d   d«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        t        j                  |«      |j                  d«      |d
¬«       y 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‰H�U %Ô(ˆØˆˆ$‰Ø�J‰J�q‹Mˆà�H‰H�Q˜% ™(¨ˆHÓ+ˆØ�G‰G�A˜˜q™¨ˆGÓ*ˆÜ×%Ñ% a¨#¨s¨°U¸1±X¸qÓAˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆØ�I‰I�a˜5 ™8¨!ˆIÓ,ˆÜœGŸK™K¨›N¨B¯J©J°s«OÀSØ%*ö	,r<   )r=   rW   c                 óâ  — t        |d«      }t        j                  ||¬«      }d|d<   |j                  |«      }|j	                  ||d   d¬«      }|j	                  ||d   d¬«      }t        j                  |dd	gd
d«      }|j                  ||d   d¬«      }|j                  ||d   d¬«      }t        t        j                  |j                  |«      «      |j                  d«      |d¬«       y 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‰H�U %Ô(ˆØˆˆ$‰Ø�J‰J�q‹Mˆà�G‰G�A˜˜q™¨ˆGÓ*ˆØ�G‰G�A˜˜q™¨ˆGÓ*ˆÜ×%Ñ% a¨#¨s¨°R¸Ó;ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆØ�H‰H�Q˜% ™(¨ˆHÓ+ˆÜœGŸK™K¨¯©°«
Ó3°R·Z±ZÀ³_ÈcØ%*ö	,r<   c                 óÆ   — |j                  d|j                  ¬«      }t        j                  t        «      5  t        j                  |d«       d d d «       y # 1 sw Y   y xY w)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�   sJ   € à�G‰G�M¨¯©ˆGÓ7ˆÜ�]‰]Ô.Ó/ñ 	,Ü×%Ñ% a¨Ô+÷	,÷ 	,ñ 	,ús   ·AÁA c                 ó  — dD ]  }t        |j                  |j                  gddg«      D ]V  \  }}|j                  ||¬«      }t	        j
                  |ddd«      }t	        j                  |ddd«      }t        |||¬«       ŒX Œ� y )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ò =‘
��sØ—G‘G˜E¨�GÓ/�Ü×-Ñ-¨a°°B¸Ó:�Ü×+Ñ+¨A¨q°"°aÓ8�Ü)¨!¨Q¸Ö<ñ	=ñ	=r<   ))r   )r   r   )r   r   r!   )r   r   r=   r>   Ú	test_funcc                 óú   — t        |«      r<|j                  dk(  r-t        j                  |«      dk(  rt	        j
                  d«       t        ||«      }|j                  ||¬«      } ||d«      }t        ||«       y )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¬   so   € ô �2Œ;Ø×!Ñ!Ð%8Ò8Ü�y‰y˜Ó 1Ò$Ü�|‰|ØLôô ˜˜EÓ"ˆØ�G‰G�E ˆGÓ'ˆÙ�a˜‹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ÓDØ‡[�[×Ñ˜\¨N¸OÐ+LÓMñ,ó Nó Eð,ð ‡[�[×Ñ˜W x°Ð&:Ó;Ø‡[�[×Ñ˜\Ð,<Ð>PÐ+QÓRñ,ó Só <ð,ð ‡[�[×Ñ˜WÒ&CÓDØ‡[�[×Ñ˜\¨N¸OÐ+LÓMñ,ó Nó Eð,ð ‡[�[×Ñ˜W x°Ð&:Ó;Ø‡[�[×Ñ˜\Ð,<Ð>PÐ+QÓRñ,ó Só <ð,ð ‡[�[×Ñ˜W x°Ð&:Ó;Ø‡[�[×Ñ˜\¨N¸OÐ+LÓMñNó Nó <ðNð ‡[�[×Ñ˜W x°Ð&:Ó;Ø‡[�[×Ñ˜\Ð,<Ð>PÐ+QÓRñLó Só <ðLð ‡[�[×Ñ˜WÒ&CÓDØ‡[�[×Ñ˜\¨N¸OÐ+LÓMñ,ó Nó Eð,ð ‡[�[×Ñ˜W x°Ð&:Ó;Ø‡[�[×Ñ˜\Ð,<Ð>PÐ+QÓRñ,ó Só <ð,ò,ò=ð ‡[�[×Ñ˜WÒ&?Ó@Ø‡[�[×Ñ˜Wò 'Bó Cà‡[�[×Ñ˜[Ø%×7Ñ7Ø%×6Ñ6Ø%×5Ñ5ð7ó8ñ
ó	8ó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¡K×$;Ñ$;Ð<NÓ$OÙ¨¸&À+Ð9NÔPðR€
ñ �+Ð&8Ô9÷gð gó :ñgr<   