Ë
    âQ(hÂ  ã                   ó  — d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ eej"                  j%                  d«      gZej"                  j(                  Zd„ Zej"                  j-                  dd	d
g«      ej"                  j-                  dg d¢«      ej"                  j-                  dg d¢«      ej"                  j-                  dddg«      d„ «       «       «       «       Zej"                  j0                  d„ «       Zej"                  j-                  dddg«      d„ «       Z ed	d¬«      ej"                  j-                  deeg«      d„ «       «       Zej"                  j-                  dddg«      d„ «       Zy)é    N)ÚfhtÚifhtÚ	fhtoffset)Úpoch)Úarray_api_compatible)Úxp_assert_closeÚxp_assert_lessÚarray_namespaceÚskip_xp_backendsc                 óô  — d„ }t        j                  ddd«      }t        j                  |d   |d   z  «      }d}d}d}| j                   |||«      «      }t	        |||||¬	«      }g d
¢}	| j                  |	| j
                  ¬«      }	t        ||	«       t        |||¬«      }t	        |||||¬	«      }g d¢}	| j                  |	| j
                  ¬«      }	t        ||	«       d}t        |||¬«      }t	        |||||¬	«      }g d¢}	| j                  |	| j
                  ¬«      }	t        ||	«       d}t        |||¬«      }t	        |||||¬	«      }g d¢}	| j                  |	| j
                  ¬«      }	t        ||	«       y )Nc                 óL   — | |dz   z  t        j                  | dz   dz  «      z  S ©Né   é   )ÚnpÚexp)ÚrÚmus     úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/fft/tests/test_fftlog.pyÚfz&test_fht_agrees_with_fftlog.<locals>.f   s'   € Ø�2�a‘4‰yœŸ™  A¡  a¡›Ñ(Ð(ó    éüÿÿÿé   é   r   r   g333333Ó?ç        ©ÚoffsetÚbias)gÿÐ=lS¿gá–l¾1£Z?gp¢Rßð_¿gœ~]’
o?g€°0d±@?g–Åíº…œ?g0¨2†u¹?g7c4UoÝ?gUËû�/5Ô?gÀÞ 3²ßJ¿g QÊi©«I¿g!m¿ÞÃ9?g áä®1¿g?ˆàJÇb7?g »tj3B¿g šÂ	'K?©Údtype©r   )g  Dy‡Ó?g ò¾T Iã¾g Ýí9¥4?g°B ûÖúM?gÈQº89Êw?g�ÀÄ¥™š?gZøT3%Á?gz;_x˜ÛÞ?g9%PÔúÑ?gv@žÀ‹Ý†¿gA”AÊÙY]?gayiìég;¿gGÁI<!?g FÌÚ\m¿gÿH¬žÒ ?g @(ÙLGü¾gš™™™™™é?)gáÿ×Uê_Àg0E>y7äÅ?g4â¬ž	F»?gR^Ø¡*9ª¿g¤-ägÑÿš?gÁ“Ó!a‘?gRÃèÞ´ À?gÍmžMUUÞ?g¨ å ð.Ò?g'?£eH�¿gŸZ7ZòÇP?gâmÜ·`�%¿gCGÎïT?gçž2œTà¾gÒ…°ýêuÀ>gå/”&ô®¾gš™™™™™é¿)göGãË3Øâ>g`4]<]?g[8„²ÛÖ+?g,8GédŠP?g¢°¢
¦u?g›,×—$5™?g~„}ç£¿?grƒa,‹4Þ?gœV—�°„Ò?gh¸`>E‘¿gDgôyÙ–?g¸P2�ZSŽ¿gÍ†ŽË�©Å?gÜºJžíÒÓ?g[«U¶+@gð"äÚ%@)r   ÚlogspaceÚlogÚasarrayr   Úfloat64r   r   )
Úxpr   r   Údlnr   r   r   ÚaÚoursÚtheirss
             r   Útest_fht_agrees_with_fftlogr+      s„  € ò)ô 	�‰�B˜˜2Ó€Aä
�&‰&��1‘�a˜‘d‘Ó
€CØ	€BØ€FØ€Dà
�
‰
‘1�Q˜“8Ó€Aô ˆq�#�r &¨tÔ4€Dò@€Fð �Z‰Z˜ b§j¡jˆZÓ1€FÜ�D˜&Ô!ô �s˜B TÔ*€FÜˆq�#�r &¨tÔ4€Dò@€Fð �Z‰Z˜ b§j¡jˆZÓ1€FÜ�D˜&Ô!ð €DÜ�s˜B TÔ*€FÜˆq�#�r &¨tÔ4€Dò@€Fð �Z‰Z˜ b§j¡jˆZÓ1€FÜ�D˜&Ô!ð €DÜ�s˜B TÔ*€FÜˆq�#�r &¨tÔ4€Dò@€Fð �Z‰Z˜ b§j¡jˆZÓ1€FÜ�D˜&Õ!r   ÚoptimalTFr   )r   ç      ð?g      ð¿r   )r   gš™™™™™¹?gš™™™™™¹¿Úné@   é?   c                 óH  — t         j                  j                  d«      }|j                  |j	                  | «      «      }|j                  dd«      }|j                  dd«      }|rt        ||||¬«      }t        |||||¬«      }	t        |	||||¬«      }
t        |
|d¬	«       y )
Nì   ÍE3  éÿÿÿÿr   éþÿÿÿr   ©Úinitialr   r   gvƒôõ!„>)Úrtol)
r   ÚrandomÚRandomStater$   Ústandard_normalÚuniformr   r   r   r   )r.   r   r   r,   r&   Úrngr(   r'   r   ÚAÚa_s              r   Útest_fht_identityr?   ]   s”   € ô
 �)‰)×
Ñ
 
Ó
+€Cà
�
‰
�3×&Ñ& qÓ)Ó*€AØ
�+‰+�b˜!Ó
€CØ	�‰�R˜Ó	€BáÜ˜3 ¨F¸Ô>ˆäˆAˆs�B˜v¨DÔ1€AÜ	ˆa��b ¨dÔ	3€Bä�B˜ Ö'r   c                 óú  — t         j                  j                  d«      }| j                  |j	                  d«      «      }|j                  dd«      }d\  }}t        j                  d¬«      5 }t        ||||¬«       |rJ d	«       ‚	 d d d «       d
\  }}t        j                  d¬«      5 }t        ||||¬«       |rJ d	«       ‚	 d d d «       d\  }}t        j                  t        «      5 }t        ||||¬«       |sJ d«       ‚	 d d d «       d
\  }}t        j                  t        «      5 }t        ||||¬«       |sJ d«       ‚	 d d d «       y # 1 sw Y   ŒÇxY w# 1 sw Y   Œ–xY w# 1 sw Y   ŒbxY w# 1 sw Y   y xY w)Nr2   r/   r3   r   )g      Àr-   T)Úrecordr!   z)fht warned about a well-defined transform)g      Àç      à?)g      ÀrB   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r8   r9   r$   r:   r;   ÚwarningsÚcatch_warningsr   ÚpytestÚwarnsÚWarningr   )r&   r<   r(   r'   r   r   rA   s          r   Útest_fht_special_casesrH   s   s…  € ä
�)‰)×
Ñ
 
Ó
+€Cà
�
‰
�3×&Ñ& rÓ*Ó+€AØ
�+‰+�b˜!Ó
€Cð
 �H€BˆÜ	×	 Ñ	 ¨Ô	-ð G°ÜˆAˆs�B˜TÕ"ÙÐFÐFÓFˆz�6÷Gð
 �H€BˆÜ	×	 Ñ	 ¨Ô	-ð G°ÜˆAˆs�B˜TÕ"ÙÐFÐFÓFˆz�6÷Gð �H€BˆÜ	�‰”gÓ	ð E &ÜˆAˆs�B˜TÕ"ÙÐDÐDÓD‰v÷Eð �H€BˆÜ	�‰”gÓ	ð F &ÜˆQ��R˜dÕ#ÙÐEÐEÓE‰v÷Fð F÷)Gð Gú÷Gð Gú÷Eð Eú÷Fð Fús0   Á-EÂ*EÃ*E%Ä*E1ÅEÅE"Å%E.Å1E:c                 ó  — t         j                  j                  d«      }|j                  dd«      }|j                  d|z
  d«      }t        j                  dd| «      }|j                  ||z  «      }t        j                  |d   |d   z  «      }t        ||d	|¬
«      }t        |||||¬«      }	t        j                  |«      |d d d…   z  }
|j                  d|
z  |z  t        |dz   |z
  dz  |«      z  «      }t        |	|«       y )Nr2   r   é   r3   rB   r4   r   r   r   r5   r   )r   r8   r9   r;   r"   r$   r#   r   r   r   r   r   )r.   r&   r<   r   Úgammar   r(   r'   r   r=   ÚkÚAts               r   Útest_fht_exactrN   —   sò   € ä
�)‰)×
Ñ
 
Ó
+€Cð
 
�‰�Q˜Ó	€Bð �K‰K˜˜2™˜sÓ#€Eä
�‰�B˜˜1Ó€AØ
�
‰
�1�e‘8Ó€Aä
�&‰&��1‘�a˜‘d‘Ó
€Cä�s˜B¨°%Ô8€FäˆAˆs�B˜v¨EÔ2€Aä
�‰ˆv‹�q™˜2˜‘wÑ€Að 
�‰�Q�q‘S˜5‘L¤4¨¨A©¨e©°Q©¸Ó#>Ñ>Ó	?€Bä�A�rÕr   z,array-likes only supported for NumPy backend)Únp_onlyÚreasonÚopc                 óˆ   — ddgddggddgddggddgddggg}t         ||dd«       || j                  |«      dd«      «       y )Nr-   g       @)r   r$   )r&   rQ   Úxs      r   Útest_array_likerT   ³   s`   € ð �ˆ*�s˜C�jÐ	!Ø�ˆ*�s˜C�jÐ	!Ø�ˆ*�s˜C�jÐ	!ð	#€Aô ‘B�q˜#˜s“O¡R¨¯
©
°1«°s¸CÓ%@ÕAr   é€   é�   c                 óT  ‡ — ‰ j                  d«      }t        |«      }d}t        j                  dd|«      }t	        j
                  |d   |d   z  «      }t        |dt        j
                  d«      z  |¬«      }‰ j                  ||j                  ¬	«      }t	        j                  |«      |j                  |d
¬«      z  }ˆ fd„}	 |	||«      }
t        |
|||¬«      } |	||«      }‰ j                  ‰ j                  ||z
  |z  «      «      }t        |‰ j                  d«      d   «       y )Nr-   r   iùÿÿÿr   r   iúÿÿÿé
   )r6   r   r   r3   )Úaxisc                 óF   •— | |dz   z  ‰j                  | dz   dz  «      z  S r   )r   )rS   r   r&   s     €r   r   ztest_gh_21661.<locals>.fÇ   s(   ø€ Ø�2˜‘6‰{˜2Ÿ6™6 1 a¡4 %¨¡'›?Ñ*Ð*r   )r   r   g `ºm3*pC© )r$   r
   r   r"   Úmathr#   r   r    r   Úflipr   ÚmaxÚabsr	   )r&   r.   ÚoneÚxp_testr   r   r'   r   rL   r   Úa_rÚfht_valÚa_kÚrel_errs   `             r   Útest_gh_21661rf   ¼   s   ø€ à
�*‰*�S‹/€CÜ˜cÓ"€GØ	€BÜ
�‰�B˜˜1Ó€AÜ
�(‰(�1�Q‘4˜!˜A™$‘;Ó
€CÜ�s B¬¯©°«¡O¸Ô;€FØ
�
‰
�1˜CŸI™Iˆ
Ó&€AÜ�‰�Ó˜7Ÿ<™<¨°˜<Ó3Ñ3€Aô+ñ ˆAˆr‹(€CÜ�#�s˜r¨&Ô1€GÙ
ˆAˆr‹(€CØ�f‰f�R—V‘V˜W s™]¨cÑ1Ó2Ó3€GÜ�7˜BŸJ™J xÓ0°Ñ4Õ5r   )rC   r\   Únumpyr   rE   Úscipy.fft._fftlogr   r   r   Úscipy.specialr   Úscipy.conftestr   Úscipy._lib._array_apir   r	   r
   ÚmarkÚusefixturesÚ
pytestmarkr   r+   Úparametrizer?   Úthread_unsaferH   rN   rT   rf   r[   r   r   ú<module>rq      s  ðÛ Û ã Û ç 2Ñ 2Ý å /ß RÑ Rà" F§K¡K×$;Ñ$;Ð<NÓ$OÐQ€
Ø—;‘;×/Ñ/Ð òI"ðX ‡�×Ñ˜ T¨5 MÓ2Ø‡�×Ñ˜Ò#3Ó4Ø‡�×Ñ˜¢Ó0Ø‡�×Ñ˜˜r 2˜hÓ'ñ(ó (ó 1ó 5ó 3ð(ð$ ‡�×Ññ Fó ð FðF ‡�×Ñ˜˜r 2˜hÓ'ñó (ðñ6 ˜$ØGôIà‡�×Ñ˜  T˜{Ó+ñBó ,óIðBð ‡�×Ñ˜˜s C˜jÓ)ñ6ó *ñ6r   