§
    OŠtj  ã                   ó”  — d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d d
lmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+  ed¦  «        Z, ed¦  «        Z-d„ Z.e'd„ ¦   «         Z/e'd„ ¦   «         Z0d„ Z1e' e+d¦  «        d„ ¦   «         ¦   «         Z2d„ Z3dS )é    N)ÚlogÚMinÚMaxÚsqrt)ÚFloat)ÚSymbolÚsymbols)Úcos)Ú
AssignmentÚRaiseÚRuntimeError_ÚQuotedString)Únewtons_methodÚnewtons_method_function)Úexpm1)Úbind_C)Úrender_as_module)Úimport_module)Úccode)Úcompile_link_import_stringsÚhas_cÚhas_fortran)Ú	may_xfail)ÚskipÚraisesÚskip_under_pyodideÚcythonÚ	wurlitzerc            	      óò   — t          d¦  «        \  } }}t          | ¦  «        | dz  z
  }t          || ||¦  «        }|                     t	          || |                     | ¦  «        z  ¦  «        ¦  «        sJ ‚d S )Nz	x dx atolé   )r	   r
   r   Úhasr   Údiff)ÚxÚdxÚatolÚexprÚalgos        úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/codegen/tests/test_algorithms.pyÚtest_newtons_methodr)      st   € Ý˜+Ñ&Ô&�K€A€rˆ4Ýˆq‰6Œ6�A�q‘D‰=€DÝ˜$  4¨Ñ,Ô,€DØ�8Š8•J˜r D 5¨¯ª°1©¬Ñ#5Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7Ð7Ð7ó    c                  ó  — t          dd¬¦  «        } t          | ¦  «        | dz  z
  }t          || ¦  «        }t          st	          d¦  «         t          ¦   «         st	          d¦  «         ddi}t          j        ¦   «         5 }t          d	d
t          |¦  «        z   fdd 
                    d¦  «        dz   fg||¬¦  «        \  }}t          |                     d¦  «        dz
  ¦  «        dk     sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr#   T©Úrealr    úcython not installed.úNo C compiler found.ÚstdÚc99znewton.cú%#include <math.h>
#include <stdio.h>
ú_newton.pyxú#cython: language_level={}
Ú3zIcdef extern double newton(double)
def py_newton(x):
    return newton(x)
)Ú	build_dirÚcompile_kwargsç      à?çßºv™ö±ë?çê-�™—q=)r   r
   r   r   r   r   ÚtempfileÚTemporaryDirectoryr   r   ÚformatÚabsÚ	py_newton)r#   r&   ÚfuncÚ
compile_kwÚfolderÚmodÚinfos          r(   Ú#test_newtons_method_function__ccoderE      s‡  € åˆs˜ÐÑÔ€AÝˆq‰6Œ6�A�q‘D‰=€DÝ" 4¨Ñ+Ô+€Dåð &ÝÐ$Ñ%Ô%Ð%Ý‰7Œ7ð %ÝÐ#Ñ$Ô$Ð$à˜�€JÝ	Ô	$Ñ	&Ô	&ð 	@¨&Ý/Øð 1Ý49¸$±K´Kñ@ð AàÐ;×BÒBÀ3ÑGÔGð6ñ6ð 8ð1
ð ¨Jð8ñ 8ô 8‰	ˆˆTõ �3—=’= Ñ%Ô%¨Ñ6Ñ7Ô7¸%Ò?Ð?Ð?Ð?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   ÂA-C<Ã<D ÄD c                  ó,  — t          dd¬¦  «        } t          | ¦  «        | dz  z
  }t          || t          d¬¦  «        g¬¦  «        }t          st          d¦  «         t          ¦   «         st          d	¦  «         t          |gd
¦  «        }t          j	        ¦   «         5 }t          d|fdd                     d¦  «        dz   fg|¬¦  «        \  }}t          |                     d¦  «        dz
  ¦  «        dk     sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr#   Tr,   r    Únewton)Úname)Úattrsr.   zNo Fortran compiler found.Ú
mod_newtonz
newton.f90r3   r4   r5   zRcdef extern double newton(double*)
def py_newton(double x):
    return newton(&x)
)r6   r8   r9   r:   )r   r
   r   r   r   r   r   Úf_moduler;   r<   r   r=   r>   r?   )r#   r&   r@   Úf_modrB   rC   rD   s          r(   Ú#test_newtons_method_function__fcoderM   4   s‹  € åˆs˜ÐÑÔ€AÝˆq‰6Œ6�A�q‘D‰=€DÝ" 4¨µ6¸xÐ3HÑ3HÔ3HÐ2IÐJÑJÔJ€Dåð &ÝÐ$Ñ%Ô%Ð%Ý‰=Œ=ð +ÝÐ)Ñ*Ô*Ð*å�d�V˜\Ñ*Ô*€EÝ	Ô	$Ñ	&Ô	&ð @¨&Ý/Ø˜5Ð!ØÐ;×BÒBÀ3ÑGÔGð7ñ7ð 9ð1
ð ðñ ô ‰	ˆˆTõ �3—=’= Ñ%Ô%¨Ñ6Ñ7Ô7¸%Ò?Ð?Ð?Ð?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s   ÂAD	Ä	DÄDc                  ó  — t          dd¬¦  «        } t          | ¦  «        | dz  z
  }t          || ¦  «        }t          |¦  «        }i }t	          |||¦  «         t          d|¦  «        }t          |dz
  ¦  «        dk     sJ ‚d S )Nr#   Tr,   r    znewton(0.5)r9   r:   )r   r
   r   Ú	py_moduleÚexecÚevalr>   )r#   r&   r@   Úpy_modÚ	namespaceÚress         r(   Ú$test_newtons_method_function__pycoderU   K   s‹   € Ýˆs˜ÐÑÔ€AÝˆq‰6Œ6�A�q‘D‰=€DÝ" 4¨Ñ+Ô+€DÝ�t‰_Œ_€FØ€IÝˆ�˜IÑ&Ô&Ð&Ý
ˆ}˜iÑ
(Ô
(€CÝˆs�^Ñ#Ñ$Ô$ uÒ,Ð,Ð,Ð,Ð,Ð,r*   z,Emscripten does not support process spawningc                  ó¦  ‡‡— t          d¦  «        x} \  Š}}}|t          |‰z  ¦  «        z  |‰dz  z  z
  Št          t          ˆˆfd„¦  «         t          }t          ‰‰| |¬¦  «        }t          ¦   «         st          d¦  «         t          st          d¦  «         ddi}t          j
        ¦   «         5 }t          d	d
t          |¦  «        z   fdd                     d¦  «        dz   fg||¬¦  «        \  }}	|rJt                               ¦   «         5 \  }
}|                     d¦  «        }d d d ¦  «         n# 1 swxY w Y   n|                     d¦  «        }t!          |dz
  ¦  «        dk     sJ ‚|st          d¦  «         |
                     ¦   «         |                     ¦   «         }}
|dk    sJ ‚|
dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nzx A k pr    c                  ó$   •— t          ‰ ‰¦  «        S ©N)r   )r&   r#   s   €€r(   ú<lambda>z@test_newtons_method_function__ccode_parameters.<locals>.<lambda>[   s   ø€ Õ6°t¸QÑ?Ô?€ r*   )Údebugr/   r.   r0   r1   znewton_par.cr2   z_newton_par.pyxr4   r5   zycdef extern double newton(double, double, double, double)
def py_newton(x, A=1, k=1, p=1):
    return newton(x, A, k, p)
)r7   r6   r8   r9   r:   zAC-level output only tested when package 'wurlitzer' is available.Ú zïx=         0.5
x=      1.1121 d_x=     0.61214
x=     0.90967 d_x=    -0.20247
x=     0.86726 d_x=   -0.042409
x=     0.86548 d_x=  -0.0017867
x=     0.86547 d_x= -3.1022e-06
x=     0.86547 d_x= -9.3421e-12
x=     0.86547 d_x=  3.6902e-17
)r	   r
   r   Ú
ValueErrorr   r   r   r   r   r;   r<   r   r   r=   Úpipesr?   r>   Úread)ÚargsÚAÚkÚpÚuse_wurlitzerr@   rA   rB   rC   rD   ÚoutÚerrÚresultr&   r#   s                @@r(   Ú.test_newtons_method_function__ccode_parametersrg   V   sš  øø€ õ   	Ñ*Ô*Ð*€D‰:ˆ1ˆa��AØ�S��1‘‰XŒX‰:˜˜!˜Q™$™Ñ€DÝ
�:Ð?Ð?Ð?Ð?Ð?Ñ@Ô@Ð@Ý€Må" 4¨¨D¸ÐFÑFÔF€Då‰7Œ7ð %ÝÐ#Ñ$Ô$Ð$Ýð &ÝÐ$Ñ%Ô%Ð%à˜�€JÝ	Ô	$Ñ	&Ô	&ð  ¨&Ý/Øð 1Ý49¸$±K´Kñ@ð AàÐ!?×!FÒ!FÀsÑ!KÔ!Kð"?ñ"?ð Að1
ð %°ð8ñ 8ô 8‰	ˆˆTð ð 	(Ý—’Ñ"Ô"ð ,¡j s¨CØŸš sÑ+Ô+�ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,øð —]’] 3Ñ'Ô'ˆFå�6˜NÑ*Ñ+Ô+¨eÒ3Ð3Ð3Ð3àð 	VÝÐTÑUÔUÐUà—8’8‘:”:˜sŸxšx™zœzˆSˆØ�bŠyˆyˆyˆyØð 	ò 	ð 	ð 	ð 	ð 	ð/ ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  s8   Â4AGÄD6Ä*GÄ6D:	Ä:GÄ=D:	Ä>A:GÇG
ÇG
c                  óÒ  ‡‡‡‡‡— t          ddd¬¦  «        \  Š} Š}}t          ddd¬¦  «        }||z
  dz
  }‰| z
  |z  }t          | ¦  «        t          t          t          ‰¦  «        t          | ¦  «        z
  |z  ¦  «         ¦  «        z   }|t          |¦  «        z
  }d„ Šdˆˆˆfd	„idd
„ idd„ idœ}|| fŠdD �]*}	| ‰‰||fdd|	|dd‰‰ft	          t          t          d¦  «        ¦  «        ¦  «        dœ	Šˆˆfd„|                     ¦   «         D ¦   «         }
d„ |
                     ¦   «         D ¦   «         }i }i }|                     ¦   «         D ]+\  }}i x}||<   t          |||¦  «         ||› d�         ||<   Œ,t          d¦  «        }ddddœ}d}|                     ¦   «         D ]>\  }}
 |
|dddd¦  «        }|||         z  }|	r|dz  }t          ||z
  ¦  «        |k     sJ ‚Œ?�Œ,d S )Nza b c N_geo N_totT)r-   ÚnonnegativeÚi)Úintegerri   é   c                 ó>   — t          t          | |¦  «        |¦  «        S rX   )r   r   )Úlowr&   Úhighs      r(   Ú_clampz:test_newtons_method_function__rtol_cse_nan.<locals>._clamp‘   s   € Ý•3�s˜D‘>”> 4Ñ(Ô(Ð(r*   Údelta_fnc                 ó¤   •—  ‰t          ‰|z  ¦  «        |z
  dz  |  |                      |¦  «        z  t          ‰|z  ¦  «        |z
  dz  ¦  «        S )Ng®Gáz®ï?)r   r"   )Úer#   rp   ÚaÚcs     €€€r(   rY   z<test_newtons_method_function__rtol_cse_nan.<locals>.<lambda>•   sR   ø€ °F°FÝ�!�A‘#‰YŒY�q‰[˜$ÑØˆBˆq�vŠv�a‰yŒy‰LÝ�!�A‘#‰YŒY�q‰[˜$Ññ5
ô 5
€ r*   c                 ó¤   — d| |                       |¦  «        z  z  d|                       |¦  «        dz  z  | |                       |d¦  «        z  z
  z  S )Néþÿÿÿé   ©r"   ©rs   r#   s     r(   rY   z<test_newtons_method_function__rtol_cse_nan.<locals>.<lambda>š   sN   € ¨R°°1·6²6¸!±9´9±Ñ-=¸qÀÇÂÈÁÄÈAÁ¹~ÐPQÐRS×RXÒRXÐYZÐ\]ÑR^ÔR^ÑP^Ñ?^Ñ-_€ r*   c                 óÌ   — |  |                       |¦  «        z  d| |                       |¦  «        z  |                       |d¦  «        z  dz  |                       |¦  «        z  z
  z  S )Nrl   rx   ry   rz   s     r(   rY   z<test_newtons_method_function__rtol_cse_nan.<locals>.<lambda>›   s\   € °!°°A·F²F¸1±I´I±¸qÀÀ1Ç6Â6È!Á9Ä9ÁÈQÏVÊVÐTUÐVWÉ[Ì[ÑAXÐYZÑAZÐ[\×[aÒ[aÐbcÑ[dÔ[dÑAdÑ?dÑ1e€ r*   )Úclamped_newtonÚhalleyÚ
halley_alt)FTé<   g0Žä.ÿ++g¼‰Ø—²Ò¬<zencountered NaN.)	ÚparamsÚitermaxrZ   ÚcseÚcounterr%   ÚrtolÚboundsÚ
handle_nanc                 óP   •— i | ]"\  }}|t          ‰d |› d�it          ‰fi |¤Ž¤Ž“Œ#S )Ú	func_nameÚ_b)r   Údict)Ú.0ra   Úkwr_   Úkwargss      €€r(   ú
<dictcomp>z>test_newtons_method_function__rtol_cse_nan.<locals>.<dictcomp>¤   sL   ø€ ÐyÐyÐyÑ`eÐ`aÐce�Õ*¨DÐ[¸q¸H¸H¸HÐ[ÍÈVÐHZÐHZÐWYÐHZÐHZÐ[Ð[ÐyÐyÐyr*   c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS © )rO   )r‹   ra   Úvs      r(   rŽ   z>test_newtons_method_function__rtol_cse_nan.<locals>.<dictcomp>¥   s$   € Ð;Ð;Ð;¡d a¨�!•Y˜q‘\”\Ð;Ð;Ð;r*   r‰   z"13.2261515064168768938151923226496gMgâñžµ<g      @g{®Gáz„?g      Y@é2   éd   rx   )r	   r   r   r   r   r   r   ÚitemsrP   r   r>   )ÚbÚN_geoÚN_totrj   ÚN_ariÚ	delta_ariÚln_delta_geoÚeqb_logÚmeth_kwÚuse_cser@   rR   rS   Úroot_find_bra   r‘   ÚnsÚrefÚreftolÚguessÚmethrf   Úreqrp   rt   r_   ru   r�   s                          @@@@@r(   Ú*test_newtons_method_function__rtol_cse_nanr¥   ‰   s¤  øøøøø€ Ý#Ð$7¸dÐPTÐUÑUÔUÑ€A€qˆ!ˆU�EÝˆs˜D¨dÐ3Ñ3Ô3€AØ�E‰M˜AÑ€EØ�1‘�e‘€IÝ�q‘6”6�C¥­¨A©¬­s°1©v¬v©°uÑ'<Ñ!=Ô!=Ð =Ñ>Ô>Ñ>€LØ�S ™^œ^Ñ+€Gð)ð )ð )ð &ð (
ð (
ð (
ð (
ð (
ð (
ð ð
 Ð`Ð`ÐaØ!Ð#fÐ#fÐgðð €Gð �Aˆ:€DØ ð +ñ +ˆà˜!˜Q  uÐ-¸"ÀtÐT[Ø &°%ÀAÀaÀ5Ý¥­lÐ;MÑ.NÔ.NÑ OÔ OÑPÔPð
ð 
ˆð
 zÐyÐyÐyÐyÐip×ivÒivÑixÔixÐyÑyÔyˆØ;Ð;¨d¯jªj©l¬lÐ;Ñ;Ô;ˆØˆ	ØˆØ—L’L‘N”Nð 	*ð 	*‰DˆAˆqØ "Ð"ˆB�˜1‘Ý��B˜‰OŒOˆOØ 1   œ\ˆK˜‰NˆNÝÐ8Ñ9Ô9ˆØ$)°UÈ%ÐPÐPˆØˆØ%×+Ò+Ñ-Ô-ð 	+ð 	+‰JˆD�$Ø�T˜%  s¨B°Ñ4Ô4ˆFØ�f˜T”lÑ"ˆCØð Ø�q‘�Ý�v ‘|Ñ$Ô$ sÒ*Ð*Ð*Ð*Ð*ñ	+ð#+ð +r*   )4r;   Úsympyr   r   r   r   Úsympy.core.numbersr   Úsympy.core.symbolr   r	   Ú(sympy.functions.elementary.trigonometricr
   Úsympy.codegen.astr   r   r   r   Úsympy.codegen.algorithmsr   r   Úsympy.codegen.cfunctionsr   Úsympy.codegen.fnodesr   Úsympy.codegen.futilsr   rK   Úsympy.codegen.pyutilsrO   Úsympy.externalr   Úsympy.printing.codeprinterr   Úsympy.utilities._compilationr   r   r   Ú!sympy.utilities._compilation.utilr   Úsympy.testing.pytestr   r   r   r   r   r)   rE   rM   rU   rg   r¥   r�   r*   r(   ú<module>rµ      s)  ðØ €€€Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ *Ð *Ð *Ð *Ð *Ð *Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø =Ð =Ð =Ð =Ð =Ð =Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø (Ð (Ð (Ð (Ð (Ð (Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà	ˆ�xÑ	 Ô	 €ØˆM˜+Ñ&Ô&€	ð8ð 8ð 8ð ð@ð @ñ „ð@ð. ð@ð @ñ „ð@ð,-ð -ð -ð ØÐÐBÑCÔCð.ð .ñ DÔCñ „ð.ðb++ð ++ð ++ð ++ð ++r*   