Ë
    âQ(hÛN  ã                   ó  — d Z ddlmZmZmZ ddlmZ ddlmZ	 ddlZddl
ZddlZddlmZ ddlmZmZmZmZ ddlmZ eej,                  j/                  d	«      gZej,                  j2                  Zg d
¢Zd„ Zd„ Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z G d„ d«      Z  edd¬«       edd¬«       G d„ d«      «       «       Z! edd¬«       edd¬«       G d„ d «      «       «       Z"y)!zŒIncludes test functions for fftpack.helper module

Copied from fftpack.helper by Pearu Peterson, October 2005
Modified for Array API, 2023

é    )Únext_fast_lenÚprev_fast_lenÚ_init_nd_shape_and_axes)Úassert_equal)ÚraisesN)Úarray_api_compatible)Úxp_assert_closeÚget_xp_devicesÚ	xp_deviceÚarray_namespace)ÚfftÚskip_xp_backends)é   é   é   é   é   é   é	   é
   é   i˜  i  c                  óD   — t         D ]  } t        t        | «      | «       Œ y )N)Ú_5_smooth_numbersr   r   )Úns    úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/fft/tests/test_helper.pyÚtest_next_fast_lenr      s    € Üò *ˆÜ”] 1Ó% qÕ)ñ*ó    c                 óÌ   — | }|dk  rJ ‚	 t        | d«      \  }}|dk7  rn|} Œt        d|dz   d«      D ]  }	 t        | |«      \  }}|dk7  rŒ|} Œ | dk(  sJ d|› d|› d| › �«       ‚y )Nr   r   r   é   zx=z is not z-smooth, remainder=)ÚdivmodÚrange)Úxr   Úx_origÚqÚrÚds         r   Ú_assert_n_smoothr'   "   s©   € Ø€FØˆ1‚uØˆuà
Ü�a˜‹|‰ˆˆ1Ø�Š6ØØˆð	 ô �1�a˜‘c˜1Óò ˆØÜ˜!˜Q“<‰DˆAˆqØ�AŠvØØˆAð	 ðð �Š6ð :Ø�ˆx�x ˜sÐ"5°a°SÐ9ó:‰6r   T)Únp_onlyc                   óˆ   — e Zd Zd„ Zd„ Zd„ Zej                  j                  e	j                  dk  ded¬«      d„ «       Zd	„ Zy
)ÚTestNextFastLenc                 óà   — t         j                  j                  d«       d„ } |«       D ]B  }t        |«      }t	        |d«       |t        |d«      k(  sJ ‚t        |d«      }t	        |d«       ŒD y )NéÒ  c               3   ó@   K  — t        dd«      E d {  –—†  d–— y 7 Œ	­w©Nr   éè  i€y ©r!   © r   r   Únumsz0TestNextFastLen.test_next_fast_len.<locals>.nums>   ó    è ø€ Ü˜Q “~×%Ð%Ø(Ó(ð &úó   ‚’“
é   FTr   )ÚnpÚrandomÚseedr   r'   ©Úselfr2   r   Úms       r   r   z"TestNextFastLen.test_next_fast_len;   ói   € Ü
�	‰	�‰�tÔò	)ñ “ò 	#ˆAÜ˜aÓ ˆAÜ˜Q Ô#Øœ a¨Ó/Ò/Ð/Ð/ä˜a Ó&ˆAÜ˜Q Õ"ñ	#r   c           	      ó,  — t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  g}|D ]3  } |d«      }t        |«      }t        |t        t        |«      «      «       Œ5 y )Né90  )
r6   Úint16Úint32Úint64Úuint16Úuint32Úuint64r   r   Úint©r:   ÚITYPESÚitypr"   ÚtestNs        r   Útest_np_integersz TestNextFastLen.test_np_integersJ   sa   € Ü—(‘(œBŸH™H¤b§h¡h´·	±	¼2¿9¹9ÄbÇiÁiÐPˆØò 	7ˆDÙ�U“ˆAÜ! !Ó$ˆEÜ˜¤¬c°!«fÓ 5Õ6ñ	7r   c                 ó„   — ddddddddddd	d
ddddœ}|j                  «       D ]  \  }}t        t        |d«      |«       Œ y )Nr   r   r   r   r   r   r   é   é   é   i   é   é @©r   r   r   r   r   r   é   r   é   rL   rM   é   éý  rO   rP   T©Úitemsr   r   ©r:   Úhamsr"   Úys       r   Útestnext_fast_len_smallz'TestNextFastLen.testnext_fast_len_smallQ   sU   € à�Q˜1  q¨Q°1¸ÀÈØ˜ $¨d¸hñ
ˆð —J‘J“Lò 	4‰DˆAˆqÜœ q¨$Ó/°Õ3ñ	4r   ì        ú$Hamming Numbers too large for 32-bitT©Úreasonr   Ústrictc                 óæ   — i dd“dd“dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dddddddddddd œ¥}|j                  «       D ]  \  }}t        t        |d!«      |«       Œ y )"NéÀÇhéÁÇhi €„éÀ=ué+‰ë2é,‰ë2i  B3ì     €· ì    €· l   €sö'· ì    >å9ùì   ¡>å9ùl         ì      fØn ì     fØn l    >Uk±o ì     øq…. ì    øq…. l   ØxQ+t0 ì      ¢!Í ì     ¢!Í l    dopL?Í ì   í…hRì   ì…hRì   ‰2 f;Ùì          ì     `71Y!l   à …("ì           ì    ËóX l         	 )rs   ì   ˆ2 f;Ùrt   ì   ÿÿÿÿru   ì    `71Y!rv   ì          ì   ËóX rw   ì   !ËóX TrV   rX   s       r   Útestnext_fast_len_bigz%TestNextFastLen.testnext_fast_len_bigY   s'  € ð
Ø�yð
Ø"/°ð
à�yð
ð �yð
ð #0°ð
ð ˜,ð	
ð )9¸,ð	
ð
 ˜=ð
ð
 +<¸]ð
ð ˜_ð
ð   ð
ð ˜_ð
ð   ð
ð Ð.ð
ð !Ð"2ð
ð Ð0ð
ð "Ð#4ð
ð   1Ø#4à0Ø#4à0Ø#4Ø 2Ø$6Ø$6Ø 2Ø$6ò9
ˆð< —J‘J“Lò 	4‰DˆAˆqÜœ q¨$Ó/°Õ3ñ	4r   c                 óL   — t        dd¬«      dk(  sJ ‚t        dd¬«      dk(  sJ ‚y )Nr5   T©Úrealé   rR   F©Útargetr�   )r   ©r:   s    r   Útest_keyword_argsz!TestNextFastLen.test_keyword_args~   ó,   € Ü˜R dÔ+¨rÒ1Ð1Ð1Ü A¨EÔ2°aÒ7Ð7Ñ7r   N)Ú__name__Ú
__module__Ú__qualname__r   rJ   r[   ÚpytestÚmarkÚxfailÚsysÚmaxsizeÚ
ValueErrorr~   r†   r1   r   r   r*   r*   8   sR   „ ò#ò7ò4ð ‡[�[×Ñ�s—{‘{ UÑ*ØDØ(°ð ó 7ñ 4ó7ð 4óD8r   r*   c                   óˆ   — e Zd Zd„ Zd„ Zd„ Zej                  j                  e	j                  dk  ded¬«      d„ «       Zd	„ Zy
)ÚTestPrevFastLenc                 óà   — t         j                  j                  d«       d„ } |«       D ]B  }t        |«      }t	        |d«       |t        |d«      k(  sJ ‚t        |d«      }t	        |d«       ŒD y )Nr,   c               3   ó@   K  — t        dd«      E d {  –—†  d–— y 7 Œ	­wr.   r0   r1   r   r   r2   z0TestPrevFastLen.test_prev_fast_len.<locals>.numsˆ   r3   r4   r5   FTr   )r6   r7   r8   r   r'   r9   s       r   Útest_prev_fast_lenz"TestPrevFastLen.test_prev_fast_len…   r<   r   c           	      ó†  — t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  g}|D ]`  } |d«      }t        |«      }t        |t        t        |«      «      «       t        |d¬«      }t        |t        t        |«      d¬«      «       Œb y )Nr>   Tr€   )
r6   r?   r@   rA   rB   rC   rD   r   r   rE   rF   s        r   rJ   z TestPrevFastLen.test_np_integers”   s‡   € Ü—(‘(œBŸH™H¤b§h¡h´·	±	¼2¿9¹9Ü—I‘Iðˆàò 	BˆDÙ�U“ˆAÜ! !Ó$ˆEÜ˜¤¬c°!«fÓ 5Ô6ä! !¨$Ô/ˆEÜ˜¤¬c°!«f¸4Ô @ÕAñ	Br   c                 óf  — dddddddddd	d
d
ddddœ}|j                  «       D ]  \  }}t        t        |d«      |«       Œ i dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d	d	“d
d
“dd
“ddddddddddddœ¥}|j                  «       D ]  \  }}t        t        |d«      |«       Œ y ) Nr   r   r   r   r   r   r   r‚   rL   rM   r/   rO   rP   rQ   TrR   r   r   r5   é   rS   rT   rN   é   é   é   éx   éy   ið  )rN   é   r™   rš   r›   rœ   r�   éz   rU   rO   rP   F©rW   r   r   rX   s       r   Útestprev_fast_len_smallz'TestPrevFastLen.testprev_fast_len_smallŸ   sP  € à�Q˜1  q¨Q°1¸ÀÈØ˜ $¨d¸hñ
ˆð —J‘J“Lò 	4‰DˆAˆqÜœ q¨$Ó/°Õ3ð	4ð
Øˆqð
Ø�Qð
Ø˜1ð
Ø ð
Ø$% qð
Ø*+¨Qð
Ø01°1ð
Ø67¸ð
Ø<=¸qð
ØBDÀbð
à�ð
à˜ð
à ð
à$&¨ð
à,.°ð
à46¸ð
à<>Àð
àHJØ˜ ¨°¸3ÀSØ˜d¨hò	
ˆð —J‘J“Lò 	5‰DˆAˆqÜœ q¨%Ó0°!Õ4ñ	5r   r\   r]   Tr^   c           
      óJ  — i dd“dd“dd“dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“i dd“dd“dd“dd“dd“dd“dd“d d “d!d “d"d#“d$d$“d%d$“d&d'“d(d(“d)d(“d*d+“d,d,“¥d,d-d.d.d/d0d0d.d1œ¥}|j                  «       D ]  \  }}t        t        |d2«      |«       Œ y )3Nrb   rc   i¿Çhi  `rd   iÁ=ui¿=ure   rf   i*‰ë2i@¢®2rg   rh   l   ÿ· l     W:¶ ri   rj   l   Ÿ>å9ùl    8ÝÓrk   rl   l   ÿÿeØn l        n rm   rn   l   ÿ÷q…. l       ˜, ro   rp   l   ÿÿ¢!Í l        Í rq   l   î…hRrr   l    @Õ�!Rrs   l   Š2 f;Ùrx   l   € �aØØrt   l         ry   l     ê+žKÿru   l    h»\arv   l      >å9ùrw   )rz   l   ÿ_71Y!rv   r{   l   ÿÿÿÿrw   r}   r|   Tr    rX   s       r   Útestprev_fast_len_bigz%TestPrevFastLen.testprev_fast_len_big°   s  € ð9
à�yð9
ð ˜9ð9
ð ˜9ð	9
ð �yð9
ð ˜9ð9
ð ˜9ð9
ð �yð9
ð ˜9ð9
ð ˜9ð9
ð ˜,ð9
ð ˜lð9
ð  ˜lð!9
ð$ ˜=ð%9
ð& ˜}ð'9
ð( ˜}ð)9
ð, ˜_ð-9
ð.   ñ/9
ð0   ð19
ð4 ˜_ð59
ð6   ð79
ð8   ð99
ð< Ð.ð=9
ð> !Ð"2ð?9
ð@ !Ð"2ðA9
ðD Ð0ðE9
ðF "Ð#4ðG9
ðH "Ð#4ðI9
ðL Ð0ðM9
ðN "Ð#4ðO9
ðP "Ð#4ðQ9
ðT Ð0ðU9
ðV "Ð#4ðW9
ðX "Ð#4ðY9
ð\ Ð0ñ]9
ð^ $5Ø#4à 2Ø$6Ø$6à 2Ø$6Ø$6òq9
ˆðt —J‘J“Lò 	4‰DˆAˆqÜœ q¨$Ó/°Õ3ñ	4r   c                 óL   — t        dd¬«      dk(  sJ ‚t        dd¬«      dk(  sJ ‚y )Nr5   Tr€   r   rR   Frƒ   )r   r…   s    r   r†   z!TestPrevFastLen.test_keyword_argsñ   r‡   r   N)rˆ   r‰   rŠ   r•   rJ   r¡   r‹   rŒ   r�   rŽ   r�   r�   r£   r†   r1   r   r   r’   r’   ‚   sS   „ ò#ò	Bò5ð" ‡[�[×Ñ�s—{‘{ UÑ*ØDØ(°ð ó 7ñ<4ó7ð<4ó|8r   r’   )Úcpu_onlyc                   óT   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚTest_init_nd_shape_and_axesc                 ór   — |j                  d«      }d }d }d}g }t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )Nr   r1   ©Úasarrayr   ©	r:   Úxpr"   ÚshapeÚaxesÚshape_expectedÚaxes_expectedÚ	shape_resÚaxes_ress	            r   Útest_py_0d_defaultsz/Test_init_nd_shape_and_axes.test_py_0d_defaultsù   sR   € Ø�J‰J�q‹MˆØˆØˆàˆØˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 ór   — |j                  d«      }d }d }d}g }t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )Ng      @r1   r©   r«   s	            r   Útest_xp_0d_defaultsz/Test_init_nd_shape_and_axes.test_xp_0d_defaults  sR   € Ø�J‰J�r‹NˆØˆØˆàˆØˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 óx   — |j                  g d¢«      }d }d }d}dg}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )N©r   r   r   )r   r   r©   r«   s	            r   Útest_py_1d_defaultsz/Test_init_nd_shape_and_axes.test_py_1d_defaults  sU   € Ø�J‰J’yÓ!ˆØˆØˆàˆØ˜ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 óx   — |j                  ddd«      }d }d }d}dg}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )Nr   r   çš™™™™™¹?)r   )Úaranger   r«   s	            r   Útest_xp_1d_defaultsz/Test_init_nd_shape_and_axes.test_xp_1d_defaults   sY   € Ø�I‰I�a˜˜BÓˆØˆØˆàˆØ˜ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 ó‚   — |j                  g d¢g d¢g«      }d }d }d}ddg}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )N)r   r   r   r   )r   r   rR   r   )r   r   r   r   r©   r«   s	            r   Útest_py_2d_defaultsz/Test_init_nd_shape_and_axes.test_py_2d_defaults-  sa   € Ø�J‰JšÚ$ð&ó 'ˆàˆØˆàˆØ˜A˜ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 óž   — |j                  ddd«      }|j                  |d«      }d }d }d}ddg}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )Nr   r   rº   )r   r   )r»   Úreshaper   r«   s	            r   Útest_xp_2d_defaultsz/Test_init_nd_shape_and_axes.test_xp_2d_defaults;  sk   € Ø�I‰I�a˜˜BÓˆØ�J‰J�q˜&Ó!ˆØˆØˆàˆØ˜A˜ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 óz   — |j                  g d¢«      }d }d }d}g d¢}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )N©r   r   r   r   r   ©r   r   r   r   r   ©Úzerosr   r«   s	            r   Útest_xp_5d_defaultsz/Test_init_nd_shape_and_axes.test_xp_5d_defaultsI  sS   € Ø�H‰H’_Ó%ˆØˆØˆà(ˆÚ'ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 ó~   — |j                  g d¢«      }g d¢}d }d}g d¢}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )NrÃ   )r   éÿÿÿÿrÉ   r   r   )r   r   r   r   r   rÄ   rÅ   r«   s	            r   Útest_xp_5d_set_shapez0Test_init_nd_shape_and_axes.test_xp_5d_set_shapeV  sS   € Ø�H‰H’_Ó%ˆÚ"ˆØˆà)ˆÚ'ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 ó~   — |j                  g d¢«      }d }g d¢}d}g d¢}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )NrÃ   )r   r   r   )r   r   r   rÅ   r«   s	            r   Útest_xp_5d_set_axesz/Test_init_nd_shape_and_axes.test_xp_5d_set_axesc  sS   € Ø�H‰H’_Ó%ˆØˆÚˆà"ˆÚ!ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 ó‚   — |j                  g d¢«      }g d¢}g d¢}d}g d¢}t        |||«      \  }}||k(  sJ ‚||k(  sJ ‚y )NrÃ   )r   rÉ   r   )r   r   r   )r   r   r   rÅ   r«   s	            r   Útest_xp_5d_set_shape_axesz5Test_init_nd_shape_and_axes.test_xp_5d_set_shape_axesp  sS   € Ø�H‰H’_Ó%ˆÚˆÚˆà#ˆÚ!ˆä5°a¸ÀÓEÑˆ	�8à˜NÒ*Ð*Ð*Ø˜=Ò(Ð(Ñ(r   c                 óh   — |j                  d«      }t        |dd ¬«      \  }}|dk(  sJ ‚|g d¢k(  sJ ‚y )N)r   r   r   r   )r   r   r   ©r­   r®   r·   rÅ   )r:   r¬   r"   r­   r®   s        r   Útest_shape_axes_subsetz2Test_init_nd_shape_and_axes.test_shape_axes_subset}  s>   € Ø�H‰H�\Ó"ˆÜ-¨a°yÀtÔL‰ˆˆtà˜	Ò!Ð!Ð!Ø’yÒ Ð Ñ r   c                 ó”  — |j                  d«      }t        t        d¬«      5  t        |d ddgddgg¬«       d d d «       t        t        d¬«      5  t        |d g d¢¬«       d d d «       t        t        d	¬«      5  t        |d dg¬«       d d d «       t        t        d	¬«      5  t        |d d
g¬«       d d d «       t        t        d¬«      5  t        |d ddg¬«       d d d «       t        t        d¬«      5  t        |ddgddggd ¬«       d d d «       t        t        d¬«      5  t        |g d¢d ¬«       d d d «       t        t        d¬«      5  t        |j                  g d¢«      g d¢dg¬«       d d d «       t        t        d¬«      5  t        |dgd ¬«       d d d «       t        t        d¬«      5  t        |d
d ¬«       d d d «       y # 1 sw Y   �Œ–xY w# 1 sw Y   �ŒyxY w# 1 sw Y   �Œ]xY w# 1 sw Y   �ŒAxY w# 1 sw Y   �Œ$xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒåxY w# 1 sw Y   ŒµxY w# 1 sw Y   Œ˜xY w# 1 sw Y   y xY w)Nr   z-axes must be a scalar or iterable of integers)Úmatchr   r   r   rÐ   )g      ð?g       @g      @g      @z$axes exceeds dimensionality of inputéþÿÿÿzall axes must be uniquer   z.shape must be a scalar or iterable of integerszBwhen given, axes and shape arguments have to be of the same length)r   r   r   r   r·   z1invalid number of data points \(\[0\]\) specifiedz2invalid number of data points \(\[-2\]\) specified)rÆ   Úassert_raisesr�   r   )r:   r¬   r"   s      r   Útest_errorsz'Test_init_nd_shape_and_axes.test_errors„  sQ  € Ø�H‰H�Q‹KˆÜœ:ð .2ô 3ñ 	Jä# A¨T¸!¸Q¸À!ÀQÀÐ8HÕI÷	Jô œ:ð .2ô 3ñ 	Jä# A¨TÒ8HÕI÷	Jô œ:Ø!GôIñ 	=ä# A¨T¸¸Õ<÷	=ô œ:Ø!GôIñ 	>ä# A¨T¸¸Õ=÷	>ô œ:Ø!:ô<ñ 	@ä# A¨T¸¸A¸Õ?÷	@ô œ:ð .2ô 3ñ 	Jä# A¨q°!¨f°q¸!°fÐ-=ÀDÕI÷	Jô œ:ð .2ô 3ñ 	Jä# AÒ-=ÀDÕI÷	Jô œ:ð"<ô=ñ 	?ô $ B§H¡Hª\Ó$:Ú*3¸1¸#õ?÷	?ô œ:ð"3ô4ñ 	=ô $ A¨a¨S°tÕ<÷	=ô
 œ:ð"4ô5ñ 	<ô $ A¨R°dÕ;÷	<ð 	<÷O	Jñ 	Jú÷	Jñ 	Jú÷	=ñ 	=ú÷	>ñ 	>ú÷	@ñ 	@ú÷	Jñ 	Jú÷	Jð 	Jú÷	?ð 	?ú÷	=ð 	=ú÷
	<ð 	<úsw   £GÁGÁ;G&Â$G3ÃH Ã7HÄ%HÅ#H&ÆH2Æ4H>ÇGÇG#Ç&G0Ç3G=È H
ÈHÈH#È&H/È2H;È>IN)rˆ   r‰   rŠ   r³   rµ   r¸   r¼   r¾   rÁ   rÇ   rÊ   rÌ   rÎ   rÑ   rÖ   r1   r   r   r§   r§   ö   s>   „ ò)ò)ò)ò)ò)ò)ò)ò)ò)ò)ò!ó,<r   r§   c                   óX   — e Zd Zd„ Zd„ Z edd¬«      d„ «       Z edd¬«      d„ «       Zy)	ÚTestFFTShiftc                 ó”  — |j                  g d¢«      }|j                  g d¢«      }t        t        j                  |«      |«       t        t        j                  |«      |«       |j                  g d¢«      }|j                  g d¢«      }t        t        j                  |«      |«       t        t        j                  |«      |«       y )N)	ç        r   r   r   r   éüÿÿÿéýÿÿÿrÔ   rÉ   )	g      ÀrÜ   rÔ   rÉ   r   r   r   r   r   )
rÚ   r   r   r   r   éûÿÿÿrÛ   rÜ   rÔ   rÉ   )
g      ÀrÛ   rÜ   rÔ   rÉ   r   r   r   r   r   ©rª   r	   r   ÚfftshiftÚ	ifftshift)r:   r¬   r"   rZ   s       r   Útest_definitionzTestFFTShift.test_definitionµ  sˆ   € Ø�J‰JÒ7Ó8ˆØ�J‰JÒ7Ó8ˆÜœŸ™ Q›¨Ô+ÜœŸ™ aÓ(¨!Ô,Ø�J‰JÒ;Ó<ˆØ�J‰JÒ;Ó<ˆÜœŸ™ Q›¨Ô+ÜœŸ™ aÓ(¨!Õ,r   c                 óÔ   — dD ]c  }|j                  t        j                  j                  |f«      «      }t        t	        j
                  t	        j                  |«      «      |«       Œe y )N)r   r   r   éd   éÓ   )rª   r6   r7   r	   r   rà   rß   )r:   r¬   r   r"   s       r   Útest_inversezTestFFTShift.test_inverse¿  sK   € Ø$ò 	?ˆAØ—
‘
œ2Ÿ9™9×+Ñ+¨Q¨DÓ1Ó2ˆAÜœCŸM™M¬#¯,©,°q«/Ó:¸AÕ>ñ	?r   Úcupyzcupy/cupy#8393©r_   c                 óD  — |j                  g d¢g d¢g d¢g«      }|j                  g d¢g d¢g d¢g«      }t        t        j                  |d¬«      |«       t        t        j                  |d	¬«      t        j                  |d
¬«      «       t        t        j                  |d¬«      |«       t        t        j                  |d	¬«      t        j                  |d
¬«      «       t        t        j                  |«      |«       t        t        j                  |«      |«       y )N)rÚ   r   r   )r   r   rÛ   )rÜ   rÔ   rÉ   )g      ð¿rÜ   rÔ   )r   r   r   )rÛ   r   r   ©r   r   ©r®   r   ©r   rÞ   )r:   r¬   ÚfreqsÚshifteds       r   Útest_axes_keywordzTestFFTShift.test_axes_keywordÄ  s¿   € à—
‘
šJª
²LÐAÓBˆØ—*‘*šmªYº
ÐCÓDˆÜœŸ™ U°Ô8¸'ÔBÜœŸ™ U°Ô3´S·\±\À%ÈdÔ5SÔTÜœŸ™ g°FÔ;¸UÔCÜœŸ™ g°AÔ6ÜŸ™ g°DÔ9ô	;äœŸ™ UÓ+¨WÔ5ÜœŸ™ gÓ.°Õ6r   c                 óÒ  — |j                  ddgddgddgg|j                  ¬«      }|j                  ddgddgddgg|j                  ¬«      }t        t        j                  |d¬«      |«       t        t        j
                  |d¬«      |«       t        t        j                  |d	¬«      |«       t        t        j
                  |dg¬«      |«       |j                  ddgddgddgg|j                  ¬«      }t        t        j                  |d¬«      |«       t        t        j
                  |d¬«      |«       |j                  ddgddgddgg|j                  ¬«      }t        t        j                  |d
¬«      |«       t        t        j
                  |d
¬«      |«       t        t        j                  |ddg¬«      |«       t        t        j
                  |ddg¬«      |«       t        t        j                  |d¬«      |«       t        t        j
                  |d¬«      |«       t        t        j                  |«      |«       t        t        j
                  |«      |«       y)z1 Test 2D input, which has uneven dimension sizes r   r   r   r   r   r   ©Údtyperê   rë   ré   N)rª   Úfloat64r	   r   rß   rà   )r:   r¬   rì   Ú
shift_dim0Ú
shift_dim1Úshift_dim_boths         r   Útest_uneven_dimszTestFFTShift.test_uneven_dimsÐ  s  € ð —
‘
Ø�ˆFØ�ˆFØ�ˆFð
ð —‘ð	 ó ˆð —Z‘ZØ�ˆFØ�ˆFØ�ˆFð!
ð —‘ð	  ó ˆ
ô
 	œŸ™ U°Ô3°ZÔ@ÜœŸ™ j°qÔ9¸5ÔAÜœŸ™ U°Ô6¸
ÔCÜœŸ™ j¸°sÔ;¸UÔCð —Z‘ZØ�ˆFØ�ˆFØ�ˆFð!
ð —‘ð	  ó ˆ
ô
 	œŸ™ U°Ô3°ZÔ@ÜœŸ™ j°qÔ9¸5ÔAð Ÿ™Ø�ˆFØ�ˆFØ�ˆFð%
ð —‘ð	 $ó ˆô
 	œŸ™ U°Ô8¸.ÔIÜœŸ™ n¸6ÔBÀEÔJÜœŸ™ U°!°Q°Ô8¸.ÔIÜœŸ™ n¸A¸q¸6ÔBÀEÔJô 	œŸ™ U°Ô6¸ÔGÜœŸ™ n¸4Ô@À%ÔHÜœŸ™ UÓ+¨^Ô<ÜœŸ™ nÓ5°uÕ=r   N)rˆ   r‰   rŠ   rá   rå   r   rî   rö   r1   r   r   rØ   rØ   ³  sD   „ ò-ò?ñ
 �fÐ%5Ô6ñ	7ó 7ð	7ñ �fÐ%5Ô6ñ+>ó 7ñ+>r   rØ   ræ   z+CuPy has not implemented the `device` paramrç   z	jax.numpyz*JAX has not implemented the `device` paramc                   ó   — e Zd Zd„ Zd„ Zy)ÚTestFFTFreqc                 ó"  — |j                  g d¢|j                  ¬«      }|j                  g d¢|j                  ¬«      }dt        j                  d|¬«      z  }t	        ||dd¬«       d|j
                  z  t        j                  d|j
                  |¬«      z  }t	        ||d¬	«       d
t        j                  d
|¬«      z  }t	        ||d¬	«       d
|j
                  z  t        j                  d
|j
                  |¬«      z  }t	        ||d¬	«       y )N)	r   r   r   r   r   rÛ   rÜ   rÔ   rÉ   rð   )
r   r   r   r   r   rÝ   rÛ   rÜ   rÔ   rÉ   r   ©r¬   FT©Úcheck_dtypeÚcheck_namespace©rü   r   )rª   rò   r   Úfftfreqr	   Úpi©r:   r¬   r"   Úx2rZ   s        r   rá   zTestFFTFreq.test_definition  sÔ   € Ø�J‰JÒ6¸b¿j¹jˆJÓIˆØ�Z‰ZÒ;À2Ç:Á:ˆZÓNˆð ”—‘˜A "Ô%Ñ%ˆÜ˜˜1¨%ÀÕFà�—‘‰IœŸ™ A r§u¡u°Ô4Ñ4ˆÜ˜˜1¨%Õ0à”—‘˜R BÔ'Ñ'ˆÜ˜˜2¨5Õ1à�—‘‰JœŸ™ R¨¯©°2Ô6Ñ6ˆÜ˜˜2¨5Ö1r   c                 óä   — t        |j                  d«      «      }t        |«      }|D ]F  }t        j                  d||¬«      }|j                  d|¬«      }t        |«      t        |«      k(  rŒFJ ‚ y ©Nr   r   )r¬   Údevice)r  )r   Úemptyr
   r   rÿ   r   ©r:   r¬   Úxp_testÚdevicesr&   rZ   r"   s          r   Útest_devicezTestFFTFreq.test_device  sg   € Ü! "§(¡(¨1£+Ó.ˆÜ  Ó$ˆØò 	0ˆAÜ—‘˜A "¨QÔ/ˆAØ—‘˜a¨�Ó*ˆAÜ˜Q“<¤9¨Q£<Ó/Ð/Ð/ñ	0r   N©rˆ   r‰   rŠ   rá   r
  r1   r   r   rø   rø   ÿ  ó   „ ò2ó$0r   rø   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestRFFTFreqc                 ó"  — |j                  g d¢|j                  ¬«      }|j                  g d¢|j                  ¬«      }dt        j                  d|¬«      z  }t	        ||dd¬«       d|j
                  z  t        j                  d|j
                  |¬«      z  }t	        ||d¬	«       d
t        j                  d
|¬«      z  }t	        ||d¬	«       d
|j
                  z  t        j                  d
|j
                  |¬«      z  }t	        ||d¬	«       y )NrÄ   rð   )r   r   r   r   r   r   r   rú   FTrû   rþ   r   )rª   rò   r   Úrfftfreqr	   r   r  s        r   rá   zTestRFFTFreq.test_definition&  sÓ   € Ø�J‰J’¨b¯j©jˆJÓ9ˆØ�Z‰ZÒ*°"·*±*ˆZÓ=ˆð ”—‘˜Q 2Ô&Ñ&ˆÜ˜˜1¨%ÀÕFà�—‘‰IœŸ™ Q¨¯©°"Ô5Ñ5ˆÜ˜˜1¨%Õ0à”—‘˜b RÔ(Ñ(ˆÜ˜˜2¨5Õ1à�—‘‰JœŸ™ b¨"¯%©%°BÔ7Ñ7ˆÜ˜˜2¨5Ö1r   c                 óä   — t        |j                  d«      «      }t        |«      }|D ]F  }t        j                  d||¬«      }|j                  d|¬«      }t        |«      t        |«      k(  rŒFJ ‚ y r  )r   r  r
   r   r  r   r  s          r   r
  zTestRFFTFreq.test_device8  sg   € Ü! "§(¡(¨1£+Ó.ˆÜ  Ó$ˆØò 	0ˆAÜ—‘˜Q 2¨aÔ0ˆAØ—‘˜a¨�Ó*ˆAÜ˜Q“<¤9¨Q£<Ó/Ð/Ð/ñ	0r   Nr  r1   r   r   r  r     r  r   r  )#Ú__doc__Úscipy.fft._helperr   r   r   Únumpy.testingr   r‹   r   rÕ   Únumpyr6   rŽ   Úscipy.conftestr   Úscipy._lib._array_apir	   r
   r   r   Úscipyr   rŒ   ÚusefixturesÚ
pytestmarkr   r   r   r'   r*   r’   r§   rØ   rø   r  r1   r   r   ú<module>r     sU  ðñ÷ TÑ SÝ &Ý *Û Û Û 
Ý /÷ó õ à" F§K¡K×$;Ñ$;Ð<NÓ$OÐP€
Ø—;‘;×/Ñ/Ð òÐ ò*ò
:ñ, ˜$Ô÷G8ð G8ó  ðG8ñR ˜$Ô÷p8ð p8ó  ðp8ñf ˜4Ô ÷y<ð y<ó !ðy<÷xI>ñ I>ñX �&ØFôHá�+ØEôG÷0ð 0óGóHð0ñ: �&ØFôHá�+ØEôG÷0ð 0óGóHñ0r   