§
    �ŠtjÙq  ã                   óž   — d dl Z d dlmZ d dlZd dlmZmZ d dlmZ dZ	dZ
dZ G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        ZdS )é    N)ÚLiteral)Ú
PRECEDENCEÚ
precedence)Ú
StrPrinterÚint64_tl   ÿÿÿÿ ìûÿÿÿ         c                   óÂ  — e Zd ZdZdej        defd„Zdej        defd„Zd dej        dedz  defd„Z	dej        defd	„Z
dej        defd
„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Z dS )!ÚExprPrinterÚ_torch_sympystrÚexprÚreturnc                 óT   — |                       |j        dt          |¦  «        ¦  «        S )NÚ*©Ú	stringifyÚargsr   ©Úselfr   s     úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/_sympy/printers.pyÚ
_print_MulzExprPrinter._print_Mul   s"   € Ø�~Š~˜dœi¨­j¸Ñ.>Ô.>Ñ?Ô?Ð?ó    c                 óJ   — d|                       |j        d         ¦  «        › d�S )Nznot (r   ú)©Ú_printr   r   s     r   Ú
_print_NotzExprPrinter._print_Not   s%   € à3�t—{’{ 4¤9¨Q¤<Ñ0Ô0Ð3Ð3Ð3Ð3r   NÚorderc                 óT   — |                       |j        dt          |¦  «        ¦  «        S )Nz + r   )r   r   r   s      r   Ú
_print_AddzExprPrinter._print_Add   s"   € Ø�~Š~˜dœi¨µ
¸4Ñ0@Ô0@ÑAÔAÐAr   c                 óf   — |                       |j        d|j        › d�t          |¦  «        ¦  «        S )Nú )r   r   Úrel_opr   r   s     r   Ú_print_RelationalzExprPrinter._print_Relational   s0   € Ø�~Š~˜dœiÐ);¨T¬[Ð);Ð);Ð);½ZÈÑ=MÔ=MÑNÔNÐNr   c                 óP   — |                       |j        dt          d         ¦  «        S )Nz & Ú
BitwiseAnd©r   r   r   r   s     r   Ú_print_BitwiseFn_bitwise_andz(ExprPrinter._print_BitwiseFn_bitwise_and!   ó   € Ø�~Š~˜dœi¨µ
¸<Ô0HÑIÔIÐIr   c                 óP   — |                       |j        dt          d         ¦  «        S )Nz | Ú	BitwiseOrr&   r   s     r   Ú_print_BitwiseFn_bitwise_orz'ExprPrinter._print_BitwiseFn_bitwise_or$   s   € Ø�~Š~˜dœi¨µ
¸;Ô0GÑHÔHÐHr   c                 óP   — |                       |j        dt          d         ¦  «        S )Nz ^ Ú
BitwiseXorr&   r   s     r   Ú_print_BitwiseFn_bitwise_xorz(ExprPrinter._print_BitwiseFn_bitwise_xor'   r(   r   c                 óV   — |                       |j        dt          d         dz
  ¦  «        S ©Nú % ÚAtomç      à?r&   r   s     r   Ú
_print_ModzExprPrinter._print_Mod,   ó$   € Ø�~Š~˜dœi¨µ
¸6Ô0BÀSÑ0HÑIÔIÐIr   c                 ób   — |                       |j        dt          d         dz
  ¦  «        }d|› d�S )Nú / r2   r3   ú(r   r&   )r   r   Úss      r   Ú_print_FloatTrueDivzExprPrinter._print_FloatTrueDiv/   s0   € Ø�NŠN˜4œ9 e­Z¸Ô-?À#Ñ-EÑFÔFˆØ�1ˆxˆxˆxˆr   c                 ó,   — |                       |¦  «        S ©N)Ú_print_FloorDivr   s     r   Ú_print_CleanDivzExprPrinter._print_CleanDiv3   s   € Ø×#Ò# DÑ)Ô)Ð)r   c                 óB   — |                       |j        d         ¦  «        S ©Nr   r   r   s     r   Ú_print_IdentityzExprPrinter._print_Identity6   s   € à�{Š{˜4œ9 Qœ<Ñ(Ô(Ð(r   c                 ó|   — |j         dk    r#t          t          j        |d¬¦  «        ¦  «        S t          |¦  «        S )Né5   é   )Údps)Ú_precÚstrÚsympyÚFloatr   s     r   Ú_print_FloatzExprPrinter._print_Float:   s<   € ØŒ:˜ÒÐõ •u”{ 4¨RÐ0Ñ0Ô0Ñ1Ô1Ð1õ �t‘9”9Ðr   c                 ó  — |j         \  }}|t          |¦  «        k    rt          |¦  «        ‚t          |¦  «        }|dk     rt          d|› �¦  «        ‚|dk    r&|                      |g|z  dt          d         ¦  «        S dS )Nr   z#exponent must be non-negative, got r   ÚMulÚ1)r   ÚintÚAssertionErrorr   r   ©r   r   ÚbaseÚexps       r   Ú
_print_PowzExprPrinter._print_PowJ   s„   € Ø”I‰	ˆˆcØ•#�c‘(”(Š?ˆ?Ý  Ñ%Ô%Ð%Ý�#‰hŒhˆØ�Š7ˆ7Ý Ð!LÀsÐ!LÐ!LÑMÔMÐMØ�Š7ˆ7Ø—>’> 4 &¨3¡,°µZÀÔ5FÑGÔGÐGØˆsr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz#_print_ToFloat not implemented for ©ÚNotImplementedErrorÚtyper   s     r   Ú_print_ToFloatzExprPrinter._print_ToFloatZ   s   € Ý!Ð"TÍÈTÉ
Ì
Ð"TÐ"TÑUÔUÐUr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz$_print_Infinity not implemented for rU   r   s     r   Ú_print_InfinityzExprPrinter._print_Infinity]   ó   € Ý!Ð"UÍÈdÉÌÐ"UÐ"UÑVÔVÐVr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz,_print_NegativeInfinity not implemented for rU   r   s     r   Ú_print_NegativeInfinityz#ExprPrinter._print_NegativeInfinity`   s%   € Ý!ØG½4À¹:¼:ÐGÐGñ
ô 
ð 	
r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz_print_NaN not implemented for rU   r   s     r   Ú
_print_NaNzExprPrinter._print_NaNe   s   € Ý!Ð"PÅDÈÁJÄJÐ"PÐ"PÑQÔQÐQr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz$_print_FloorDiv not implemented for rU   r   s     r   r=   zExprPrinter._print_FloorDivh   r[   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz%_print_PythonMod not implemented for rU   r   s     r   Ú_print_PythonModzExprPrinter._print_PythonModk   s   € Ý!Ð"VÍ$ÈtÉ*Ì*Ð"VÐ"VÑWÔWÐWr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz&_print_IntTrueDiv not implemented for rU   r   s     r   Ú_print_IntTrueDivzExprPrinter._print_IntTrueDivn   ó    € Ý!Ð"WÍ4ÐPTÉ:Ì:Ð"WÐ"WÑXÔXÐXr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nú(_print_PowByNatural not implemented for rU   r   s     r   Ú_print_PowByNaturalzExprPrinter._print_PowByNaturalq   ó%   € Ý!ØCµt¸D±z´zÐCÐCñ
ô 
ð 	
r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz$_print_FloatPow not implemented for rU   r   s     r   Ú_print_FloatPowzExprPrinter._print_FloatPowv   r[   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz&_print_TruncToInt not implemented for rU   r   s     r   Ú_print_TruncToIntzExprPrinter._print_TruncToInty   re   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz&_print_RoundToInt not implemented for rU   r   s     r   Ú_print_RoundToIntzExprPrinter._print_RoundToInt|   re   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz(_print_RoundDecimal not implemented for rU   r   s     r   Ú_print_RoundDecimalzExprPrinter._print_RoundDecimal   ri   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz(_print_TruncToFloat not implemented for rU   r   s     r   Ú_print_TruncToFloatzExprPrinter._print_TruncToFloat‰   ri   r   r<   )!Ú__name__Ú
__module__Ú__qualname__ÚprintmethodrH   ÚExprrG   r   r   r   r#   r'   r+   r.   r4   r:   r>   rA   rJ   rS   rX   rZ   r]   r_   r=   rb   rd   rh   rk   rm   ro   rq   rs   © r   r   r
   r
      s3  € € € € € à#€Kð@˜uœzð @¨cð @ð @ð @ð @ð4˜uœzð 4¨cð 4ð 4ð 4ð 4ðBð B˜uœzð B°#¸±*ð BÈð Bð Bð Bð BðO e¤jð O°Sð Oð Oð Oð OðJ°´ð JÀð Jð Jð Jð JðI°´
ð I¸sð Ið Ið Ið IðJ°´ð JÀð Jð Jð Jð Jð
J˜uœzð J¨cð Jð Jð Jð Jð¨¬
ð °sð ð ð ð ð* E¤Jð *°3ð *ð *ð *ð *ð) E¤Jð )°3ð )ð )ð )ð )ð ¤ð °ð ð ð ð ð 	˜uœzð 	¨cð 	ð 	ð 	ð 	ð V 5¤:ð V°#ð Vð Vð Vð VðW E¤Jð W°3ð Wð Wð Wð Wð
¨E¬Jð 
¸3ð 
ð 
ð 
ð 
ð
R˜uœzð R¨cð Rð Rð Rð RðW E¤Jð W°3ð Wð Wð Wð WðX U¤Zð X°Cð Xð Xð Xð XðY e¤jð Y°Sð Yð Yð Yð Yð
¨¬
ð 
°sð 
ð 
ð 
ð 
ð
W E¤Jð W°3ð Wð Wð Wð WðY e¤jð Y°Sð Yð Yð Yð YðY e¤jð Y°Sð Yð Yð Yð Yð
¨¬
ð 
°sð 
ð 
ð 
ð 
ð
¨¬
ð 
°sð 
ð 
ð 
ð 
ð 
ð 
r   r
   c                   óœ  — e Zd Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Z	dej        defd„Z
dej        defd„Zdej        defd	„Zdej        defd
„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Z dej        defd„Z!dej        defd„Z"dej        defd „Z#dej        defd!„Z$dej        defd"„Z%dej        defd#„Z&dej        defd$„Z'dej        defd%„Z(d&S )'ÚPythonPrinterr   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Né   ú$ToFloat expects exactly one argumentztorch.sym_float(r   r   ©Úlenr   rO   r   r   s     r   rX   zPythonPrinter._print_ToFloat�   sI   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!GÑHÔHÐHð ? $§+¢+¨d¬i¸¬lÑ";Ô";Ð>Ð>Ð>Ð>r   c                 óT   — |                       |j        dt          |¦  «        ¦  «        S )Nz and r   r   s     r   Ú
_print_AndzPythonPrinter._print_And£   s"   € Ø�~Š~˜dœi¨µ*¸TÑ2BÔ2BÑCÔCÐCr   c                 óT   — |                       |j        dt          |¦  «        ¦  «        S )Nz or r   r   s     r   Ú	_print_OrzPythonPrinter._print_Or¦   ó"   € Ø�~Š~˜dœi¨µ¸DÑ1AÔ1AÑBÔBÐBr   c                 ób   ‡ — ˆ fd„|j         D ¦   «         \  }}}|dk    r	d|› d|› d�}d|› d|› d�S )Nc              3   ó`   •K  — | ](}‰                      |t          d          dz
  ¦  «        V — Œ)dS ©r2   r3   N©Úparenthesizer   ©Ú.0Úargr   s     €r   ú	<genexpr>z7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>ª   sN   øè è € ð 
ð 
ØADˆD×Ò˜c¥:¨fÔ#5¸Ñ#;Ñ<Ô<ð
ð 
ð 
ð 
ð 
ð 
r   rM   r8   ú // r   r1   ©r   ©r   r   ÚxÚdivÚmods   `    r   Ú_print_ModularIndexingz$PythonPrinter._print_ModularIndexing©   so   ø€ ð
ð 
ð 
ð 
ØHLÌ	ð
ñ 
ô 
‰ˆˆ3�ð �#Š:ˆ:Ø!�AÐ!Ð!˜3Ð!Ð!Ð!ˆAØ�1ÐÐ˜ÐÐÐÐr   c                 ó   — dS )Nzmath.infry   r   s     r   rZ   zPythonPrinter._print_Infinity±   ó   € Øˆzr   c                 ó   — dS )Nz	-math.infry   r   s     r   r]   z%PythonPrinter._print_NegativeInfinity´   s   € Øˆ{r   c                 ó   — dS )Nzmath.nanry   r   s     r   r_   zPythonPrinter._print_NaN·   r—   r   c                 óV   — |                       |j        dt          d         dz
  ¦  «        S r0   r&   r   s     r   rb   zPythonPrinter._print_PythonMod»   r5   r   c                 ó>   ‡ — ˆ fd„|j         D ¦   «         \  }}|› d|› �S )Nc              3   ó`   •K  — | ](}‰                      |t          d          dz
  ¦  «        V — Œ)dS rˆ   r‰   r‹   s     €r   rŽ   z0PythonPrinter._print_FloorDiv.<locals>.<genexpr>À   s=   øè è € ÐXÐXÀs�$×#Ò# C­°FÔ);¸cÑ)AÑBÔBÐXÐXÐXÐXÐXÐXr   r�   r�   ©r   r   r’   r“   s   `   r   r=   zPythonPrinter._print_FloorDiv¿   s2   ø€ ØXÐXÐXÐXÈdÌiÐXÑXÔX‰ˆˆ3Øˆˆ˜ˆˆÐr   c                 óV   — |                       |j        dt          d         dz
  ¦  «        S )Nr7   r2   r3   r&   r   s     r   rd   zPythonPrinter._print_IntTrueDivÅ   r5   r   c                 ó4   — d|                       |¦  «        › d�S )Nztorch._sym_sqrt(r   ©r   r   s     r   Ú_helper_sqrtzPythonPrinter._helper_sqrtÈ   s!   € ð 7 $§+¢+¨dÑ"3Ô"3Ð6Ð6Ð6Ð6r   c                 óB   — |                       |j        d         ¦  «        S r@   )r¡   r   r   s     r   Ú_print_OpaqueUnaryFn_sqrtz'PythonPrinter._print_OpaqueUnaryFn_sqrtÕ   s   € Ø× Ò  ¤¨1¤Ñ.Ô.Ð.r   c                 óP   — |                       |j        dt          d         ¦  «        S ©Nz ** ÚPowr&   r   s     r   rk   zPythonPrinter._print_FloatPowØ   ó   € Ø�~Š~˜dœi¨µ¸EÔ1BÑCÔCÐCr   c                 óP   — |                       |j        dt          d         ¦  «        S r¥   r&   r   s     r   rh   z!PythonPrinter._print_PowByNaturalÜ   r§   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú"floor expects exactly one argumentúmath.floor(r   r   r   r   s     r   Ú_print_floorzPythonPrinter._print_floorß   sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!EÑFÔFÐFà9˜TŸ[š[¨¬°1¬Ñ6Ô6Ð9Ð9Ð9Ð9r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú'FloorToInt expects exactly one argumentr«   r   r   r   r   s     r   Ú_print_FloorToIntzPythonPrinter._print_FloorToIntå   sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!JÑKÔKÐKà9˜TŸ[š[¨¬°1¬Ñ6Ô6Ð9Ð9Ð9Ð9r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú'TruncToInt expects exactly one argumentzmath.trunc(r   r   r   r   s     r   rm   zPythonPrinter._print_TruncToIntë   óI   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!JÑKÔKÐKð :˜TŸ[š[¨¬°1¬Ñ6Ô6Ð9Ð9Ð9Ð9r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú$ceiling expects exactly one argumentú
math.ceil(r   r   r   r   s     r   Ú_print_ceilingzPythonPrinter._print_ceilingò   sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!GÑHÔHÐHà8˜DŸKšK¨¬	°!¬Ñ5Ô5Ð8Ð8Ð8Ð8r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú&CeilToInt expects exactly one argumentrµ   r   r   r   r   s     r   Ú_print_CeilToIntzPythonPrinter._print_CeilToIntø   sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!IÑJÔJÐJà8˜DŸKšK¨¬	°!¬Ñ5Ô5Ð8Ð8Ð8Ð8r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú Abs expects exactly one argumentzabs(r   r   r   r   s     r   Ú
_print_AbszPythonPrinter._print_Absþ   sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!CÑDÔDÐDà2�d—k’k $¤)¨A¤,Ñ/Ô/Ð2Ð2Ð2Ð2r   c                 ó²   — t          |j        ¦  «        dk     rt          d¦  «        ‚dd                     t	          | j        |j        ¦  «        ¦  «        › d�S )Né   z"Max expects at least two argumentszmax(ú, r   ©r€   r   rO   ÚjoinÚmapr   r   s     r   Ú
_print_MaxzPythonPrinter._print_Max  óO   € ÝˆtŒy‰>Œ>˜AÒÐÝ Ð!EÑFÔFÐFà?�d—i’i¥ D¤K°´Ñ ;Ô ;Ñ<Ô<Ð?Ð?Ð?Ð?r   c                 ó²   — t          |j        ¦  «        dk     rt          d¦  «        ‚dd                     t	          | j        |j        ¦  «        ¦  «        › d�S )Nr¾   z"Min expects at least two argumentszmin(r¿   r   rÀ   r   s     r   Ú
_print_MinzPythonPrinter._print_Min  rÄ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú cos expects exactly one argumentz	math.cos(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_cosz&PythonPrinter._print_OpaqueUnaryFn_cos  óG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!CÑDÔDÐDà7˜4Ÿ;š; t¤y°¤|Ñ4Ô4Ð7Ð7Ð7Ð7r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú!cosh expects exactly one argumentz
math.cosh(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_coshz'PythonPrinter._print_OpaqueUnaryFn_cosh  óG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!DÑEÔEÐEà8˜DŸKšK¨¬	°!¬Ñ5Ô5Ð8Ð8Ð8Ð8r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú!acos expects exactly one argumentz
math.acos(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_acosz'PythonPrinter._print_OpaqueUnaryFn_acos  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S ©Nr}   z sin expects exactly one argumentz	math.sin(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_sinz&PythonPrinter._print_OpaqueUnaryFn_sin%  rÊ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú!sinh expects exactly one argumentz
math.sinh(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_sinhz'PythonPrinter._print_OpaqueUnaryFn_sinh+  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú!asin expects exactly one argumentz
math.asin(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_asinz'PythonPrinter._print_OpaqueUnaryFn_asin1  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú tan expects exactly one argumentz	math.tan(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_tanz&PythonPrinter._print_OpaqueUnaryFn_tan7  rÊ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú!tanh expects exactly one argumentz
math.tanh(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_tanhz'PythonPrinter._print_OpaqueUnaryFn_tanh=  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú!atan expects exactly one argumentz
math.atan(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_atanz'PythonPrinter._print_OpaqueUnaryFn_atanC  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   z!log2 expects exactly one argumentz
math.log2(r   r   r   r   s     r   Ú_print_OpaqueUnaryFn_log2z'PythonPrinter._print_OpaqueUnaryFn_log2I  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   ú'RoundToInt expects exactly one argumentúround(r   r   r   r   s     r   ro   zPythonPrinter._print_RoundToIntO  sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!JÑKÔKÐKà4˜Ÿš D¤I¨a¤LÑ1Ô1Ð4Ð4Ð4Ð4r   c                 óî   — t          |j        ¦  «        dk    rt          d¦  «        ‚|j        \  }}t          |t          j        ¦  «        st          d¦  «        ‚d|                      |¦  «        › d|› d�S )Nr¾   ú*RoundDecimal expects exactly two argumentsz,ndigits must be an instance of sympy.Integerrè   r¿   r   )r€   r   rO   Ú
isinstancerH   ÚIntegerÚ	TypeErrorr   )r   r   ÚnumberÚndigitss       r   rq   z!PythonPrinter._print_RoundDecimalU  sx   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!MÑNÔNÐNØœ)‰ˆ�Ý˜'¥5¤=Ñ1Ô1ð 	LÝÐJÑKÔKÐKà9˜Ÿš FÑ+Ô+Ð9Ð9¨wÐ9Ð9Ð9Ð9r   c                 óÎ   — d }t          |j        ¦  «        D ]I\  }}|                      |¦  «        }|dk    r|}Œ#|                      |¦  «        }|€|}Œ=d|› d|› d|› d�}ŒJ|r|ndS )NTr8   z if z else r   Ú0)Úreversedr   r   ©r   r   ÚresultÚexpr_iÚcond_iÚexpr_strÚcond_strs          r   Ú_print_PiecewisezPythonPrinter._print_Piecewise^  s™   € ð "ˆÝ& t¤yÑ1Ô1ð 	Ið 	I‰NˆF�Fà—{’{ 6Ñ*Ô*ˆHØ˜Š~ˆ~à!��ð  Ÿ;š; vÑ.Ô.�Ø�>Ø%�F�FàH ÐHÐH¨xÐHÐH¸vÐHÐHÐH�F�FØÐ(ˆvˆv SÐ(r   N))rt   ru   rv   rH   rx   rG   rX   r‚   r„   r•   rZ   r]   r_   rb   r=   rd   r¡   r£   rk   rh   r¬   r¯   rm   r¶   r¹   r¼   rÃ   rÆ   rÉ   rÍ   rÑ   rÔ   r×   rÚ   rÝ   rà   rã   rå   ro   rq   rù   ry   r   r   r{   r{   �   s0  € € € € € ð? 5¤:ð ?°#ð ?ð ?ð ?ð ?ð&D˜uœzð D¨cð Dð Dð Dð DðC˜eœjð C¨Sð Cð Cð Cð Cð ¨5¬:ð  ¸#ð  ð  ð  ð  ð E¤Jð °3ð ð ð ð ð¨E¬Jð ¸3ð ð ð ð ð˜uœzð ¨cð ð ð ð ðJ U¤Zð J°Cð Jð Jð Jð Jð E¤Jð °3ð ð ð ð ðJ e¤jð J°Sð Jð Jð Jð Jð7 ¤ð 7°ð 7ð 7ð 7ð 7ð/¨e¬jð /¸Sð /ð /ð /ð /ðD E¤Jð D°3ð Dð Dð Dð DðD¨¬
ð D°sð Dð Dð Dð Dð: ¤ð :°ð :ð :ð :ð :ð: e¤jð :°Sð :ð :ð :ð :ð: e¤jð :°Sð :ð :ð :ð :ð9 5¤:ð 9°#ð 9ð 9ð 9ð 9ð9 U¤Zð 9°Cð 9ð 9ð 9ð 9ð3˜uœzð 3¨cð 3ð 3ð 3ð 3ð@˜uœzð @¨cð @ð @ð @ð @ð@˜uœzð @¨cð @ð @ð @ð @ð8¨U¬Zð 8¸Cð 8ð 8ð 8ð 8ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð8¨U¬Zð 8¸Cð 8ð 8ð 8ð 8ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð8¨U¬Zð 8¸Cð 8ð 8ð 8ð 8ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð5 e¤jð 5°Sð 5ð 5ð 5ð 5ð:¨¬
ð :°sð :ð :ð :ð :ð) U¤Zð )°Cð )ð )ð )ð )ð )ð )r   r{   c                   óH  — e Zd Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Z	dej        defd„Z
dej        defd„Zdej        defd	„Zdej        defd
„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        ded         defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Z dej        defd„Z!dej        defd „Z"dej        defd!„Z#dej        defd"„Z$dej        defd#„Z%dej        defd$„Z&dej        defd%„Z'dej        defd&„Z(dej        defd'„Z)dej        defd(„Z*dej        defd)„Z+dej        defd*„Z,dej        defd+„Z-dej        defd,„Z.dej        defd-„Z/d.S )/Ú
CppPrinterr   r   c                 óú   — t           j        dv rdnd}t          |¦  «        }|t          k    s|t          k     rt          |› dt          › �¦  «        ‚|t          k    r|dk    rt          d¦  «        ‚d|› d�S |› |› �S )	N)ÚdarwinÚwin32ÚLLÚLz too big to convert to r   z#unexpected minimum index type valuez(-1z << 63))ÚsysÚplatformrN   ÚINDEX_TYPE_MAXÚINDEX_TYPE_MINÚOverflowErrorÚ
INDEX_TYPErO   )r   r   ÚsuffixÚis       r   Ú_print_IntegerzCppPrinter._print_Integert  s˜   € ÝœÐ)<Ð<Ð<��À#ˆÝ�‰IŒIˆØ�~ÒÐ ¥^Ò!3Ð!3Ý 1Ð IÐ I½ZÐ IÐ IÑJÔJÐJØ•.Ò Ð Ø�JŠˆÝ$Ð%JÑKÔKÐKð )˜Ð(Ð(Ð(Ð(Øˆ~�Vˆ~ˆ~Ðr   c                 óF   ‡ — ˆ fd„|j         D ¦   «         \  }}}|› d|› d|› �S )Nc              3   ó`   •K  — | ](}‰                      |t          d          dz
  ¦  «        V — Œ)dS rˆ   r‰   r‹   s     €r   rŽ   z*CppPrinter._print_Where.<locals>.<genexpr>‚  sN   øè è € ð 
ð 
ØADˆD×Ò˜c¥:¨fÔ#5¸Ñ#;Ñ<Ô<ð
ð 
ð 
ð 
ð 
ð 
r   ú ? ú : r�   )r   r   ÚcÚpÚqs   `    r   Ú_print_WherezCppPrinter._print_Where�  sQ   ø€ ð
ð 
ð 
ð 
ØHLÌ	ð
ñ 
ô 
‰ˆˆ1ˆað Ð!Ð!˜Ð!Ð!˜aÐ!Ð!Ð!r   c                 óT   — |                       |j        dt          |¦  «        ¦  «        S )Nz || r   r   s     r   r„   zCppPrinter._print_Or‡  r…   r   c                 ó  — d }t          |j        ¦  «        D ]e\  }}|                      |t          d         dz
  ¦  «        }|dk    r|}Œ2|                      |t          d         dz
  ¦  «        }|€|}Œ[|› d|› d|› �}Œf|rd|› d�ndS )	Nr2   r3   Tr  r  r8   r   rñ   )rò   r   rŠ   r   ró   s          r   rù   zCppPrinter._print_PiecewiseŠ  s¶   € ð "ˆÝ& t¤yÑ1Ô1ð 
	Cð 
	C‰NˆF�FØ×(Ò(¨µ¸FÔ1CÀcÑ1IÑJÔJˆHØ˜Š~ˆ~à!��à×,Ò,¨VµZÀÔ5GÈ#Ñ5MÑNÔN�Ø�>Ø%�F�Fà (ÐBÐB¨XÐBÐB¸&ÐBÐB�F�FØ &Ð/ˆ}�6ˆ}ˆ}ˆ}ˆ}¨CÐ/r   c           	      ó  — |j         \  }}}|                      |¦  «        }|dk    r/|                      |¦  «        }|j        r
d|› d|› d�}n	d|› d|› d�}|                      |¦  «        }dt          › d|› d	t          › d|› d�	S )
Nr}   ú,c10::div_floor_integer(static_cast<int64_t>(ú), static_cast<int64_t>(ú))ú,c10::div_floor_floating(static_cast<double>(ú), static_cast<double>(ú(static_cast<ú>(z) % static_cast<)r   ÚdoprintÚ
is_integerr  r‘   s        r   r•   z!CppPrinter._print_ModularIndexingœ  s±   € Ø”i‰ˆˆ3�Ø�LŠL˜‰OŒOˆØ�!Š8ˆ8Ø—,’,˜sÑ#Ô#ˆCØŒð eØeÀ1ÐeÐeÐ^aÐeÐeÐe��àdÀ1ÐdÐdÐ]`ÐdÐdÐd�Ø�lŠl˜3ÑÔˆØU�zÐUÐU¨QÐUÐUÅ
ÐUÐUÈcÐUÐUÐUÐUr   c                 óœ   — |j         \  }}|                      |¦  «        }|                      |¦  «        }|j        r	d|› d|› d�S d|› d|› d�S )Nr  r  r  r  r  )r   r  r  r�   s       r   r=   zCppPrinter._print_FloorDiv¨  sl   € Ø”‰ˆˆ3Ø�LŠL˜‰OŒOˆØ�lŠl˜3ÑÔˆØŒ?ð 	eØdÀ!ÐdÐdÐ]`ÐdÐdÐdÐdØ_¸aÐ_Ð_ÐX[Ð_Ð_Ð_Ð_r   c                 óÆ   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�}|j        rdt
          › d|› d�n|S )Nr}   rª   ústd::floor(r   r   ústatic_cast<r  ©r€   r   rO   r   r  r  ©r   r   Úrs      r   r¬   zCppPrinter._print_floor°  sl   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!EÑFÔFÐFà6˜$Ÿ+š+ d¤i°¤lÑ3Ô3Ð6Ð6Ð6ˆØ48´OÐJÐ0�jÐ0Ð0¨AÐ0Ð0Ð0Ð0ÈÐJr   c                 óÆ   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�}|j        rdt
          › d|› d�n|S )Nr}   r®   r   r   r   r!  r  r"  r#  s      r   r¯   zCppPrinter._print_FloorToInt·  sl   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!JÑKÔKÐKà6˜$Ÿ+š+ d¤i°¤lÑ3Ô3Ð6Ð6Ð6ˆØ48´OÐJÐ0�jÐ0Ð0¨AÐ0Ð0Ð0Ð0ÈÐJr   c                 ó´   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�}dt          › d|› d�S )Nr}   r±   ústd::trunc(r   r   r!  r  )r€   r   rO   r   r  r#  s      r   rm   zCppPrinter._print_TruncToInt¾  s_   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!JÑKÔKÐKà6˜$Ÿ+š+ d¤i°¤lÑ3Ô3Ð6Ð6Ð6ˆØ0�jÐ0Ð0¨AÐ0Ð0Ð0Ð0r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   z)TruncToFloat expects exactly one argumentr'  r   r   r   r   s     r   rs   zCppPrinter._print_TruncToFloatÅ  sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!LÑMÔMÐMà9˜TŸ[š[¨¬°1¬Ñ6Ô6Ð9Ð9Ð9Ð9r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   r~   ústatic_cast<double>(r   r   r   r   s     r   rX   zCppPrinter._print_ToFloatË  sG   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!GÑHÔHÐHàB d§k¢k°$´)¸A´,Ñ&?Ô&?ÐBÐBÐBÐBr   c                 ó|   — |j         \  }}|                      |¦  «        }|                      |¦  «        }d|› d|› d�S )Nzc10::div_mod(r¿   r   )r   r  r�   s       r   rb   zCppPrinter._print_PythonModÑ  sF   € Ø”‰ˆˆ3Ø�LŠL˜‰OŒOˆØ�lŠl˜3ÑÔˆØ*˜qÐ*Ð* CÐ*Ð*Ð*Ð*r   c                 ót   — |j         \  }}d|                      |¦  «        › d|                      |¦  «        › d�S )Nr*  z) / static_cast<double>(r   ©r   r   )r   r   ÚlhsÚrhss       r   rd   zCppPrinter._print_IntTrueDiv×  sE   € Ø”9‰ˆˆSð d d§k¢k°#Ñ&6Ô&6ÐcÐcÐPT×P[ÒP[Ð\_ÑP`ÔP`ÐcÐcÐcÐcr   c                 ó’   — |j         \  }}|dk    rd|                      |¦  «        › d�S t          dt          | ¦  «        › �¦  «        ‚)Nr¾   z(1 << (r  rg   )r   r   rV   rW   rP   s       r   rh   zCppPrinter._print_PowByNaturalß  sV   € à”I‰	ˆˆcØ�1Š9ˆ9à1˜TŸ[š[¨Ñ-Ô-Ð1Ð1Ð1Ð1Ý!ØCµt¸D±z´zÐCÐCñ
ô 
ð 	
r   c                 ót   — |j         \  }}d|                      |¦  «        › d|                      |¦  «        › d�S )Nú	std::pow(r¿   r   r-  rP   s       r   rk   zCppPrinter._print_FloatPowé  s>   € Ø”I‰	ˆˆcàC˜4Ÿ;š; tÑ,Ô,ÐCÐC°·²¸CÑ0@Ô0@ÐCÐCÐCÐCr   c                 ó  — |j         \  }}|dk    s|dk    r'|                      |¦  «        }|dk    rd|› d�nd|› d�S |j        r´t          |¦  «        }|dk    r'|                      |g|z  dt
          d         ¦  «        }na|d	k     r:d
|                      |gt          |¦  «        z  dt
          d         ¦  «        z   dz   }n!|d	k    rd|                      |¦  «        z   }nd}|j        rdt          › d|› d�n|S d|› dt          |¦  «        › d�S )Nr3   g      à¿ú
std::sqrt(r   z1.0/std::sqrt(r   r   rL   éÿÿÿÿz1.0/(z1.0/z1.0r!  r  r2  r¿   )	r   r   r  rN   r   r   Úabsr  Úfloat)r   r   rQ   rR   r$  s        r   rS   zCppPrinter._print_Powî  sO  € à”I‰	ˆˆcà�#Š:ˆ:˜ š˜à—;’;˜tÑ$Ô$ˆDØ+.°#ª:¨:Ð' Ð'Ð'Ð'Ð'Ð;SÈDÐ;SÐ;SÐ;SÐSØŒ>ð 	5Ý�c‘(”(ˆCØ�QŠwˆwØ—N’N D 6¨C¡<°µjÀÔ6GÑHÔH��Ø�r’�àØ—n’n d V­c°#©h¬hÑ%6¸½ZÈÔ=NÑOÔOñPàñð �ð
 ˜’�à˜TŸ[š[¨Ñ.Ô.Ñ.��à�à8<¼ÐNÐ4¥*Ð4Ð4°Ð4Ð4Ð4Ð4ÈQÐNð 5˜tÐ4Ð4¥u¨S¡z¤zÐ4Ð4Ð4Ð4r   c                 ó|   — |j         dk    r	|j        › }n|j        › d|j         › d�}|j        rdt          › d|› d�n|S )Nr}   z.0/z.0r!  r  r   )r  r  r  r  r#  s      r   Ú_print_RationalzCppPrinter._print_Rational  sX   € àŒ6�QŠ;ˆ;Ø”6�ˆAˆAà”6Ð(Ð(˜dœfÐ(Ð(Ð(ˆAØ48´OÐJÐ0�jÐ0Ð0¨AÐ0Ð0Ð0Ð0ÈÐJr   c                 óÆ   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�}|j        rdt
          › d|› d�n|S )Nr}   r´   ú
std::ceil(r   r   r!  r  r"  r#  s      r   r¶   zCppPrinter._print_ceiling  sl   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!GÑHÔHÐHà5˜Ÿš T¤Y¨q¤\Ñ2Ô2Ð5Ð5Ð5ˆØ48´OÐJÐ0�jÐ0Ð0¨AÐ0Ð0Ð0Ð0ÈÐJr   c                 óÆ   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�}|j        rdt
          › d|› d�n|S )Nr}   r¸   r;  r   r   r!  r  r"  r#  s      r   r¹   zCppPrinter._print_CeilToInt  sl   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!IÑJÔJÐJà5˜Ÿš T¤Y¨q¤\Ñ2Ô2Ð5Ð5Ð5ˆØ48´OÐJÐ0�jÐ0Ð0¨AÐ0Ð0Ð0Ð0ÈÐJr   Úname)ÚminÚmaxc                 ó¼  ‡ — ˆ fd„|j         D ¦   «         }|j        s[d„ |D ¦   «         }t          |¦  «        dk    rd|› d|d         › d|d         › d	�S d
d                     |¦  «        z   dz   }d|› d|› d	�S t          |¦  «        dk    r(d|› dt          › d|d         › dt          › d|d         › d�S d
d                     |¦  «        z   dz   }d|› dt          › d|› d	�S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS ry   r    )rŒ   Úar   s     €r   ú
<listcomp>z-CppPrinter._print_min_max.<locals>.<listcomp>#  s#   ø€ Ð2Ð2Ð2 1�—’˜A‘”Ð2Ð2Ð2r   c                 ó   — g | ]}d |› d�‘Œ	S )r*  r   ry   )rŒ   r�   s     r   rC  z-CppPrinter._print_min_max.<locals>.<listcomp>%  s$   € ÐBÐBÐB°cÐ1¨3Ð1Ð1Ð1ÐBÐBÐBr   r¾   zstd::r8   r   r¿   r}   r   Ú{Ú}z	<double>(r  r  z), static_cast<r  ú<)r   r  r€   rÁ   r  )r   r   r=  r   Úils   `    r   Ú_print_min_maxzCppPrinter._print_min_max!  s-  ø€ à2Ð2Ð2Ð2¨¬	Ð2Ñ2Ô2ˆØŒð 	0ØBÐB¸TÐBÑBÔBˆDÝ�4‰yŒy˜AŠ~ˆ~Ø;˜tÐ;Ð; d¨1¤gÐ;Ð;°°a´Ð;Ð;Ð;Ð;à�t—y’y ‘”Ñ&¨Ñ,ˆBØ/˜4Ð/Ð/¨"Ð/Ð/Ð/Ð/åˆt‰9Œ9˜Š>ˆ>Øm˜4ÐmÐm­jÐmÐm¸DÀ¼GÐmÐmÕT^ÐmÐmÐbfÐghÔbiÐmÐmÐmÐmð �t—y’y ‘”Ñ&¨Ñ,ˆBØ5˜4Ð5Ð5¥*Ð5Ð5°Ð5Ð5Ð5Ð5r   c                 ó.   — |                       |d¦  «        S )Nr>  ©rI  r   s     r   rÆ   zCppPrinter._print_Min3  ó   € Ø×"Ò" 4¨Ñ/Ô/Ð/r   c                 ó.   — |                       |d¦  «        S )Nr?  rK  r   s     r   rÃ   zCppPrinter._print_Max6  rL  r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   r»   z	std::abs(r   r   r   r   s     r   r¼   zCppPrinter._print_Abs9  rÊ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rÈ   z	std::cos(r   r   r   r   s     r   rÉ   z#CppPrinter._print_OpaqueUnaryFn_cos?  rÊ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rÌ   z
std::cosh(r   r   r   r   s     r   rÍ   z$CppPrinter._print_OpaqueUnaryFn_coshE  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rÐ   z
std::acos(r   r   r   r   s     r   rÑ   z$CppPrinter._print_OpaqueUnaryFn_acosK  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S rÓ   r   r   s     r   rÔ   z#CppPrinter._print_OpaqueUnaryFn_sinQ  rÊ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rÖ   z
std::sinh(r   r   r   r   s     r   r×   z$CppPrinter._print_OpaqueUnaryFn_sinhW  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rÙ   z
std::asin(r   r   r   r   s     r   rÚ   z$CppPrinter._print_OpaqueUnaryFn_asin]  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rÜ   z	std::tan(r   r   r   r   s     r   rÝ   z#CppPrinter._print_OpaqueUnaryFn_tanc  rÊ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rß   z
std::tanh(r   r   r   r   s     r   rà   z$CppPrinter._print_OpaqueUnaryFn_tanhi  rÎ   r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   râ   z
std::atan(r   r   r   r   s     r   rã   z$CppPrinter._print_OpaqueUnaryFn_atano  rÎ   r   c                 óJ   — d|                       |j        d         ¦  «        › d�S )Nr4  r   r   r   r   s     r   r£   z$CppPrinter._print_OpaqueUnaryFn_sqrtu  ó%   € à8˜DŸKšK¨¬	°!¬Ñ5Ô5Ð8Ð8Ð8Ð8r   c                 óJ   — d|                       |j        d         ¦  «        › d�S )Nz
std::log2(r   r   r   r   s     r   rå   z$CppPrinter._print_OpaqueUnaryFn_log2y  rY  r   c                 ó˜   — t          |j        ¦  «        dk    rt          d¦  «        ‚d|                      |j        d         ¦  «        › d�S )Nr}   rç   zstd::lrint(r   r   r   r   s     r   ro   zCppPrinter._print_RoundToInt}  r²   r   c                 ó  — t          |j        ¦  «        dk    rt          d¦  «        ‚|j        \  }}|j        r(|dk    rt          d¦  «        ‚t	          d|› d�¦  «        ‚|                      |t          d         ¦  «        }d|› d	|› d
| › d�S )Nr¾   rê   r   z+ndigits must be negative for integer inputszOFor integer inputs, only non-negative ndigits are currently supported, but got ú.rL   z%static_cast<double>(std::nearbyint(1ez * z) * 1er   )r€   r   rO   r  Ú
ValueErrorrŠ   r   )r   r   rî   rï   Ú
number_strs        r   rq   zCppPrinter._print_RoundDecimal„  s´   € ÝˆtŒy‰>Œ>˜QÒÐÝ Ð!MÑNÔNÐNØœ)‰ˆ�ØÔð 	à˜!Š|ˆ|Ý$Ð%RÑSÔSÐSÝØlÐbiÐlÐlÐlñô ð ð ×&Ò& v­z¸%Ô/@ÑAÔAˆ
Ø`°wÐ`Ð`À:Ð`Ð`ÐV]ÐU]Ð`Ð`Ð`Ð`r   c                 ó   — dS )NÚtruery   r   s     r   Ú_print_BooleanTruezCppPrinter._print_BooleanTrue’  s   € Øˆvr   c                 ó   — dS )NÚfalsery   r   s     r   Ú_print_BooleanFalsezCppPrinter._print_BooleanFalse•  s   € Øˆwr   c                 ó   — dS )Nz'std::numeric_limits<double>::infinity()ry   r   s     r   rZ   zCppPrinter._print_Infinity˜  s   € Ø8Ð8r   c                 ó2   — d|                       |¦  «        › �S )Nú-)rZ   r   s     r   r]   z"CppPrinter._print_NegativeInfinity›  s   € Ø/�4×'Ò'¨Ñ-Ô-Ð/Ð/Ð/r   c                 ó   — dS )Nz(std::numeric_limits<double>::quiet_NaN()ry   r   s     r   r_   zCppPrinter._print_NaNž  s   € Ø9Ð9r   N)0rt   ru   rv   rH   rx   rG   r	  r  r„   rù   r•   r=   r¬   r¯   rm   rs   rX   rb   rd   rh   rk   rS   r9  r¶   r¹   r   rI  rÆ   rÃ   r¼   rÉ   rÍ   rÑ   rÔ   r×   rÚ   rÝ   rà   rã   r£   rå   ro   rq   rb  re  rZ   r]   r_   ry   r   r   rû   rû   s  s,  € € € € € ð 5¤:ð °#ð ð ð ð ð" ¤ð "°ð "ð "ð "ð "ðC˜eœjð C¨Sð Cð Cð Cð Cð0 U¤Zð 0°Cð 0ð 0ð 0ð 0ð$
V¨5¬:ð 
V¸#ð 
Vð 
Vð 
Vð 
Vð` E¤Jð `°3ð `ð `ð `ð `ðK ¤ð K°ð Kð Kð Kð KðK e¤jð K°Sð Kð Kð Kð Kð1 e¤jð 1°Sð 1ð 1ð 1ð 1ð:¨¬
ð :°sð :ð :ð :ð :ðC 5¤:ð C°#ð Cð Cð Cð Cð+ U¤Zð +°Cð +ð +ð +ð +ðd e¤jð d°Sð dð dð dð dð
¨¬
ð 
°sð 
ð 
ð 
ð 
ðD E¤Jð D°3ð Dð Dð Dð Dð
5˜uœzð 5¨cð 5ð 5ð 5ð 5ð:K E¤Jð K°3ð Kð Kð Kð KðK 5¤:ð K°#ð Kð Kð Kð KðK U¤Zð K°Cð Kð Kð Kð Kð6 5¤:ð 6°W¸\Ô5Jð 6Èsð 6ð 6ð 6ð 6ð$0˜uœzð 0¨cð 0ð 0ð 0ð 0ð0˜uœzð 0¨cð 0ð 0ð 0ð 0ð8˜uœzð 8¨cð 8ð 8ð 8ð 8ð8¨U¬Zð 8¸Cð 8ð 8ð 8ð 8ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð8¨U¬Zð 8¸Cð 8ð 8ð 8ð 8ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð8¨U¬Zð 8¸Cð 8ð 8ð 8ð 8ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð9¨e¬jð 9¸Sð 9ð 9ð 9ð 9ð: e¤jð :°Sð :ð :ð :ð :ða¨¬
ð a°sð að að að að u¤zð °cð ð ð ð ð¨¬
ð °sð ð ð ð ð9 E¤Jð 9°3ð 9ð 9ð 9ð 9ð0¨E¬Jð 0¸3ð 0ð 0ð 0ð 0ð:˜uœzð :¨cð :ð :ð :ð :ð :ð :r   rû   )r  Útypingr   rH   Úsympy.printing.precedencer   r   Úsympy.printing.strr   r  r  r  r
   r{   rû   ry   r   r   ú<module>rm     s  ðØ 
€
€
€
Ø Ð Ð Ð Ð Ð à €€€Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø )Ð )Ð )Ð )Ð )Ð )ð €
Ø€Ø€ð
|
ð |
ð |
ð |
ð |
�*ñ |
ô |
ð |
ð~a)ð a)ð a)ð a)ð a)�Kñ a)ô a)ð a)ðHl:ð l:ð l:ð l:ð l:�ñ l:ô l:ð l:ð l:ð l:r   