§
    OŠtj¨i  ã                   óà  — 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,d-œ¥Zd.d/d.d0d1d1d2œZd3„ Zd4„ Z G d5„ d6e¦  «        Z G d7„ d8¦  «        Z G d9„ d:e¦  «        Zej        D ]Z eed;ez  e¦  «         ŒeD ]Z eed;ez  e¦  «         Œd<„ ZddlmZ dd=lmZ dd*d$dd(d+ddddd)d,dddd>œZd/d.d0d?d@œZ G dA„ dBe¦  «        Zej        D ]Z eed;ez  ej        ¦  «         ŒeD ]Z eed;ez  ej        ¦  «         ŒdC                     ¦   «         ZdD„ e                     ¦   «         D ¦   «         Z  e!e fi dEdFdGdHdIdJdKdLdMdNdOdPdQœ¤ŽZ"d.d/dRdSdTd1d0dUdVœZ#dW„ Z$ G dX„ dYe¦  «        Z%e%j        D ]Z ee%d;ez  e¦  «         Œe#D ]Z ee%d;ez  e¦  «         Œ G dZ„ d[e¦  «        Z&d\S )]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                 óÎ   ‡ — ‰ j         |j        j                 }d                     ‰                      |¦  «        d                     ˆ fd„|j        D ¦   «         ¦  «        ¬¦  «        S )Nz{name}({args})ú, c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S ©N©Ú_print©Ú.0ÚargÚselfs     €úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/printing/pycode.pyú	<genexpr>z$_print_known_func.<locals>.<genexpr>G   s/   øè è € Ð2YÐ2YÈ°4·;²;¸sÑ3CÔ3CÐ2YÐ2YÐ2YÐ2YÐ2YÐ2Yó    )ÚnameÚargs)Úknown_functionsÚ	__class__Ú__name__ÚformatÚ_module_formatÚjoinrk   ©rf   ÚexprÚknowns   `  rg   Ú_print_known_funcru   D   sk   ø€ ØÔ  ¤Ô!8Ô9€EØ×"Ò"¨×(;Ò(;¸EÑ(BÔ(BØ(,¯	ª	Ð2YÐ2YÐ2YÐ2YÈtÌyÐ2YÑ2YÔ2YÑ(ZÔ(Zð #ñ \ô \ð \ri   c                 óZ   — | j         |j        j                 }|                      |¦  «        S r`   )Úknown_constantsrm   rn   rp   rr   s      rg   Ú_print_known_constrx   J   s(   € ØÔ  ¤Ô!8Ô9€EØ×Ò˜uÑ%Ô%Ð%ri   c            	       ó  ‡ — e Zd ZdZdZeZdZdZ e	 e
e                     ¦   «         d„ e                     ¦   «         D ¦   «         ¦  «        ¦  «        Zd„ e                     ¦   «         D ¦   «         Zddd	d
œZ e	ej        i ddddd¬¦  «        Zd2ˆ fd„	Zd„ Zd3d„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:d4d1„Z;ˆ xZ<S )5ÚAbstractPythonCodePrinterÚ_pythoncodeÚPythonNz    c                 ó"   — g | ]\  }}|d |z   f‘ŒS ©zmath.© ©rd   ÚkÚvs      rg   ú
<listcomp>z$AbstractPythonCodePrinter.<listcomp>W   s%   € ÐDÐDÐD™d˜a ˆ!ˆW�q‰[Ð	ÐDÐDÐDri   c                 ó    — i | ]\  }}|d |z   “ŒS r~   r   r€   s      rg   ú
<dictcomp>z$AbstractPythonCodePrinter.<dictcomp>Y   s"   € Ð
BÐ
BÐ
B™D˜A˜qˆ1ˆg�a‰iÐ
BÐ
BÐ
Bri   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        ¦  «        }|dk    rt          d¦  «        ‚|| _        t          t          ¦  «        | _        t          | j        fi |pi                      di ¦  «        ¤Ž| _        t          | j        fi |pi                      di ¦  «        ¤Ž| _        d S )Nr�   r   zpython{}r‡   zOnly Python 3 is supported.rˆ   Úuser_constants)ÚsuperÚ__init__Ú	_settingsÚsysro   Úversion_infoÚmajorÚ
ValueErrorr�   r   ÚsetÚmodule_importsÚdictÚ_kfÚgetrl   Ú_kcrw   )rf   ÚsettingsÚstdr“   rm   s       €rg   r‘   z"AbstractPythonCodePrinter.__init__e   sÿ   ø€ Ý‰Œ×Ò˜Ñ"Ô"Ð"ð Œn˜ZÔ(ˆØˆ;ØˆJˆJˆJØ×#Ò# CÔ$4Ô$:Ñ;Ô;ˆCØ�)ÒÐÝÐ:Ñ;Ô;Ð;ØˆŒå)­#Ñ.Ô.ˆÔõ  $ D¤Hð  #ð  #°°¸R×0DÒ0DØ˜bñ1"ô 1"ð  #ð  #ˆÔå# D¤Hð  #ð  #°°¸R×0DÒ0DØ˜bñ1"ô 1"ð  #ð  #ˆÔÐÐri   c                 ó   — |›d|›�S ©Nz = r   )rf   rj   Úvalues      rg   Ú_declare_number_constz/AbstractPythonCodePrinter._declare_number_consty   s   € Ø ˜D˜D % %Ð(Ð(ri   c                 ó�  — |                      d¦  «        }|rTt          |¦  «        dk    rA| j        d                     |d d…         ¦  «                                      |d         ¦  «         | j        d         r|S |                      d¦  «        d                               d¦  «        d                               d¦  «        d         S )Nú.r   éÿÿÿÿr‹   ú(r   ú[)ÚsplitÚlenr˜   rq   Úaddr’   )rf   ÚfqnÚregisterÚpartss       rg   rp   z(AbstractPythonCodePrinter._module_format|   s­   € Ø—	’	˜#‘”ˆØð 	E�˜E™
œ
 Qš˜ØÔ §¢¨¨s°¨s¬Ñ 4Ô 4Ô5×9Ò9¸%À¼)ÑDÔDÐDàŒ>Ð3Ô4ð 	BØˆJà—9’9˜S‘>”> !Ô$×*Ò*¨3Ñ/Ô/°Ô2×8Ò8¸Ñ=Ô=¸bÔAÐAri   c                 ó   — |S r`   r   )rf   Úliness     rg   Ú_format_codez&AbstractPythonCodePrinter._format_code†   s   € Øˆri   c                 ó,   — d                      |¦  «        S )Nz{}©ro   ©rf   Ú
codestrings     rg   Ú_get_statementz(AbstractPythonCodePrinter._get_statement‰   s   € Ø�{Š{˜:Ñ&Ô&Ð&ri   c                 ó,   — d                      |¦  «        S )Nz  # {}r²   )rf   Útexts     rg   Ú_get_commentz&AbstractPythonCodePrinter._get_commentŒ   s   € Ø�Š˜tÑ$Ô$Ð$ri   c                 ó  — t          |¦  «        dk    r|                      |d         ¦  «        S |                      |¦  «        ›d|                      ||dd…         ¦  «        ›d|                      |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©   rb   rp   Ú_expand_fold_binary_op)rf   Úoprk   s      rg   r»   z0AbstractPythonCodePrinter._expand_fold_binary_op�   s†   € õ ˆt‰9Œ9˜Š>ˆ>Ø—;’;˜t AœwÑ'Ô'Ð'ð ×#Ò# BÑ'Ô'Ð'Ð'Ø×+Ò+¨B°°S°b°S´	Ñ:Ô:Ð:Ð:Ø—’˜D œHÑ%Ô%Ð%Ð%ðð ri   c           	      ó.  — t          |¦  «        dk    r|                      |d         ¦  «        S t          |¦  «        }|dz  }|                      |¦  «        ›d|                      |d|…         ¦  «        ›d|                      ||d…         ¦  «        ›d�S )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   rp   Ú_expand_reduce_binary_op)rf   r¼   rk   ÚNÚNhalfs        rg   r¿   z2AbstractPythonCodePrinter._expand_reduce_binary_op¦   sœ   € õ ˆt‰9Œ9˜Š>ˆ>Ø—;’;˜t AœwÑ'Ô'Ð'å�D‘	”	ˆAØ˜‘FˆEà×#Ò# BÑ'Ô'Ð'Ð'Ø×-Ò-¨d°6°E°6¬lÑ;Ô;Ð;Ð;Ø×-Ò-¨d°5°6°6¬lÑ;Ô;Ð;Ð;ðð ri   c                 ó   — dS )Nzfloat('nan')r   ©rf   rs   s     rg   Ú
_print_NaNz$AbstractPythonCodePrinter._print_NaN¿   ó   € Øˆ~ri   c                 ó   — dS )Nzfloat('inf')r   rÃ   s     rg   Ú_print_Infinityz)AbstractPythonCodePrinter._print_InfinityÂ   rÅ   ri   c                 ó   — dS )Nzfloat('-inf')r   rÃ   s     rg   Ú_print_NegativeInfinityz1AbstractPythonCodePrinter._print_NegativeInfinityÅ   s   € Øˆri   c                 ó,   — |                       |¦  «        S r`   )rÄ   rÃ   s     rg   Ú_print_ComplexInfinityz0AbstractPythonCodePrinter._print_ComplexInfinityÈ   s   € Ø�Š˜tÑ$Ô$Ð$ri   c                 ó\   ‡ ‡— t          |¦  «        Š dj        ˆˆ fd„|j        D ¦   «         Ž S )Nz{} % {}c              3   óD   •K  — | ]}‰                      |‰¦  «        V — Œd S r`   )Úparenthesize)rd   ÚxÚPRECrf   s     €€rg   rh   z7AbstractPythonCodePrinter._print_Mod.<locals>.<genexpr>Í   s3   øè è € Ð"QÐ"QÀ! 4×#4Ò#4°Q¸Ñ#=Ô#=Ð"QÐ"QÐ"QÐ"QÐ"QÐ"Qri   )r   ro   rk   ©rf   rs   rÐ   s   ` @rg   Ú
_print_Modz$AbstractPythonCodePrinter._print_ModË   s;   øø€ Ý˜$ÑÔˆØ �	Ô Ð"QÐ"QÐ"QÐ"QÐ"QÀtÄyÐ"QÑ"QÔ"QÐRÐSri   c                 ó‚  — g }d}|j         D ]Ô}|j        }|j        }|dk    r|                     d¦  «         |                     d¦  «         |                     |                      |¦  «        ¦  «         |                     d¦  «         |                     d¦  «         |                     |                      |¦  «        ¦  «         |                     d¦  «         |dz  }ŒÕ|d d…         }|d         dk    r |d d	…         }|                     d¦  «         n|                     d
¦  «         d                     |¦  «        S )Nr   r¦   rº   z if z else r   r¥   r   éþÿÿÿz else None)Ú )rk   rs   ÚcondÚappendrb   rq   )rf   rs   ÚresultÚire   rS   Úcs          rg   Ú_print_Piecewisez*AbstractPythonCodePrinter._print_PiecewiseÏ   s1  € ØˆØˆØ”9ð 	ð 	ˆCØ”ˆAØ”ˆAØ�AŠvˆvØ—’˜cÑ"Ô"Ð"Ø�MŠM˜#ÑÔÐØ�MŠM˜$Ÿ+š+ a™.œ.Ñ)Ô)Ð)Ø�MŠM˜#ÑÔÐØ�MŠM˜&Ñ!Ô!Ð!Ø�MŠM˜$Ÿ+š+ a™.œ.Ñ)Ô)Ð)Ø�MŠM˜(Ñ#Ô#Ð#Ø�‰FˆAˆAØ˜˜˜”ˆØ�"Œ:˜ÒÐØ˜C˜R˜C”[ˆFØ�MŠM˜#ÑÔÐÐà�MŠM˜-Ñ(Ô(Ð(Ø�wŠw�v‰ŒÐri   c                 ó  •— dddddddœ}|j         |v rQ|                      |j        ¦  «        }|                      |j        ¦  «        }d                     |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_oprb   rå   ræ   ro   r�   Ú_print_Relational)rf   rs   r¼   rå   ræ   rm   s        €rg   rè   z+AbstractPythonCodePrinter._print_Relationalæ   s�   ø€ ð ØØØØØ!ð
ð 
ˆð Œ;˜"ÐÐØ—+’+˜dœhÑ'Ô'ˆCØ—+’+˜dœhÑ'Ô'ˆCØ'×.Ò.°$´+À3ÈCÐ.ÑPÔPÐPÝ‰wŒw×(Ò(¨Ñ.Ô.Ð.ri   c                 ó^   — ddl m} |                      |                     |¦  «        ¦  «        S )Nr   )Ú	Piecewise)Ú$sympy.functions.elementary.piecewiserê   rb   Úrewrite)rf   rs   rê   s      rg   Ú
_print_ITEz$AbstractPythonCodePrinter._print_ITEö   s2   € ØBÐBÐBÐBÐBÐBØ�{Š{˜4Ÿ<š<¨	Ñ2Ô2Ñ3Ô3Ð3ri   c                 óÀ   ‡ — ˆ fd„|j         d d d…         D ¦   «         }d                     ‰                      |j        ¦  «        d                     |¦  «        ¬¦  «        S )Nc              3   óÂ   •K  — | ]Y\  }}}d                       ‰                     |¦  «        ‰                     |¦  «        ‰                     |¦  «        ¬¦  «        V — ŒZdS )zfor {i} in range({a}, {b}+1))rÙ   ÚaÚbN)ro   rb   )rd   rÙ   rð   rñ   rf   s       €rg   rh   z7AbstractPythonCodePrinter._print_Sum.<locals>.<genexpr>û   s{   øè è € ð .ð .ñ
 ��1�að	 +×1Ò1Ø—+’+˜a‘.”.Ø—+’+˜a‘.”.Ø—+’+˜a‘.”.ð 2ñ "ô "ð.ð .ð .ð .ð .ð .ri   r¥   z"(builtins.sum({function} {loops}))ú )ÚfunctionÚloops)Úlimitsro   rb   ró   rq   )rf   rs   rô   s   `  rg   Ú
_print_Sumz$AbstractPythonCodePrinter._print_Sumú   sw   ø€ ð.ð .ð .ð .ð
  œ; t t¨ tÔ,ð.ñ .ô .ˆð 4×:Ò:Ø—[’[ ¤Ñ/Ô/Ø—(’(˜5‘/”/ð ;ñ #ô #ð 	#ri   c                 ó   — dS )NÚ1jr   rÃ   s     rg   Ú_print_ImaginaryUnitz.AbstractPythonCodePrinter._print_ImaginaryUnit  s   € Øˆtri   c                 ó�   — |j         \  }}d                     |                      |¦  «        |                      |¦  «        ¬¦  «        S )Nz(1 if {a} == {b} else 0))rð   rñ   )rk   ro   rb   )rf   rs   rð   rñ   s       rg   Ú_print_KroneckerDeltaz/AbstractPythonCodePrinter._print_KroneckerDelta  sD   € ØŒy‰ˆˆ1à)×0Ò0Ø—’˜A‘”Ø—’˜A‘”ð 1ñ 
ô 
ð 	
ri   c                 óª   — |j         j        }| j                             ||¦  «        }|›d|                      |                     ¦   «         ¦  «        ›d�S )Nr¦   rº   )rm   rn   rl   r›   rb   Útolist)rf   rs   rj   Úfuncs       rg   Ú_print_MatrixBasez+AbstractPythonCodePrinter._print_MatrixBase  sM   € ØŒ~Ô&ˆØÔ#×'Ò'¨¨dÑ3Ô3ˆØ˜4˜4 §¢¨T¯[ª[©]¬]Ñ!;Ô!;Ð!;Ð!;Ð<Ð<ri   c                 ó,   — |                       |¦  «        S r`   )rÿ   rÃ   s     rg   ú<lambda>z"AbstractPythonCodePrinter.<lambda>  s   € ˜4×1Ò1°$Ñ7Ô7€ ri   c                 ól   ‡ — d                      ˆ fd„|                     d¦  «        D ¦   «         ¦  «        S )Nú
c                 ó$   •— g | ]}‰j         |z   ‘ŒS r   )Útab)rd   Úlinerf   s     €rg   rƒ   z@AbstractPythonCodePrinter._indent_codestring.<locals>.<listcomp>   s   ø€ ÐMÐMÐM¨d˜$œ( T™/ÐMÐMÐMri   )rq   r¨   r³   s   ` rg   Ú_indent_codestringz,AbstractPythonCodePrinter._indent_codestring  s8   ø€ Ø�yŠyÐMÐMÐMÐM°j×6FÒ6FÀtÑ6LÔ6LÐMÑMÔMÑNÔNÐNri   c                 ó  ‡ — d                      ˆ fd„|j        D ¦   «         ¦  «        }d                     ‰                      |j        ¦  «        d                      ˆ fd„|j        D ¦   «         ¦  «        ‰                      |¦  «        ¬¦  «        S )Nr  c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r`   ra   rc   s     €rg   rh   zFAbstractPythonCodePrinter._print_FunctionDefinition.<locals>.<genexpr>#  s/   øè è € Ð>Ð>¨s˜$Ÿ+š+ cÑ*Ô*Ð>Ð>Ð>Ð>Ð>Ð>ri   z def {name}({parameters}):
{body}r^   c                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS r   )rb   Úsymbol)rd   Úvarrf   s     €rg   rƒ   zGAbstractPythonCodePrinter._print_FunctionDefinition.<locals>.<listcomp>&  s'   ø€ Ð!SÐ!SÐ!S¸c $§+¢+¨c¬jÑ"9Ô"9Ð!SÐ!SÐ!Sri   )rj   Ú
parametersÚbody)rq   r  ro   rb   rj   r  r  )rf   Úfdr  s   `  rg   Ú_print_FunctionDefinitionz3AbstractPythonCodePrinter._print_FunctionDefinition"  s�   ø€ Ø�yŠyÐ>Ð>Ð>Ð>°b´gÐ>Ñ>Ô>Ñ?Ô?ˆØ2×9Ò9Ø—’˜RœWÑ%Ô%Ø—y’yÐ!SÐ!SÐ!SÐ!SÀRÄ]Ð!SÑ!SÔ!SÑTÔTØ×(Ò(¨Ñ.Ô.ð :ñ 
ô 
ð 	
ri   c                 óÔ   ‡ — d                      ˆ fd„|j        D ¦   «         ¦  «        }d                     ‰                      |j        ¦  «        ‰                      |¦  «        ¬¦  «        S )Nr  c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r`   ra   rc   s     €rg   rh   z9AbstractPythonCodePrinter._print_While.<locals>.<genexpr>+  s/   øè è € Ð?Ð?¨s˜$Ÿ+š+ cÑ*Ô*Ð?Ð?Ð?Ð?Ð?Ð?ri   zwhile {cond}:
{body})rÖ   r  )rq   r  ro   rb   Ú	conditionr  )rf   Úwhlr  s   `  rg   Ú_print_Whilez&AbstractPythonCodePrinter._print_While*  sj   ø€ Ø�yŠyÐ?Ð?Ð?Ð?°c´hÐ?Ñ?Ô?Ñ@Ô@ˆØ&×-Ò-Ø—’˜Sœ]Ñ+Ô+Ø×(Ò(¨Ñ.Ô.ð .ñ 
ô 
ð 	
ri   c                 ó„   — |                       |j        j        ¦  «        ›d|                       |j        j        ¦  «        ›�S r    )rb   Úvariabler  r¡   )rf   Údecls     rg   Ú_print_Declarationz,AbstractPythonCodePrinter._print_Declaration1  s=   € à�KŠK˜œÔ,Ñ-Ô-Ð-Ð-Ø�KŠK˜œÔ+Ñ,Ô,Ð,ð
ð 	
ri   c                 ó   — dS )Nr   r   )rf   Úbts     rg   Ú_print_BreakTokenz+AbstractPythonCodePrinter._print_BreakToken7  s   € Øˆwri   c                 óD   — |j         \  }d|                      |¦  «        z  S )Nz	return %s©rk   rb   )rf   Úretre   s      rg   Ú_print_Returnz'AbstractPythonCodePrinter._print_Return:  s"   € ØŒx‰ˆØ˜TŸ[š[¨Ñ-Ô-Ñ-Ð-ri   c                 óD   — |j         \  }d|                      |¦  «        z  S )Nzraise %sr  )rf   Úrsre   s      rg   Ú_print_Raisez&AbstractPythonCodePrinter._print_Raise>  s"   € ØŒw‰ˆØ˜DŸKšK¨Ñ,Ô,Ñ,Ð,ri   c                 óD   — |j         \  }d|                      |¦  «        z  S )NzRuntimeError(%s)r  )rf   ÚreÚmessages      rg   Ú_print_RuntimeError_z.AbstractPythonCodePrinter._print_RuntimeError_B  s"   € Ø”7‰ˆØ! D§K¢K°Ñ$8Ô$8Ñ8Ð8ri   c                 ó.  ‡ — d                      ˆ fd„|j        D ¦   «         ¦  «        }ddlm} |j        |k    r.d                     ‰                      |j        ¦  «        |¦  «        }|j        d k    r |d‰                      |j        ¦  «        z  z  }d|z  S )Nr^   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r`   ra   rc   s     €rg   rh   z9AbstractPythonCodePrinter._print_Print.<locals>.<genexpr>G  s/   øè è € ÐLÐL°S §¢¨CÑ 0Ô 0ÐLÐLÐLÐLÐLÐLri   r   )Únonez{} % ({}), end=""z	, file=%sz	print(%s))rq   Ú
print_argsÚsympy.codegen.astr*  Úformat_stringro   rb   Úfile)rf   Úprntr+  r*  s   `   rg   Ú_print_Printz&AbstractPythonCodePrinter._print_PrintF  s¬   ø€ Ø—Y’YÐLÐLÐLÐL¸D¼OÐLÑLÔLÑMÔMˆ
Ø*Ð*Ð*Ð*Ð*Ð*ØÔ Ò%Ð%Ø,×3Ò3Ø—’˜DÔ.Ñ/Ô/Øñô ˆJð Œ9˜ÒÐØ˜+¨¯ª°D´IÑ(>Ô(>Ñ>Ñ>ˆJØ˜ZÑ'Ð'ri   c                 óê   — t          |j        ¦  «        dk    r|                      d¦  «        S t          |j        ¦  «        dk    r|                      d¦  «        S |                      |j        ¦  «        S )NÚstdoutz
sys.stdoutÚstderrz
sys.stderr)Ústrrj   rp   rb   )rf   Ústrms     rg   Ú_print_Streamz'AbstractPythonCodePrinter._print_StreamR  sd   € ÝˆtŒy‰>Œ>˜XÒ%Ð%Ø×&Ò& |Ñ4Ô4Ð4Ý�”‰^Œ^˜xÒ'Ð'Ø×&Ò& |Ñ4Ô4Ð4à—;’;˜tœyÑ)Ô)Ð)ri   c                 ó   — dS )Nr   r   )rf   re   s     rg   Ú_print_NoneTokenz*AbstractPythonCodePrinter._print_NoneTokenZ  s   € Øˆvri   ú	math.sqrtc                 ó  — t          |¦  «        }|j        t          j        k    rH|sF|                      |¦  «        }|                      |j        ¦  «        }d                     ||¬¦  «        S |j        rÅ|sÃ|j         t          j        u rY|                      |¦  «        }|                      t          j	        ¦  «        }|                      |j        ¦  «        }|› d|› d|› d�S |j        t          j
        u rC|                      t          j	        ¦  «        }|                      |j        |d¬¦  «        }|› d|› �S |                      |j        |d¬¦  «        }|                      |j        |d¬¦  «        }	d                     ||	¦  «        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þ   re   ú/r¦   rº   F©Ústrictz{}**{})r   r>   r   ÚHalfrp   rb   Úbasero   Úis_commutativeÚOneÚNegativeOnerÎ   )
rf   rs   ÚrationalrM   rÐ   rþ   re   ÚnumÚbase_strÚexp_strs
             rg   Ú_hprint_Powz%AbstractPythonCodePrinter._hprint_Pow]  s|  € õV ˜$ÑÔˆàŒ8•q”vÒÐ hÐØ×&Ò& tÑ,Ô,ˆDØ—+’+˜dœiÑ(Ô(ˆCØ"×)Ò)¨t¸Ð)Ñ=Ô=Ð=àÔð 		& xð 		&Ø”ˆy�AœFÐ"Ð"Ø×*Ò*¨4Ñ0Ô0�Ø—k’k¥!¤%Ñ(Ô(�Ø—k’k $¤)Ñ,Ô,�ØÐ-Ð- Ð-Ð- sÐ-Ð-Ð-Ð-ØŒx�1œ=Ð(Ð(Ø—k’k¥!¤%Ñ(Ô(�Ø×'Ò'¨¬	°4ÀÐ'ÑFÔF�Ø�~�~ �~�~Ð%ð ×$Ò$ T¤Y°¸UÐ$ÑCÔCˆØ×#Ò# D¤H¨d¸5Ð#ÑAÔAˆØ�Š˜x¨Ñ1Ô1Ð1ri   r`   )T)Fr9  )=rn   Ú
__module__Ú__qualname__ÚprintmethodÚlanguageÚ_kwÚreserved_wordsÚmodulesr  r™   r   Ú_known_functionsÚitemsÚ_known_functions_mathrš   Ú_known_constants_mathrœ   Ú
_operatorsr	   Ú_default_settingsr‘   r¢   rp   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'  r0  r6  r8  rG  Ú__classcell__©rm   s   @rg   rz   rz   O   sE  ø€ € € € € Ø€KØ€HØ€NØ€GØ
€CØ
ˆ$ˆuˆuØ×ÒÑ Ô ØDÐDÐ&;×&AÒ&AÑ&CÔ&CÐDÑDÔDñô ñ ô €Cð CÐ
BÐ$9×$?Ò$?Ñ$AÔ$AÐ
BÑ
BÔ
B€CØ d°5Ð9Ð9€JØ˜ØÔ%ØØØØ $ØØðñ ô Ðð#ð #ð #ð #ð #ð #ð()ð )ð )ðBð Bð Bð Bðð ð ð'ð 'ð 'ð%ð %ð %ðð ð ð.ð ð ð2ð ð ðð ð ðð ð ð%ð %ð %ðTð Tð Tðð ð ð./ð /ð /ð /ð /ð 4ð 4ð 4ð	#ð 	#ð 	#ðð ð ð
ð 
ð 
ð=ð =ð =ð 	8Ð7ð8Ðð 8Ø"ð8à$ð8ð 	ð8ð 	ð	8ð
 	"ð8ð 	Ø#ðOð Oð Oð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ðð ð ð.ð .ð .ð-ð -ð -ð9ð 9ð 9ð
(ð 
(ð 
(ð*ð *ð *ðð ð ð@2ð @2ð @2ð @2ð @2ð @2ð @2ð @2ri   rz   c                   óV   — 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dS )ÚArrayPrinterc                 óJ   — 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_arrayrb  Ú	Exception)rf   Úindexedrb  s      rg   Ú	_arrayifyzArrayPrinter._arrayify¢  sN   € ØaÐaÐaÐaÐaÐað	Ø+Ð+¨GÑ4Ô4Ð4øÝð 	ð 	ð 	ØˆNˆNˆNð	øøøs   ˆ
 “"¡"c                 ó  — |                       ¦   «         }d}d}d„ |D ¦   «         }g }|D ]e}g }	t          |¦  «        D ]<}
||v r|	                     ||         ¦  «         n|	                     |¦  «         |dz  }Œ=|                     |	¦  «         Œfi }g }g }|D ]e}
|
D ][}||vrt          |¦  «        }|||<   n||         }||z  }||v r||vr|                     |¦  «         ŒF|                     |¦  «         Œ\|dz  }Œf|d d…         }|||fS )NrÕ   r   c                 ó8   — i | ]}|D ]}|t          |¦  «        “ŒŒS r   )r,   )rd   rÙ   Újs      rg   r…   z3ArrayPrinter._get_einsum_string.<locals>.<dictcomp>­  s-   € Ð?Ð?Ð?˜1¸QÐ?Ð?¸ˆQ•�A‘”Ð?Ð?Ð?Ð?ri   r   ú,r¥   )Ú _get_letter_generator_for_einsumÚranger×   Únext)rf   ÚsubranksÚcontraction_indicesÚlettersÚcontraction_stringÚcounterÚdÚindicesÚrank_argÚlindicesrÙ   ÚmappingÚletters_freeÚletters_dumri  Úls                   rg   Ú_get_einsum_stringzArrayPrinter._get_einsum_string©  s€  € Ø×7Ò7Ñ9Ô9ˆØÐØˆØ?Ð?Ð 3Ð?Ñ?Ô?ˆØˆØ ð 	%ð 	%ˆHØˆHÝ˜8‘_”_ð ð �Ø˜a�<�<Ø—O’O A g¤JÑ/Ô/Ð/Ð/à—O’O GÑ,Ô,Ð,Ø˜1‘��Ø�NŠN˜8Ñ$Ô$Ð$Ð$ØˆØˆØˆØð 	&ð 	&ˆAØð +ð +�Ø˜GÐ#Ð#Ý˜W™œ�AØ!"�G˜A‘J�Jà œ
�AØ" aÑ'Ð"Ø˜�6�6Ø Ð+Ð+Ø#×*Ò*¨1Ñ-Ô-Ð-øà ×'Ò'¨Ñ*Ô*Ð*Ð*Ø #Ñ%ÐÐØ/°°°Ô4ÐØ! <°Ð<Ð<ri   c              #   ó´   K  — t          dd¦  «        D ]}t          |¦  «        V — Œt          dd¦  «        D ]}t          |¦  «        V — Œt          d¦  «        ‚)Néa   é{   éA   é[   zout of letters)rl  Úchrr–   )rf   rÙ   s     rg   rk  z-ArrayPrinter._get_letter_generator_for_einsumÌ  se   è è € Ý�r˜3‘”ð 	ð 	ˆAÝ�a‘&”&ˆLˆLˆLˆLÝ�r˜2‘”ð 	ð 	ˆAÝ�a‘&”&ˆLˆLˆLˆLÝÐ)Ñ*Ô*Ð*ri   c                 ó  ‡ ‡— ‰                       ¦   «         Šd                     ˆfd„|j        D ¦   «         ¦  «        }‰                      ‰ j        dz   ‰ j        z   ¦  «        ›d|›dd                     ˆ fd„|j        D ¦   «         ¦  «        ›d�S )	Nrj  c                 ól   •— g | ]0}d                       ˆfd„t          |¦  «        D ¦   «         ¦  «        ‘Œ1S )rÕ   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r   )rm  )rd   ri  rp  s     €rg   rƒ   zEArrayPrinter._print_ArrayTensorProduct.<locals>.<listcomp>.<listcomp>Õ  s   ø€ Ð/PÐ/PÐ/PÀ!µ°W±´Ð/PÐ/PÐ/Pri   )rq   rl  )rd   rÙ   rp  s     €rg   rƒ   z:ArrayPrinter._print_ArrayTensorProduct.<locals>.<listcomp>Õ  sA   ø€ Ð&iÐ&iÐ&iÐVW r§w¢wÐ/PÐ/PÐ/PÐ/PÅuÈQÁxÄxÐ/PÑ/PÔ/PÑ'QÔ'QÐ&iÐ&iÐ&iri   r¤   ú("ú", r^   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   ra   rc   s     €rg   rƒ   z:ArrayPrinter._print_ArrayTensorProduct.<locals>.<listcomp>Ù  s%   ø€ ÐAÐAÐA°˜4Ÿ;š; sÑ+Ô+ÐAÐAÐAri   rº   )rk  rq   rn  rp   Ú_moduleÚ_einsumrk   )rf   rs   rq  rp  s   `  @rg   Ú_print_ArrayTensorProductz&ArrayPrinter._print_ArrayTensorProductÓ  s¤   øø€ Ø×7Ò7Ñ9Ô9ˆØ ŸXšXÐ&iÐ&iÐ&iÐ&iÐ[_Ô[hÐ&iÑ&iÔ&iÑjÔjÐà×#Ò# D¤L°3Ñ$6¸¼Ñ$EÑFÔFÐFÐFØ"Ð"Ð"Ø—	’	ÐAÐAÐAÐA°t´yÐAÑAÔAÑBÔBÐBÐBð
ð 	
ri   c           
      óº  ‡ — ddl m} |j        }|j        }t	          ||¦  «        r.d                     ˆ fd„|j        D ¦   «         ¦  «        }|j        }n*‰                      |¦  «        }t          |j
        ¦  «        g}‰                      ||¦  «        \  }}}	|s‰                      |¦  «        S t	          ||¦  «        r'd                     ˆ fd„|j        D ¦   «         ¦  «        }n‰                      |¦  «        }‰                      ‰ j        dz   ‰ j        z   ¦  «        ›dd                     |d	                     t!          |¦  «        ¦  «        ¦  «        ›d
|›d�S )Nr   ©ÚArrayTensorProductrj  c                 ó@   •— g | ]}d ‰                      |¦  «        z  ‘ŒS ©z%sra   rc   s     €rg   rƒ   z8ArrayPrinter._print_ArrayContraction.<locals>.<listcomp>â  ó*   ø€ ÐMÐMÐM¸C˜d d§k¢k°#Ñ&6Ô&6Ñ7ÐMÐMÐMri   c                 ó@   •— g | ]}d ‰                      |¦  «        z  ‘ŒS r�  ra   rc   s     €rg   rƒ   z8ArrayPrinter._print_ArrayContraction.<locals>.<listcomp>í  r�  ri   r¤   r…  ú{}->{}rÕ   r†  rº   )Ú0sympy.tensor.array.expressions.array_expressionsr�  rs   ro  Ú
isinstancerq   rk   rn  rb   r©   Úshaper{  rp   rˆ  r‰  ro   Úsorted)
rf   rs   r�  r?  ro  ÚelemsÚranksrq  rx  ry  s
   `         rg   Ú_print_ArrayContractionz$ArrayPrinter._print_ArrayContractionÜ  ss  ø€ ØWÐWÐWÐWÐWÐWØŒyˆØ"Ô6Ðå�dÐ.Ñ/Ô/ð 	&Ø—H’HÐMÐMÐMÐMÀ4Ä9ÐMÑMÔMÑNÔNˆEØ”MˆEˆEà—K’K Ñ%Ô%ˆEÝ˜œ‘_”_Ð%ˆEà8<×8OÒ8OÐPUÐWjÑ8kÔ8kÑ5Ð˜L¨+à"ð 	%Ø—;’;˜tÑ$Ô$Ð$Ý�dÐ.Ñ/Ô/ð 	&Ø—H’HÐMÐMÐMÐMÀ4Ä9ÐMÑMÔMÑNÔNˆEˆEà—K’K Ñ%Ô%ˆEà×Ò ¤¨sÑ 2°T´\Ñ AÑBÔBÐBÐBØ�OŠOÐ.°·²½¸|Ñ8LÔ8LÑ0MÔ0MÑNÔNÐNÐNØˆEˆEð
ð 	
ri   c           	      óØ  ‡ — ddl m} t          |j        ¦  «        }t	          |j        |¦  «        r|j        j        }|j        j        }n|j        }|j        g}‰                      ||¦  «        \  }}}ˆ fd„|D ¦   «         }‰  	                    ‰ j
        dz   ‰ j        z   ¦  «        ›dd                     |d                     ||z   ¦  «        ¦  «        ›dd	                     |¦  «        ›d
�S )Nr   rŒ  c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   ra   )rd   rÙ   rf   s     €rg   rƒ   z5ArrayPrinter._print_ArrayDiagonal.<locals>.<listcomp>   s#   ø€ Ð/Ð/Ð/ A�—’˜Q‘”Ð/Ð/Ð/ri   r¤   r…  r’  rÕ   r†  r^   rº   )r“  r�  ÚlistÚdiagonal_indicesr”  rs   rn  rk   r{  rp   rˆ  r‰  ro   rq   )	rf   rs   r�  r�  rn  r—  Údiagonal_stringrx  ry  s	   `        rg   Ú_print_ArrayDiagonalz!ArrayPrinter._print_ArrayDiagonalö  s  ø€ ØWÐWÐWÐWÐWÐWÝ Ô 5Ñ6Ô6ÐÝ�d”iÐ!3Ñ4Ô4ð 	 Ø”yÔ)ˆHØ”I”NˆEˆEà”}ˆHØ”Y�KˆEØ59×5LÒ5LÈXÐWgÑ5hÔ5hÑ2ˆ˜ {Ø/Ð/Ð/Ð/¨Ð/Ñ/Ô/ˆà×Ò ¤¨sÑ 2°T´\Ñ AÑBÔBÐBÐBØ�OŠO˜O¨R¯WªW°\À+Ñ5MÑ-NÔ-NÑOÔOÐOÐOØ�IŠI�eÑÔÐÐð
ð 	
ri   c                 óÈ   — |                       | j        dz   | j        z   ¦  «        ›d|                      |j        ¦  «        ›d|                      |j        j        ¦  «        ›d�S )Nr¤   r¦   r^   rº   )rp   rˆ  Ú
_transposerb   rs   ÚpermutationÚ
array_formrÃ   s     rg   Ú_print_PermuteDimszArrayPrinter._print_PermuteDims  sc   € à×Ò ¤¨sÑ 2°T´_Ñ DÑEÔEÐEÐEØ�KŠK˜œ	Ñ"Ô"Ð"Ð"Ø�KŠK˜Ô(Ô3Ñ4Ô4Ð4Ð4ð
ð 	
ri   c                 óX   — |                       | j        dz   | j        z   |j        ¦  «        S )Nr¤   )r»   rˆ  Ú_addrk   rÃ   s     rg   Ú_print_ArrayAddzArrayPrinter._print_ArrayAdd  s(   € Ø×*Ò*¨4¬<¸#Ñ+=ÀÄ	Ñ+IÈ4Ì9ÑUÔUÐUri   c                 ó®   — |                       | j        dz   | j        z   ¦  «        ›dd                     t	          | j        |j        ¦  «        ¦  «        ›d�S ©Nr¤   z((rj  z,)))rp   rˆ  Ú_onesrq   Úmaprb   rk   rÃ   s     rg   Ú_print_OneArrayzArrayPrinter._print_OneArray  sT   € à×Ò ¤¨cÑ 1°D´JÑ >Ñ?Ô?Ð?Ð?Ø�HŠH•S˜œ T¤YÑ/Ô/Ñ0Ô0Ð0Ð0ð
ð 	
ri   c                 ó®   — |                       | j        dz   | j        z   ¦  «        ›dd                     t	          | j        |j        ¦  «        ¦  «        ›d�S r©  )rp   rˆ  Ú_zerosrq   r«  rb   rk   rÃ   s     rg   Ú_print_ZeroArrayzArrayPrinter._print_ZeroArray  sT   € à×Ò ¤¨cÑ 1°D´KÑ ?Ñ@Ô@Ð@Ð@Ø�HŠH•S˜œ T¤YÑ/Ô/Ñ0Ô0Ð0Ð0ð
ð 	
ri   c                 óÄ   — |                       |                      |j        ¦  «        ¦  «        }|                       |                      |j        ¦  «        ¦  «        }|›d|›�S r    )rb   rf  rå   ræ   )rf   rs   rå   ræ   s       rg   Ú_print_AssignmentzArrayPrinter._print_Assignment  sS   € ð �kŠk˜$Ÿ.š.¨¬Ñ2Ô2Ñ3Ô3ˆØ�kŠk˜$Ÿ.š.¨¬Ñ2Ô2Ñ3Ô3ˆØ ˜S˜S # #Ð'Ð'ri   c                 ó,   — |                       |¦  «        S r`   )Ú_print_ArraySymbolrÃ   s     rg   Ú_print_IndexedBasezArrayPrinter._print_IndexedBase$  s   € Ø×&Ò& tÑ,Ô,Ð,ri   N)rn   rH  rI  rf  r{  rk  rŠ  r™  rŸ  r¤  r§  r¬  r¯  r±  r´  r   ri   rg   r`  r`     sÌ   € € € € € ðð ð ð!=ð !=ð !=ðF+ð +ð +ð
ð 
ð 
ð
ð 
ð 
ð4
ð 
ð 
ð"
ð 
ð 
ðVð Vð Vð
ð 
ð 
ð
ð 
ð 
ð(ð (ð (ð-ð -ð -ð -ð -ri   r`  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                      |                      d¦  «        |                      |j        d         ¦  «        ¬¦  «        S )Nz"(0.0 if {e} == 0 else {f}(1, {e}))zmath.copysignr   )ÚfrS   ©ro   rp   rb   rk   ©rf   rS   s     rg   Ú_print_signzPythonCodePrinter._print_sign*  sG   € Ø3×:Ò:Ø×!Ò! /Ñ2Ô2°d·k²kÀ!Ä&ÈÄ)Ñ6LÔ6Lð ;ñ Nô Nð 	Nri   c                 ó„   — t          |¦  «        }| j        d         dz   |                      |j        d         |¦  «        z   S )Nr   rò   r   )r   rS  rÎ   rk   rÑ   s      rg   Ú
_print_NotzPythonCodePrinter._print_Not.  s<   € Ý˜$ÑÔˆØŒ˜uÔ%¨Ñ+¨d×.?Ò.?ÀÄ	È!ÄÈdÑ.SÔ.SÑSÐSri   c                 ó   — |j         S r`   )rj   rÃ   s     rg   r´  z$PythonCodePrinter._print_IndexedBase2  s
   € ØŒyÐri   c                 óÀ   ‡ — |j         d         }|j         dd …         }d                     t          |¦  «        d                     ˆ fd„|D ¦   «         ¦  «        ¦  «        S )Nr   r   z{}[{}]r^   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   ra   )rd   Úindrf   s     €rg   rƒ   z4PythonCodePrinter._print_Indexed.<locals>.<listcomp>8  s%   ø€ Ð4WÐ4WÐ4WÈ#°T·[²[ÀÑ5EÔ5EÐ4WÐ4WÐ4Wri   )rk   ro   r4  rq   )rf   rs   r?  Úindexs   `   rg   Ú_print_Indexedz PythonCodePrinter._print_Indexed5  sY   ø€ ØŒy˜Œ|ˆØ”	˜!˜"˜"”ˆØ�Š�s 4™yœy¨$¯)ª)Ð4WÐ4WÐ4WÐ4WÐQVÐ4WÑ4WÔ4WÑ*XÔ*XÑYÔYÐYri   Fc                 ó0   — |                       ||¬¦  «        S )N)rC  ©rG  ©rf   rs   rC  s      rg   Ú
_print_PowzPythonCodePrinter._print_Pow:  s   € Ø×Ò ¨xÐÑ8Ô8Ð8ri   c                 óB   — d                      |j        |j        ¦  «        S )Nz{}/{})ro   ÚpÚqrÃ   s     rg   Ú_print_Rationalz!PythonCodePrinter._print_Rational=  s   € Ø�~Š~˜dœf d¤fÑ-Ô-Ð-ri   c                 ó,   — |                       |¦  «        S r`   ©rË  rÃ   s     rg   Ú_print_HalfzPythonCodePrinter._print_Half@  s   € Ø×#Ò# DÑ)Ô)Ð)ri   c                 ó^   — |                       t          |j        d         d¦  «        ¦  «        S )Nr   r   )rÒ   r   rk   rÃ   s     rg   Ú_print_fraczPythonCodePrinter._print_fracC  s$   € Ø�Š�s 4¤9¨Q¤<°Ñ3Ô3Ñ4Ô4Ð4ri   c                 ó:  •— t          ¦   «                              |¦  «        }|| j        v rA| j        d         r$d}t	          |                     |¦  «        ¦  «        ‚|| j        d         z   S d|v r*|                     dd¦  «                             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_SymbolrM  r’   r–   ro   Úreplace)rf   rs   rj   Úmsgrm   s       €rg   rÖ  zPythonCodePrinter._print_SymbolF  sž   ø€ å‰wŒw×$Ò$ TÑ*Ô*ˆà�4Ô&Ð&Ð&ØŒ~Ð1Ô2ð 3ð<�å  §¢¨DÑ!1Ô!1Ñ2Ô2Ð2Ø˜$œ.Ð)?Ô@Ñ@Ð@Ø�Dˆ[ˆ[Ø—<’<  RÑ(Ô(×0Ò0°°bÑ9Ô9Ð9àˆKri   ©F)rn   rH  rI  r»  r½  r´  rÃ  rÇ  rË  rÎ  rÐ  rÖ  r	   Ú_print_not_supportedÚ_print_lowergammaÚ_print_uppergammaÚ_print_fresnelcÚ_print_fresnelsr]  r^  s   @rg   r¶  r¶  (  sÖ   ø€ € € € € ðNð Nð NðTð Tð Tðð ð ðZð Zð Zð
9ð 9ð 9ð 9ð.ð .ð .ð*ð *ð *ð5ð 5ð 5ðð ð ð ð ð $Ô8ÐØ#Ô8ÐØ!Ô6€OØ!Ô6€O€O€O€O€Ori   r¶  z	_print_%sc                 óF   — t          |¦  «                             | ¦  «        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)rs   r�   s     rg   Úpycoderá  b  s    € õ. ˜XÑ&Ô&×.Ò.¨tÑ4Ô4Ð4ri   )r¶  )r>   rM   rG   r:   rK   rN   r1   r3   r5   r;   rL   rO   r2   r4   r7   z-inf)rX   rY   rZ   ÚNegativeInfinityc                   óÒ   ‡ — e Zd ZdZdZdZ e ee 	                    ¦   «         ¦  «        ¦  «        Z
d„ e 	                    ¦   «         D ¦   «         Zdd„Zd„ Zˆ fd„Zd	„ Zd
„ Zd„ Zˆ xZS )ÚCmathPrinterz# Printer for Python's cmath module Ú
_cmathcodezPython with cmathc                 ó    — i | ]\  }}|d |z   “ŒS )úcmath.r   r€   s      rg   r…   zCmathPrinter.<dictcomp>¡  s"   € Ð
FÐ
FÐ
F™t˜q !ˆ1ˆh˜‰lÐ
FÐ
FÐ
Fri   Fc                 ó2   — |                       ||d¬¦  «        S )Nz
cmath.sqrt©rC  rM   rÅ  rÆ  s      rg   rÇ  zCmathPrinter._print_Pow£  ó   € Ø×Ò ¨x¸lÐÑKÔKÐKri   c                 ó|   — d                      |                      d¦  «        |                      |¦  «        ¬¦  «        S )Nz{func}({val})z	cmath.mpf)rþ   Úval©ro   rp   rb   rº  s     rg   Ú_print_FloatzCmathPrinter._print_Float¦  s9   € Ø×%Ò%¨4×+>Ò+>¸{Ñ+KÔ+KÐQU×Q\ÒQ\Ð]^ÑQ_ÔQ_Ð%Ñ`Ô`Ð`ri   c           	      óî   •— |j         j        }|| j        v r?d| j        |         › dd                     t	          | j        |j        ¦  «        ¦  «        › d�S t          ¦   «                              |¦  «        S )Nrç  r¦   r^   rº   )	rþ   rn   rš   rq   r«  rb   rk   r�   Ú_print_Function)rf   rs   Ú	func_namerm   s      €rg   ru   zCmathPrinter._print_known_func©  sl   ø€ Ø”IÔ&ˆ	Ø˜œÐ Ð Ø[˜DœH YÔ/Ð[Ð[°$·)²)½CÀÄÈTÌYÑ<WÔ<WÑ2XÔ2XÐ[Ð[Ð[Ð[Ý‰wŒw×&Ò& tÑ,Ô,Ð,ri   c                 ó0   — | j         |j        j                 S r`   )rœ   rm   rn   rÃ   s     rg   rx   zCmathPrinter._print_known_const¯  s   € ØŒx˜œÔ/Ô0Ð0ri   c                 óJ   — d|                       |j        d         ¦  «        › d�S )zPrints `re(z)` as `z.real`r¦   r   z).real©rb   rk   rÃ   s     rg   Ú	_print_rezCmathPrinter._print_re²  ó%   € à4�4—;’;˜tœy¨œ|Ñ,Ô,Ð4Ð4Ð4Ð4ri   c                 óJ   — d|                       |j        d         ¦  «        › d�S )zPrints `im(z)` as `z.imag`r¦   r   z).imagrô  rÃ   s     rg   Ú	_print_imzCmathPrinter._print_im¶  rö  ri   rÙ  )rn   rH  rI  Ú__doc__rJ  rK  r™   r   Ú_known_functions_cmathrP  rš   Ú_known_constants_cmathrœ   rÇ  rî  ru   rx   rõ  rø  r]  r^  s   @rg   rä  rä  ˜  sð   ø€ € € € € Ø-Ð-Ø€KØ"€Hà
ˆ$ˆuˆuØ×$Ò$Ñ&Ô&ñô ñ ô €Cð GÐ
FÐ'=×'CÒ'CÑ'EÔ'EÐ
FÑ
FÔ
F€CðLð Lð Lð Lðað að að-ð -ð -ð -ð -ð1ð 1ð 1ð5ð 5ð 5ð5ð 5ð 5ð 5ð 5ð 5ð 5ri   rä  z
log1p log2c                 ó.   — g | ]\  }}|t           v¯||f‘ŒS r   )Ú_not_in_mpmathr€   s      rg   rƒ   rƒ   Ã  s*   € ÐZÐZÐZ™˜˜AÀ!Í>ÐBYÐBYˆq�!ˆfÐBYÐBYÐBYri   ÚbetaÚfracÚfresnelcÚfresnelsÚsignrP   ÚhyperÚmeijergÚbesseljÚbesselyÚbesseliÚbesselk)rþ  rÿ  r   r  r  rP   r  r  r  r  r  r  ÚphiÚeulerÚcatalanÚninf)rW   rX   ÚGoldenRatioÚ
EulerGammaÚCatalanr[   rZ   râ  c                 óÐ   — g }g }| j         D ]W}t          |¦  «        dk    r|\  }}}nt          d¦  «        ‚|                     |¦  «         |                     ||f¦  «         ŒX||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          rg   Ú_unpack_integral_limitsr  Þ  sŒ   € ð ÐØ€FØ*Ô1ð 2ð 2ÐÝÐ Ñ!Ô! QÒ&Ð&Ø8IÑ5ˆO˜[¨+¨+å%Ð&MÑNÔNÐNØ×Ò Ñ0Ô0Ð0Ø�Š�{ KÐ0Ñ1Ô1Ð1Ð1Ø˜VÐ#Ð#ri   c                   ó  — e Zd ZdZdZdZ e ee 	                    ¦   «         d„ e
 	                    ¦   «         D ¦   «         ¦  «        ¦  «        Zd„ e 	                    ¦   «         D ¦   «         Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zdd„Zd„ Zd„ ZdS )ÚMpmathPrinterzH
    Lambda printer for mpmath which maintains precision for floats
    Ú_mpmathcodezPython with mpmathc                 ó"   — g | ]\  }}|d |z   f‘ŒS ©zmpmath.r   r€   s      rg   rƒ   zMpmathPrinter.<listcomp>û  s%   € ÐHÐHÐH¡  1ˆ!ˆY˜‰]Ð	ÐHÐHÐHri   c                 ó    — i | ]\  }}|d |z   “ŒS r  r   r€   s      rg   r…   zMpmathPrinter.<dictcomp>ý  s"   € Ð
FÐ
FÐ
F™d˜a ˆ1ˆi˜‰kÐ
FÐ
FÐ
Fri   c                 ó¾   — t          t          t          t          |j        ¦  «        ¦  «        ¦  «        }d                     |                      d¦  «        |¬¦  «        S )Nz{func}({args})ú
mpmath.mpf)rþ   rk   )r4  Útupler«  ÚintÚ_mpf_ro   rp   )rf   rS   rk   s      rg   rî  zMpmathPrinter._print_Floatÿ  sM   € õ •5��S !¤'Ñ*Ô*Ñ+Ô+Ñ,Ô,ˆØ×&Ò&¨D×,?Ò,?ÀÑ,MÔ,MÐTXÐ&ÑYÔYÐYri   c                 ó¸   — d                      |                      d¦  «        |                      |j        ¦  «        |                      |j        ¦  «        ¬¦  «        S )Nz{func}({p})/{func}({q})r!  )rþ   rÊ  rÉ  )ro   rp   rb   rÊ  rÉ  rº  s     rg   rË  zMpmathPrinter._print_Rational	  sR   € Ø(×/Ò/Ø×$Ò$ \Ñ2Ô2Ø�kŠk˜!œ#ÑÔØ�kŠk˜!œ#ÑÔð 0ñ 
ô 
ð 	
ri   c                 ó,   — |                       |¦  «        S r`   rÍ  rº  s     rg   rÎ  zMpmathPrinter._print_Half  s   € Ø×#Ò# AÑ&Ô&Ð&ri   c                 óö   — d                      |                      d¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        |                      d¦  «        ¦  «        S )Nz{}({}, {}, {})úmpmath.gammaincr   r   z
mpmath.infr¹  rº  s     rg   rÜ  zMpmathPrinter._print_uppergamma  sg   € Ø×&Ò&Ø×ÒÐ 1Ñ2Ô2Ø�KŠK˜œ˜qœ	Ñ"Ô"Ø�KŠK˜œ˜qœ	Ñ"Ô"Ø×Ò Ñ-Ô-ñ	/ô /ð 	/ri   c                 óÎ   — d                      |                      d¦  «        |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz{}({}, 0, {})r(  r   r   r¹  rº  s     rg   rÛ  zMpmathPrinter._print_lowergamma  sV   € Ø×%Ò%Ø×ÒÐ 1Ñ2Ô2Ø�KŠK˜œ˜qœ	Ñ"Ô"Ø�KŠK˜œ˜qœ	Ñ"Ô"ñ$ô $ð 	$ri   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz{0}({1})/{0}(2)z
mpmath.logr   r¹  rº  s     rg   Ú_print_log2zMpmathPrinter._print_log2   sB   € Ø ×'Ò'Ø×Ò Ñ-Ô-¨t¯{ª{¸1¼6À!¼9Ñ/EÔ/EñGô Gð 	Gri   c                 ó�   — d                      |                      d¦  «        |                      |j        d         ¦  «        ¦  «        S )Nz{}({})zmpmath.log1pr   r¹  rº  s     rg   Ú_print_log1pzMpmathPrinter._print_log1p$  s@   € Ø�ŠØ×Ò Ñ/Ô/°·²¸Q¼VÀA¼YÑ1GÔ1GñIô Ið 	Iri   Fc                 ó2   — |                       ||d¬¦  «        S )Nzmpmath.sqrtré  rÅ  rÆ  s      rg   rÇ  zMpmathPrinter._print_Pow(  s   € Ø×Ò ¨x¸mÐÑLÔLÐLri   c           	      óD  ‡ — t          |¦  «        \  }}d                     ‰                      d¦  «        d                     t	          ‰ j        |¦  «        ¦  «        ‰                      |j        d         ¦  «        d                     ˆ fd„|D ¦   «         ¦  «        ¦  «        S )Nz{}(lambda {}: {}, {})zmpmath.quadr^   r   c              3   ób   •K  — | ])}d t          t          ‰j        |¦  «        ¦  «        z  V — Œ*dS )z(%s, %s)N)r"  r«  rb   )rd   rz  rf   s     €rg   rh   z0MpmathPrinter._print_Integral.<locals>.<genexpr>2  s<   øè è € ÐRÐRÀa˜*¥u­S°´¸aÑ-@Ô-@Ñ'AÔ'AÑAÐRÐRÐRÐRÐRÐRri   )r  ro   rp   rq   r«  rb   rk   )rf   rS   r  rõ   s   `   rg   Ú_print_IntegralzMpmathPrinter._print_Integral+  s—   ø€ Ý#:¸1Ñ#=Ô#=Ñ Ð˜&à&×-Ò-Ø×#Ò# MÑ2Ô2Ø—	’	�#˜dœkÐ+;Ñ<Ô<Ñ=Ô=Ø—’˜AœF 1œIÑ&Ô&Ø—	’	ÐRÐRÐRÐRÈ6ÐRÑRÔRÑRÔRñ	Tô Tð 	Tri   c                 óŒ   — |\  }|\  }d                      |                      d¦  «        |                      |¦  «        |¦  «        S )Nz{}({}, derivative={})zmpmath.zetarí  )rf   rk   Ú
seq_ordersre   Úderiv_orders        rg   Ú_print_Derivative_zetaz$MpmathPrinter._print_Derivative_zeta5  sJ   € Ø‰ˆØ!‰ˆØ&×-Ò-Ø×Ò Ñ.Ô.Ø�KŠK˜ÑÔ˜kñ
ô 
ð 	
ri   NrÙ  )rn   rH  rI  rù  rJ  rK  r™   r   rO  rP  Ú_known_functions_mpmathrš   Ú_known_constants_mpmathrœ   rî  rË  rÎ  rÜ  rÛ  r+  r-  rÇ  r1  r5  r   ri   rg   r  r  ñ  sD  € € € € € ðð ð  €Kà#€Hà
ˆ$ˆuˆuØ×ÒÑ Ô ØHÐHÐ(?×(EÒ(EÑ(GÔ(GÐHÑHÔHñô ñ ô €Cð GÐ
FÐ&=×&CÒ&CÑ&EÔ&EÐ
FÑ
FÔ
F€CðZð Zð Zð
ð 
ð 
ð'ð 'ð 'ð/ð /ð /ð$ð $ð $ðGð Gð GðIð Ið IðMð Mð Mð MðTð Tð Tð
ð 
ð 
ð 
ð 
ri   r  c                   óD   — e Zd ZdZ eej        d¬¦  «        Zd„ Zdd„ZdS )ÚSymPyPrinterzPython with SymPyFr<  c                 óÆ   ‡ — |j         j        pd}‰                      ||rdndz   |j         j        z   ¦  «        ›dd                     ˆ fd„|j        D ¦   «         ¦  «        ›d�S )NrÕ   r¤   r¦   r^   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r`   ra   rc   s     €rg   rh   z/SymPyPrinter._print_Function.<locals>.<genexpr>Q  s/   øè è € Ð%LÐ%L¸3 d§k¢k°#Ñ&6Ô&6Ð%LÐ%LÐ%LÐ%LÐ%LÐ%Lri   rº   )rþ   rH  rp   rn   rq   rk   )rf   rs   Úmods   `  rg   rð  zSymPyPrinter._print_FunctionN  sy   ø€ ØŒiÔ"Ð( bˆØ×.Ò.¨s¸SÐ6H°c°cÀbÑ/IÈDÌIÔL^Ñ/^Ñ_Ô_Ð_Ð_ØŸ9š9Ð%LÐ%LÐ%LÐ%LÀ$Ä)Ð%LÑ%LÔ%LÑMÔMÐMÐMðOð 	Ori   c                 ó2   — |                       ||d¬¦  «        S )Nz
sympy.sqrtré  rÅ  rÆ  s      rg   rÇ  zSymPyPrinter._print_PowS  rê  ri   NrÙ  )	rn   rH  rI  rK  r™   rz   rT  rð  rÇ  r   ri   rg   r9  r9  E  se   € € € € € à"€Hà˜Ø!Ô3Øðñ ô Ðð
Oð Oð Oð
Lð Lð Lð Lð Lð Lri   r9  N)'rù  Úcollectionsr   Ú	itertoolsr   Ú
sympy.corer   Úsympy.core.modr   r   Úcodeprinterr	   rL  rO  rQ  rR  ru   rx   rz   r`  r¶  rš   r�   Úsetattrrá  Úsympy.printing.pycoderú  rû  rä  r¨   rý  rP  Ú
_in_mpmathr™   r6  r7  r  r  r9  r   ri   rg   ú<module>rF     s…  ððð ð
 $Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $ðð ð €ð ØØðð Ð ð
 Ø
ˆFð àˆWð ð ˆFð ð ˆWð	 ð
 ˆFð ð ˆWð ð ˆWð ð ˆvð ð 
ˆ5ð ð ˆFð ð 
ˆ5ð ð ˆFð ð 
ˆ5ð ð ˆWð ð �ð ð  ˆWð! ð" ˆWð# ð$ ØØØØØ
ØØØØØØØØð? ð  ð  Ð ðF Ø
Ø	ØØØðð Ð ð\ð \ð \ð&ð &ð &ð
N2ð N2ð N2ð N2ð N2 ñ N2ô N2ð N2ðb
E-ð E-ð E-ð E-ð E-ñ E-ô E-ð E-ðP07ð 07ð 07ð 07ð 07Ð1ñ 07ô 07ð 07ðf 
Ô	ð Cð C€AØ€GÐ˜{¨Q™Ð0AÑBÔBÐBÐBà	ð Dð D€AØ€GÐ˜{¨Q™Ð0BÑCÔCÐCÐCð5ð 5ð 5ð4 Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð ØØØØØØØØØØØØØØðð Ð ð& Ø	ØØð	ð Ð ð 5ð  5ð  5ð  5ð  5Ð$ñ  5ô  5ð  5ðF 
Ô	ð Kð K€AØ€GˆL˜+¨™/¨<Ô+IÑJÔJÐJÐJà	ð Lð L€AØ€GˆL˜+¨™/¨<Ô+JÑKÔKÐKÐKð ×#Ò#Ñ%Ô%€ØZÐZÐ!6×!<Ò!<Ñ!>Ô!>ÐZÑZÔZ€
Ø˜$˜zð ð ØØØØØØØØØØØØð.ð .ð ð Ð ð Ø
ØØØØØØð	ð 	Ð ð$ð $ð $ð&J
ð J
ð J
ð J
ð J
Ð%ñ J
ô J
ð J
ðZ 
Ô	ð ?ð ?€AØ€GˆM˜;¨™?Ð,=Ñ>Ô>Ð>Ð>à	 ð @ð @€AØ€GˆM˜;¨™?Ð,>Ñ?Ô?Ð?Ð?ðLð Lð Lð Lð LÐ,ñ Lô Lð Lð Lð Lri   