§
    Ì²Åj)J  ã                   ó–   — 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	 G d„ de¦  «        Z
 G d„ d	e
¦  «        Z G d
„ de
¦  «        ZdS )é    N)ÚOptional)Ú
PRECEDENCEÚ
precedence)Ú
StrPrinterÚint64_tc                   ó`  — e Zd ZdZdej        defd„Zddej        dee         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     úLC:\Projects\Historical\venv\Lib\site-packages\torch/utils/_sympy/printers.pyÚ
_print_MulzExprPrinter._print_Mul   s"   € Ø�~Š~˜dœi¨­j¸Ñ.>Ô.>Ñ?Ô?Ð?ó    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   s   € Ø�~Š~˜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                 ó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ú / r(   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_CleanDiv*   s   € Ø×#Ò# DÑ)Ô)Ð)r   c                 óB   — |                       |j        d         ¦  «        S ©Nr   ©Ú_printr   r   s     r   Ú_print_IdentityzExprPrinter._print_Identity-   s   € Ø�{Š{˜4œ9 Qœ<Ñ(Ô(Ð(r   c                 óÚ   — |j         \  }}|t          |¦  «        k    s
J |¦   «         ‚t          |¦  «        }|dk    sJ ‚|dk    r&|                      |g|z  dt          d         ¦  «        S dS )Nr   r   ÚMulÚ1)r   Úintr   r   ©r   r   ÚbaseÚexps       r   Ú
_print_PowzExprPrinter._print_Pow7   sm   € Ø”I‰	ˆˆcØ•c˜#‘h”hŠˆˆ ‰ŒˆÝ�#‰hŒhˆØ�aŠxˆxˆxˆxØ�Š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_ToFloatE   s   € Ý!Ð"TÍÈTÉ
Ì
Ð"TÐ"TÑUÔUÐUr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz$_print_Infinity not implemented for rD   r   s     r   Ú_print_InfinityzExprPrinter._print_InfinityH   ó   € Ý!Ð"UÍÈdÉÌÐ"UÐ"UÑVÔVÐVr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz,_print_NegativeInfinity not implemented for rD   r   s     r   Ú_print_NegativeInfinityz#ExprPrinter._print_NegativeInfinityK   s%   € Ý!ØG½4À¹:¼:ÐGÐGñ
ô 
ð 	
r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz$_print_FloorDiv not implemented for rD   r   s     r   r4   zExprPrinter._print_FloorDivP   rJ   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz%_print_PythonMod not implemented for rD   r   s     r   Ú_print_PythonModzExprPrinter._print_PythonModS   s   € Ý!Ð"VÍ$ÈtÉ*Ì*Ð"VÐ"VÑWÔWÐWr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz&_print_IntTrueDiv not implemented for rD   r   s     r   Ú_print_IntTrueDivzExprPrinter._print_IntTrueDivV   ó    € Ý!Ð"WÍ4ÐPTÉ:Ì:Ð"WÐ"WÑXÔXÐXr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚©Nz(_print_PowByNatural not implemented for rD   r   s     r   Ú_print_PowByNaturalzExprPrinter._print_PowByNaturalY   ó%   € Ý!ØCµt¸D±z´zÐCÐCñ
ô 
ð 	
r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz$_print_FloatPow not implemented for rD   r   s     r   Ú_print_FloatPowzExprPrinter._print_FloatPow^   rJ   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz&_print_TruncToInt not implemented for rD   r   s     r   Ú_print_TruncToIntzExprPrinter._print_TruncToInta   rR   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz&_print_RoundToInt not implemented for rD   r   s     r   Ú_print_RoundToIntzExprPrinter._print_RoundToIntd   rR   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz(_print_RoundDecimal not implemented for rD   r   s     r   Ú_print_RoundDecimalzExprPrinter._print_RoundDecimalg   rV   r   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚)Nz(_print_TruncToFloat not implemented for rD   r   s     r   Ú_print_TruncToFloatzExprPrinter._print_TruncToFloatq   rV   r   r3   )Ú__name__Ú
__module__Ú__qualname__ÚprintmethodÚsympyÚExprÚstrr   r   r   r   r!   r$   r*   r1   r5   r:   rB   rG   rI   rL   r4   rO   rQ   rU   rX   rZ   r\   r^   r`   © r   r   r	   r	      s—  € € € € € à#€Kð@˜uœzð @¨cð @ð @ð @ð @ðBð B˜uœzð B°(¸3´-ð BÈ3ð 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˜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ð 
ð 
ð 
ð 
ð
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                   óN  — 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#S )$ÚPythonPrinterr   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Né   zfloat(r   r/   ©Úlenr   r9   r   s     r   rG   zPythonPrinter._print_ToFloatx   ó>   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø4˜Ÿš D¤I¨a¤LÑ1Ô1Ð4Ð4Ð4Ð4r   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   s"   € Ø�~Š~˜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 ©r(   r)   N©Úparenthesizer   ©Ú.0Úargr   s     €r   ú	<genexpr>z7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>ƒ   sN   øè è € ð 
ð 
ØADˆD×Ò˜c¥:¨fÔ#5¸Ñ#;Ñ<Ô<ð
ð 
ð 
ð 
ð 
ð 
r   r=   r.   ú // r/   r'   ©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.infrh   r   s     r   rI   zPythonPrinter._print_InfinityŠ   s   € Øˆzr   c                 ó   — dS )Nz	-math.infrh   r   s     r   rL   z%PythonPrinter._print_NegativeInfinity�   s   € Øˆ{r   c                 óV   — |                       |j        dt          d         dz
  ¦  «        S r&   r    r   s     r   rO   zPythonPrinter._print_PythonMod‘   r+   r   c                 ó>   ‡ — ˆ fd„|j         D ¦   «         \  }}|› d|› �S )Nc              3   ó`   •K  — | ](}‰                      |t          d          dz
  ¦  «        V — Œ)dS rv   rw   ry   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   r4   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 )Nr-   r(   r)   r    r   s     r   rQ   zPythonPrinter._print_IntTrueDiv›   r+   r   c                 ó4   — d|                       |¦  «        › d�S )Nz
math.sqrt(r/   ©r9   r   s     r   Ú_helper_sqrtzPythonPrinter._helper_sqrtž   s   € Ø0˜DŸKšK¨Ñ-Ô-Ð0Ð0Ð0Ð0r   c                 óB   — |                       |j        d         ¦  «        S r7   )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   rX   zPythonPrinter._print_FloatPow¤   ó   € Ø�~Š~˜dœi¨µ¸EÔ1BÑCÔCÐCr   c                 óP   — |                       |j        dt          d         ¦  «        S r‘   r    r   s     r   rU   z!PythonPrinter._print_PowByNatural¨   r“   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S ©Nrl   zmath.floor(r   r/   rm   r   s     r   Ú_print_floorzPythonPrinter._print_floor«   ó>   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø9˜TŸ[š[¨¬°1¬Ñ6Ô6Ð9Ð9Ð9Ð9r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S r–   rm   r   s     r   Ú_print_FloorToIntzPythonPrinter._print_FloorToInt¯   r˜   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   zmath.trunc(r   r/   rm   r   s     r   rZ   zPythonPrinter._print_TruncToInt³   ó>   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"à9˜TŸ[š[¨¬°1¬Ñ6Ô6Ð9Ð9Ð9Ð9r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S ©Nrl   z
math.ceil(r   r/   rm   r   s     r   Ú_print_ceilingzPythonPrinter._print_ceiling¸   ó>   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø8˜DŸKšK¨¬	°!¬Ñ5Ô5Ð8Ð8Ð8Ð8r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S rž   rm   r   s     r   Ú_print_CeilToIntzPythonPrinter._print_CeilToInt¼   r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   zabs(r   r/   rm   r   s     r   Ú
_print_AbszPythonPrinter._print_AbsÀ   s>   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø2�d—k’k $¤)¨A¤,Ñ/Ô/Ð2Ð2Ð2Ð2r   c                 ó˜   — t          |j        ¦  «        dk    sJ ‚dd                     t          | j        |j        ¦  «        ¦  «        › d�S )Né   zmax(ú, r/   ©rn   r   ÚjoinÚmapr9   r   s     r   Ú
_print_MaxzPythonPrinter._print_MaxÇ   óF   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø?�d—i’i¥ D¤K°´Ñ ;Ô ;Ñ<Ô<Ð?Ð?Ð?Ð?r   c                 ó˜   — t          |j        ¦  «        dk    sJ ‚dd                     t          | j        |j        ¦  «        ¦  «        › d�S )Nr¦   zmin(r§   r/   r¨   r   s     r   Ú
_print_MinzPythonPrinter._print_MinË   r¬   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z	math.cos(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_cosz&PythonPrinter._print_OpaqueUnaryFn_cosÏ   ó>   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø7˜4Ÿ;š; t¤y°¤|Ñ4Ô4Ð7Ð7Ð7Ð7r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
math.cosh(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_coshz'PythonPrinter._print_OpaqueUnaryFn_coshÓ   r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
math.acos(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_acosz'PythonPrinter._print_OpaqueUnaryFn_acos×   r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z	math.sin(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_sinz&PythonPrinter._print_OpaqueUnaryFn_sinÛ   r±   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
math.sinh(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_sinhz'PythonPrinter._print_OpaqueUnaryFn_sinhß   r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
math.asin(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_asinz'PythonPrinter._print_OpaqueUnaryFn_asinã   r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z	math.tan(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_tanz&PythonPrinter._print_OpaqueUnaryFn_tanç   r±   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
math.tanh(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_tanhz'PythonPrinter._print_OpaqueUnaryFn_tanhë   r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
math.atan(r   r/   rm   r   s     r   Ú_print_OpaqueUnaryFn_atanz'PythonPrinter._print_OpaqueUnaryFn_atanï   r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   úround(r   r/   rm   r   s     r   r\   zPythonPrinter._print_RoundToIntó   ro   r   c                 óº   — t          |j        ¦  «        dk    sJ ‚|j        \  }}t          |t          j        ¦  «        sJ ‚d|                      |¦  «        › d|› d�S )Nr¦   rÃ   r§   r/   )rn   r   Ú
isinstancere   ÚIntegerr9   )r   r   ÚnumberÚndigitss       r   r^   z!PythonPrinter._print_RoundDecimal÷   sc   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Øœ)‰ˆ�Ý˜'¥5¤=Ñ1Ô1Ð1Ð1Ð1Ø9˜Ÿš FÑ+Ô+Ð9Ð9¨wÐ9Ð9Ð9Ð9r   N)&ra   rb   rc   re   rf   rg   rG   rq   rs   rƒ   rI   rL   rO   r4   rQ   r�   r�   rX   rU   r—   rš   rZ   rŸ   r¢   r¤   r«   r®   r°   r³   rµ   r·   r¹   r»   r½   r¿   rÁ   r\   r^   rh   r   r   rj   rj   w   sÄ  € € € € € ð5 5¤:ð 5°#ð 5ð 5ð 5ð 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ð ð ð ð ðJ U¤Zð J°Cð Jð Jð Jð Jð E¤Jð °3ð ð ð ð ðJ e¤jð J°Sð Jð Jð Jð Jð1 ¤ð 1°ð 1ð 1ð 1ð 1ð/¨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ð5 e¤jð 5°Sð 5ð 5ð 5ð 5ð:¨¬
ð :°sð :ð :ð :ð :ð :ð :r   rj   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%S )&Ú
CppPrinterr   r   c                 óf   — t           j        dv rt          |¦  «        › d�nt          |¦  «        › d�S )N)ÚdarwinÚwin32ÚLLÚL)ÚsysÚplatformr>   r   s     r   Ú_print_IntegerzCppPrinter._print_Integerÿ   s8   € å #¤Ð0CÐ CÐ C�s�4‰yŒyÐÐÐÐÍCÐPTÉIÌIÈÈÈð	
r   c                 óF   ‡ — ˆ fd„|j         D ¦   «         \  }}}|› d|› d|› �S )Nc              3   ó`   •K  — | ](}‰                      |t          d          dz
  ¦  «        V — Œ)dS rv   rw   ry   s     €r   r|   z*CppPrinter._print_Where.<locals>.<genexpr>  sN   øè è € ð 
ð 
ØADˆD×Ò˜c¥:¨fÔ#5¸Ñ#;Ñ<Ô<ð
ð 
ð 
ð 
ð 
ð 
r   z ? z : r~   )r   r   ÚcÚpÚqs   `    r   Ú_print_WherezCppPrinter._print_Where  sQ   ø€ ð
ð 
ð 
ð 
ØHLÌ	ð
ñ 
ô 
‰ˆˆ1ˆað Ð!Ð!˜Ð!Ð!˜aÐ!Ð!Ð!r   c           	      ó  — |j         \  }}}|                      |¦  «        }|dk    r/|                      |¦  «        }|j        r
d|› d|› d�}n	d|› d|› d�}|                      |¦  «        }dt          › d|› d	t          › d|› d�	S )
Nrl   ú,c10::div_floor_integer(static_cast<int64_t>(ú), static_cast<int64_t>(ú))ú,c10::div_floor_floating(static_cast<double>(ú), static_cast<double>(z(static_cast<ú>(z) % static_cast<)r   ÚdoprintÚ
is_integerÚ
INDEX_TYPEr   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   r4   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    sJ ‚d|                      |j        d         ¦  «        › d�}|j        rdt          › d|› d�n|S ©Nrl   zstd::floor(r   r/   ústatic_cast<rß   ©rn   r   r9   rá   râ   ©r   r   Úrs      r   r—   zCppPrinter._print_floor  óc   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø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    sJ ‚d|                      |j        d         ¦  «        › d�}|j        rdt          › d|› d�n|S rå   rç   rè   s      r   rš   zCppPrinter._print_FloorToInt#  rê   r   c                 óš   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�}dt          › d|› d�S )Nrl   ústd::trunc(r   r/   ræ   rß   )rn   r   r9   râ   rè   s      r   rZ   zCppPrinter._print_TruncToInt(  sV   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø6˜$Ÿ+š+ d¤i°¤lÑ3Ô3Ð6Ð6Ð6ˆØ0�jÐ0Ð0¨AÐ0Ð0Ð0Ð0r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   rí   r   r/   rm   r   s     r   r`   zCppPrinter._print_TruncToFloat-  r˜   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   ústatic_cast<double>(r   r/   rm   r   s     r   rG   zCppPrinter._print_ToFloat1  s>   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"ØB d§k¢k°$´)¸A´,Ñ&?Ô&?ÐBÐBÐBÐBr   c                 óV   — |                       |j        dt          d         dz
  ¦  «        S r&   r    r   s     r   rO   zCppPrinter._print_PythonMod9  r+   r   c                 ót   — |j         \  }}d|                      |¦  «        › d|                      |¦  «        › d�S )Nrð   z) / static_cast<double>(r/   ©r   r9   )r   r   ÚlhsÚrhss       r   rQ   zCppPrinter._print_IntTrueDiv<  sB   € Ø”9‰ˆˆSàc d§k¢k°#Ñ&6Ô&6ÐcÐcÐPT×P[ÒP[Ð\_ÑP`ÔP`ÐcÐcÐcÐcr   c                 ó@   — t          dt          | ¦  «        › �¦  «        ‚rT   rD   r   s     r   rU   zCppPrinter._print_PowByNaturalC  rV   r   c                 ót   — |j         \  }}d|                      |¦  «        › d|                      |¦  «        › d�S )Nú	std::pow(r§   r/   ró   r?   s       r   rX   zCppPrinter._print_FloatPowH  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 )Nr)   g      à¿ú
std::sqrt(r/   z1.0/std::sqrt(r   r   r<   éÿÿÿÿz1.0/(z1.0/z1.0ræ   rß   rø   r§   )	r   r9   rá   r>   r   r   Úabsrâ   Úfloat)r   r   r@   rA   ré   s        r   rB   zCppPrinter._print_PowL  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 )Nrl   z.0/z.0ræ   rß   r/   )r×   rÖ   rá   râ   rè   s      r   Ú_print_RationalzCppPrinter._print_Rationalg  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    sJ ‚d|                      |j        d         ¦  «        › d�}|j        rdt          › d|› d�n|S ©Nrl   z
std::ceil(r   r/   ræ   rß   rç   rè   s      r   rŸ   zCppPrinter._print_ceilingo  óc   € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Ø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    sJ ‚d|                      |j        d         ¦  «        › d�}|j        rdt          › d|› d�n|S r  rç   rè   s      r   r¢   zCppPrinter._print_CeilToIntt  r  r   c           	      óÜ   ‡ — ˆ fd„|j         D ¦   «         }t          |¦  «        dk    r%dt          › d|d         › dt          › d|d         › d�	S d	d
                     |¦  «        z   dz   }d|› d�S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rh   rŒ   ©rz   Úar   s     €r   ú
<listcomp>z)CppPrinter._print_Min.<locals>.<listcomp>z  ó#   ø€ Ð2Ð2Ð2 1�—’˜A‘”Ð2Ð2Ð2r   r¦   zstd::min(static_cast<rß   r   ú), static_cast<rl   rÜ   Ú{r§   Ú}z	std::min(r/   ©r   rn   râ   r©   ©r   r   r   Úils   `   r   r®   zCppPrinter._print_Miny  óŽ   ø€ Ø2Ð2Ð2Ð2¨¬	Ð2Ñ2Ô2ˆÝˆt‰9Œ9˜Š>ˆ>Øj­:ÐjÐj¸¸a¼ÐjÐjÕQ[ÐjÐjÐ_cÐdeÔ_fÐjÐjÐjÐjð �t—y’y ‘”Ñ&¨Ñ,ˆBØ$˜rÐ$Ð$Ð$Ð$r   c           	      óÜ   ‡ — ˆ fd„|j         D ¦   «         }t          |¦  «        dk    r%dt          › d|d         › dt          › d|d         › d�	S d	d
                     |¦  «        z   dz   }d|› d�S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rh   rŒ   r  s     €r   r  z)CppPrinter._print_Max.<locals>.<listcomp>ƒ  r	  r   r¦   zstd::max(static_cast<rß   r   r
  rl   rÜ   r  r§   r  z	std::max(r/   r  r  s   `   r   r«   zCppPrinter._print_Max‚  r  r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z	std::abs(r   r/   rm   r   s     r   r¤   zCppPrinter._print_Abs‹  r±   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z	std::cos(r   r/   rm   r   s     r   r°   z#CppPrinter._print_OpaqueUnaryFn_cos�  r±   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
std::cosh(r   r/   rm   r   s     r   r³   z$CppPrinter._print_OpaqueUnaryFn_cosh“  r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
std::acos(r   r/   rm   r   s     r   rµ   z$CppPrinter._print_OpaqueUnaryFn_acos—  r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z	std::sin(r   r/   rm   r   s     r   r·   z#CppPrinter._print_OpaqueUnaryFn_sin›  r±   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
std::sinh(r   r/   rm   r   s     r   r¹   z$CppPrinter._print_OpaqueUnaryFn_sinhŸ  r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
std::asin(r   r/   rm   r   s     r   r»   z$CppPrinter._print_OpaqueUnaryFn_asin£  r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z	std::tan(r   r/   rm   r   s     r   r½   z#CppPrinter._print_OpaqueUnaryFn_tan§  r±   r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
std::tanh(r   r/   rm   r   s     r   r¿   z$CppPrinter._print_OpaqueUnaryFn_tanh«  r    r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   z
std::atan(r   r/   rm   r   s     r   rÁ   z$CppPrinter._print_OpaqueUnaryFn_atan¯  r    r   c                 óJ   — d|                       |j        d         ¦  «        › d�S )Nrú   r   r/   r8   r   s     r   r�   z$CppPrinter._print_OpaqueUnaryFn_sqrt³  s%   € Ø8˜DŸKšK¨¬	°!¬Ñ5Ô5Ð8Ð8Ð8Ð8r   c                 ó~   — t          |j        ¦  «        dk    sJ ‚d|                      |j        d         ¦  «        › d�S )Nrl   zstd::lrint(r   r/   rm   r   s     r   r\   zCppPrinter._print_RoundToInt¶  rœ   r   c                 óê   — t          |j        ¦  «        dk    sJ ‚|j        \  }}|j        r|dk     sJ ‚t          d|› d�¦  «        ‚|                      |t
          d         ¦  «        }d|› d|› d| › d	�S )
Nr¦   r   zOFor integer inputs, only non-negative ndigits are currently supported, but got ú.r<   z%static_cast<double>(std::nearbyint(1ez * z) * 1er/   )rn   r   rá   Ú
ValueErrorrx   r   )r   r   rÇ   rÈ   Ú
number_strs        r   r^   zCppPrinter._print_RoundDecimal»  s    € Ý�4”9‰~Œ~ Ò"Ð"Ð"Ð"Øœ)‰ˆ�ØÔð 	à˜Q’;�;�;�;ÝØlÐbiÐlÐlÐlñô ð ð ×&Ò& v­z¸%Ô/@ÑAÔAˆ
Ø`°wÐ`Ð`À:Ð`Ð`ÐV]ÐU]Ð`Ð`Ð`Ð`r   c                 ó   — dS )NÚtruerh   r   s     r   Ú_print_BooleanTruezCppPrinter._print_BooleanTrueÇ  s   € Øˆvr   c                 ó   — dS )NÚfalserh   r   s     r   Ú_print_BooleanFalsezCppPrinter._print_BooleanFalseÊ  s   € Øˆwr   N)(ra   rb   rc   re   rf   rg   rÒ   rØ   rƒ   r4   r—   rš   rZ   r`   rG   rO   rQ   rU   rX   rB   rÿ   rŸ   r¢   r®   r«   r¤   r°   r³   rµ   r·   r¹   r»   r½   r¿   rÁ   r�   r\   r^   r%  r(  rh   r   r   rÊ   rÊ   þ   s$  € € € € € ð
 5¤:ð 
°#ð 
ð 
ð 
ð 
ð
" ¤ð "°ð "ð "ð "ð "ð
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ðJ U¤Zð J°Cð Jð Jð Jð Jð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ð6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ð
%˜uœzð %¨cð %ð %ð %ð %ð%˜uœzð %¨cð %ð %ð %ð %ð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ð: e¤jð :°Sð :ð :ð :ð :ð

a¨¬
ð 
a°sð 
að 
að 
að 
að u¤zð °cð ð ð ð ð¨¬
ð °sð ð ð ð ð ð r   rÊ   )rÐ   Útypingr   re   Úsympy.printing.precedencer   r   Úsympy.printing.strr   râ   r	   rj   rÊ   rh   r   r   ú<module>r,     sþ   ðØ 
€
€
€
Ø Ð Ð Ð Ð Ð à €€€Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø )Ð )Ð )Ð )Ð )Ð )ð €
ð
f
ð f
ð f
ð f
ð f
�*ñ f
ô f
ð f
ðRD:ð D:ð D:ð D:ð D:�Kñ D:ô D:ð D:ðNMð Mð Mð Mð M�ñ Mô Mð Mð Mð Mr   