§
    ¢éUgë  ã                   ó�  — 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 eej                             d¦  «        gZej        j        Zd„ Zej                             dd	d
g¦  «        ej                             dg d¢¦  «        ej                             dg d¢¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         Zd„ Zej                             dddg¦  «        d„ ¦   «         Z ed	dg¬¦  «        ej                             deeg¦  «        d„ ¦   «         ¦   «         ZdS )é    N)ÚfhtÚifhtÚ	fhtoffset)Úpoch)Úarray_api_compatible)Úxp_assert_closeÚskip_xp_backendsc                 ó\  — d„ }t          j        ddd¦  «        }t          j        |d         |d         z  ¦  «        }d}d}d}|                       |||¦  «        ¦  «        }t	          |||||¬	¦  «        }g d
¢}	|                      |	| j        ¬¦  «        }	t          ||	¦  «         t          |||¬¦  «        }t	          |||||¬	¦  «        }g d¢}	|                      |	| j        ¬¦  «        }	t          ||	¦  «         d}t          |||¬¦  «        }t	          |||||¬	¦  «        }g d¢}	|                      |	| j        ¬¦  «        }	t          ||	¦  «         d}t          |||¬¦  «        }t	          |||||¬	¦  «        }g d¢}	|                      |	| j        ¬¦  «        }	t          ||	¦  «         d S )Nc                 óJ   — | |dz   z  t          j        | dz   dz  ¦  «        z  S )Né   é   )ÚnpÚexp)ÚrÚmus     úZ/var/www/surfInsights/venv3-11/lib/python3.11/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�1�Q˜‘8”8ÑÔ€Aõ ˆq�#�r &¨tÐ4Ñ4Ô4€Dð@ð @ð @€Fð �ZŠZ˜ b¤jˆZÑ1Ô1€FÝ�D˜&Ñ!Ô!Ð!õ �s˜B TÐ*Ñ*Ô*€FÝˆq�#�r &¨tÐ4Ñ4Ô4€Dð@ð @ð @€Fð �ZŠZ˜ b¤jˆZÑ1Ô1€FÝ�D˜&Ñ!Ô!Ð!ð €DÝ�s˜B TÐ*Ñ*Ô*€FÝˆq�#�r &¨tÐ4Ñ4Ô4€Dð@ð @ð @€Fð �ZŠZ˜ b¤jˆZÑ1Ô1€FÝ�D˜&Ñ!Ô!Ð!ð €DÝ�s˜B TÐ*Ñ*Ô*€FÝˆq�#�r &¨tÐ4Ñ4Ô4€Dð@ð @ð @€Fð �ZŠZ˜ b¤jˆZÑ1Ô1€FÝ�D˜&Ñ!Ô!Ð!Ð!Ð!r   ÚoptimalTFr   )r   ç      ð?g      ð¿r   )r   gš™™™™™¹?gš™™™™™¹¿Úné@   é?   c                 óŠ  — t           j                             d¦  «        }|                     |                     | ¦  «        ¦  «        }|                     dd¦  «        }|                     dd¦  «        }|rt          ||||¬¦  «        }t          |||||¬¦  «        }	t          |	||||¬¦  «        }
t          |
|d¬	¦  «         d S )
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Ñ1Ô1€AÝ	ˆa��b ¨dÐ	3Ñ	3Ô	3€Bå�B˜ Ð'Ñ'Ô'Ð'Ð'Ð'r   c                 ób  — t           j                             d¦  «        }|                      |                     d¦  «        ¦  «        }|                     dd¦  «        }d\  }}t          j        d¬¦  «        5 }t          ||||¬¦  «         |r
J d	¦   «         ‚	 d d d ¦  «         n# 1 swxY w Y   d
\  }}t          j        d¬¦  «        5 }t          ||||¬¦  «         |r
J d	¦   «         ‚	 d d d ¦  «         n# 1 swxY w Y   d\  }}t          j
        t          ¦  «        5 }t          ||||¬¦  «         |s
J d¦   «         ‚	 d d d ¦  «         n# 1 swxY w Y   d
\  }}t          j
        t          ¦  «        5 }t          ||||¬¦  «         |s
J d¦   «         ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr.   r+   r/   r   )g      Àr)   T)Úrecordr   z)fht warned about a well-defined transform)g      Àç      à?)g      Àr>   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r4   r5   r    r6   r7   ÚwarningsÚcatch_warningsr   ÚpytestÚwarnsÚWarningr   )r"   r8   r$   r#   r   r   r=   s          r   Útest_fht_special_casesrD   o   s  € Ý
Œ)×
Ò
 
Ñ
+Ô
+€Cà
�
Š
�3×&Ò& rÑ*Ô*Ñ+Ô+€AØ
�+Š+�b˜!Ñ
Ô
€Cð
 �H€BˆÝ	Ô	 ¨Ð	-Ñ	-Ô	-ð G°ÝˆAˆs�B˜TÐ"Ñ"Ô"Ð"ØÐFÐFÐFÑFÔFÐFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð
 �H€BˆÝ	Ô	 ¨Ð	-Ñ	-Ô	-ð G°ÝˆAˆs�B˜TÐ"Ñ"Ô"Ð"ØÐFÐFÐFÑFÔFÐFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð
 �H€BˆÝ	Œ•gÑ	Ô	ð E &ÝˆAˆs�B˜TÐ"Ñ"Ô"Ð"ØÐDÐDÐDÑDÔDÐDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð
 �H€BˆÝ	Œ•gÑ	Ô	ð F &ÝˆQ��R˜dÐ#Ñ#Ô#Ð#ØÐEÐEÐEÑEÔEÐEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð FsH   Á8 B%Â%B)Â,B)Ã
 C7Ã7C;Ã>C;Ä  EÅEÅEÅ6 F$Æ$F(Æ+F(c                 ó\  — t           j                             d¦  «        }|                     dd¦  «        }|                     d|z
  d¦  «        }t          j        dd| ¦  «        }|                     ||z  ¦  «        }t          j        |d         |d         z  ¦  «        }t          ||d	|¬
¦  «        }t          |||||¬¦  «        }	t          j	        |¦  «        |d d d…         z  }
|                     d|
z  |z  t          |dz   |z
  dz  |¦  «        z  ¦  «        }t          |	|¦  «         d S )Nr.   r   é   r/   r>   r0   r   r   r   r1   r   )r   r4   r5   r7   r   r    r   r   r   r   r   r   )r*   r"   r8   r   Úgammar   r$   r#   r   r9   ÚkÚAts               r   Útest_fht_exactrJ   �   s  € å
Œ)×
Ò
 
Ñ
+Ô
+€Cð
 
�Š�Q˜Ñ	Ô	€Bð �KŠK˜˜2™˜sÑ#Ô#€Eå
Œ�B˜˜1ÑÔ€AØ
�
Š
�1�e‘8ÑÔ€Aå
Œ&��1”�a˜”d‘Ñ
Ô
€Cå�s˜B¨°%Ð8Ñ8Ô8€FåˆAˆs�B˜v¨EÐ2Ñ2Ô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ÚreasonsÚ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¦  «         ||                      |¦  «        dd¦  «        ¦  «         d S )Nr)   g       @)r   r    )r"   rM   Úxs      r   Útest_array_likerP   ¬   sw   € ð �ˆ*�s˜C�jÐ	!Ø�ˆ*�s˜C�jÐ	!Ø�ˆ*�s˜C�jÐ	!ð	#€Aõ �B�B�q˜#˜s‘O”O R R¨¯
ª
°1©¬°s¸CÑ%@Ô%@ÑAÔAÐAÐAÐAr   )r?   Únumpyr   rA   Úscipy.fft._fftlogr   r   r   Úscipy.specialr   Úscipy.conftestr   Úscipy._lib._array_apir   ÚmarkÚusefixturesÚ
pytestmarkr	   r'   Úparametrizer;   rD   rJ   rP   © r   r   ú<module>r[      sú  ðØ €€€Ø Ð Ð Ð Ø €€€à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à" F¤K×$;Ò$;Ð<NÑ$OÔ$OÐQ€
Ø”;Ô/Ð ðI"ð I"ð I"ðX „×Ò˜ T¨5 MÑ2Ô2Ø„×Ò˜Ð#3Ð#3Ð#3Ñ4Ô4Ø„×Ò˜   Ñ0Ô0Ø„×Ò˜˜r 2˜hÑ'Ô'ð(ð (ñ (Ô'ñ 1Ô0ñ 5Ô4ñ 3Ô2ð(ð Fð Fð FðB „×Ò˜˜r 2˜hÑ'Ô'ðð ñ (Ô'ðð6 Ð˜$ØIÐJðLñ Lô Là„×Ò˜  T˜{Ñ+Ô+ðBð Bñ ,Ô+ñLô LðBð Bð Br   