Ë
    ÏÍ:jÆ  ã            	       ó$  — 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mZmZmZ ej                   j"                  Z eee«      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«       eeee«      d„ «       «       «       «       «       Z eee«      d„ «       Zej                   j'                  dddg«       ee«      d„ «       «       Z edd¬«      ej                   j'                  d ee«       ee«      g«      d„ «       «       Zej                   j'                  dddg«       eee«      d„ «       «       Zy)é    N)ÚfhtÚifhtÚ	fhtoffset)Úpoch)Úxp_assert_closeÚxp_assert_lessÚmake_xp_test_caseÚmake_xp_pytest_paramc                 ó   — 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        |«      }t        |||||¬	«      }g d¢}	| j	                  |	| j                  ¬«      }	t        ||	«       d}t        |||¬«      }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     úp/home/mcse/projects/srt_converter/srt-converter-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ÚmathÚlogÚasarrayr   Úfloat64r   r   Úfloat)
Úxpr   r   Údlnr   r   r   ÚaÚoursÚtheirss
             r   Útest_fht_agrees_with_fftlogr,      s˜  € ò)ô 	�‰�B˜˜2Ó€Aä
�(‰(�1�Q‘4˜˜!™‘9Ó
€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ô �6‹]€Fäˆq�#�r &¨tÔ4€Dò@€Fð �Z‰Z˜ b§j¡jˆZÓ1€FÜ�D˜&Ô!ð €DÜ�s˜B TÔ*€FÜ�6‹]€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                 ó^  — t         j                  j                  d«      }|j                  |j	                  | «      «      }|j                  dd«      }|j                  dd«      }|rt        ||||¬«      }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-   r'   Úrngr)   r(   r   ÚAÚa_s              r   Útest_fht_identityr@   d   sŸ   € ô �)‰)×
Ñ
 
Ó
+€Cà
�
‰
�3×&Ñ& qÓ)Ó*€AØ
�+‰+�b˜!Ó
€CØ	�‰�R˜Ó	€BáÜ˜3 ¨F¸Ô>ˆô �v“ˆäˆ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)Nr3   r0   r4   r   )g      Àr.   T)Úrecordr    z)fht warned about a well-defined transform)g      Àç      à?)g      ÀrC   z+fht did not warn about a singular transformz,ifht did not warn about a singular transform)r   r9   r:   r$   r;   r<   ÚwarningsÚcatch_warningsr   ÚpytestÚwarnsÚWarningr   )r'   r=   r)   r(   r   r   rB   s          r   Útest_fht_special_casesrI   |   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        |||||¬«      }	t        j                  |«      |d d d…   z  }
|j                  d|
z  |z  t        |dz   |z
  dz  |«      z  «      }t        |	|«       y )Nr3   r   é   r4   rC   r5   r   r   r   r6   r   )r   r9   r:   r<   r!   r$   r"   r#   r   r&   r   r   r   r   )r/   r'   r=   r   Úgammar   r)   r(   r   r>   ÚkÚAts               r   Útest_fht_exactrO       sÿ   € ô �)‰)×
Ñ
 
Ó
+€Cð
 
�‰�Q˜Ó	€Bð �K‰K˜˜2™˜sÓ#€Eä
�‰�B˜˜1Ó€AØ
�
‰
�1�e‘8Ó€Aä
�(‰(�1�Q‘4˜˜!™‘9Ó
€Cä�s˜B¨°%Ô8€Fô �6‹]€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'   rR   Úxs      r   Útest_array_likerU   À   s`   € ð �ˆ*�s˜C�jÐ	!Ø�ˆ*�s˜C�jÐ	!Ø�ˆ*�s˜C�jÐ	!ð	#€Aô ‘B�q˜#˜s“O¡R¨¯
©
°1«°s¸CÓ%@ÕAr   é€   é�   c                 ó>  ‡ — ‰ j                  d«      }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úÿÿÿé
   )r7   r   r   r4   )Úaxisc                 óF   •— | |dz   z  ‰j                  | dz   dz  «      z  S r   )r   )rT   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"   r#   r   r   r   Úflipr   ÚmaxÚabsr   )r'   r/   Úoner   r   r(   r   rM   r   Úa_rÚfht_valÚa_kÚrel_errs   `            r   Útest_gh_21661re   Ë   sø   ø€ ð �*‰*�S‹/€CØ	€BÜ
�‰�B˜˜1Ó€AÜ
�(‰(�1�Q‘4˜!˜A™$‘;Ó
€CÜ�s B¬¯©°«¡O¸Ô;€FØ
�
‰
�1˜CŸI™Iˆ
Ó&€AÜ�‰�Ó˜2Ÿ7™7 1¨2˜7Ó.Ñ.€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   )rD   r"   Únumpyr   rF   Úscipy.fft._fftlogr   r   r   Úscipy.specialr   Úscipy._lib._array_apir   r   r	   r
   ÚmarkÚskip_xp_backendsr,   Úparametrizer@   rI   rO   rU   re   r\   r   r   ú<module>rm      s¹  ðÛ Û ã Û ç 2Ñ 2Ý ÷ó ð —;‘;×/Ñ/Ð ñ �3˜	Ó"ñO"ó #ðO"ðd ‡�×Ñ˜ T¨5 MÓ2Ø‡�×Ñ˜Ò#3Ó4Ø‡�×Ñ˜¢Ó0Ø‡�×Ñ˜˜r 2˜hÓ'Ù�9˜c 4Ó(ñ(ó )ó (ó 1ó 5ó 3ð
(ñ& �3˜Óñ Fó ð FðF ‡�×Ñ˜˜r 2˜hÓ'Ù�3Óñó ó (ðñ< ˜$ØGôIà‡�×ÑØÑ Ó$Ñ&:¸4Ó&@Ð
AóñBóóIð
Bð ‡�×Ñ˜˜s C˜jÓ)Ù�9˜cÓ"ñ6ó #ó *ñ6r   