ó
    Š*£h¨i  ã                   ó  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J	r	  SSK
Jr  1 S	krS
SSS.r0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!S"S#S$S$S%S&S'S(S)S*S+S,S-.ErS.S/S.S0S1S1S2.rS3 rS4 r " S5 S6\5      r " S7 S85      r " S9 S:\5      r\R*                   H  r\" \S;\-  \5        M     \ H  r\" \S;\-  \5        M     S< rSSKJr  SS=KJr  SS*S$SS(S+SSSSS)S,SSSS>.rS/S.S0S?S@.r " SA SB\5      r\R*                   H  r\" \S;\-  \R                   5        M     \ H  r\" \S;\-  \R"                  5        M     SCR;                  5       r\R?                  5        V Vs/ s H  u  pU \;  d  M  X4PM     snn r \!" \ 40 SDSESFSGSHSISJSKSLSMSNSOSP.D6r"S.S/SQSRSSS1S0STSU.r#SV r$ " SW SX\5      r%\%R*                   H  r\" \%S;\-  \5        M     \# H  r\" \%S;\-  \5        M      " SY SZ\5      r&g[s  snn f )\zy
Python code printers

This module contains Python code printers for plain Python as well as NumPy & SciPy enabled code.
é    )Údefaultdict)Úchain)ÚS)ÚModé   )Ú
precedence)ÚCodePrinter>!   ÚasÚifÚinÚisÚorÚandÚdefÚdelÚforÚnotÚtryÚNoneÚTrueÚelifÚelseÚfromÚpassÚwithÚFalseÚbreakÚclassÚraiseÚwhileÚyieldÚassertÚexceptÚglobalÚimportÚlambdaÚreturnÚfinallyÚcontinueÚnonlocalÚabsÚminÚmax)ÚAbsÚMinÚMaxÚacosÚacoshÚasinÚasinhÚatanÚatan2ÚatanhÚceilingÚceilÚcosÚcoshÚerfÚerfcÚexpÚexpm1Ú	factorialÚfloorÚgammaÚhypotÚisinfÚisnanÚlgammaÚlogÚlog10Úlog1pÚlog2ÚsinÚsinhÚsqrtÚtanÚtanh)rC   rD   rE   ÚloggammarG   ÚlnrH   rI   rJ   rK   rL   ÚSqrtrN   rO   ÚeÚpiÚinfÚnan)ÚExp1ÚPiÚEÚInfinityÚNaNÚComplexInfinityc                 óÎ   ^ • T R                   UR                  R                     nSR                  T R	                  U5      SR                  U 4S jUR                   5       5      S9$ )Nz{name}({args})ú, c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7f©N©Ú_print©Ú.0ÚargÚselfs     €ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/printing/pycode.pyÚ	<genexpr>Ú$_print_known_func.<locals>.<genexpr>G   s   øé € Ð2YÊyÈ°4·;±;¸s×3CÐ3CÊyùó   ƒ!)ÚnameÚargs)Úknown_functionsÚ	__class__Ú__name__ÚformatÚ_module_formatÚjoinrl   ©rf   ÚexprÚknowns   `  rg   Ú_print_known_funcrv   D   sZ   ø€ Ø× Ñ  §¡×!8Ñ!8Ñ9€EØ×"Ñ"¨×(;Ñ(;¸EÓ(BØ(,¯	©	Ô2YÈtÏyÊyÓ2YÓ(Zð #ð \ð \ó    c                 ój   • U R                   UR                  R                     nU R                  U5      $ r`   )Úknown_constantsrn   ro   rq   rs   s      rg   Ú_print_known_constrz   J   s-   € Ø× Ñ  §¡×!8Ñ!8Ñ9€EØ×Ñ˜uÓ%Ð%rw   c                   ób  ^• \ rS rSrSrSr\rSrSr	\
" \" \R                  5       \R                  5        V VVs/ s H  u  pUSU-   4PM     snnn 5      5      r\R                  5        V VVs0 s H  u  pUSU-   _M     snnn rSSS	S
.r\
" \R(                  0 SSSSSS9rS2U4S jjrS rS3S jrS rS rS rS rS rS rS rS rS r S r!S r"U4S jr#S r$S  r%S! r&S" r'S# r(S$ =r)=r*=r+=r,=r-=r.=r/r0S% r1S& r2S' r3S( r4S) r5S* r6S+ r7S, r8S- r9S. r:S/ r;S4S0 jr<S1r=U=r>$ s  snnn f s  snnn f )5ÚAbstractPythonCodePrinteréO   Ú_pythoncodeÚPythonNz    zmath.r   r   r   )r   r   r   é   TFÚpython3)Úuser_functionsÚ	precisionÚinlineÚfully_qualified_modulesÚcontractÚstandardc                 óÀ  >• [         TU ]  U5        U R                  S   nUc)  SS KnSR	                  UR
                  R                  5      nUS:w  a  [        S5      eX l        [        [        5      U l        [        U R                  40 U=(       d    0 R                  S0 5      D6U l        [        U R                   40 U=(       d    0 R                  S0 5      D6U l        g )Nr‡   r   zpython{}r�   zOnly Python 3 is supported.r‚   Úuser_constants)ÚsuperÚ__init__Ú	_settingsÚsysrp   Úversion_infoÚmajorÚ
ValueErrorr‡   r   ÚsetÚmodule_importsÚdictÚ_kfÚgetrm   Ú_kcry   )rf   ÚsettingsÚstdr�   rn   s       €rg   r‹   Ú"AbstractPythonCodePrinter.__init__e   sÈ   ø€ Ü‰Ñ˜Ô"ð �n‰n˜ZÑ(ˆØ‰;ÛØ×#Ñ# C×$4Ñ$4×$:Ñ$:Ó;ˆCØ�)ÓÜÐ:Ó;Ð;ØŒä)¬#Ó.ˆÔô  $ D§H¡Hñ  #°·¸R×0DÑ0DØ˜bó1"ñ  #ˆÔä# D§H¡Hñ  #°·¸R×0DÑ0DØ˜bó1"ñ  #ˆÕrw   c                 ó   • U< SU< 3$ ©Nz = © )rf   rk   Úvalues      rg   Ú_declare_number_constÚ/AbstractPythonCodePrinter._declare_number_consty   s   € Û ¢%Ð(Ð(rw   c                 óR  • UR                  S5      nU(       aB  [        U5      S:”  a3  U R                  SR                  US S 5         R	                  US   5        U R
                  S   (       a  U$ UR                  S5      S   R                  S5      S   R                  S5      S   $ )NÚ.r   éÿÿÿÿr…   Ú(r   Ú[)ÚsplitÚlenr’   rr   ÚaddrŒ   )rf   ÚfqnÚregisterÚpartss       rg   rq   Ú(AbstractPythonCodePrinter._module_format|   s�   € Ø—	‘	˜#“ˆÞœ˜E›
 Q›Ø×Ñ §¡¨¨s°¨Ó 4Ñ5×9Ñ9¸%À¹)ÔDà�>‰>Ð3×4ØˆJà—9‘9˜S“> !Ñ$×*Ñ*¨3Ó/°Ñ2×8Ñ8¸Ó=¸bÑAÐArw   c                 ó   • U$ r`   rœ   )rf   Úliness     rg   Ú_format_codeÚ&AbstractPythonCodePrinter._format_code†   s   € Øˆrw   c                 ó$   • SR                  U5      $ )Nz{}©rp   )rf   Ú
codestrings     rg   Ú_get_statementÚ(AbstractPythonCodePrinter._get_statement‰   s   € Ø�{‰{˜:Ó&Ð&rw   c                 ó$   • SR                  U5      $ )Nz  # {}r±   )rf   Útexts     rg   Ú_get_commentÚ&AbstractPythonCodePrinter._get_commentŒ   s   € Ø�‰˜tÓ$Ð$rw   c                 óÊ   • [        U5      S:X  a  U R                  US   5      $ U R                  U5      < SU R                  XSS 5      < SU R                  US   5      < S3$ )zÀ
This method expands a fold on binary operations.

``functools.reduce`` is an example of a folded operation.

For example, the expression

`A + B + C + D`

is folded into

`((A + B) + C) + D`
r   r   r£   Nr¢   r^   Ú))r¦   rb   rq   Ú_expand_fold_binary_op)rf   Úoprl   s      rg   r»   Ú0AbstractPythonCodePrinter._expand_fold_binary_op�   s`   € ô ˆt‹9˜‹>Ø—;‘;˜t A™wÓ'Ð'ð ×#Ñ# BÖ'Ø×+Ñ+¨B°S°b°	Ö:Ø—‘˜D ™HÖ%ðð rw   c           	      óè   • [        U5      S:X  a  U R                  US   5      $ [        U5      nUS-  nU R                  U5      < SU R                  USU 5      < SU R                  X$S 5      < S3$ )zÃ
This method expands a reduction on binary operations.

Notice: this is NOT the same as ``functools.reduce``.

For example, the expression

`A + B + C + D`

is reduced into:

`(A + B) + (C + D)`
r   r   é   r£   Nr^   rº   )r¦   rb   rq   Ú_expand_reduce_binary_op)rf   r¼   rl   ÚNÚNhalfs        rg   rÀ   Ú2AbstractPythonCodePrinter._expand_reduce_binary_op¦   sr   € ô ˆt‹9˜‹>Ø—;‘;˜t A™wÓ'Ð'ä�D“	ˆAØ˜‘FˆEà×#Ñ# BÖ'Ø×-Ñ-¨d°6°E¨lÖ;Ø×-Ñ-¨d°6¨lÖ;ðð rw   c                 ó   • g)Nzfloat('nan')rœ   ©rf   rt   s     rg   Ú
_print_NaNÚ$AbstractPythonCodePrinter._print_NaN¿   ó   € Ørw   c                 ó   • g)Nzfloat('inf')rœ   rÅ   s     rg   Ú_print_InfinityÚ)AbstractPythonCodePrinter._print_InfinityÂ   rÈ   rw   c                 ó   • g)Nzfloat('-inf')rœ   rÅ   s     rg   Ú_print_NegativeInfinityÚ1AbstractPythonCodePrinter._print_NegativeInfinityÅ   s   € Ørw   c                 ó$   • U R                  U5      $ r`   )rÆ   rÅ   s     rg   Ú_print_ComplexInfinityÚ0AbstractPythonCodePrinter._print_ComplexInfinityÈ   s   € Ø�‰˜tÓ$Ð$rw   c                 ód   ^ ^• [        U5      mSR                  " UU 4S jUR                   5       6 $ )Nz{} % {}c              3   óH   >#   • U  H  nTR                  UT5      v •  M     g 7fr`   )Úparenthesize)rd   ÚxÚPRECrf   s     €€rg   rh   Ú7AbstractPythonCodePrinter._print_Mod.<locals>.<genexpr>Í   s!   øé € Ð"QÂyÀ! 4×#4Ñ#4°Q¸×#=Ð#=Âyùs   ƒ")r   rp   rl   ©rf   rt   rÖ   s   ` @rg   Ú
_print_ModÚ$AbstractPythonCodePrinter._print_ModË   s(   ù€ Ü˜$ÓˆØ× Ò Õ"QÀtÇyÂyÓ"QÐRÐSrw   c                 ó.  • / nSnUR                    H»  nUR                  nUR                  nUS:X  a  UR                  S5        UR                  S5        UR                  U R	                  U5      5        UR                  S5        UR                  S5        UR                  U R	                  U5      5        UR                  S5        US-  nM½     US S nUS   S:X  a  US S	 nUR                  S5        OUR                  S
5        SR                  U5      $ )Nr   r£   rº   z if z else r   r¢   r   éþÿÿÿz else None)Ú )rl   rt   ÚcondÚappendrb   rr   )rf   rt   ÚresultÚire   rS   Úcs          rg   Ú_print_PiecewiseÚ*AbstractPythonCodePrinter._print_PiecewiseÏ   sê   € ØˆØˆØ—9”9ˆCØ—‘ˆAØ—‘ˆAØ�A‹vØ—‘˜cÔ"Ø�M‰M˜#ÔØ�M‰M˜$Ÿ+™+ a›.Ô)Ø�M‰M˜#ÔØ�M‰M˜&Ô!Ø�M‰M˜$Ÿ+™+ a›.Ô)Ø�M‰M˜(Ô#Ø�‰FŠAñ ð ˜˜�ˆØ�"‰:˜ÓØ˜C˜R�[ˆFØ�M‰M˜#Õà�M‰M˜-Ô(Ø�w‰w�v‹Ðrw   c                 óô   >• SSSSSSS.nUR                   U;   aP  U R                  UR                  5      nU R                  UR                  5      nSR	                  UR                   X4S	9$ [
        TU ]  U5      $ )
z.Relational printer for Equality and UnequalityÚequalÚ	not_equalÚlessÚ
less_equalÚgreaterÚgreater_equal)z==z!=Ú<z<=Ú>z>=z({lhs} {op} {rhs}))r¼   ÚlhsÚrhs)Úrel_oprb   rî   rï   rp   rŠ   Ú_print_Relational)rf   rt   r¼   rî   rï   rn   s        €rg   rñ   Ú+AbstractPythonCodePrinter._print_Relationalæ   sz   ø€ ð ØØØØØ!ñ
ˆð �;‰;˜"ÓØ—+‘+˜dŸh™hÓ'ˆCØ—+‘+˜dŸh™hÓ'ˆCØ'×.Ñ.°$·+±+À3Ð.ÐPÐPÜ‰wÑ(¨Ó.Ð.rw   c                 óN   • SSK Jn  U R                  UR                  U5      5      $ )Nr   )Ú	Piecewise)Ú$sympy.functions.elementary.piecewiserô   rb   Úrewrite)rf   rt   rô   s      rg   Ú
_print_ITEÚ$AbstractPythonCodePrinter._print_ITEö   s   € ÝBØ�{‰{˜4Ÿ<™<¨	Ó2Ó3Ð3rw   c                 ó¬   ^ • U 4S jUR                   S S S2    5       nSR                  T R                  UR                  5      SR	                  U5      S9$ )Nc              3   ó¦   >#   • U  HF  u  pnS R                  TR                  U5      TR                  U5      TR                  U5      S9v •  MH     g7f)zfor {i} in range({a}, {b}+1))rá   ÚaÚbN)rp   rb   )rd   rá   rû   rü   rf   s       €rg   rh   Ú7AbstractPythonCodePrinter._print_Sum.<locals>.<genexpr>û   sQ   øé € ð .ò
 -‘��að	 +×1Ñ1Ø—+‘+˜a“.Ø—+‘+˜a“.Ø—+‘+˜a“.ð 2õ "ò -ùs   ƒAAr¢   z"(builtins.sum({function} {loops}))Ú )ÚfunctionÚloops)Úlimitsrp   rb   rÿ   rr   )rf   rt   r   s   `  rg   Ú
_print_SumÚ$AbstractPythonCodePrinter._print_Sumú   sV   ø€ ô.ð
  Ÿ;™;¡t¨ tÒ,ó.ˆð 4×:Ñ:Ø—[‘[ §¡Ó/Ø—(‘(˜5“/ð ;ð #ð 	#rw   c                 ó   • g)NÚ1jrœ   rÅ   s     rg   Ú_print_ImaginaryUnitÚ.AbstractPythonCodePrinter._print_ImaginaryUnit  s   € Ørw   c                 óz   • UR                   u  p#SR                  U R                  U5      U R                  U5      S9$ )Nz(1 if {a} == {b} else 0))rû   rü   )rl   rp   rb   )rf   rt   rû   rü   s       rg   Ú_print_KroneckerDeltaÚ/AbstractPythonCodePrinter._print_KroneckerDelta  s;   € Ø�y‰y‰ˆà)×0Ñ0Ø—‘˜A“Ø—‘˜A“ð 1ð 
ð 	
rw   c                 ó²   • UR                   R                  nU R                  R                  X"5      nU< SU R	                  UR                  5       5      < S3$ )Nr£   rº   )rn   ro   rm   r•   rb   Útolist)rf   rt   rk   Úfuncs       rg   Ú_print_MatrixBaseÚ+AbstractPythonCodePrinter._print_MatrixBase  sA   € Ø�~‰~×&Ñ&ˆØ×#Ñ#×'Ñ'¨Ó3ˆÛ §¡¨T¯[©[«]Ö!;Ð<Ð<rw   c                 ó$   • U R                  U5      $ r`   )r  rÅ   s     rg   Ú<lambda>Ú"AbstractPythonCodePrinter.<lambda>  s   € ˜4×1Ñ1°$Ô7rw   c                 ó†   • SR                  UR                  S5       Vs/ s H  o R                  U-   PM     sn5      $ s  snf )NÚ
)rr   r¥   Útab)rf   r²   Úlines      rg   Ú_indent_codestringÚ,AbstractPythonCodePrinter._indent_codestring  s6   € Ø�y‰y°j×6FÑ6FÀtÔ6LÓMÒ6L¨dŸ(™( Tœ/Ñ6LÑMÓNÐNùÒMs   Ÿ>c                 óP  ^ • SR                  U 4S jUR                   5       5      nSR                  T R                  UR                  5      SR                  UR
                   Vs/ s H  nT R                  UR                  5      PM      sn5      T R                  U5      S9$ s  snf )Nr  c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr`   ra   rc   s     €rg   rh   ÚFAbstractPythonCodePrinter._print_FunctionDefinition.<locals>.<genexpr>#  s   øé € Ð>²g¨s˜$Ÿ+™+ c×*Ð*²gùrj   z def {name}({parameters}):
{body}r^   )rk   Ú
parametersÚbody)rr   r  rp   rb   rk   r  Úsymbolr  )rf   Úfdr  Úvars   `   rg   Ú_print_FunctionDefinitionÚ3AbstractPythonCodePrinter._print_FunctionDefinition"  s€   ø€ Ø�y‰yÔ>°b·g²gÓ>Ó?ˆØ2×9Ñ9Ø—‘˜RŸW™WÓ%Ø—y‘yÀRÇ]Â]Ó!SÂ]¸c $§+¡+¨c¯j©jÖ"9Á]Ñ!SÓTØ×(Ñ(¨Ó.ð :ð 
ð 	
ùâ!Ss   Á%%B#c                 ó¾   ^ • SR                  U 4S jUR                   5       5      nSR                  T R                  UR                  5      T R                  U5      S9$ )Nr  c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr`   ra   rc   s     €rg   rh   Ú9AbstractPythonCodePrinter._print_While.<locals>.<genexpr>+  s   øé € Ð?²h¨s˜$Ÿ+™+ c×*Ð*²hùrj   zwhile {cond}:
{body})rÞ   r  )rr   r  rp   rb   Ú	conditionr  )rf   Úwhlr  s   `  rg   Ú_print_WhileÚ&AbstractPythonCodePrinter._print_While*  sQ   ø€ Ø�y‰yÔ?°c·h²hÓ?Ó@ˆØ&×-Ñ-Ø—‘˜SŸ]™]Ó+Ø×(Ñ(¨Ó.ð .ð 
ð 	
rw   c                 ó    • U R                  UR                  R                  5      < SU R                  UR                  R                  5      < 3$ r›   )rb   Úvariabler  r�   )rf   Údecls     rg   Ú_print_DeclarationÚ,AbstractPythonCodePrinter._print_Declaration1  s8   € à�K‰K˜Ÿ™×,Ñ,Ö-Ø�K‰K˜Ÿ™×+Ñ+Õ,ð
ð 	
rw   c                 ó   • g)Nr   rœ   )rf   Úbts     rg   Ú_print_BreakTokenÚ+AbstractPythonCodePrinter._print_BreakToken7  s   € Ørw   c                 óF   • UR                   u  nSU R                  U5      -  $ )Nz	return %s©rl   rb   )rf   Úretre   s      rg   Ú_print_ReturnÚ'AbstractPythonCodePrinter._print_Return:  s!   € Ø�x‰x‰ˆØ˜TŸ[™[¨Ó-Ñ-Ð-rw   c                 óF   • UR                   u  nSU R                  U5      -  $ )Nzraise %sr4  )rf   Úrsre   s      rg   Ú_print_RaiseÚ&AbstractPythonCodePrinter._print_Raise>  s!   € Ø�w‰w‰ˆØ˜DŸK™K¨Ó,Ñ,Ð,rw   c                 óF   • UR                   u  nSU R                  U5      -  $ )NzRuntimeError(%s)r4  )rf   ÚreÚmessages      rg   Ú_print_RuntimeError_Ú.AbstractPythonCodePrinter._print_RuntimeError_B  s!   € Ø—7‘7‰ˆØ! D§K¡K°Ó$8Ñ8Ð8rw   c                 ó<  ^ • SR                  U 4S jUR                   5       5      nSSKJn  UR                  U:w  a+  SR                  T R                  UR                  5      U5      nUR                  S :w  a!  UST R                  UR                  5      -  -  nSU-  $ )Nr^   c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr`   ra   rc   s     €rg   rh   Ú9AbstractPythonCodePrinter._print_Print.<locals>.<genexpr>G  s   øé € ÐLºO°S §¡¨C× 0Ð 0ºOùrj   r   )Únonez{} % ({}), end=""z	, file=%sz	print(%s))rr   Ú
print_argsÚsympy.codegen.astrD  Úformat_stringrp   rb   Úfile)rf   ÚprntrE  rD  s   `   rg   Ú_print_PrintÚ&AbstractPythonCodePrinter._print_PrintF  s†   ø€ Ø—Y‘YÔL¸D¿OºOÓLÓMˆ
Ý*Ø×Ñ Ó%Ø,×3Ñ3Ø—‘˜D×.Ñ.Ó/ØóˆJð �9‰9˜ÓØ˜+¨¯©°D·I±IÓ(>Ñ>Ñ>ˆJØ˜ZÑ'Ð'rw   c                 óà   • [        UR                  5      S:X  a  U R                  S5      $ [        UR                  5      S:X  a  U R                  S5      $ U R                  UR                  5      $ )NÚstdoutz
sys.stdoutÚstderrz
sys.stderr)Ústrrk   rq   rb   )rf   Ústrms     rg   Ú_print_StreamÚ'AbstractPythonCodePrinter._print_StreamR  sW   € Üˆt�y‰y‹>˜XÓ%Ø×&Ñ& |Ó4Ð4Ü�—‘‹^˜xÓ'Ø×&Ñ& |Ó4Ð4à—;‘;˜tŸy™yÓ)Ð)rw   c                 ó   • g)Nr   rœ   )rf   re   s     rg   Ú_print_NoneTokenÚ*AbstractPythonCodePrinter._print_NoneTokenZ  s   € Ørw   c                 ó:  • [        U5      nUR                  [        R                  :X  aB  U(       d;  U R	                  U5      nU R                  UR                  5      nSR                  XVS9$ UR                  (       aÙ  U(       dÒ  UR                  * [        R                  L aV  U R	                  U5      nU R                  [        R                  5      nU R                  UR                  5      nU SU SU S3$ UR                  [        R                  L aA  U R                  [        R                  5      nU R                  UR                  USS9nU SU 3$ U R                  UR                  USS9nU R                  UR                  USS9n	SR                  X‰5      $ )	a¨  Printing helper function for ``Pow``

Notes
=====

This preprocesses the ``sqrt`` as math formatter and prints division

Examples
========

>>> from sympy import sqrt
>>> from sympy.printing.pycode import PythonCodePrinter
>>> from sympy.abc import x

Python code printer automatically looks up ``math.sqrt``.

>>> printer = PythonCodePrinter()
>>> printer._hprint_Pow(sqrt(x), rational=True)
'x**(1/2)'
>>> printer._hprint_Pow(sqrt(x), rational=False)
'math.sqrt(x)'
>>> printer._hprint_Pow(1/sqrt(x), rational=True)
'x**(-1/2)'
>>> printer._hprint_Pow(1/sqrt(x), rational=False)
'1/math.sqrt(x)'
>>> printer._hprint_Pow(1/x, rational=False)
'1/x'
>>> printer._hprint_Pow(1/x, rational=True)
'x**(-1)'

Using sqrt from numpy or mpmath

>>> printer._hprint_Pow(sqrt(x), sqrt='numpy.sqrt')
'numpy.sqrt(x)'
>>> printer._hprint_Pow(sqrt(x), sqrt='mpmath.sqrt')
'mpmath.sqrt(x)'

See Also
========

sympy.printing.str.StrPrinter._print_Pow
z{func}({arg}))r  re   Ú/r£   rº   F©Ústrictz{}**{})r   r>   r   ÚHalfrq   rb   Úbaserp   Úis_commutativeÚOneÚNegativeOnerÔ   )
rf   rt   ÚrationalrM   rÖ   r  re   ÚnumÚbase_strÚexp_strs
             rg   Ú_hprint_PowÚ%AbstractPythonCodePrinter._hprint_Pow]  sU  € ôV ˜$Óˆà�8‰8”q—v‘vÓ¦hØ×&Ñ& tÓ,ˆDØ—+‘+˜dŸi™iÓ(ˆCØ"×)Ñ)¨tÐ)Ð=Ð=à××¦xØ—‘ˆyœAŸF™FÒ"Ø×*Ñ*¨4Ó0�Ø—k‘k¤!§%¡%Ó(�Ø—k‘k $§)¡)Ó,�Ø˜˜a ˜v Q s e¨1Ð-Ð-Ø�x‰xœ1Ÿ=™=Ò(Ø—k‘k¤!§%¡%Ó(�Ø×'Ñ'¨¯	©	°4ÀÐ'ÐF�Ø˜˜a ˜u�~Ð%ð ×$Ñ$ T§Y¡Y°¸UÐ$ÐCˆØ×#Ñ# D§H¡H¨d¸5Ð#ÐAˆØ�‰˜xÓ1Ð1rw   )ry   rm   r’   r‡   r`   )T)Fz	math.sqrt)?ro   Ú
__module__Ú__qualname__Ú__firstlineno__ÚprintmethodÚlanguageÚ_kwÚreserved_wordsÚmodulesr  r“   r   Ú_known_functionsÚitemsÚ_known_functions_mathr”   Ú_known_constants_mathr–   Ú
_operatorsr	   Ú_default_settingsr‹   rž   rq   r®   r³   r·   r»   rÀ   rÆ   rÊ   rÍ   rÐ   rÙ   rã   rñ   r÷   r  r  r	  r  Ú_print_SparseRepMatrixÚ_print_MutableSparseMatrixÚ_print_ImmutableSparseMatrixÚ_print_MatrixÚ_print_DenseMatrixÚ_print_MutableDenseMatrixÚ_print_ImmutableMatrixÚ_print_ImmutableDenseMatrixr  r!  r(  r-  r1  r6  r:  r?  rJ  rQ  rT  rc  Ú__static_attributes__Ú__classcell__©rd   ÚkÚvrn   s   000@rg   r|   r|   O   sº  ø† Ø€KØ€HØ€NØ€GØ
€CÙ
‰uØ×ÑÓ Ø&;×&AÑ&AÔ&CÕDÒ&C™d˜aˆ!ˆW�q‰[Ó	Ñ&CÓDóó €Cð %:×$?Ñ$?Ô$AÕ
BÒ$A™D˜Aˆ1ˆg�a‰iŠ<Ñ$AÓ
B€CØ d°5Ñ9€JÙØ×%Ñ%ØØØØ $ØØñÐ÷#ò()ôBòò'ò%òò.ò2òòò%òTòõ./ò 4ò	#òò
ò=ñ 	8ð8Ðð 8Ø"ð8à$ð8ð 	ð8ð 	ð	8ð
 	"ð8ð 	Ø#òOò
ò
ò
òò.ò-ò9ò
(ò*ò÷@2ò @2ùôM 	Eùä
Bs   ¹D#Á-D*r|   c                   ó\   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)ÚArrayPrinteri   c                 óD   • SSK Jn   U" U5      $ ! [         a    Us $ f = f)Nr   )Úconvert_indexed_to_array)Ú4sympy.tensor.array.expressions.from_indexed_to_arrayrƒ  Ú	Exception)rf   Úindexedrƒ  s      rg   Ú	_arrayifyÚArrayPrinter._arrayify¢  s)   € Ýað	Ù+¨GÓ4Ð4øÜó 	ØŠNð	ús   ˆ �žc           	      ó&  • U R                  5       nSnSnU VVs0 s H  of  H  ow[        U5      _M     M     nnn/ n	U HW  n
/ n[        U
5       H2  nXX;   a  UR                  X…   5        OUR                  U5        US-  nM4     U	R                  U5        MY     0 n/ n/ nU	 H^  nU HP  nX|;  a  [	        U5      nXüU'   OXÇ   nXO-  nXx;   a  Xþ;  a  UR                  U5        M=  M?  UR                  U5        MR     US-  nM`     US S nXMU4$ s  snnf )NrÝ   r   r   Ú,r¢   )Ú _get_letter_generator_for_einsumr,   Úrangerß   Únext)rf   ÚsubranksÚcontraction_indicesÚlettersÚcontraction_stringÚcounterrá   ÚjÚdÚindicesÚrank_argÚlindicesÚmappingÚletters_freeÚletters_dumÚls                   rg   Ú_get_einsum_stringÚArrayPrinter._get_einsum_string©  s=  € Ø×7Ñ7Ó9ˆØÐØˆÙ 3Ô?Ò 3˜1»Q¸”�A“ŠY¹Q‰QÑ 3ˆÑ?ØˆÛ ˆHØˆHÜ˜8–_�Ø“<Ø—O‘O A¡JÕ/à—O‘O GÔ,Ø˜1‘’ñ %ð �N‰N˜8Ö$ñ !ð ˆØˆØˆÛˆAÛ�ØÓ#Ü˜W›�AØ!"˜A’Jà™
�AØ"Ñ'Ð"Ø“6ØÓ+Ø#×*Ñ*¨1Ö-ñ ,ð !×'Ñ'¨Ö*ñ ð  #Ñ%Òñ ð 0°°Ð4ÐØ!°Ð<Ð<ùó; @s   šDc              #   ó    #   • [        SS5       H  n[        U5      v •  M     [        SS5       H  n[        U5      v •  M     [        S5      e7f)Néa   é{   éA   é[   zout of letters)rŒ  Úchrr�   )rf   rá   s     rg   r‹  Ú-ArrayPrinter._get_letter_generator_for_einsumÌ  sC   é € Ü�r˜3–ˆAÜ�a“&ŒLñ  ä�r˜2–ˆAÜ�a“&ŒLñ äÐ)Ó*Ð*ùs   ‚AAc                 óà  • U R                  5       nSR                  UR                   VVs/ s H7  nSR                  [        U5       Vs/ s H  n[	        U5      PM     sn5      PM9     snn5      nU R                  U R                  S-   U R                  -   5      < SU< SSR                  UR                   Vs/ s H  o`R                  U5      PM     sn5      < S3$ s  snf s  snnf s  snf )NrŠ  rÝ   r¡   ú("ú", r^   rº   )
r‹  rr   rŽ  rŒ  r�  rq   Ú_moduleÚ_einsumrl   rb   )rf   rt   r�  rá   r“  r‘  re   s          rg   Ú_print_ArrayTensorProductÚ&ArrayPrinter._print_ArrayTensorProductÓ  sº   € Ø×7Ñ7Ó9ˆØ ŸX™XÐ[_×[hÒ[hÔ&iÒ[hÐVW r§w¡wÄuÈQÄxÓ/PÂxÀ!´°W¶ÁxÑ/PÖ'QÑ[hÒ&iÓjÐà×#Ñ# D§L¡L°3Ñ$6¸¿¹Ñ$EÖFÛ"Ø—	‘	°t·y²yÓA²y°Ÿ;™; sÖ+±yÑAÖBð
ð 	
ùò 0QùÓ&iùò Bs   «C%
Á	C ÁC%
Â;C+Ã C%
c           
      ó,  • SSK Jn  UR                  nUR                  n[	        X25      (       aK  SR                  UR                   Vs/ s H  nSU R                  U5      -  PM     sn5      nUR                  nO'U R                  U5      n[        UR                  5      /nU R                  Xt5      u  p‰n
U(       d  U R                  U5      $ [	        X25      (       a?  SR                  UR                   Vs/ s H  nSU R                  U5      -  PM     sn5      nOU R                  U5      nU R                  U R                  S-   U R                  -   5      < SSR                  USR                  [!        U	5      5      5      < S	U< S
3$ s  snf s  snf )Nr   ©ÚArrayTensorProductrŠ  z%sr¡   r¦  ú{}->{}rÝ   r§  rº   )Ú0sympy.tensor.array.expressions.array_expressionsr®  rt   r�  Ú
isinstancerr   rl   rb   rŽ  r¦   Úshaperœ  rq   r¨  r©  rp   Úsorted)rf   rt   r®  r[  r�  re   ÚelemsÚranksr‘  r™  rš  s              rg   Ú_print_ArrayContractionÚ$ArrayPrinter._print_ArrayContractionÜ  sB  € ÝWØ�y‰yˆØ"×6Ñ6Ðä�d×/Ñ/Ø—H‘HÀ4Ç9Â9ÓMÂ9¸C˜d d§k¡k°#Ó&6Ô7Á9ÑMÓNˆEØ—M‘M‰Eà—K‘K Ó%ˆEÜ˜Ÿ™“_Ð%ˆEà8<×8OÑ8OÐPUÓ8kÑ5Ð¨+æ"Ø—;‘;˜tÓ$Ð$Ü�d×/Ñ/Ø—H‘HÀ4Ç9Â9ÓMÂ9¸C˜d d§k¡k°#Ó&6Ô7Á9ÑMÓN‰Eà—K‘K Ó%ˆEà×Ñ §¡¨sÑ 2°T·\±\Ñ AÖBØ�O‰OÐ.°·±¼¸|Ó8LÓ0MÖNÛð
ð 	
ùò Nùò Ns   ÁFÃ6Fc           	      ó:  • SSK Jn  [        UR                  5      n[	        UR
                  U5      (       a-  UR
                  R                  nUR
                  R                  nOUR                  nUR
                  /nU R                  XC5      u  pgnU V	s/ s H  o�R                  U	5      PM     nn	U R                  U R                  S-   U R                  -   5      < SSR                  USR                  Xx-   5      5      < SSR                  U5      < S	3$ s  sn	f )
Nr   r­  r¡   r¦  r¯  rÝ   r§  r^   rº   )r°  r®  ÚlistÚdiagonal_indicesr±  rt   rŽ  rl   rœ  rb   rq   r¨  r©  rp   rr   )
rf   rt   r®  rº  rŽ  r´  Údiagonal_stringr™  rš  rá   s
             rg   Ú_print_ArrayDiagonalÚ!ArrayPrinter._print_ArrayDiagonalö  sÜ   € ÝWÜ × 5Ñ 5Ó6ÐÜ�d—i‘iÐ!3×4Ñ4Ø—y‘y×)Ñ)ˆHØ—I‘I—N‘N‰Eà—}‘}ˆHØ—Y‘Y�KˆEØ59×5LÑ5LÈXÓ5hÑ2ˆ {Ù).Ó/ª A—‘˜Q–©ˆÐ/à×Ñ §¡¨sÑ 2°T·\±\Ñ AÖBØ�O‰O˜O¨R¯W©W°\Ñ5MÓ-NÖOØ�I‰I�eÖð
ð 	
ùò 0s   ÂDc                 óè   • U R                  U R                  S-   U R                  -   5      < SU R                  UR                  5      < SU R                  UR
                  R                  5      < S3$ )Nr¡   r£   r^   rº   )rq   r¨  Ú
_transposerb   rt   ÚpermutationÚ
array_formrÅ   s     rg   Ú_print_PermuteDimsÚArrayPrinter._print_PermuteDims  sT   € à×Ñ §¡¨sÑ 2°T·_±_Ñ DÖEØ�K‰K˜Ÿ	™	Ö"Ø�K‰K˜×(Ñ(×3Ñ3Ö4ð
ð 	
rw   c                 ón   • U R                  U R                  S-   U R                  -   UR                  5      $ )Nr¡   )r»   r¨  Ú_addrl   rÅ   s     rg   Ú_print_ArrayAddÚArrayPrinter._print_ArrayAdd  s+   € Ø×*Ñ*¨4¯<©<¸#Ñ+=ÀÇ	Á	Ñ+IÈ4Ï9É9ÓUÐUrw   c                 óÂ   • U R                  U R                  S-   U R                  -   5      < SSR                  [	        U R
                  UR                  5      5      < S3$ ©Nr¡   z((rŠ  z,)))rq   r¨  Ú_onesrr   Úmaprb   rl   rÅ   s     rg   Ú_print_OneArrayÚArrayPrinter._print_OneArray  sG   € à×Ñ §¡¨cÑ 1°D·J±JÑ >Ö?Ø�H‰H”S˜Ÿ™ T§Y¡YÓ/Ö0ð
ð 	
rw   c                 óÂ   • U R                  U R                  S-   U R                  -   5      < SSR                  [	        U R
                  UR                  5      5      < S3$ rÉ  )rq   r¨  Ú_zerosrr   rË  rb   rl   rÅ   s     rg   Ú_print_ZeroArrayÚArrayPrinter._print_ZeroArray  sG   € à×Ñ §¡¨cÑ 1°D·K±KÑ ?Ö@Ø�H‰H”S˜Ÿ™ T§Y¡YÓ/Ö0ð
ð 	
rw   c                 ó¼   • U R                  U R                  UR                  5      5      nU R                  U R                  UR                  5      5      nU< SU< 3$ r›   )rb   r‡  rî   rï   )rf   rt   rî   rï   s       rg   Ú_print_AssignmentÚArrayPrinter._print_Assignment  sE   € ð �k‰k˜$Ÿ.™.¨¯©Ó2Ó3ˆØ�k‰k˜$Ÿ.™.¨¯©Ó2Ó3ˆÛ ¢#Ð'Ð'rw   c                 ó$   • U R                  U5      $ r`   )Ú_print_ArraySymbolrÅ   s     rg   Ú_print_IndexedBaseÚArrayPrinter._print_IndexedBase$  s   € Ø×&Ñ& tÓ,Ð,rw   rœ   N)ro   re  rf  rg  r‡  rœ  r‹  rª  r¶  r¼  rÂ  rÆ  rÌ  rÐ  rÓ  r×  r{  rœ   rw   rg   r�  r�     s@   † òò!=òF+ò
ò
ò4
ò"
òVò
ò
ò(õ-rw   r�  c                   ó¼   ^ • \ rS rSrS rS rS rS rSS jrS r	S r
S	 rU 4S
 jr\R                  r\R                  r\R                  r\R                  rSrU =r$ )ÚPythonCodePrinteri(  c                 óx   • SR                  U R                  S5      U R                  UR                  S   5      S9$ )Nz"(0.0 if {e} == 0 else {f}(1, {e}))zmath.copysignr   )ÚfrS   ©rp   rq   rb   rl   ©rf   rS   s     rg   Ú_print_signÚPythonCodePrinter._print_sign*  s=   € Ø3×:Ñ:Ø×!Ñ! /Ó2°d·k±kÀ!Ç&Á&ÈÁ)Ó6Lð ;ð Nð 	Nrw   c                 ó|   • [        U5      nU R                  S   S-   U R                  UR                  S   U5      -   $ )Nr   rþ   r   )r   rq  rÔ   rl   rØ   s      rg   Ú
_print_NotÚPythonCodePrinter._print_Not.  s:   € Ü˜$ÓˆØ�‰˜uÑ%¨Ñ+¨d×.?Ñ.?ÀÇ	Á	È!ÁÈdÓ.SÑSÐSrw   c                 ó   • UR                   $ r`   )rk   rÅ   s     rg   r×  Ú$PythonCodePrinter._print_IndexedBase2  s   € Ø�y‰yÐrw   c                 óÚ   • UR                   S   nUR                   SS  nSR                  [        U5      SR                  U Vs/ s H  o@R	                  U5      PM     sn5      5      $ s  snf )Nr   r   z{}[{}]r^   )rl   rp   rO  rr   rb   )rf   rt   r[  ÚindexÚinds        rg   Ú_print_IndexedÚ PythonCodePrinter._print_Indexed5  sX   € Ø�y‰y˜‰|ˆØ—	‘	˜!˜"�ˆØ�‰œs 4›y¨$¯)©)ÑQVÓ4WÒQVÈ#·[±[ÀÖ5EÑQVÑ4WÓ*XÓYÐYùÒ4Ws   ÁA(c                 ó    • U R                  XS9$ )N)r_  ©rc  ©rf   rt   r_  s      rg   Ú
_print_PowÚPythonCodePrinter._print_Pow:  s   € Ø×Ñ ÐÐ8Ð8rw   c                 óN   • SR                  UR                  UR                  5      $ )Nz{}/{})rp   ÚpÚqrÅ   s     rg   Ú_print_RationalÚ!PythonCodePrinter._print_Rational=  s   € Ø�~‰~˜dŸf™f d§f¡fÓ-Ð-rw   c                 ó$   • U R                  U5      $ r`   ©ró  rÅ   s     rg   Ú_print_HalfÚPythonCodePrinter._print_Half@  s   € Ø×#Ñ# DÓ)Ð)rw   c                 óR   • U R                  [        UR                  S   S5      5      $ )Nr   r   )rÙ   r   rl   rÅ   s     rg   Ú_print_fracÚPythonCodePrinter._print_fracC  s    € Ø�‰œs 4§9¡9¨Q¡<°Ó3Ó4Ð4rw   c                 ó  >• [         TU ]  U5      nX R                  ;   aA  U R                  S   (       a  Sn[	        UR                  U5      5      eX R                  S   -   $ SU;   a"  UR                  SS5      R                  SS5      $ U$ )NÚerror_on_reservedzVThis expression includes the symbol "{}" which is a reserved keyword in this language.Úreserved_word_suffixÚ{rÝ   Ú})rŠ   Ú_print_Symbolrk  rŒ   r�   rp   Úreplace)rf   rt   rk   Úmsgrn   s       €rg   r  ÚPythonCodePrinter._print_SymbolF  sƒ   ø€ ä‰wÑ$ TÓ*ˆà×&Ñ&Ó&Ø�~‰~Ð1×2ð<�ä  §¡¨DÓ!1Ó2Ð2ØŸ.™.Ð)?Ñ@Ñ@Ð@Ø�D‹[Ø—<‘<  RÓ(×0Ñ0°°bÓ9Ð9àˆKrw   rœ   ©F)ro   re  rf  rg  rß  râ  r×  ré  rî  ró  r÷  rú  r  r	   Ú_print_not_supportedÚ_print_lowergammaÚ_print_uppergammaÚ_print_fresnelcÚ_print_fresnelsr{  r|  )rn   s   @rg   rÚ  rÚ  (  sc   ø† òNòTòòZô
9ò.ò*ò5õð $×8Ñ8ÐØ#×8Ñ8ÐØ!×6Ñ6€OØ!×6Ñ6†Orw   rÚ  z	_print_%sc                 ó6   • [        U5      R                  U 5      $ )aè  Converts an expr to a string of Python code

Parameters
==========

expr : Expr
    A SymPy expression.
fully_qualified_modules : bool
    Whether or not to write out full module names of functions
    (``math.sin`` vs. ``sin``). default: ``True``.
standard : str or None, optional
    Only 'python3' (default) is supported.
    This parameter may be removed in the future.

Examples
========

>>> from sympy import pycode, tan, Symbol
>>> pycode(tan(Symbol('x')) + 1)
'math.tan(x) + 1'

)rÚ  Údoprint)rt   r—   s     rg   Úpycoder  b  s   € ô. ˜XÓ&×.Ñ.¨tÓ4Ð4rw   )rÚ  )r>   rM   rG   r:   rK   rN   r1   r3   r5   r;   rL   rO   r2   r4   r7   z-inf)rX   rY   rZ   ÚNegativeInfinityc                   óò   ^• \ rS rSrSrSrSr\" \" \	R                  5       5      5      r\R                  5        V VVs0 s H  u  pUSU-   _M     snnn rSS jrS rU4S jrS	 rS
 rS rSrU=r$ s  snnn f )ÚCmathPrinteri˜  z"Printer for Python's cmath module Ú
_cmathcodezPython with cmathúcmath.c                 ó"   • U R                  XSS9$ )Nz
cmath.sqrt©r_  rM   rì  rí  s      rg   rî  ÚCmathPrinter._print_Pow£  ó   € Ø×Ñ ¸lÐÐKÐKrw   c                 ó^   • SR                  U R                  S5      U R                  U5      S9$ )Nz{func}({val})z	cmath.mpf)r  Úval©rp   rq   rb   rÞ  s     rg   Ú_print_FloatÚCmathPrinter._print_Float¦  s0   € Ø×%Ñ%¨4×+>Ñ+>¸{Ó+KÐQU×Q\ÑQ\Ð]^ÓQ_Ð%Ð`Ð`rw   c           	      óò   >• UR                   R                  nX R                  ;   aC  SU R                  U    SSR                  [	        U R
                  UR                  5      5       S3$ [        TU ]!  U5      $ )Nr  r£   r^   rº   )	r  ro   r”   rr   rË  rb   rl   rŠ   Ú_print_Function)rf   rt   Ú	func_namern   s      €rg   rv   ÚCmathPrinter._print_known_func©  se   ø€ Ø—I‘I×&Ñ&ˆ	ØŸ™Ó Ø˜DŸH™H YÑ/Ð0°°$·)±)¼CÀÇÁÈTÏYÉYÓ<WÓ2XÐ1YÐYZÐ[Ð[Ü‰wÑ& tÓ,Ð,rw   c                 óH   • U R                   UR                  R                     $ r`   )r–   rn   ro   rÅ   s     rg   rz   ÚCmathPrinter._print_known_const¯  s   € Ø�x‰x˜Ÿ™×/Ñ/Ñ0Ð0rw   c                 óF   • SU R                  UR                  S   5       S3$ )zPrints `re(z)` as `z.real`r£   r   z).real©rb   rl   rÅ   s     rg   Ú	_print_reÚCmathPrinter._print_re²  ó#   € à�4—;‘;˜tŸy™y¨™|Ó,Ð-¨VÐ4Ð4rw   c                 óF   • SU R                  UR                  S   5       S3$ )zPrints `im(z)` as `z.imag`r£   r   z).imagr#  rÅ   s     rg   Ú	_print_imÚCmathPrinter._print_im¶  r&  rw   rœ   r  )ro   re  rf  rg  Ú__doc__rh  ri  r“   r   Ú_known_functions_cmathrn  r”   Ú_known_constants_cmathr–   rî  r  rv   rz   r$  r(  r{  r|  r}  s   000@rg   r  r  ˜  sƒ   ø† Ù-Ø€KØ"€Há
‰uØ×$Ñ$Ó&óó €Cð (>×'CÑ'CÔ'EÕ
FÒ'E™t˜qˆ1ˆh˜‰lŠ?Ñ'EÓ
F€CôLòaõ-ò1ò5÷5ð 5ùô+ Gs   ¾A2r  z
log1p log2ÚbetaÚfracÚfresnelcÚfresnelsÚsignrP   ÚhyperÚmeijergÚbesseljÚbesselyÚbesseliÚbesselk)r-  r.  r/  r0  r1  rP   r2  r3  r4  r5  r6  r7  ÚphiÚeulerÚcatalanÚninf)rW   rX   ÚGoldenRatioÚ
EulerGammaÚCatalanr[   rZ   r  c                 ó¼   • / n/ nU R                    HF  n[        U5      S:X  a  Uu  pEnO[        S5      eUR                  U5        UR                  XV45        MH     X4$ )zÇhelper function for _print_Integral that
- accepts an Integral expression
- returns a tuple of
   - a list variables of integration
   - a list of tuples of the upper and lower limits of integration
é   z%Only definite integrals are supported)r  r¦   ÚNotImplementedErrorrß   )Úintegral_exprÚintegration_varsr  Úintegration_rangeÚintegration_varÚlower_limitÚupper_limits          rg   Ú_unpack_integral_limitsrH  Þ  sl   € ð ÐØ€FØ*×1Ô1ÐÜÐ Ó! QÓ&Ø8IÑ5ˆO©+ä%Ð&MÓNÐNØ×Ñ Ô0Ø�‰�{Ð0Ö1ñ 2ð Ð#Ð#rw   c                   ó`  • \ rS rSrSrSrSr\" \" \	R                  5       \R                  5        V VVs/ s H  u  pUSU-   4PM     snnn 5      5      r\R                  5        V VVs0 s H  u  pUSU-   _M     snnn rS rS rS rS	 rS
 rS rS rSS jrS rS rSrgs  snnn f s  snnn f )ÚMpmathPrinteriñ  z@
Lambda printer for mpmath which maintains precision for floats
Ú_mpmathcodezPython with mpmathzmpmath.c                 ó˜   • [        [        [        [        UR                  5      5      5      nSR                  U R                  S5      US9$ )Nz{func}({args})ú
mpmath.mpf)r  rl   )rO  ÚtuplerË  ÚintÚ_mpf_rp   rq   )rf   rS   rl   s      rg   r  ÚMpmathPrinter._print_Floatÿ  s@   € ô ”5œœS !§'¡'Ó*Ó+Ó,ˆØ×&Ñ&¨D×,?Ñ,?ÀÓ,MÐTXÐ&ÐYÐYrw   c                 ó¦   • SR                  U R                  S5      U R                  UR                  5      U R                  UR                  5      S9$ )Nz{func}({p})/{func}({q})rM  )r  rò  rñ  )rp   rq   rb   rò  rñ  rÞ  s     rg   ró  ÚMpmathPrinter._print_Rational	  sH   € Ø(×/Ñ/Ø×$Ñ$ \Ó2Ø�k‰k˜!Ÿ#™#ÓØ�k‰k˜!Ÿ#™#Óð 0ð 
ð 	
rw   c                 ó$   • U R                  U5      $ r`   rö  rÞ  s     rg   r÷  ÚMpmathPrinter._print_Half  s   € Ø×#Ñ# AÓ&Ð&rw   c                 óÖ   • SR                  U R                  S5      U R                  UR                  S   5      U R                  UR                  S   5      U R                  S5      5      $ )Nz{}({}, {}, {})úmpmath.gammaincr   r   z
mpmath.infrÝ  rÞ  s     rg   r  ÚMpmathPrinter._print_uppergamma  sZ   € Ø×&Ñ&Ø×ÑÐ 1Ó2Ø�K‰K˜Ÿ™˜q™	Ó"Ø�K‰K˜Ÿ™˜q™	Ó"Ø×Ñ Ó-ó	/ð 	/rw   c                 ó¶   • SR                  U R                  S5      U R                  UR                  S   5      U R                  UR                  S   5      5      $ )Nz{}({}, 0, {})rW  r   r   rÝ  rÞ  s     rg   r  ÚMpmathPrinter._print_lowergamma  sL   € Ø×%Ñ%Ø×ÑÐ 1Ó2Ø�K‰K˜Ÿ™˜q™	Ó"Ø�K‰K˜Ÿ™˜q™	Ó"ó$ð 	$rw   c                 ó|   • SR                  U R                  S5      U R                  UR                  S   5      5      $ )Nz{0}({1})/{0}(2)z
mpmath.logr   rÝ  rÞ  s     rg   Ú_print_log2ÚMpmathPrinter._print_log2   s8   € Ø ×'Ñ'Ø×Ñ Ó-¨t¯{©{¸1¿6¹6À!¹9Ó/EóGð 	Grw   c                 ó|   • SR                  U R                  S5      U R                  UR                  S   5      5      $ )Nz{}({})zmpmath.log1pr   rÝ  rÞ  s     rg   Ú_print_log1pÚMpmathPrinter._print_log1p$  s6   € Ø�‰Ø×Ñ Ó/°·±¸Q¿V¹VÀA¹YÓ1GóIð 	Irw   c                 ó"   • U R                  XSS9$ )Nzmpmath.sqrtr  rì  rí  s      rg   rî  ÚMpmathPrinter._print_Pow(  s   € Ø×Ñ ¸mÐÐLÐLrw   c           	      ó  ^ • [        U5      u  p#SR                  T R                  S5      SR                  [	        T R
                  U5      5      T R                  UR                  S   5      SR                  U 4S jU 5       5      5      $ )Nz{}(lambda {}: {}, {})zmpmath.quadr^   r   c              3   óh   >#   • U  H'  nS [        [        TR                  U5      5      -  v •  M)     g7f)z(%s, %s)N)rN  rË  rb   )rd   r›  rf   s     €rg   rh   Ú0MpmathPrinter._print_Integral.<locals>.<genexpr>2  s&   øé € ÐRÊ6Àa˜*¤u¬S°·±¸aÓ-@Ó'AÖAÊ6ùs   ƒ/2)rH  rp   rq   rr   rË  rb   rl   )rf   rS   rC  r  s   `   rg   Ú_print_IntegralÚMpmathPrinter._print_Integral+  sr   ø€ Ü#:¸1Ó#=Ñ Ðà&×-Ñ-Ø×#Ñ# MÓ2Ø—	‘	œ#˜dŸk™kÐ+;Ó<Ó=Ø—‘˜AŸF™F 1™IÓ&Ø—	‘	ÔRÉ6ÓRÓRó	Tð 	Trw   c                 ót   • Uu  nUu  nSR                  U R                  S5      U R                  U5      U5      $ )Nz{}({}, derivative={})zmpmath.zetar  )rf   rl   Ú
seq_ordersre   Úderiv_orders        rg   Ú_print_Derivative_zetaÚ$MpmathPrinter._print_Derivative_zeta5  s?   € Ø‰ˆØ!‰ˆØ&×-Ñ-Ø×Ñ Ó.Ø�K‰K˜Ó˜kó
ð 	
rw   rœ   Nr  )ro   re  rf  rg  r*  rh  ri  r“   r   rm  rn  Ú_known_functions_mpmathr”   Ú_known_constants_mpmathr–   r  ró  r÷  r  r  r\  r_  rî  rf  rk  r{  )rd   r~  r  s   000rg   rJ  rJ  ñ  sÄ   † ñð  €Kà#€Há
‰uØ×ÑÓ Ø(?×(EÑ(EÔ(GÕHÒ(G¡ ˆ!ˆY˜‰]Ó	Ñ(GÓHóó €Cð '>×&CÑ&CÔ&EÕ
FÒ&E™d˜aˆ1ˆi˜‰kŠ>Ñ&EÓ
F€CòZò
ò'ò/ò$òGòIôMòTõ
ùôu 	Iùä
Fs   ´B"Á(B)rJ  c                   óJ   • \ rS rSrSr\" \R                  SS9rS rS	S jr	Sr
g)
ÚSymPyPrinteriE  zPython with SymPyFrX  c                 óþ   ^ • UR                   R                  =(       d    SnT R                  X"(       a  SOS-   UR                   R                  -   5      < SSR	                  U 4S jUR
                   5       5      < S3$ )NrÝ   r¡   r£   r^   c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr`   ra   rc   s     €rg   rh   Ú/SymPyPrinter._print_Function.<locals>.<genexpr>Q  s   øé € Ð%LÂ)¸3 d§k¡k°#×&6Ð&6Â)ùrj   rº   )r  re  rq   ro   rr   rl   )rf   rt   Úmods   `  rg   r  ÚSymPyPrinter._print_FunctionN  s_   ø€ Ø�i‰i×"Ñ"×( bˆØ×.Ñ.¨s½S±cÀbÑ/IÈDÏIÉI×L^ÑL^Ñ/^Ö_ØŸ9™9Ô%LÀ$Ç)Â)Ó%LÖMðOð 	Orw   c                 ó"   • U R                  XSS9$ )Nz
sympy.sqrtr  rì  rí  s      rg   rî  ÚSymPyPrinter._print_PowS  r  rw   rœ   Nr  )ro   re  rf  rg  ri  r“   r|   rr  r  rî  r{  rœ   rw   rg   rp  rp  E  s*   † à"€HáØ!×3Ñ3ØñÐò
O÷
Lrw   rp  N)'r*  Úcollectionsr   Ú	itertoolsr   Ú
sympy.corer   Úsympy.core.modr   r   Úcodeprinterr	   rj  rm  ro  rp  rv   rz   r|   r�  rÚ  r”   r~  Úsetattrr  Úsympy.printing.pycoder+  r,  r  r¥   Ú_not_in_mpmathrn  Ú
_in_mpmathr“   rm  rn  rH  rJ  rp  )r~  r  s   00rg   Ú<module>r�     sƒ  ðñõ
 $Ý Ý Ý Ý "Ý $ò€ð ØØñÐ ð
 Ø
ˆFð àˆWð ð ˆFð ð ˆWð	 ð
 ˆFð ð ˆWð ð ˆWð ð ˆvð ð 
ˆ5ð ð ˆFð ð 
ˆ5ð ð ˆFð ð 
ˆ5ð ð ˆWð ð �ð ð  ˆWð! ð" ˆWð# ð$ ØØØØØ
ØØØØØØØØò? Ð ðF Ø
Ø	ØØØñÐ ò\ò&ô
N2 ô N2÷b
E-ñ E-ôP07Ð1ô 07ðf 
×	Ô	€AÙÐ˜{¨Q™Ð0AÖBñ 
ó 
€AÙÐ˜{¨Q™Ð0BÖCñ 
ò5õ4 Ý 3ð ØØØØØØØØØØØØØØñÐ ð& Ø	ØØñ	Ð ô 5Ð$ô  5ðF 
×	Ô	€AÙˆL˜+¨™/¨<×+IÑ+IÖJñ 
ó 
 €AÙˆL˜+¨™/¨<×+JÑ+JÖKñ 
 ð ×#Ñ#Ó%€Ø!6×!<Ñ!<Ô!>ÔZÒ!>™˜À!È>ÑBY‹fˆq‹fÑ!>ÒZ€
Ù˜zñ ØØØØØØØØØØØØñ.ñ Ð ð Ø
ØØØØØØñ	Ð ò$ô&J
Ð%ô J
ðZ 
×	Ô	€AÙˆM˜;¨™?Ð,=Ö>ñ 
ó 
!€AÙˆM˜;¨™?Ð,>Ö?ñ 
!ôLÐ,õ LùóE [s   Å<HÆH