ó
    pñ:iÃ.  ã                   óž   • S SK r S SKrS SKrS SKJr  S SKrS SKJr  S SK	r	S SK
Jr  / SQr " S S5      rS rS r    SS	 jr " S
 S5      rg)é    N)Ú_pep440)Úassert_)Úwith_special_errorsÚassert_func_equalÚFuncDatac                   ó   • \ rS rSrS rSrg)ÚMissingModuleé   c                 ó   • Xl         g ©N©Úname)Úselfr   s     Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/scipy/special/_testutils.pyÚ__init__ÚMissingModule.__init__   s   € Ø�	ó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__© r   r   r	   r	      s   † õr   r	   c                 ó@  • [        U 5      [        L a*  [        R                  R	                  U R
                   S3S9$ [        R                  R                  [        R                  " U R                  5      [        R                  " U5      :  U R                   SU S3S9$ )Nz is not installed©Úreasonz version >= z	 required)Útyper	   ÚpytestÚmarkÚskipr   Úskipifr   ÚparseÚ__version__ÚVersionr   )ÚmoduleÚmin_vers     r   Úcheck_versionr'      sƒ   € ÜˆFƒ|”}Ò$Ü�{‰{×Ñ¨&¯+©+¨Ð6GÐ'HÐÐIÐIÜ�;‰;×ÑÜ�Š�f×(Ñ(Ó)¬G¯OªO¸GÓ,DÑDØ—/‘/Ð" ,¨w¨i°yÐAð ð ð r   c                 óF   ^ • [         R                  " T 5      U 4S j5       nU$ )zW
Enable special function errors (such as underflow, overflow,
loss of precision, etc.)
c                  óv   >• [         R                  " SS9   T" U 0 UD6nS S S 5        U$ ! , (       d  f       W$ = f)NÚraise©Úall)ÚscÚerrstate)ÚaÚkwÚresÚfuncs      €r   ÚwrapperÚ$with_special_errors.<locals>.wrapper*   s4   ø€ ä�[Š[˜WÓ%Ù˜�.˜R‘.ˆC÷ &àˆ
÷ &Ô%àˆ
ús   –	)©
8)Ú	functoolsÚwraps)r2   r3   s   ` r   r   r   %   s'   ø€ ô
 ‡_‚_�TÓôó ðð €Nr   c                 ó¼  • [        US5      (       a  [        U5      n[        R                  " U5      nUR                  S:X  a	  US S 2S 4   nUR
                  S   n[        US5      (       a  UnS nUnO7[        R                  X!4   n[        [        XÍR
                  S   5      5      nS n[        X[        [        U5      5      XïX4UXiUU
US9nUR                  5         g )NÚnexté   r   )
Úresult_columnsÚresult_funcÚrtolÚatolÚparam_filterÚknownfailureÚnan_okÚ
vectorizedÚignore_inf_signÚdistinguish_nan_and_inf)
ÚhasattrÚlistÚnpÚasarrayÚndimÚshapeÚc_Úranger   Úcheck)r2   ÚresultsÚpointsr<   r=   r>   r?   rA   Údtyper@   rB   rC   ÚnparamsÚdatar:   r;   Úfdatas                    r   r   r   7   sÎ   € ô ˆv�v×Ñä�f“ˆä�ZŠZ˜Ó€FØ‡{�{�aÓØš˜$˜‘ˆØ�l‰l˜1‰o€Gäˆw˜
×#Ñ#àˆØˆØ‰ô �u‰u�V�_Ñ%ˆÜœe G¯Z©Z¸©]Ó;Ó<ˆØˆä�T¤¤e¨G£nÓ!5Ø$2Ø¸Ø".È*Ø%4Ø-DñF€Eð 
‡K�K…Mr   c                   ó@   • \ rS rSrSr    S	S jrS rS
S jrS rSr	g)r   éX   a]  
Data set for checking a special function.

Parameters
----------
func : function
    Function to test
data : numpy array
    columnar data to use for testing
param_columns : int or tuple of ints
    Columns indices in which the parameters to `func` lie.
    Can be imaginary integers to indicate that the parameter
    should be cast to complex.
result_columns : int or tuple of ints, optional
    Column indices for expected results from `func`.
result_func : callable, optional
    Function to call to obtain results.
rtol : float, optional
    Required relative tolerance. Default is 5*eps.
atol : float, optional
    Required absolute tolerance. Default is 5*tiny.
param_filter : function, or tuple of functions/Nones, optional
    Filter functions to exclude some parameter ranges.
    If omitted, no filtering is done.
knownfailure : str, optional
    Known failure error message to raise when the test is run.
    If omitted, no exception is raised.
nan_ok : bool, optional
    If nan is always an accepted result.
vectorized : bool, optional
    Whether all functions passed in are vectorized.
ignore_inf_sign : bool, optional
    Whether to ignore signs of infinities.
    (Doesn't matter for complex-valued functions.)
distinguish_nan_and_inf : bool, optional
    If True, treat numbers which contain nans or infs as
    equal. Sets ignore_inf_sign to be True.

Nc                 óÒ  • Xl         X l        X l        [        US5      (       d  U4n[	        U5      U l        Ub5  [        US5      (       d  U4n[	        U5      U l        Ub  Sn[        U5      eOUb  S U l        O[        S5      eXPl        X`l	        Xpl
        [        US5      (       d  U4nX€l        X�l        X°l        XÀl        XÐl        Xàl        U R                   (       d  SU l        g g )NÚ__len__z5Only result_func or result_columns should be providedz7Either result_func or result_columns should be providedT)r2   rQ   ÚdatanamerD   ÚtupleÚparam_columnsr:   Ú
ValueErrorr;   r<   r=   r>   r?   r@   rA   rB   rC   )r   r2   rQ   rY   r:   r;   r<   r=   r>   r?   rW   r@   rA   rB   rC   Úmessages                   r   r   ÚFuncData.__init__�   sð   € ð Œ	ØŒ	Ø ŒÜ�} i×0Ñ0Ø*Ð,ˆMÜ" =Ó1ˆÔØÑ%Ü˜>¨9×5Ñ5Ø"0Ð!2�Ü"'¨Ó"7ˆDÔØÑ&ØQ�Ü  Ó)Ð)ð 'ð Ñ$Ø"&ˆDÕäÐVÓWÐWØ&ÔØŒ	ØŒ	Ü�| Y×/Ñ/Ø(˜?ˆLØ(ÔØ(ÔØŒØ$ŒØ.ÔØ'>Ô$Ø×+×+Ø#'ˆDÕ ð ,r   c                 ó2  • [         R                  " U[         R                  5      (       d  [         R                  " [        5      n[         R
                  " U5      nU R                  U R                  pCUc  SUR                  -  nUc  SUR                  -  nX44$ )Né   )
rF   Ú
issubdtypeÚinexactrO   ÚfloatÚfinfor<   r=   ÚepsÚtiny)r   rO   Úinfor<   r=   s        r   Úget_tolerancesÚFuncData.get_tolerances¤   sl   € Ü�}Š}˜U¤B§J¡J×/Ñ/Ü—H’HœU“OˆEÜ�xŠx˜‹ˆØ—Y‘Y §	¡	ˆdØ‰<Ø�T—X‘X‘:ˆDØ‰<Ø�T—Y‘Y‘;ˆDØˆzÐr   c                 ó  ^ ^*^+• [         R                  " S[        5      nT R                  (       a  [        R
                  " T R                  S9  Uc  T R                  nUc  UR                  nOUR                  U5      nT R                  U5      u  pVT R                  (       a…  [        R                  " UR                  S   4[        R                  5      n[        T R                   T R                  5       H*  u  m*nU(       d  M  U[#        U" USS2T*4   5      5      -  nM,     X   n/ m+[%        T R                   5       H¼  u  n	m*[        R&                  " T*5      (       aB  [)        T*R*                  5      m*T+R-                  USS2T*4   R                  [.        5      5        Mc  U(       a:  U	[1        U5      :  a+  T+R-                  USS2T*4   R                  X9   5      5        M¤  T+R-                  USS2T*4   5        M¾     SU+U 4S jjn
U
" T R2                  5      nT R4                  b-  [7        T R4                   Vs/ s H  oÁSS2U4   PM     sn5      nOLSnT R8                  (       a(  [1        U5      S:X  a  [        R:                  " US   5      nU
" T R<                  US9n[?        [1        U5      [1        U5      :H  5        [%        [        X½5      5       GH  u  nu  nn[        R@                  " UR                  [        RB                  5      (       d  T RD                  (       aY  [        RF                  " U5      n[        RF                  " U5      n[        RF                  " U5      n[        RF                  " U5      nOX[        RH                  " U5      n[        RH                  " U5      n[        RJ                  " U5      n[        RJ                  " U5      n[        R:                  " U5      n[        R:                  " U5      n[        RL                  " SS	9   [        RN                  " U5      nSU[        RP                  " U5      ) '   [        RN                  " UU-
  5      nSU[        RP                  " U5      ) '   U[        RN                  " U5      -  nSU[        RP                  " U5      ) '   SSS5        WXeW-  -   :*  nUU:H  nUU:H  nUU:H  nUU-  U-  U-  ) nURR                  n T R8                  (       a"  UU) -  nUU) -  nU UU-  RU                  5       -  n T RV                  (       da  T R8                  (       dP  [        RF                  " U5      n![        RF                  " U5      n"U!U-  UU"-  -  n#UU#) -  nU U#RU                  5       -  n [        RX                  " U5      (       d  GMÓ  S
/n$U$R-                  SUU   R[                  5       S 35        U$R-                  SWU   R[                  5       S 35        U$R-                  S[        RT                  " U5       SU  SU S35        [        R\                  " U5      S    HŠ  m*[)        T*5      m*U*4S jn%SR_                  [a        U%T+5      5      n&SR_                  [a        U%U5      5      n'SR_                  [a        U%U5      5      n(U%" U5      n)U$R-                  U& SU' SU( SU) S35        MŒ     [?        SSR_                  U$5      5        GM     gs  snf ! , (       d  f       GNN= f)z,Check the special function against the data.Úerrisinstancer   Nr   c                 óÂ  >• TR                   (       a  U " T6 nO©/ n[        [        TS   5      5       Hv  nUb*  X   (       a!  UR                  [        R
                  5        M0  UR                  U " [        [        [        T5      5       Vs/ s H  nTU   U   PM     sn5      6 5        Mx     [        R                  " U5      n[        U[        5      (       d  U4nU$ s  snf )Nr   )	rA   rK   ÚlenÚappendrF   ÚnanrX   rG   Ú
isinstance)r2   Ú	skip_maskÚgotÚjÚiÚparamsr   s        €€r   Úeval_func_at_paramsÚ+FuncData.check.<locals>.eval_func_at_paramsÖ   s²   ø€ Ø��Ù˜F�m‘à�Üœs 6¨!¡9›~Ö.�AØ Ñ,°·ØŸ
™
¤2§6¡6Ô*Ù Ø—J‘J™t¤UÄ%ÌÈFËÔBTÓ+UÒBT¸Q¨F°1©I°a¬LÑBTÑ+UÓ%VÐWÖXñ	 /ô
 —j’j “o�Ü˜c¤5×)Ñ)Ø�f�ØˆJùò	 ,Vs   Â
Cr9   )ro   Úignorer+   Ú zMax |adiff|: ÚgzMax |rdiff|: zBad results (z out of z&) for the following points (in output z):c                 ó8   >• [         R                  " U T   SS9S $ )Né   )Ú	precisionÚ30s)rF   Úarray2string)Úxrq   s    €r   ÚfmtÚFuncData.check.<locals>.fmt.  s   ø€ Ü"$§/¢/°!°A±$À"Ñ"EÀcÐ!JÐKr   z  z => z != z	  (rdiff Ú)FÚ
r   )1ÚoperatorÚmethodcallerÚAssertionErrorr?   r   ÚxfailrQ   rO   Úastyperf   r>   rF   ÚonesrI   Úbool_ÚziprY   rE   Ú	enumerateÚiscomplexobjÚintÚimagrl   Úcomplexrk   r2   r:   rX   r@   Úisnanr;   r   r_   ÚcomplexfloatingrB   ÚisinfÚisposinfÚisneginfr.   ÚabsoluteÚisfiniteÚsizeÚsumrC   ÚanyÚmaxÚnonzeroÚjoinÚmap),r   rQ   rO   ÚdtypesÚ__tracebackhide__r<   r=   Ú
param_maskÚfilterÚidxrt   rp   ÚicolÚwantedro   Ú
output_numr~   ÚyÚpinf_xÚpinf_yÚminf_xÚminf_yÚnan_xÚnan_yÚabs_yÚdiffÚrdiffÚtol_maskÚ	pinf_maskÚ	minf_maskÚnan_maskÚbad_jÚpoint_countÚinf_xÚinf_yÚboth_nonfiniteÚmsgr   r/   ÚbÚcÚdrq   rs   s,   `                                         @@r   rL   ÚFuncData.check¯   s�  ú€ ä$×1Ò1Øœ^ó
Ðð ××Ü�LŠL × 1Ñ 1Ò2à‰<Ø—9‘9ˆDà‰=Ø—J‘J‰Eà—;‘;˜uÓ%ˆDà×(Ñ(¨Ó/‰
ˆð ××ÜŸš $§*¡*¨Q¡-Ð!1´2·8±8Ó<ˆJÜ  ×!3Ñ!3°T×5FÑ5FÖG‘	��6ß�6Ø¤$¡v¨d²1°Q°3©iÓ'8Ó"9Ñ9’Jñ Hð Ñ#ˆDð ˆÜ × 2Ñ 2Ö3‰FˆC�Ü�Š˜q×!Ñ!Ü˜Ÿ™“K�Ø—‘˜d¢1 Q 3™i×.Ñ.¬wÓ7Ö8Þ˜C¤# f£+Ó-Ø—‘˜d¢1 a 4™j×/Ñ/°±Ó<Ö=à—‘˜d¢1 Q 3™iÖ(ñ 4÷	ð 	ñ  " $§)¡)Ó,ˆð ×ÑÑ*ä°T×5HÒ5HÓIÒ5H¨T¢ 4 œLÑ5HÑIÓJ‰Fð ˆIØ�{�{œs 3›x¨1›}äŸHšH S¨¡VÓ,�	Ù(¨×)9Ñ)9ÀYÑOˆFô 	”�C“œC ›KÑ'Ô(ä"+¬C°Ó,<×"=ÑˆJ™˜˜AÜ�}Š}˜QŸW™W¤b×&8Ñ&8×9Ñ9¸T×=Q×=QÜŸš !›�ÜŸš !›�ÜŸš !›�ÜŸš !›‘äŸš Q›�ÜŸš Q›�ÜŸš Q›�ÜŸš Q›�Ü—H’H˜Q“KˆEÜ—H’H˜Q“KˆEä—’ Ó*ÜŸš A›�Ø-.�”r—{’{ 5Ó)Ð)Ñ*Ü—{’{ 1 q¡5Ó)�Ø+,�”b—k’k $Ó'Ð'Ñ(àœrŸ{š{¨1›~Ñ-�Ø-.�”r—{’{ 5Ó)Ð)Ñ*÷ +ð  ¨E¡zÑ 1Ñ1ˆHØ 6Ñ)ˆIØ 6Ñ)ˆIà ™ˆHà Ñ*¨YÑ6¸ÑAÐBˆEàŸ*™*ˆKØ�{�{Ø˜%˜‘�Ø˜%˜‘�Ø ¨¡×2Ñ2Ó4Ñ4�à×/×/¸¿¿äŸš ›�ÜŸš ›�Ø"'¨%¡-°E¸E±MÑ!B�Ø˜.˜Ñ(�Ø˜~×1Ñ1Ó3Ñ3�ä�vŠv�e�}Œ}à�d�Ø—
‘
˜]¨4°©;¯?©?Ó+<¸QÐ*?Ð@ÔAØ—
‘
˜]¨5°©<×+;Ñ+;Ó+=¸aÐ*@ÐAÔBØ—
‘
˜]¬2¯6ª6°%«=¨/¸Ø)˜]ð +)Ø)3¨°Bð8ô 9ô Ÿš EÓ*¨1Ô-�AÜ˜A›�AõLàŸ	™	¤# c¨6Ó"2Ó3�AØŸ	™	¤# c¨3£-Ó0�AØŸ	™	¤# c¨6Ó"2Ó3�AÙ˜E›
�AØ—J‘J !  D¨¨¨4°¨s°)¸A¸3¸aÐ@ÖAñ .ô ˜˜tŸy™y¨›~×.ò} #>ùò J÷4 +Ö*ús   È9[,ÐB[1Û1
\ 	c                 ó~  • [         R                  " [        [        [         R                  U R
                  5      5      5      (       a  SnOSnU R                  (       aF  SU R                  R                   U S[        R                  R                  U R                  5       S3$ SU R                  R                   U S3$ )zPretty-printingz
 (complex)rw   z
<Data for z: Ú>)rF   r™   rE   r�   rŒ   rY   rW   r2   r   ÚosÚpathÚbasename)r   Ú
is_complexs     r   Ú__repr__ÚFuncData.__repr__7  s•   € ä�6Š6”$”sœ2Ÿ?™?¨D×,>Ñ,>Ó?Ó@×AÑAØ%‰JàˆJØ�=�=Ø  §¡×!3Ñ!3Ð 4°Z°LÀÜ—w‘w×'Ñ'¨¯©Ó6Ð7°qð:ð ;ð   §	¡	× 2Ñ 2Ð3°J°<¸qÐAÐAr   )r=   rQ   rW   rC   r2   rB   r?   r@   rY   r>   r:   r;   r<   rA   )NNNNNNNFTFT)NNN)
r   r   r   r   Ú__doc__r   rf   rL   rÄ   r   r   r   r   r   r   X   s0   † ñ&ðP BFØFJØLPØ@Dô!(òF	ôF/õP
Br   r   )	NNNNTNFFT)rÀ   r5   rƒ   Ú
scipy._libr   ÚnumpyrF   Únumpy.testingr   r   Úscipy.specialÚspecialr-   Ú__all__r	   r'   r   r   r   r   r   r   Ú<module>rÍ      sY   ðÛ 	Û Û Ý ã Ý !Û å â
B€÷ñ ò
ò
ð$ >BØ6:Ø:?ØEIô÷BiBò iBr   