Ë
    O/æj.a  ã                   ó  — d 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 h d	£Zd
dddœZi dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!d"d#d#d$d%d&d'd(d)d*d+d,œ¥Zd-d.d-d/d0d0d1œZd2„ Zd3„ Z G d4„ d5e«      Z G d6„ d7«      Z G d8„ d9e«      Zej*                  D ]  Z eed:ez  e«       Œ eD ]  Z eed:ez  e«       Œ d;„ Zd<j3                  «       Zej7                  «       D � �cg c]  \  } }| evsŒ| |f‘Œ c}} Z eefi d=d>d?d@dAdBdCdDdEdFdGdHdIœ¤ŽZd-d.dJdKdLd0d/dMdNœZdO„ Z  G dP„ dQe«      Z!e!j*                  D ]  Z ee!d:ez  e«       Œ eD ]  Z ee!d:ez  e«       Œ  G dR„ dSe«      Z"yTc c}} w )Uzy
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ÚisnanÚlgammaÚlogÚlog10Úlog1pÚlog2ÚsinÚsinhÚsqrtÚtanÚtanh)rC   rD   ÚloggammarF   ÚlnrG   rH   rI   rJ   rK   ÚSqrtrM   rN   ÚeÚpiÚinfÚnan)ÚExp1ÚPiÚEÚInfinityÚNaNÚComplexInfinityc                 óÒ   ‡ — ‰ j                   |j                  j                     }dj                  ‰ j	                  |«      dj                  ˆ fd„|j                  D «       «      ¬«      S )Nz{name}({args})ú, c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w©N©Ú_print©Ú.0ÚargÚselfs     €úX/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/printing/pycode.pyú	<genexpr>z$_print_known_func.<locals>.<genexpr>F   s   øè ø€ Ò2YÈ°4·;±;¸s×3CÑ2Yùó   ƒ)ÚnameÚargs)Úknown_functionsÚ	__class__Ú__name__ÚformatÚ_module_formatÚjoinrj   ©re   ÚexprÚknowns   `  rf   Ú_print_known_funcrt   C   sZ   ø€ Ø× Ñ  §¡×!8Ñ!8Ñ9€EØ×"Ñ"¨×(;Ñ(;¸EÓ(BØ(,¯	©	Ó2YÈtÏyÉyÔ2YÓ(Zð #ó \ð \ó    c                 ój   — | j                   |j                  j                     }| j                  |«      S r_   )Úknown_constantsrl   rm   ro   rq   s      rf   Ú_print_known_constrx   I   s-   € Ø× Ñ  §¡×!8Ñ!8Ñ9€EØ×Ñ˜uÓ%Ð%ru   c                   óN  ‡— e Zd ZdZdZeZdZdZ e	 e
ej                  «       ej                  «       D � ��cg c]  \  }}|d|z   f‘Œ c}}} «      «      Zej                  «       D � ��ci c]  \  }}|d|z   “Œ c}}} Zdddd	œZ e	ej&                  i d
dddd¬«      Zd0ˆfd„	Zd„ Zd1d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!ˆfd„Z"d„ Z#d„ Z$d „ Z%d!„ Z&d"„ Z'd#„ xZ(xZ)xZ*xZ+xZ,xZ-xZ.Z/d$„ Z0d%„ Z1d&„ Z2d'„ Z3d(„ Z4d)„ Z5d*„ Z6d+„ Z7d,„ Z8d-„ Z9d.„ Z:d2d/„Z;ˆxZ<S c c}}} w c c}}} w )3ÚAbstractPythonCodePrinterÚ_pythoncodeÚPythonNz    zmath.r   r   r   )r   r   r   é   TFÚpython3)Úuser_functionsÚ	precisionÚinlineÚfully_qualified_modulesÚcontractÚstandardc                 óª  •— t         ‰| �  |«       | j                  d   }|€)dd l}dj	                  |j
                  j                  «      }|dk7  rt        d«      ‚|| _        t        t        «      | _        t        | j                  fi |xs i j                  di «      ¤Ž| _        t        | j                   fi |xs i j                  di «      ¤Ž| _        y )Nr„   r   zpython{}r~   zOnly Python 3 is supported.r   Úuser_constants)ÚsuperÚ__init__Ú	_settingsÚsysrn   Úversion_infoÚmajorÚ
ValueErrorr„   r   ÚsetÚmodule_importsÚdictÚ_kfÚgetrk   Ú_kcrw   )re   ÚsettingsÚstdrŠ   rl   s       €rf   rˆ   z"AbstractPythonCodePrinter.__init__d   sÊ   ø€ Ü‰Ñ˜Ô"ð �n‰n˜ZÑ(ˆØˆ;ÛØ×#Ñ# C×$4Ñ$4×$:Ñ$:Ó;ˆCØ�)ÒÜÐ:Ó;Ð;ØˆŒä)¬#Ó.ˆÔô  $ D§H¡Hñ  #°²¸R×0DÑ0DØ˜bó1"ñ  #ˆÔä# D§H¡Hñ  #°²¸R×0DÑ0DØ˜bó1"ñ  #ˆÕru   c                 ó   — |›d|›�S ©Nz = © )re   ri   Úvalues      rf   Ú_declare_number_constz/AbstractPythonCodePrinter._declare_number_constx   s   € Ú ¡%Ð(Ð(ru   c                 ó<  — |j                  d«      }|rAt        |«      dkD  r3| j                  dj                  |d d «         j	                  |d   «       | j
                  d   r|S |j                  d«      d   j                  d«      d   j                  d«      d   S )Nú.r   éÿÿÿÿr‚   ú(r   ú[)ÚsplitÚlenr�   rp   Úaddr‰   )re   ÚfqnÚregisterÚpartss       rf   ro   z(AbstractPythonCodePrinter._module_format{   s�   € Ø—	‘	˜#“ˆÙœ˜E›
 QšØ×Ñ §¡¨¨s°¨Ó 4Ñ5×9Ñ9¸%À¹)ÔDà�>‰>Ð3Ò4ØˆJà—9‘9˜S“> !Ñ$×*Ñ*¨3Ó/°Ñ2×8Ñ8¸Ó=¸bÑAÐAru   c                 ó   — |S r_   r˜   )re   Úliness     rf   Ú_format_codez&AbstractPythonCodePrinter._format_code…   s   € Øˆru   c                 ó$   — dj                  |«      S )Nz{}©rn   )re   Ú
codestrings     rf   Ú_get_statementz(AbstractPythonCodePrinter._get_statementˆ   s   € Ø�{‰{˜:Ó&Ð&ru   c                 ó$   — dj                  |«      S )Nz  # {}rª   )re   Útexts     rf   Ú_get_commentz&AbstractPythonCodePrinter._get_comment‹   s   € Ø�‰˜tÓ$Ð$ru   c                 óÄ   — t        |«      dk(  r| j                  |d   «      S | j                  |«      ›d| j                  ||dd «      ›d| j                  |d   «      ›d�S )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¡   ra   ro   Ú_expand_fold_binary_op)re   Úoprj   s      rf   r²   z0AbstractPythonCodePrinter._expand_fold_binary_opŽ   sb   € ô ˆt‹9˜Š>Ø—;‘;˜t A™wÓ'Ð'ð ×#Ñ# BÕ'Ø×+Ñ+¨B°°S°b°	Õ:Ø—‘˜D ™HÕ%ðð ru   c           	      óâ   — t        |«      dk(  r| j                  |d   «      S t        |«      }|dz  }| j                  |«      ›d| j                  |d| «      ›d| j                  ||d «      ›d�S )zú
        This method expands a reductin 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¡   ra   ro   Ú_expand_reduce_binary_op)re   r³   rj   ÚNÚNhalfs        rf   r¶   z2AbstractPythonCodePrinter._expand_reduce_binary_op¥   st   € ô ˆt‹9˜Š>Ø—;‘;˜t A™wÓ'Ð'ä�D“	ˆAØ˜‘FˆEà×#Ñ# BÕ'Ø×-Ñ-¨d°6°E¨lÕ;Ø×-Ñ-¨d°5°6¨lÕ;ðð ru   c                  ó   — y)Nzfloat('nan')r˜   ©re   rr   s     rf   Ú
_print_NaNz$AbstractPythonCodePrinter._print_NaN¾   ó   € Øru   c                  ó   — y)Nzfloat('inf')r˜   rº   s     rf   Ú_print_Infinityz)AbstractPythonCodePrinter._print_InfinityÁ   r¼   ru   c                  ó   — y)Nzfloat('-inf')r˜   rº   s     rf   Ú_print_NegativeInfinityz1AbstractPythonCodePrinter._print_NegativeInfinityÄ   s   € Øru   c                 ó$   — | j                  |«      S r_   )r»   rº   s     rf   Ú_print_ComplexInfinityz0AbstractPythonCodePrinter._print_ComplexInfinityÇ   s   € Ø�‰˜tÓ$Ð$ru   c                 ób   ‡ ‡— t        |«      Š dj                  ˆˆ fd„|j                  D «       Ž S )Nz{} % {}c              3   óB   •K  — | ]  }‰j                  |‰«      –— Œ y ­wr_   )Úparenthesize)rc   ÚxÚPRECre   s     €€rf   rg   z7AbstractPythonCodePrinter._print_Mod.<locals>.<genexpr>Ì   s   øè ø€ Ò"QÀ! 4×#4Ñ#4°Q¸×#=Ñ"Qùs   ƒ)r   rn   rj   ©re   rr   rÇ   s   ` @rf   Ú
_print_Modz$AbstractPythonCodePrinter._print_ModÊ   s*   ù€ Ü˜$ÓˆØ �	× Ñ Ô"QÀtÇyÁyÔ"QÐRÐSru   c                 ó&  — g }d}|j                   D ]¹  }|j                  }|j                  }|dk(  r|j                  d«       |j                  d«       |j                  | j	                  |«      «       |j                  d«       |j                  d«       |j                  | j	                  |«      «       |j                  d«       |dz  }Œ» |d d }|d   dk(  r|d d	 }|j                  d«       n|j                  d
«       dj                  |«      S )Nr   rž   r±   z if z else r   r�   r   éþÿÿÿz else None)Ú )rj   rr   ÚcondÚappendra   rp   )re   rr   ÚresultÚird   rR   Úcs          rf   Ú_print_Piecewisez*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‹Ðru   c                 óø   •— dddddddœ}|j                   |v rT| j                  |j                  «      }| j                  |j                  «      }dj	                  |j                   ||¬	«      S t
        ‰| �  |«      S )
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_opra   rÜ   rÝ   rn   r‡   Ú_print_Relational)re   rr   r³   rÜ   rÝ   rl   s        €rf   rß   z+AbstractPythonCodePrinter._print_Relationalå   s|   ø€ ð ØØØØØ!ñ
ˆð �;‰;˜"ÑØ—+‘+˜dŸh™hÓ'ˆCØ—+‘+˜dŸh™hÓ'ˆCØ'×.Ñ.°$·+±+À3ÈCÐ.ÓPÐPÜ‰wÑ(¨Ó.Ð.ru   c                 óN   — ddl m} | j                  |j                  |«      «      S )Nr   )Ú	Piecewise)Ú$sympy.functions.elementary.piecewiserá   ra   Úrewrite)re   rr   rá   s      rf   Ú
_print_ITEz$AbstractPythonCodePrinter._print_ITEõ   s   € ÝBØ�{‰{˜4Ÿ<™<¨	Ó2Ó3Ð3ru   c                 ó¤   ‡ — ˆ fd„|j                   D «       }dj                  ‰ j                  |j                  «      dj	                  |«      ¬«      S )Nc              3   ó¨   •K  — | ]I  \  }}}d j                  ‰j                  |«      ‰j                  |«      ‰j                  |«      ¬«      –— ŒK y­w)zfor {i} in range({a}, {b}+1))rÐ   ÚaÚbN)rn   ra   )rc   rÐ   rç   rè   re   s       €rf   rg   z7AbstractPythonCodePrinter._print_Sum.<locals>.<genexpr>ú   sR   øè ø€ ò (ñ
 ��1�að	 +×1Ñ1Ø—+‘+˜a“.Ø—+‘+˜a“.Ø—+‘+˜a“.ð 2÷ "ñ(ùs   ƒAAz"(builtins.sum({function} {loops}))ú )ÚfunctionÚloops)Úlimitsrn   ra   rê   rp   )re   rr   rë   s   `  rf   Ú
_print_Sumz$AbstractPythonCodePrinter._print_Sumù   sM   ø€ ó(ð
  Ÿ;™;ô(ˆð 4×:Ñ:Ø—[‘[ §¡Ó/Ø—(‘(˜5“/ð ;ó #ð 	#ru   c                  ó   — y)NÚ1jr˜   rº   s     rf   Ú_print_ImaginaryUnitz.AbstractPythonCodePrinter._print_ImaginaryUnit  s   € Øru   c                 ó‚   — |j                   \  }}dj                  | j                  |«      | j                  |«      ¬«      S )Nz(1 if {a} == {b} else 0))rç   rè   )rj   rn   ra   )re   rr   rç   rè   s       rf   Ú_print_KroneckerDeltaz/AbstractPythonCodePrinter._print_KroneckerDelta  s=   € Ø�y‰y‰ˆˆ1à)×0Ñ0Ø—‘˜A“Ø—‘˜A“ð 1ó 
ð 	
ru   c                 ó°   — |j                   j                  }| j                  j                  ||«      }|›d| j	                  |j                  «       «      ›d�S )Nrž   r±   )rl   rm   rk   r’   ra   Útolist)re   rr   ri   Úfuncs       rf   Ú_print_MatrixBasez+AbstractPythonCodePrinter._print_MatrixBase  sC   € Ø�~‰~×&Ñ&ˆØ×#Ñ#×'Ñ'¨¨dÓ3ˆÚ §¡¨T¯[©[«]Õ!;Ð<Ð<ru   c                 ó$   — | j                  |«      S r_   )rö   rº   s     rf   ú<lambda>z"AbstractPythonCodePrinter.<lambda>  s   € ˜4×1Ñ1°$Ó7€ ru   c                 ó‚   — dj                  |j                  d«      D �cg c]  }| j                  |z   ‘Œ c}«      S c c}w )Nú
)rp   r    Útab)re   r«   Úlines      rf   Ú_indent_codestringz,AbstractPythonCodePrinter._indent_codestring  s2   € Ø�y‰y°j×6FÑ6FÀtÓ6LÖM¨d˜$Ÿ(™( T›/ÒMÓNÐNùÒMs   Ÿ<c                 óN  ‡ — dj                  ˆ fd„|j                  D «       «      }dj                  ‰ j                  |j                  «      dj                  |j
                  D �cg c]  }‰ j                  |j                  «      ‘Œ c}«      ‰ j                  |«      ¬«      S c c}w )Nrú   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr_   r`   rb   s     €rf   rg   zFAbstractPythonCodePrinter._print_FunctionDefinition.<locals>.<genexpr>"  s   øè ø€ Ò>¨s˜$Ÿ+™+ c×*Ñ>ùrh   z def {name}({parameters}):
{body}r]   )ri   Ú
parametersÚbody)rp   r  rn   ra   ri   r   Úsymbolrý   )re   Úfdr  Úvars   `   rf   Ú_print_FunctionDefinitionz3AbstractPythonCodePrinter._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                 óÂ   ‡ — dj                  ˆ fd„|j                  D «       «      }dj                  ‰ j                  |j                  «      ‰ j                  |«      ¬«      S )Nrú   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr_   r`   rb   s     €rf   rg   z9AbstractPythonCodePrinter._print_While.<locals>.<genexpr>*  s   øè ø€ Ò?¨s˜$Ÿ+™+ c×*Ñ?ùrh   zwhile {cond}:
{body})rÍ   r  )rp   r  rn   ra   Ú	conditionrý   )re   Úwhlr  s   `  rf   Ú_print_Whilez&AbstractPythonCodePrinter._print_While)  sQ   ø€ Ø�y‰yÓ?°c·h±hÔ?Ó@ˆØ&×-Ñ-Ø—‘˜SŸ]™]Ó+Ø×(Ñ(¨Ó.ð .ó 
ð 	
ru   c                 óœ   — | j                  |j                  j                  «      ›d| j                  |j                  j                  «      ›�S r—   )ra   Úvariabler  r™   )re   Údecls     rf   Ú_print_Declarationz,AbstractPythonCodePrinter._print_Declaration0  s8   € à�K‰K˜Ÿ™×,Ñ,Õ-Ø�K‰K˜Ÿ™×+Ñ+Ô,ð
ð 	
ru   c                  ó   — y)Nr   r˜   )re   Úbts     rf   Ú_print_BreakTokenz+AbstractPythonCodePrinter._print_BreakToken6  s   € Øru   c                 óF   — |j                   \  }d| j                  |«      z  S )Nz	return %s©rj   ra   )re   Úretrd   s      rf   Ú_print_Returnz'AbstractPythonCodePrinter._print_Return9  s!   € Ø�x‰x‰ˆØ˜TŸ[™[¨Ó-Ñ-Ð-ru   c                 óF   — |j                   \  }d| j                  |«      z  S )Nzraise %sr  )re   Úrsrd   s      rf   Ú_print_Raisez&AbstractPythonCodePrinter._print_Raise=  s!   € Ø�w‰w‰ˆØ˜DŸK™K¨Ó,Ñ,Ð,ru   c                 óF   — |j                   \  }d| j                  |«      z  S )NzRuntimeError(%s)r  )re   ÚreÚmessages      rf   Ú_print_RuntimeError_z.AbstractPythonCodePrinter._print_RuntimeError_A  s!   € Ø—7‘7‰ˆØ! D§K¡K°Ó$8Ñ8Ð8ru   c                 ó6  ‡ — dj                  ˆ fd„|j                  D «       «      }ddlm} |j                  |k7  r+dj                  ‰ j                  |j                  «      |«      }|j                  d k7  r!|d‰ j                  |j                  «      z  z  }d|z  S )Nr]   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr_   r`   rb   s     €rf   rg   z9AbstractPythonCodePrinter._print_Print.<locals>.<genexpr>F  s   øè ø€ ÒL°S §¡¨C× 0ÑLùrh   r   )Únonez{} % ({}), end=""z	, file=%sz	print(%s))rp   Ú
print_argsÚsympy.codegen.astr  Úformat_stringrn   ra   Úfile)re   Úprntr   r  s   `   rf   Ú_print_Printz&AbstractPythonCodePrinter._print_PrintE  s†   ø€ Ø—Y‘YÓL¸D¿O¹OÔLÓMˆ
Ý*Ø×Ñ Ò%Ø,×3Ñ3Ø—‘˜D×.Ñ.Ó/ØóˆJð �9‰9˜ÒØ˜+¨¯©°D·I±IÓ(>Ñ>Ñ>ˆJØ˜ZÑ'Ð'ru   c                 óÜ   — t        |j                  «      dk(  r| j                  d«      S t        |j                  «      dk(  r| j                  d«      S | j                  |j                  «      S )NÚstdoutz
sys.stdoutÚstderrz
sys.stderr)Ústrri   ro   ra   )re   Ústrms     rf   Ú_print_Streamz'AbstractPythonCodePrinter._print_StreamQ  sW   € Üˆt�y‰y‹>˜XÒ%Ø×&Ñ& |Ó4Ð4Ü�—‘‹^˜xÒ'Ø×&Ñ& |Ó4Ð4à—;‘;˜tŸy™yÓ)Ð)ru   c                  ó   — y)Nr   r˜   )re   rd   s     rf   Ú_print_NoneTokenz*AbstractPythonCodePrinter._print_NoneTokenY  s   € Øru   c                 ó2  — t        |«      }|j                  t        j                  k(  rA|s?| j	                  |«      }| j                  |j                  «      }dj                  ||¬«      S |j                  rÕ|sÓ|j                   t        j                  u rV| j	                  |«      }| j                  t        j                  «      }| j                  |j                  «      }|› d|› d|› d�S |j                  t        j                  u rD| j                  t        j                  «      }| j                  |j                  |d¬«      }|› d|› �S | j                  |j                  |d¬«      }| j                  |j                  |d¬«      }	dj                  ||	«      S )	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õ   rd   ú/rž   r±   F©Ústrictz{}**{})r   r>   r   ÚHalfro   ra   Úbasern   Úis_commutativeÚOneÚNegativeOnerÅ   )
re   rr   ÚrationalrL   rÇ   rõ   rd   ÚnumÚbase_strÚexp_strs
             rf   Ú_hprint_Powz%AbstractPythonCodePrinter._hprint_Pow\  sY  € ô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Ð1ru   r_   )T)Fz	math.sqrt)=rm   Ú
__module__Ú__qualname__ÚprintmethodÚlanguageÚ_kwÚreserved_wordsÚmodulesrû   r�   r   Ú_known_functionsÚitemsÚ_known_functions_mathr‘   Ú_known_constants_mathr“   Ú
_operatorsr	   Ú_default_settingsrˆ   rš   ro   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  r  r  r  r  r%  r+  r-  r;  Ú__classcell__)rc   ÚkÚvrl   s   000@rf   rz   rz   N   s²  ø„ Ø€KØ€HØ€NØ€GØ
€CÙ
‰uØ×ÑÓ Ø&;×&AÑ&AÓ&C×DÐD™d˜a ˆ!ˆW�q‰[Ò	ÔDóó €Cð %:×$?Ñ$?Ó$A×
BÐ
B™D˜A˜qˆ1ˆg�a‰i‰<Ô
B€CØ d°5Ñ9€JÙØ×%Ñ%ØØØØ $ØØôÐõ#ò()óBòò'ò%òò.ò2òòò%òTòô./ò 4ò	#òò
ò=ñ 	8ð8Ðð 8Ø"ð8à$ð8ð 	ð8ð 	ð	8ð
 	"ð8ð 	Ø#òOò
ò
ò
òò.ò-ò9ò
(ò*ò÷@2ùôM 	Eùä
Bs   ·DÁ)D rz   c                   óT   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚArrayPrinterc                 óB   — ddl m} 	  ||«      S # t        $ r |cY S w xY w)Nr   )Úconvert_indexed_to_array)Ú4sympy.tensor.array.expressions.from_indexed_to_arrayrW  Ú	Exception)re   ÚindexedrW  s      rf   Ú	_arrayifyzArrayPrinter._arrayify¡  s)   € Ýað	Ù+¨GÓ4Ð4øÜò 	ØŠNð	ús   ˆ ��c           	      ó  — | j                  «       }d}d}|D ��ci c]  }|D ]  }|t        |«      “Œ Œ }}}g }	|D ]T  }
g }t        |
«      D ]1  }||v r|j                  ||   «       n|j                  |«       |dz  }Œ3 |	j                  |«       ŒV i }g }g }|	D ]Y  }|D ]M  }||vrt	        |«      }|||<   n||   }||z  }||v r||vsŒ+|j                  |«       Œ=|j                  |«       ŒO |dz  }Œ[ |d d }|||fS c c}}w )NrÌ   r   r   ú,r�   )Ú _get_letter_generator_for_einsumr,   ÚrangerÎ   Únext)re   ÚsubranksÚcontraction_indicesÚlettersÚcontraction_stringÚcounterrÐ   ÚjÚdÚindicesÚrank_argÚlindicesÚmappingÚletters_freeÚletters_dumÚls                   rf   Ú_get_einsum_stringzArrayPrinter._get_einsum_string¨  s_  € Ø×7Ñ7Ó9ˆØÐØˆØ 3×?˜1¸QÒ?¸ˆQ”�A“‰YÐ?ˆQÐ?ˆÑ?ØˆØ ò 	%ˆHØˆHÜ˜8“_ò �Ø˜a‘<Ø—O‘O A g¡JÕ/à—O‘O GÔ,Ø˜1‘‘ðð �N‰N˜8Õ$ð	%ð ˆØˆØˆØò 	&ˆAØò +�Ø˜GÑ#Ü˜W›�AØ!"�G˜A’Jà ™
�AØ" aÑ'Ð"Ø˜‘6Ø Ò+Ø#×*Ñ*¨1Õ-à ×'Ñ'¨Õ*ð+ð  #Ñ%Ñð	&ð 0°°Ð4ÐØ! <°Ð<Ð<ùó; @s   šD c              #   ó˜   K  — t        dd«      D ]  }t        |«      –— Œ t        dd«      D ]  }t        |«      –— Œ t        d«      ‚­w)Néa   é{   éA   é[   zout of letters)r_  Úchrr�   )re   rÐ   s     rf   r^  z-ArrayPrinter._get_letter_generator_for_einsumË  sN   è ø€ Ü�r˜3“ò 	ˆAÜ�a“&‹Lð	ä�r˜2“ò 	ˆAÜ�a“&‹Lð	äÐ)Ó*Ð*ùs   ‚AA
c                 óÊ  — | j                  «       }dj                  |j                  D ��cg c]3  }dj                  t        |«      D �cg c]  }t	        |«      ‘Œ c}«      ‘Œ5 c}}«      }| j                  | j                  dz   | j                  z   «      ›d|›ddj                  |j                  D �cg c]  }| j                  |«      ‘Œ c}«      ›d�S c c}w c c}}w c c}w )Nr]  rÌ   rœ   ú("ú", r]   r±   )
r^  rp   ra  r_  r`  ro   Ú_moduleÚ_einsumrj   ra   )re   rr   rc  rÐ   rf  rd  rd   s          rf   Ú_print_ArrayTensorProductz&ArrayPrinter._print_ArrayTensorProductÒ  s®   € Ø×7Ñ7Ó9ˆØ ŸX™XÐ[_×[hÑ[h×&iÐVW r§w¡wÄuÈQÃxÖ/PÀ!´°WµÒ/PÕ'QÓ&iÓjÐà×#Ñ# D§L¡L°3Ñ$6¸¿¹Ñ$EÕFÚ"Ø—	‘	°t·y±yÖA°˜4Ÿ;™; sÕ+ÒAÕBð
ð 	
ùò 0QùÓ&iùò Bs   «C
ÁCÁ	C
Â3C ÃC
c           
      ó  — ddl m} |j                  }|j                  }t	        ||«      rHdj                  |j                  D �cg c]  }d| j                  |«      z  ‘Œ c}«      }|j                  }n'| j                  |«      }t        |j                  «      g}| j                  ||«      \  }}	}
|s| j                  |«      S t	        ||«      r<dj                  |j                  D �cg c]  }d| j                  |«      z  ‘Œ c}«      }n| j                  |«      }| j                  | j                  dz   | j                  z   «      ›ddj                  |dj                  t!        |	«      «      «      ›d	|›d
�S c c}w c c}w )Nr   ©ÚArrayTensorProductr]  z%srœ   rw  ú{}->{}rÌ   rx  r±   )Ú0sympy.tensor.array.expressions.array_expressionsr~  rr   rb  Ú
isinstancerp   rj   ra   ra  r¡   Úshapero  ro   ry  rz  rn   Úsorted)re   rr   r~  r3  rb  rd   ÚelemsÚranksrd  rl  rm  s              rf   Ú_print_ArrayContractionz$ArrayPrinter._print_ArrayContractionÛ  s?  € ÝWØ�y‰yˆØ"×6Ñ6Ðä�dÐ.Ô/Ø—H‘HÀ4Ç9Á9ÖM¸C˜d d§k¡k°#Ó&6Ó7ÒMÓNˆEØ—M‘M‰Eà—K‘K Ó%ˆEÜ˜Ÿ™“_Ð%ˆEà8<×8OÑ8OÐPUÐWjÓ8kÑ5Ð˜L¨+á"Ø—;‘;˜tÓ$Ð$Ü�dÐ.Ô/Ø—H‘HÀ4Ç9Á9ÖM¸C˜d d§k¡k°#Ó&6Ó7ÒMÓN‰Eà—K‘K Ó%ˆEà×Ñ §¡¨sÑ 2°T·\±\Ñ AÕBØ�O‰OÐ.°·±¼¸|Ó8LÓ0MÕNÚð
ð 	
ùò Nùò Ns   ÁE8Ã(E=c           	      ó,  — ddl m} t        |j                  «      }t	        |j
                  |«      r-|j
                  j                  }|j
                  j                  }n|j                  }|j
                  g}| j                  ||«      \  }}}|D �	cg c]  }	| j                  |	«      ‘Œ }}	| j                  | j                  dz   | j                  z   «      ›ddj                  |dj                  ||z   «      «      ›ddj                  |«      ›d	�S c c}	w )
Nr   r}  rœ   rw  r  rÌ   rx  r]   r±   )r€  r~  ÚlistÚdiagonal_indicesr�  rr   ra  rj   ro  ra   ro   ry  rz  rn   rp   )
re   rr   r~  r‰  ra  r„  Údiagonal_stringrl  rm  rÐ   s
             rf   Ú_print_ArrayDiagonalz!ArrayPrinter._print_ArrayDiagonalõ  sá   € ÝWÜ × 5Ñ 5Ó6ÐÜ�d—i‘iÐ!3Ô4Ø—y‘y×)Ñ)ˆHØ—I‘I—N‘N‰Eà—}‘}ˆHØ—Y‘Y�KˆEØ59×5LÑ5LÈXÐWgÓ5hÑ2ˆ˜ {Ø).Ö/ A�—‘˜Q•Ð/ˆÐ/à×Ñ §¡¨sÑ 2°T·\±\Ñ AÕBØ�O‰O˜O¨R¯W©W°\À+Ñ5MÓ-NÕOØ�I‰I�eÕð
ð 	
ùò 0s   ÂDc                 óâ   — | j                  | j                  dz   | j                  z   «      ›d| j                  |j                  «      ›d| j                  |j
                  j                  «      ›d�S )Nrœ   rž   r]   r±   )ro   ry  Ú
_transposera   rr   ÚpermutationÚ
array_formrº   s     rf   Ú_print_PermuteDimszArrayPrinter._print_PermuteDims  sT   € à×Ñ §¡¨sÑ 2°T·_±_Ñ DÕEØ�K‰K˜Ÿ	™	Õ"Ø�K‰K˜×(Ñ(×3Ñ3Õ4ð
ð 	
ru   c                 ón   — | j                  | j                  dz   | j                  z   |j                  «      S )Nrœ   )r²   ry  Ú_addrj   rº   s     rf   Ú_print_ArrayAddzArrayPrinter._print_ArrayAdd  s+   € Ø×*Ñ*¨4¯<©<¸#Ñ+=ÀÇ	Á	Ñ+IÈ4Ï9É9ÓUÐUru   c                 ó¾   — | j                  | j                  dz   | j                  z   «      ›ddj                  t	        | j
                  |j                  «      «      ›d�S ©Nrœ   z((r]  z,)))ro   ry  Ú_onesrp   Úmapra   rj   rº   s     rf   Ú_print_OneArrayzArrayPrinter._print_OneArray  sG   € à×Ñ §¡¨cÑ 1°D·J±JÑ >Õ?Ø�H‰H”S˜Ÿ™ T§Y¡YÓ/Õ0ð
ð 	
ru   c                 ó¾   — | j                  | j                  dz   | j                  z   «      ›ddj                  t	        | j
                  |j                  «      «      ›d�S r•  )ro   ry  Ú_zerosrp   r—  ra   rj   rº   s     rf   Ú_print_ZeroArrayzArrayPrinter._print_ZeroArray  sG   € à×Ñ §¡¨cÑ 1°D·K±KÑ ?Õ@Ø�H‰H”S˜Ÿ™ T§Y¡YÓ/Õ0ð
ð 	
ru   c                 ó¸   — | j                  | j                  |j                  «      «      }| j                  | j                  |j                  «      «      }|›d|›�S r—   )ra   r[  rÜ   rÝ   )re   rr   rÜ   rÝ   s       rf   Ú_print_AssignmentzArrayPrinter._print_Assignment  sE   € ð �k‰k˜$Ÿ.™.¨¯©Ó2Ó3ˆØ�k‰k˜$Ÿ.™.¨¯©Ó2Ó3ˆÚ ¡#Ð'Ð'ru   c                 ó$   — | j                  |«      S r_   )Ú_print_ArraySymbolrº   s     rf   Ú_print_IndexedBasezArrayPrinter._print_IndexedBase#  s   € Ø×&Ñ& tÓ,Ð,ru   N)rm   r<  r=  r[  ro  r^  r{  r†  r‹  r�  r“  r˜  r›  r�  r   r˜   ru   rf   rU  rU  Ÿ  s@   „ òò!=òF+ò
ò
ò4
ò"
òVò
ò
ò(ó-ru   rU  c                   ó°   ‡ — e Zd Zd„ Zd„ Zd„ Zd„ Zd
d„Zd„ Zd„ Z	d„ Z
ˆ fd	„Zej                  Zej                  Zej                  Zej                  Zˆ xZS )ÚPythonCodePrinterc                 ó~   — dj                  | j                  d«      | j                  |j                  d   «      ¬«      S )Nz"(0.0 if {e} == 0 else {f}(1, {e}))zmath.copysignr   )ÚfrR   ©rn   ro   ra   rj   ©re   rR   s     rf   Ú_print_signzPythonCodePrinter._print_sign)  s=   € Ø3×:Ñ:Ø×!Ñ! /Ó2°d·k±kÀ!Ç&Á&ÈÁ)Ó6Lð ;ó Nð 	Nru   c                 óv   — t        |«      }| j                  d   | j                  |j                  d   |«      z   S )Nr   r   )r   rG  rÅ   rj   rÈ   s      rf   Ú
_print_NotzPythonCodePrinter._print_Not-  s5   € Ü˜$ÓˆØ�‰˜uÑ%¨×(9Ñ(9¸$¿)¹)ÀA¹,ÈÓ(MÑMÐMru   c                 ó   — |j                   S r_   )ri   rº   s     rf   r   z$PythonCodePrinter._print_IndexedBase1  s   € Ø�y‰yÐru   c                 óÖ   — |j                   d   }|j                   dd  }dj                  t        |«      dj                  |D �cg c]  }| j	                  |«      ‘Œ c}«      «      S c c}w )Nr   r   z{}[{}]r]   )rj   rn   r)  rp   ra   )re   rr   r3  ÚindexÚinds        rf   Ú_print_Indexedz PythonCodePrinter._print_Indexed4  sT   € Ø�y‰y˜‰|ˆØ—	‘	˜!˜"�ˆØ�‰œs 4›y¨$¯)©)ÐQVÖ4WÈ#°T·[±[ÀÕ5EÒ4WÓ*XÓYÐYùÒ4Ws   ÁA&c                 ó(   — | j                  ||¬«      S )N)r7  ©r;  ©re   rr   r7  s      rf   Ú
_print_PowzPythonCodePrinter._print_Pow9  s   € Ø×Ñ ¨xÐÓ8Ð8ru   c                 óN   — dj                  |j                  |j                  «      S )Nz{}/{})rn   ÚpÚqrº   s     rf   Ú_print_Rationalz!PythonCodePrinter._print_Rational<  s   € Ø�~‰~˜dŸf™f d§f¡fÓ-Ð-ru   c                 ó$   — | j                  |«      S r_   ©r¶  rº   s     rf   Ú_print_HalfzPythonCodePrinter._print_Half?  s   € Ø×#Ñ# DÓ)Ð)ru   c                 óR   — | j                  t        |j                  d   d«      «      S )Nr   r   )rÉ   r   rj   rº   s     rf   Ú_print_fraczPythonCodePrinter._print_fracB  s    € Ø�‰œs 4§9¡9¨Q¡<°Ó3Ó4Ð4ru   c                 ó  •— t         ‰| �  |«      }|| j                  v r=| j                  d   rd}t	        |j                  |«      «      ‚|| j                  d   z   S d|v r"|j                  dd«      j                  dd«      S |S )NÚerror_on_reservedzVThis expression includes the symbol "{}" which is a reserved keyword in this language.Úreserved_word_suffixú{rÌ   ú})r‡   Ú_print_SymbolrA  r‰   r�   rn   Úreplace)re   rr   ri   Úmsgrl   s       €rf   rÁ  zPythonCodePrinter._print_SymbolE  s‡   ø€ ä‰wÑ$ TÓ*ˆà�4×&Ñ&Ñ&Ø�~‰~Ð1Ò2ð<�ä  §¡¨DÓ!1Ó2Ð2Ø˜$Ÿ.™.Ð)?Ñ@Ñ@Ð@Ø�D‰[Ø—<‘<  RÓ(×0Ñ0°°bÓ9Ð9àˆKru   ©F)rm   r<  r=  r§  r©  r   r®  r²  r¶  r¹  r»  rÁ  r	   Ú_print_not_supportedÚ_print_lowergammaÚ_print_uppergammaÚ_print_fresnelcÚ_print_fresnelsrQ  )rl   s   @rf   r¢  r¢  '  sc   ø„ òNòNòòZó
9ò.ò*ò5ôð $×8Ñ8ÐØ#×8Ñ8ÐØ!×6Ñ6€OØ!×6Ñ6„Oru   r¢  z	_print_%sc                 ó6   — t        |«      j                  | «      S )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)rr   r”   s     rf   ÚpycoderÌ  a  s   € ô. ˜XÓ&×.Ñ.¨tÓ4Ð4ru   z
log1p log2ÚbetaÚfracÚfresnelcÚfresnelsÚsignrO   ÚhyperÚmeijergÚbesseljÚbesselyÚbesseliÚbesselk)rÍ  rÎ  rÏ  rÐ  rÑ  rO   rÒ  rÓ  rÔ  rÕ  rÖ  r×  ÚphiÚeulerÚcatalanÚninf)rV   rW   ÚGoldenRatioÚ
EulerGammaÚCatalanrZ   rY   ÚNegativeInfinityc                 ó¼   — g }g }| j                   D ]F  }t        |«      dk(  r|\  }}}nt        d«      ‚|j                  |«       |j                  ||f«       ŒH ||fS )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          rf   Ú_unpack_integral_limitsré  —  sw   € ð ÐØ€FØ*×1Ñ1ò 2ÐÜÐ Ó! QÒ&Ø8IÑ5ˆO˜[©+ä%Ð&MÓNÐNØ×Ñ Ô0Ø�‰�{ KÐ0Õ1ð2ð ˜VÐ#Ð#ru   c                   óH  — e Zd ZdZdZdZ e eej                  «       e
j                  «       D � ��cg c]  \  }}|d|z   f‘Œ c}}} «      «      Zej                  «       D � ��ci c]  \  }}|d|z   “Œ c}}} Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zdd„Zd„ Zyc c}}} w c c}}} w )ÚMpmathPrinterzH
    Lambda printer for mpmath which maintains precision for floats
    Ú_mpmathcodezPython with mpmathzmpmath.c                 óž   — t        t        t        t        |j                  «      «      «      }dj                  | j                  d«      |¬«      S )Nz{func}({args})ú
mpmath.mpf)rõ   rj   )r)  Útupler—  ÚintÚ_mpf_rn   ro   )re   rR   rj   s      rf   Ú_print_FloatzMpmathPrinter._print_Float¸  s@   € ô ”5œœS !§'¡'Ó*Ó+Ó,ˆØ×&Ñ&¨D×,?Ñ,?ÀÓ,MÐTXÐ&ÓYÐYru   c                 ó¬   — dj                  | j                  d«      | j                  |j                  «      | j                  |j                  «      ¬«      S )Nz{func}({p})/{func}({q})rî  )rõ   rµ  r´  )rn   ro   ra   rµ  r´  r¦  s     rf   r¶  zMpmathPrinter._print_RationalÂ  sH   € Ø(×/Ñ/Ø×$Ñ$ \Ó2Ø�k‰k˜!Ÿ#™#ÓØ�k‰k˜!Ÿ#™#Óð 0ó 
ð 	
ru   c                 ó$   — | j                  |«      S r_   r¸  r¦  s     rf   r¹  zMpmathPrinter._print_HalfÉ  s   € Ø×#Ñ# AÓ&Ð&ru   c                 óÖ   — dj                  | j                  d«      | j                  |j                  d   «      | j                  |j                  d   «      | j                  d«      «      S )Nz{}({}, {}, {})úmpmath.gammaincr   r   z
mpmath.infr¥  r¦  s     rf   rÇ  zMpmathPrinter._print_uppergammaÌ  sZ   € Ø×&Ñ&Ø×ÑÐ 1Ó2Ø�K‰K˜Ÿ™˜q™	Ó"Ø�K‰K˜Ÿ™˜q™	Ó"Ø×Ñ Ó-ó	/ð 	/ru   c                 ó¶   — dj                  | j                  d«      | j                  |j                  d   «      | j                  |j                  d   «      «      S )Nz{}({}, 0, {})rö  r   r   r¥  r¦  s     rf   rÆ  zMpmathPrinter._print_lowergammaÓ  sL   € Ø×%Ñ%Ø×ÑÐ 1Ó2Ø�K‰K˜Ÿ™˜q™	Ó"Ø�K‰K˜Ÿ™˜q™	Ó"ó$ð 	$ru   c                 ó|   — dj                  | j                  d«      | j                  |j                  d   «      «      S )Nz{0}({1})/{0}(2)z
mpmath.logr   r¥  r¦  s     rf   Ú_print_log2zMpmathPrinter._print_log2Ù  s8   € Ø ×'Ñ'Ø×Ñ Ó-¨t¯{©{¸1¿6¹6À!¹9Ó/EóGð 	Gru   c                 ó|   — dj                  | j                  d«      | j                  |j                  d   «      «      S )Nz{}({})zmpmath.log1pr   r¥  r¦  s     rf   Ú_print_log1pzMpmathPrinter._print_log1pÝ  s6   € Ø�‰Ø×Ñ Ó/°·±¸Q¿V¹VÀA¹YÓ1GóIð 	Iru   c                 ó*   — | j                  ||d¬«      S )Nzmpmath.sqrt©r7  rL   r°  r±  s      rf   r²  zMpmathPrinter._print_Powá  s   € Ø×Ñ ¨x¸mÐÓLÐLru   c           	      ó  ‡ — t        |«      \  }}dj                  ‰ j                  d«      dj                  t	        ‰ j
                  |«      «      ‰ j                  |j                  d   «      dj                  ˆ fd„|D «       «      «      S )Nz{}(lambda {}: {}, {})zmpmath.quadr]   r   c              3   ób   •K  — | ]&  }d t        t        ‰j                  |«      «      z  –— Œ( y­w)z(%s, %s)N)rï  r—  ra   )rc   rn  re   s     €rf   rg   z0MpmathPrinter._print_Integral.<locals>.<genexpr>ë  s&   øè ø€ ÒRÀa˜*¤u¬S°·±¸aÓ-@Ó'AÕAÑRùs   ƒ,/)ré  rn   ro   rp   r—  ra   rj   )re   rR   rä  rì   s   `   rf   Ú_print_IntegralzMpmathPrinter._print_Integralä  st   ø€ Ü#:¸1Ó#=Ñ Ð˜&à&×-Ñ-Ø×#Ñ# MÓ2Ø—	‘	œ#˜dŸk™kÐ+;Ó<Ó=Ø—‘˜AŸF™F 1™IÓ&Ø—	‘	ÓRÈ6ÔRÓRó	Tð 	Tru   NrÄ  )rm   r<  r=  Ú__doc__r>  r?  r�   r   rC  rD  Ú_known_functions_mpmathr‘   Ú_known_constants_mpmathr“   rò  r¶  r¹  rÇ  rÆ  rù  rû  r²  r   )rc   rR  rS  s   000rf   rë  rë  ª  s½   „ ñð  €Kà#€Há
‰uØ×ÑÓ Ø(?×(EÑ(EÓ(G×HÐH¡  1ˆ!ˆY˜‰]Ò	ÔHóó €Cð '>×&CÑ&CÓ&E×
FÐ
F™d˜a ˆ1ˆi˜‰k‰>Ô
F€CòZò
ò'ò/ò$òGòIóMóTùôa 	Iùä
Fs   ²BÁ$Brë  c                   óF   — e Zd ZdZ eej                  d¬«      Zd„ Zdd„Zy)ÚSymPyPrinterzPython with SymPyFr0  c                 óæ   ‡ — |j                   j                  xs d}‰ j                  ||rdndz   |j                   j                  z   «      ›ddj	                  ˆ fd„|j
                  D «       «      ›d�S )NrÌ   rœ   rž   r]   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr_   r`   rb   s     €rf   rg   z/SymPyPrinter._print_Function.<locals>.<genexpr>  s   øè ø€ Ò%L¸3 d§k¡k°#×&6Ñ%Lùrh   r±   )rõ   r<  ro   rm   rp   rj   )re   rr   Úmods   `  rf   Ú_print_FunctionzSymPyPrinter._print_Functionþ  s_   ø€ Ø�i‰i×"Ñ"Ò( bˆØ×.Ñ.¨s¹S±cÀbÑ/IÈDÏIÉI×L^ÑL^Ñ/^Õ_ØŸ9™9Ó%LÀ$Ç)Á)Ô%LÕMðOð 	Oru   c                 ó*   — | j                  ||d¬«      S )Nz
sympy.sqrtrý  r°  r±  s      rf   r²  zSymPyPrinter._print_Pow  s   € Ø×Ñ ¨x¸lÐÓKÐKru   NrÄ  )	rm   r<  r=  r?  r�   rz   rH  r	  r²  r˜   ru   rf   r  r  õ  s*   „ à"€HáØ!×3Ñ3ØôÐò
Oô
Lru   r  N)#r  Úcollectionsr   Ú	itertoolsr   Ú
sympy.corer   Úsympy.core.modr   r   Úcodeprinterr	   r@  rC  rE  rF  rt   rx   rz   rU  r¢  r‘   rR  ÚsetattrrÌ  r    Ú_not_in_mpmathrD  Ú
_in_mpmathr�   r  r  ré  rë  r  )rR  rS  s   00rf   ú<module>r     së  ðñõ
 $Ý Ý Ý Ý "Ý $ò€ð ØØñÐ ð
Ø
ˆFðàˆWðð ˆFðð ˆWð	ð
 ˆFðð ˆWðð ˆWðð ˆvðð 
ˆ5ðð ˆFðð 
ˆ5ðð ˆFðð 
ˆ5ðð ˆWðð �ðð  ˆWð!ð" ˆWð#ð$ ØØØØ
ØØØØØØØØò=Ð ðD Ø
Ø	ØØØñÐ ò\ò&ô
N2 ô N2÷b
E-ñ E-ôP07Ð1ô 07ðf 
×	Ñ	ò C€AÙÐ˜{¨Q™Ð0AÕBðCð 
ò D€AÙÐ˜{¨Q™Ð0BÕCðDò5ð4 ×#Ñ#Ó%€Ø!6×!<Ñ!<Ó!>×Z™˜˜AÀ!È>ÒBYˆq�!ŠfÓZ€
Ù˜zñ ØØØØØØØØØØØØñ.ñ Ð ð Ø
ØØØØØØñ	Ð ò$ô&ATÐ%ô ATðH 
×	Ñ	ò ?€AÙˆM˜;¨™?Ð,=Õ>ð?ð 
!ò @€AÙˆM˜;¨™?Ð,>Õ?ð@ôLÐ,õ Lùós [s   Ã=FÄ
F