ó
    "EñiCm  ã                   ó~   • S SK r S SKrS SKJrJr  S SKJr  SrSrSr	 " S S\5      r
 " S	 S
\
5      r " S S\
5      rg)é    N)Ú
PRECEDENCEÚ
precedence)Ú
StrPrinterÚint64_tl   ÿÿÿÿ ìûÿÿÿ         c                   óÜ  • \ rS rSrSrS\R                  S\4S jrS\R                  S\4S jr	S!S\R                  S\S-  S\4S	 jjr
S\R                  S\4S
 jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jrS\R                  S\4S jr S r!g)"ÚExprPrinteré   Ú_torch_sympystrÚexprÚreturnc                 óN   • U R                  UR                  S[        U5      5      $ )NÚ*©Ú	stringifyÚargsr   ©Úselfr   s     ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/utils/_sympy/printers.pyÚ
_print_MulÚExprPrinter._print_Mul   s   € Ø�~‰~˜dŸi™i¨¬j¸Ó.>Ó?Ð?ó    c                 óF   • SU R                  UR                  S   5       S3$ )Nznot (r   Ú)©Ú_printr   r   s     r   Ú
_print_NotÚExprPrinter._print_Not   s#   € à�t—{‘{ 4§9¡9¨Q¡<Ó0Ð1°Ð3Ð3r   NÚorderc                 óN   • U R                  UR                  S[        U5      5      $ )Nz + r   )r   r   r   s      r   Ú
_print_AddÚExprPrinter._print_Add   s   € Ø�~‰~˜dŸi™i¨´
¸4Ó0@ÓAÐAr   c                 ój   • U R                  UR                  SUR                   S3[        U5      5      $ )NÚ )r   r   Úrel_opr   r   s     r   Ú_print_RelationalÚExprPrinter._print_Relational   s+   € Ø�~‰~˜dŸi™i¨1¨T¯[©[¨M¸Ð);¼ZÈÓ=MÓNÐNr   c                 óJ   • U R                  UR                  S[        S   5      $ )Nz & Ú
BitwiseAnd©r   r   r   r   s     r   Ú_print_BitwiseFn_bitwise_andÚ(ExprPrinter._print_BitwiseFn_bitwise_and    ó   € Ø�~‰~˜dŸi™i¨´
¸<Ñ0HÓIÐIr   c                 óJ   • U R                  UR                  S[        S   5      $ )Nz | Ú	BitwiseOrr*   r   s     r   Ú_print_BitwiseFn_bitwise_orÚ'ExprPrinter._print_BitwiseFn_bitwise_or#   s   € Ø�~‰~˜dŸi™i¨´
¸;Ñ0GÓHÐHr   c                 óJ   • U R                  UR                  S[        S   5      $ )Nz ^ Ú
BitwiseXorr*   r   s     r   Ú_print_BitwiseFn_bitwise_xorÚ(ExprPrinter._print_BitwiseFn_bitwise_xor&   r-   r   c                 óP   • U R                  UR                  S[        S   S-
  5      $ ©Nú % ÚAtomç      à?r*   r   s     r   Ú
_print_ModÚExprPrinter._print_Mod+   ó#   € Ø�~‰~˜dŸi™i¨´
¸6Ñ0BÀSÑ0HÓIÐIr   c                 ó\   • U R                  UR                  S[        S   S-
  5      nSU S3$ )Nú / r9   r:   Ú(r   r*   )r   r   Úss      r   Ú_print_FloatTrueDivÚExprPrinter._print_FloatTrueDiv.   s/   € Ø�N‰N˜4Ÿ9™9 e¬Z¸Ñ-?À#Ñ-EÓFˆØ�1�#�Qˆxˆr   c                 ó$   • U R                  U5      $ ©N)Ú_print_FloorDivr   s     r   Ú_print_CleanDivÚExprPrinter._print_CleanDiv2   s   € Ø×#Ñ# DÓ)Ð)r   c                 ó>   • U R                  UR                  S   5      $ ©Nr   r   r   s     r   Ú_print_IdentityÚExprPrinter._print_Identity5   s   € à�{‰{˜4Ÿ9™9 Q™<Ó(Ð(r   c                 ót   • UR                   S:X  a  [        [        R                  " USS95      $ [        U5      $ )Né5   é   )Údps)Ú_precÚstrÚsympyÚFloatr   s     r   Ú_print_FloatÚExprPrinter._print_Float9   s2   € Ø�:‰:˜Óô ”u—{’{ 4¨RÑ0Ó1Ð1ô �t“9Ðr   c                 óÚ   • UR                   u  p#U[        U5      :w  a  [        U5      e[        U5      nUS:  a  [        SU 35      eUS:”  a  U R                  U/U-  S[        S   5      $ g)Nr   z#exponent must be non-negative, got r   ÚMulÚ1)r   ÚintÚAssertionErrorr   r   ©r   r   ÚbaseÚexps       r   Ú
_print_PowÚExprPrinter._print_PowJ   sn   € Ø—I‘I‰	ˆØ”#�c“(‹?Ü  Ó%Ð%Ü�#‹hˆØ�‹7Ü Ð#FÀsÀeÐ!LÓMÐMØ�‹7Ø—>‘> 4 &¨3¡,°´ZÀÑ5FÓGÐGØr   c                 ó0   • [        S[        U 5       35      e)Nz#_print_ToFloat not implemented for ©ÚNotImplementedErrorÚtyper   s     r   Ú_print_ToFloatÚExprPrinter._print_ToFloatZ   s   € Ü!Ð$GÌÈTË
À|Ð"TÓUÐUr   c                 ó0   • [        S[        U 5       35      e)Nz$_print_Infinity not implemented for rb   r   s     r   Ú_print_InfinityÚExprPrinter._print_Infinity]   ó   € Ü!Ð$HÌÈdËÈÐ"UÓVÐVr   c                 ó0   • [        S[        U 5       35      e)Nz,_print_NegativeInfinity not implemented for rb   r   s     r   Ú_print_NegativeInfinityÚ#ExprPrinter._print_NegativeInfinity`   s   € Ü!Ø:¼4À»:¸,ÐGó
ð 	
r   c                 ó0   • [        S[        U 5       35      e)Nz$_print_FloorDiv not implemented for rb   r   s     r   rF   ÚExprPrinter._print_FloorDive   rj   r   c                 ó0   • [        S[        U 5       35      e)Nz%_print_PythonMod not implemented for rb   r   s     r   Ú_print_PythonModÚExprPrinter._print_PythonModh   s   € Ü!Ð$IÌ$ÈtË*ÈÐ"VÓWÐWr   c                 ó0   • [        S[        U 5       35      e)Nz&_print_IntTrueDiv not implemented for rb   r   s     r   Ú_print_IntTrueDivÚExprPrinter._print_IntTrueDivk   ó   € Ü!Ð$JÌ4ÐPTË:È,Ð"WÓXÐXr   c                 ó0   • [        S[        U 5       35      e)Nú(_print_PowByNatural not implemented for rb   r   s     r   Ú_print_PowByNaturalÚExprPrinter._print_PowByNaturaln   ó   € Ü!Ø6´t¸D³z°lÐCó
ð 	
r   c                 ó0   • [        S[        U 5       35      e)Nz$_print_FloatPow not implemented for rb   r   s     r   Ú_print_FloatPowÚExprPrinter._print_FloatPows   rj   r   c                 ó0   • [        S[        U 5       35      e)Nz&_print_TruncToInt not implemented for rb   r   s     r   Ú_print_TruncToIntÚExprPrinter._print_TruncToIntv   rv   r   c                 ó0   • [        S[        U 5       35      e)Nz&_print_RoundToInt not implemented for rb   r   s     r   Ú_print_RoundToIntÚExprPrinter._print_RoundToInty   rv   r   c                 ó0   • [        S[        U 5       35      e)Nz(_print_RoundDecimal not implemented for rb   r   s     r   Ú_print_RoundDecimalÚExprPrinter._print_RoundDecimal|   r{   r   c                 ó0   • [        S[        U 5       35      e)Nz(_print_TruncToFloat not implemented for rb   r   s     r   Ú_print_TruncToFloatÚExprPrinter._print_TruncToFloat†   r{   r   © rE   )"Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚprintmethodrS   ÚExprrR   r   r   r!   r&   r+   r0   r4   r;   rB   rG   rK   rU   r_   re   rh   rl   rF   rq   rt   ry   r}   r€   rƒ   r†   r‰   Ú__static_attributes__r‹   r   r   r	   r	      s  † à#€Kð@˜uŸz™zð @¨cô @ð4˜uŸz™zð 4¨cô 4ñB˜uŸz™zð B°#¸±*ð BÈõ BðO e§j¡jð O°Sô OðJ°·±ð JÀô JðI°·
±
ð I¸sô IðJ°·±ð JÀô Jð
J˜uŸz™zð J¨cô Jð¨¯
©
ð °sô ð* E§J¡Jð *°3ô *ð) E§J¡Jð )°3ô )ð §¡ð °ô ð"	˜uŸz™zð 	¨cô 	ð V 5§:¡:ð V°#ô VðW E§J¡Jð W°3ô Wð
¨E¯J©Jð 
¸3ô 
ð
W E§J¡Jð W°3ô WðX U§Z¡Zð X°Cô XðY e§j¡jð Y°Sô Yð
¨¯
©
ð 
°sô 
ð
W E§J¡Jð W°3ô WðY e§j¡jð Y°Sô YðY e§j¡jð Y°Sô Yð
¨¯
©
ð 
°sô 
ð
¨¯
©
ð 
°s÷ 
r   r	   c                   ó   • \ rS rSrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jr	S\R
                  S\4S jr
S\R
                  S\4S jrS\R
                  S\4S	 jrS\R
                  S\4S
 jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jr S\R
                  S\4S jr!S\R
                  S\4S jr"S\R
                  S\4S  jr#S\R
                  S\4S! jr$S\R
                  S\4S" jr%S\R
                  S\4S# jr&S\R
                  S\4S$ jr'S\R
                  S\4S% jr(S&r)g')(ÚPythonPrinteréŒ   r   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Né   ú$ToFloat expects exactly one argumentztorch.sym_float(r   r   ©Úlenr   r[   r   r   s     r   re   ÚPythonPrinter._print_ToFloat�   sA   € Üˆt�y‰y‹>˜QÓÜ Ð!GÓHÐHð " $§+¡+¨d¯i©i¸©lÓ";Ð!<¸AÐ>Ð>r   c                 óN   • U R                  UR                  S[        U5      5      $ )Nz and r   r   s     r   Ú
_print_AndÚPythonPrinter._print_And    s   € Ø�~‰~˜dŸi™i¨´*¸TÓ2BÓCÐCr   c                 óN   • U R                  UR                  S[        U5      5      $ )Nz or r   r   s     r   Ú	_print_OrÚPythonPrinter._print_Or£   s   € Ø�~‰~˜dŸi™i¨´¸DÓ1AÓBÐBr   c                 óf   ^ • U 4S jUR                    5       u  p#nUS:w  a	  SU SU S3nSU SU S3$ )Nc              3   ó\   >#   • U  H!  nTR                  U[        S    S-
  5      v •  M#     g7f©r9   r:   N©Úparenthesizer   ©Ú.0Úargr   s     €r   Ú	<genexpr>Ú7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>§   s.   øé € ð 
ÚHQÀˆD×Ñ˜c¤:¨fÑ#5¸Ñ#;×<Ð<Ê	ùó   ƒ),rY   r@   ú // r   r8   ©r   ©r   r   ÚxÚdivÚmods   `    r   Ú_print_ModularIndexingÚ$PythonPrinter._print_ModularIndexing¦   sL   ø€ ô
ØHLÏ	Ê	ó
‰ˆ�ð �#‹:Ø�A�3�d˜3˜%˜qÐ!ˆAØ�1�#�S˜˜˜QÐÐr   c                 ó   • g)Nzmath.infr‹   r   s     r   rh   ÚPythonPrinter._print_Infinity®   s   € Ør   c                 ó   • g)Nz	-math.infr‹   r   s     r   rl   Ú%PythonPrinter._print_NegativeInfinity±   s   € Ør   c                 óP   • U R                  UR                  S[        S   S-
  5      $ r7   r*   r   s     r   rq   ÚPythonPrinter._print_PythonModµ   r=   r   c                 óB   ^ • U 4S jUR                    5       u  p#U SU 3$ )Nc              3   ó\   >#   • U  H!  nTR                  U[        S    S-
  5      v •  M#     g7fr¤   r¥   r§   s     €r   rª   Ú0PythonPrinter._print_FloorDiv.<locals>.<genexpr>º   s+   øé € ÐXÊiÀs�$×#Ñ# C¬°FÑ);¸cÑ)A×BÐBÊiùr¬   r­   r®   ©r   r   r°   r±   s   `   r   rF   ÚPythonPrinter._print_FloorDiv¹   s#   ø€ ÜXÈdÏiÊiÓX‰ˆØ��D˜˜ˆÐr   c                 óP   • U R                  UR                  S[        S   S-
  5      $ )Nr?   r9   r:   r*   r   s     r   rt   ÚPythonPrinter._print_IntTrueDiv¿   r=   r   c                 ó,   • SU R                  U5       S3$ )Nz
math.sqrt(r   )r   r   s     r   Ú_helper_sqrtÚPythonPrinter._helper_sqrtÂ   s   € à˜DŸK™K¨Ó-Ð.¨aÐ0Ð0r   c                 ó>   • U R                  UR                  S   5      $ rJ   )rÃ   r   r   s     r   Ú_print_OpaqueUnaryFn_sqrtÚ'PythonPrinter._print_OpaqueUnaryFn_sqrtÆ   s   € Ø× Ñ  §¡¨1¡Ó.Ð.r   c                 óJ   • U R                  UR                  S[        S   5      $ ©Nz ** ÚPowr*   r   s     r   r}   ÚPythonPrinter._print_FloatPowÉ   ó   € Ø�~‰~˜dŸi™i¨´¸EÑ1BÓCÐCr   c                 óJ   • U R                  UR                  S[        S   5      $ rÉ   r*   r   s     r   ry   Ú!PythonPrinter._print_PowByNaturalÍ   rÌ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú"floor expects exactly one argumentúmath.floor(r   r   r™   r   s     r   Ú_print_floorÚPythonPrinter._print_floorÐ   s?   € Üˆt�y‰y‹>˜QÓÜ Ð!EÓFÐFà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú'FloorToInt expects exactly one argumentrÑ   r   r   r™   r   s     r   Ú_print_FloorToIntÚPythonPrinter._print_FloorToIntÖ   s?   € Üˆt�y‰y‹>˜QÓÜ Ð!JÓKÐKà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú'TruncToInt expects exactly one argumentzmath.trunc(r   r   r™   r   s     r   r€   ÚPythonPrinter._print_TruncToIntÜ   óA   € Üˆt�y‰y‹>˜QÓÜ Ð!JÓKÐKð ˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú$ceiling expects exactly one argumentú
math.ceil(r   r   r™   r   s     r   Ú_print_ceilingÚPythonPrinter._print_ceilingã   s?   € Üˆt�y‰y‹>˜QÓÜ Ð!GÓHÐHà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú&CeilToInt expects exactly one argumentrÞ   r   r   r™   r   s     r   Ú_print_CeilToIntÚPythonPrinter._print_CeilToInté   s?   € Üˆt�y‰y‹>˜QÓÜ Ð!IÓJÐJà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú Abs expects exactly one argumentzabs(r   r   r™   r   s     r   Ú
_print_AbsÚPythonPrinter._print_Absï   s?   € Üˆt�y‰y‹>˜QÓÜ Ð!CÓDÐDà�d—k‘k $§)¡)¨A¡,Ó/Ð0°Ð2Ð2r   c                 ó°   • [        UR                  5      S:  a  [        S5      eSSR                  [	        U R
                  UR                  5      5       S3$ )Né   z"Max expects at least two argumentszmax(ú, r   ©rš   r   r[   ÚjoinÚmapr   r   s     r   Ú
_print_MaxÚPythonPrinter._print_Maxø   óF   € Üˆt�y‰y‹>˜AÓÜ Ð!EÓFÐFà�d—i‘i¤ D§K¡K°·±Ó ;Ó<Ð=¸QÐ?Ð?r   c                 ó°   • [        UR                  5      S:  a  [        S5      eSSR                  [	        U R
                  UR                  5      5       S3$ )Nrê   z"Min expects at least two argumentszmin(rë   r   rì   r   s     r   Ú
_print_MinÚPythonPrinter._print_Minþ   rñ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú cos expects exactly one argumentz	math.cos(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_cosÚ&PythonPrinter._print_OpaqueUnaryFn_cos  ó?   € Üˆt�y‰y‹>˜QÓÜ Ð!CÓDÐDà˜4Ÿ;™; t§y¡y°¡|Ó4Ð5°QÐ7Ð7r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú!cosh expects exactly one argumentz
math.cosh(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_coshÚ'PythonPrinter._print_OpaqueUnaryFn_cosh
  ó?   € Üˆt�y‰y‹>˜QÓÜ Ð!DÓEÐEà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú!acos expects exactly one argumentz
math.acos(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_acosÚ'PythonPrinter._print_OpaqueUnaryFn_acos  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ ©Nr—   z sin expects exactly one argumentz	math.sin(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_sinÚ&PythonPrinter._print_OpaqueUnaryFn_sin  rù   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú!sinh expects exactly one argumentz
math.sinh(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_sinhÚ'PythonPrinter._print_OpaqueUnaryFn_sinh  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú!asin expects exactly one argumentz
math.asin(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_asinÚ'PythonPrinter._print_OpaqueUnaryFn_asin"  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú tan expects exactly one argumentz	math.tan(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_tanÚ&PythonPrinter._print_OpaqueUnaryFn_tan(  rù   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú!tanh expects exactly one argumentz
math.tanh(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_tanhÚ'PythonPrinter._print_OpaqueUnaryFn_tanh.  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú!atan expects exactly one argumentz
math.atan(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_atanÚ'PythonPrinter._print_OpaqueUnaryFn_atan4  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   z!log2 expects exactly one argumentz
math.log2(r   r   r™   r   s     r   Ú_print_OpaqueUnaryFn_log2Ú'PythonPrinter._print_OpaqueUnaryFn_log2:  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ú'RoundToInt expects exactly one argumentúround(r   r   r™   r   s     r   rƒ   ÚPythonPrinter._print_RoundToInt@  s?   € Üˆt�y‰y‹>˜QÓÜ Ð!JÓKÐKà˜Ÿ™ D§I¡I¨a¡LÓ1Ð2°!Ð4Ð4r   c                 óê   • [        UR                  5      S:w  a  [        S5      eUR                  u  p#[        U[        R
                  5      (       d  [        S5      eSU R                  U5       SU S3$ )Nrê   ú*RoundDecimal expects exactly two argumentsz,ndigits must be an instance of sympy.Integerr   rë   r   )rš   r   r[   Ú
isinstancerS   ÚIntegerÚ	TypeErrorr   )r   r   ÚnumberÚndigitss       r   r†   Ú!PythonPrinter._print_RoundDecimalF  se   € Üˆt�y‰y‹>˜QÓÜ Ð!MÓNÐNØŸ)™)‰ˆÜ˜'¤5§=¡=×1Ñ1ÜÐJÓKÐKà˜Ÿ™ FÓ+Ð,¨B¨w¨i°qÐ9Ð9r   c                 óÖ   • S n[        UR                  5       HD  u  p4U R                  U5      nUS:X  a  UnM   U R                  U5      nUc  UnM8  SU SU SU S3nMF     U(       a  U$ S$ )NTr@   z if z else r   Ú0)Úreversedr   r   ©r   r   ÚresultÚexpr_iÚcond_iÚexpr_strÚcond_strs          r   Ú_print_PiecewiseÚPythonPrinter._print_PiecewiseO  s{   € ð "ˆÜ& t§y¡yÖ1‰NˆFà—{‘{ 6Ó*ˆHØ˜‹~à!’ð  Ÿ;™; vÓ.�Ø‘>Ø%’Fà   
¨$¨x¨j¸¸v¸hÀaÐH’Fñ 2ö  ˆvÐ( SÐ(r   r‹   N)*rŒ   r�   rŽ   r�   rS   r‘   rR   re   r�   r    r³   rh   rl   rq   rF   rt   rÃ   rÆ   r}   ry   rÒ   rÖ   r€   rß   rã   rç   rï   ró   r÷   rü   r  r  r	  r  r  r  r  r  rƒ   r†   r3  r’   r‹   r   r   r”   r”   Œ   s(  † ð? 5§:¡:ð ?°#ô ?ð&D˜uŸz™zð D¨cô DðC˜eŸj™jð C¨Sô Cð ¨5¯:©:ð  ¸#ô  ð E§J¡Jð °3ô ð¨E¯J©Jð ¸3ô ðJ U§Z¡Zð J°Cô Jð E§J¡Jð °3ô ðJ e§j¡jð J°Sô Jð1 §¡ð 1°ô 1ð/¨e¯j©jð /¸Sô /ðD E§J¡Jð D°3ô DðD¨¯
©
ð D°sô Dð: §¡ð :°ô :ð: e§j¡jð :°Sô :ð: e§j¡jð :°Sô :ð9 5§:¡:ð 9°#ô 9ð9 U§Z¡Zð 9°Cô 9ð3˜uŸz™zð 3¨cô 3ð@˜uŸz™zð @¨cô @ð@˜uŸz™zð @¨cô @ð8¨U¯Z©Zð 8¸Cô 8ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð8¨U¯Z©Zð 8¸Cô 8ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð8¨U¯Z©Zð 8¸Cô 8ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð5 e§j¡jð 5°Sô 5ð:¨¯
©
ð :°sô :ð) U§Z¡Zð )°C÷ )r   r”   c                   ó¸  • \ rS rSrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jr	S\R
                  S\4S jr
S\R
                  S\4S jrS\R
                  S\4S	 jrS\R
                  S\4S
 jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jrS\R
                  S\4S jr S\R
                  S\4S jr!S\R
                  S\4S jr"S\R
                  S\4S  jr#S\R
                  S\4S! jr$S\R
                  S\4S" jr%S\R
                  S\4S# jr&S\R
                  S\4S$ jr'S\R
                  S\4S% jr(S\R
                  S\4S& jr)S\R
                  S\4S' jr*S\R
                  S\4S( jr+S\R
                  S\4S) jr,S*r-g+),Ú
CppPrinterid  r   r   c                 óæ   • [         R                  S;   a  SOSn[        U5      nU[        :”  d
  U[        :  a  [        U S[         35      eU[        :X  a  US:w  a  [        S5      eSU S3$ U U 3$ )	N)ÚdarwinÚwin32ÚLLÚLz too big to convert to r   z#unexpected minimum index type valuez(-1z << 63))ÚsysÚplatformrZ   ÚINDEX_TYPE_MAXÚINDEX_TYPE_MINÚOverflowErrorÚ
INDEX_TYPEr[   )r   r   ÚsuffixÚis       r   Ú_print_IntegerÚCppPrinter._print_Integere  s~   € ÜŸ™Ð)<Ó<‘À#ˆÜ�‹IˆØŒ~Ó ¤^Ó!3Ü 1 #Ð%<¼Z¸LÐ IÓJÐJØ”.Ó Ø�J‹Ü$Ð%JÓKÐKð ˜˜ Ð(Ð(Ø��V�Hˆ~Ðr   c                 óJ   ^ • U 4S jUR                    5       u  p#nU SU SU 3$ )Nc              3   ó\   >#   • U  H!  nTR                  U[        S    S-
  5      v •  M#     g7fr¤   r¥   r§   s     €r   rª   Ú*CppPrinter._print_Where.<locals>.<genexpr>s  s.   øé € ð 
ÚHQÀˆD×Ñ˜c¤:¨fÑ#5¸Ñ#;×<Ð<Ê	ùr¬   ú ? ú : r®   )r   r   ÚcÚpÚqs   `    r   Ú_print_WhereÚCppPrinter._print_Wherer  s3   ø€ ô
ØHLÏ	Ê	ó
‰ˆˆað ��C˜�s˜#˜a˜SÐ!Ð!r   c                 ó  • S n[        UR                  5       HX  u  p4U R                  U[        S   S-
  5      nUS:X  a  UnM+  U R                  U[        S   S-
  5      nUc  UnMN  U SU SU 3nMZ     U(       a  SU S3$ S$ )	Nr9   r:   TrI  rJ  r@   r   r+  )r,  r   r¦   r   r-  s          r   r3  ÚCppPrinter._print_Piecewisex  s™   € ð "ˆÜ& t§y¡yÖ1‰NˆFØ×(Ñ(¨´¸FÑ1CÀcÑ1IÓJˆHØ˜‹~à!’à×,Ñ,¨V´ZÀÑ5GÈ#Ñ5MÓN�Ø‘>Ø%’Fà (˜z¨¨X¨J°c¸&¸ÐB’Fñ 2ö !'��6�(˜!ˆ}Ð/¨CÐ/r   c           	      ó  • UR                   u  p#nU R                  U5      nUS:w  a5  U R                  U5      nUR                  (       a
  SU SU S3nO	SU SU S3nU R                  U5      nS[         SU S	[         SU S3	$ )
Nr—   ú,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_integerrA  r¯   s        r   r³   Ú!CppPrinter._print_ModularIndexingŠ  s™   € Ø—i‘i‰ˆ�Ø�L‰L˜‹OˆØ�!‹8Ø—,‘,˜sÓ#ˆCØ��ØBÀ1À#ÐE]Ð^aÐ]bÐbdÐe‘àBÀ1À#ÐE\Ð]`Ð\aÐacÐd�Ø�l‰l˜3ÓˆØœz˜l¨"¨Q¨CÐ/?Ä
¸|È2ÈcÈUÐRTÐUÐUr   c                 ó¨   • UR                   u  p#U R                  U5      nU R                  U5      nUR                  (       a	  SU SU S3$ SU SU S3$ )NrS  rT  rU  rV  rW  )r   rY  rZ  r¾   s       r   rF   ÚCppPrinter._print_FloorDiv–  sa   € Ø—‘‰ˆØ�L‰L˜‹OˆØ�l‰l˜3ÓˆØ�?�?ØAÀ!ÀÐD\Ð]`Ð\aÐacÐdÐdØ=¸a¸SÐ@WÐX[ÐW\Ð\^Ð_Ð_r   c                 óÎ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3nUR                  (       a  S[
         SU S3$ U$ )Nr—   rÐ   ústd::floor(r   r   ústatic_cast<rX  ©rš   r   r[   r   rZ  rA  ©r   r   Úrs      r   rÒ   ÚCppPrinter._print_floorž  s^   € Üˆt�y‰y‹>˜QÓÜ Ð!EÓFÐFà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØ48·O·O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÎ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3nUR                  (       a  S[
         SU S3$ U$ )Nr—   rÕ   r_  r   r   r`  rX  ra  rb  s      r   rÖ   ÚCppPrinter._print_FloorToInt¥  s^   € Üˆt�y‰y‹>˜QÓÜ Ð!JÓKÐKà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØ48·O·O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 ó¨   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3nS[         SU S3$ )Nr—   rÙ   ústd::trunc(r   r   r`  rX  )rš   r   r[   r   rA  rb  s      r   r€   ÚCppPrinter._print_TruncToInt¬  sS   € Üˆt�y‰y‹>˜QÓÜ Ð!JÓKÐKà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØœj˜\¨¨A¨3¨aÐ0Ð0r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   z)TruncToFloat expects exactly one argumentrh  r   r   r™   r   s     r   r‰   ÚCppPrinter._print_TruncToFloat³  s?   € Üˆt�y‰y‹>˜QÓÜ Ð!LÓMÐMà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r˜   ústatic_cast<double>(r   r   r™   r   s     r   re   ÚCppPrinter._print_ToFloat¹  s?   € Üˆt�y‰y‹>˜QÓÜ Ð!GÓHÐHà% d§k¡k°$·)±)¸A±,Ó&?Ð%@ÀÐBÐBr   c                 ót   • UR                   u  p#U R                  U5      nU R                  U5      nSU SU S3$ )Nzc10::div_mod(rë   r   )r   rY  r¾   s       r   rq   ÚCppPrinter._print_PythonMod¿  s=   € Ø—‘‰ˆØ�L‰L˜‹OˆØ�l‰l˜3ÓˆØ˜q˜c  C 5¨Ð*Ð*r   c                 ól   • UR                   u  p#SU R                  U5       SU R                  U5       S3$ )Nrm  z) / static_cast<double>(r   ©r   r   )r   r   ÚlhsÚrhss       r   rt   ÚCppPrinter._print_IntTrueDivÅ  s>   € Ø—9‘9‰ˆð & d§k¡k°#Ó&6Ð%7Ð7OÐPT×P[ÑP[Ð\_ÓP`ÐOaÐabÐcÐcr   c                 ó‚   • UR                   u  p#US:X  a  SU R                  U5       S3$ [        S[        U 5       35      e)Nrê   z(1 << (rU  rx   )r   r   rc   rd   r\   s       r   ry   ÚCppPrinter._print_PowByNaturalÍ  sH   € à—I‘I‰	ˆØ�1‹9à˜TŸ[™[¨Ó-Ð.¨bÐ1Ð1Ü!Ø6´t¸D³z°lÐCó
ð 	
r   c                 ól   • UR                   u  p#SU R                  U5       SU R                  U5       S3$ )Nú	std::pow(rë   r   rr  r\   s       r   r}   ÚCppPrinter._print_FloatPow×  s6   € Ø—I‘I‰	ˆà˜4Ÿ;™; tÓ,Ð-¨R°·±¸CÓ0@Ð/AÀÐCÐCr   c                 ó  • UR                   u  p#US:X  d  US:X  a#  U R                  U5      nUS:X  a  SU S3$ SU S3$ UR                  (       a¡  [        U5      nUS:”  a  U R	                  U/U-  S[
        S   5      nOQUS	:  a.  S
U R	                  U/[        U5      -  S[
        S   5      -   S-   nOUS	:X  a  SU R                  U5      -   nOSnUR                  (       a  S[         SU S3$ U$ SU S[        U5       S3$ )Nr:   g      à¿ú
std::sqrt(r   z1.0/std::sqrt(r   r   rX   éÿÿÿÿz1.0/(z1.0/z1.0r`  rX  ry  rë   )	r   r   rZ  rZ   r   r   ÚabsrA  Úfloat)r   r   r]   r^   rc  s        r   r_   ÚCppPrinter._print_PowÜ  s  € à—I‘I‰	ˆà�#‹:˜ ›à—;‘;˜tÓ$ˆDØ+.°#«:�Z ˜v QÐ'ÐS¸^ÈDÈ6ÐQRÐ;SÐSØ�>�>Ü�c“(ˆCØ�Q‹wØ—N‘N D 6¨C¡<°´jÀÑ6GÓH‘Ø�r“àØ—n‘n d V¬c°#«hÑ%6¸¼ZÈÑ=NÓOñPàññ ð
 ˜“à˜TŸ[™[¨Ó.Ñ.‘à�à8<¿¿�\¤* ¨R°¨s°!Ð4ÐNÈQÐNð ˜t˜f B¤u¨S£z l°!Ð4Ð4r   c                 ó¶   • UR                   S:X  a  UR                   nOUR                   SUR                    S3nUR                  (       a  S[         SU S3$ U$ )Nr—   z.0/z.0r`  rX  r   )rM  rL  rZ  rA  rb  s      r   Ú_print_RationalÚCppPrinter._print_Rationalù  sR   € à�6‰6�Q‹;Ø—6‘6�(‰Aà—6‘6�(˜#˜dŸf™f˜X RÐ(ˆAØ48·O·O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÎ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3nUR                  (       a  S[
         SU S3$ U$ )Nr—   rÝ   ú
std::ceil(r   r   r`  rX  ra  rb  s      r   rß   ÚCppPrinter._print_ceiling  s^   € Üˆt�y‰y‹>˜QÓÜ Ð!GÓHÐHà˜Ÿ™ T§Y¡Y¨q¡\Ó2Ð3°1Ð5ˆØ48·O·O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÎ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3nUR                  (       a  S[
         SU S3$ U$ )Nr—   râ   r…  r   r   r`  rX  ra  rb  s      r   rã   ÚCppPrinter._print_CeilToInt  s^   € Üˆt�y‰y‹>˜QÓÜ Ð!IÓJÐJà˜Ÿ™ T§Y¡Y¨q¡\Ó2Ð3°1Ð5ˆØ48·O·O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c           	      ó   • UR                    Vs/ s H  o R                  U5      PM     nn[        U5      S:X  a  S[         SUS    S[         SUS    S3	$ SS	R	                  U5      -   S
-   nS[         SU S3$ s  snf )Nrê   zstd::min(static_cast<rX  r   ú), static_cast<r—   rU  Ú{rë   Ú}z	std::min<r   ©r   r   rš   rA  rí   ©r   r   Úar   Úils        r   ró   ÚCppPrinter._print_Min  ó�   € à(,¯	ª	Ó2ª	 1—‘˜A–©	ˆÐ2Üˆt‹9˜‹>Ø*¬:¨,°b¸¸a¹¸	ÀÔQ[ÐP\Ð\^Ð_cÐdeÑ_fÐ^gÐgiÐjÐjð �t—y‘y “Ñ&¨Ñ,ˆBØœz˜l¨"¨R¨D°Ð2Ð2ùò 3ó   �A;c           	      ó   • UR                    Vs/ s H  o R                  U5      PM     nn[        U5      S:X  a  S[         SUS    S[         SUS    S3	$ SS	R	                  U5      -   S
-   nS[         SU S3$ s  snf )Nrê   zstd::max(static_cast<rX  r   rŠ  r—   rU  r‹  rë   rŒ  z	std::max<r   r�  rŽ  s        r   rï   ÚCppPrinter._print_Max  r’  r“  c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   ræ   z	std::abs(r   r   r™   r   s     r   rç   ÚCppPrinter._print_Abs#  rù   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   rö   z	std::cos(r   r   r™   r   s     r   r÷   Ú#CppPrinter._print_OpaqueUnaryFn_cos)  rù   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   rû   z
std::cosh(r   r   r™   r   s     r   rü   Ú$CppPrinter._print_OpaqueUnaryFn_cosh/  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r   z
std::acos(r   r   r™   r   s     r   r  Ú$CppPrinter._print_OpaqueUnaryFn_acos5  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ r  r™   r   s     r   r  Ú#CppPrinter._print_OpaqueUnaryFn_sin;  rù   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r  z
std::sinh(r   r   r™   r   s     r   r	  Ú$CppPrinter._print_OpaqueUnaryFn_sinhA  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r  z
std::asin(r   r   r™   r   s     r   r  Ú$CppPrinter._print_OpaqueUnaryFn_asinG  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r  z	std::tan(r   r   r™   r   s     r   r  Ú#CppPrinter._print_OpaqueUnaryFn_tanM  rù   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r  z
std::tanh(r   r   r™   r   s     r   r  Ú$CppPrinter._print_OpaqueUnaryFn_tanhS  rþ   r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r  z
std::atan(r   r   r™   r   s     r   r  Ú$CppPrinter._print_OpaqueUnaryFn_atanY  rþ   r   c                 óF   • SU R                  UR                  S   5       S3$ )Nr|  r   r   r   r   s     r   rÆ   Ú$CppPrinter._print_OpaqueUnaryFn_sqrt_  ó#   € à˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óF   • SU R                  UR                  S   5       S3$ )Nz
std::log2(r   r   r   r   s     r   r  Ú$CppPrinter._print_OpaqueUnaryFn_log2c  r¬  r   c                 óŽ   • [        UR                  5      S:w  a  [        S5      eSU R                  UR                  S   5       S3$ )Nr—   r  zstd::lrint(r   r   r™   r   s     r   rƒ   ÚCppPrinter._print_RoundToIntg  rÛ   r   c                 ó  • [        UR                  5      S:w  a  [        S5      eUR                  u  p#UR                  (       a   US:¼  a  [        S5      e[	        SU S35      eU R                  U[        S   5      nSU S	U S
U*  S3$ )Nrê   r#  r   z+ndigits must be negative for integer inputszOFor integer inputs, only non-negative ndigits are currently supported, but got Ú.rX   z%static_cast<double>(std::nearbyint(1ez * z) * 1er   )rš   r   r[   rZ  Ú
ValueErrorr¦   r   )r   r   r'  r(  Ú
number_strs        r   r†   ÚCppPrinter._print_RoundDecimaln  s›   € Üˆt�y‰y‹>˜QÓÜ Ð!MÓNÐNØŸ)™)‰ˆØ××à˜!‹|Ü$Ð%RÓSÐSÜØaÐbiÐajÐjkÐlóð ð ×&Ñ& v¬z¸%Ñ/@ÓAˆ
Ø6°w°i¸sÀ:À,ÈfÐV]ÐU]ÐT^Ð^_Ð`Ð`r   c                 ó   • g)NÚtruer‹   r   s     r   Ú_print_BooleanTrueÚCppPrinter._print_BooleanTrue|  s   € Ør   c                 ó   • g)NÚfalser‹   r   s     r   Ú_print_BooleanFalseÚCppPrinter._print_BooleanFalse  s   € Ør   c                 ó   • g)Nz'std::numeric_limits<double>::infinity()r‹   r   s     r   rh   ÚCppPrinter._print_Infinity‚  s   € Ø8r   c                 ó*   • SU R                  U5       3$ )NÚ-)rh   r   s     r   rl   Ú"CppPrinter._print_NegativeInfinity…  s   € Ø�4×'Ñ'¨Ó-Ð.Ð/Ð/r   r‹   N).rŒ   r�   rŽ   r�   rS   r‘   rR   rD  rN  r3  r³   rF   rÒ   rÖ   r€   r‰   re   rq   rt   ry   r}   r_   r‚  rß   rã   ró   rï   rç   r÷   rü   r  r  r	  r  r  r  r  rÆ   r  rƒ   r†   r¸  r¼  rh   rl   r’   r‹   r   r   r6  r6  d  s�  † ð 5§:¡:ð °#ô ð" §¡ð "°ô "ð0 U§Z¡Zð 0°Cô 0ð$
V¨5¯:©:ð 
V¸#ô 
Vð` E§J¡Jð `°3ô `ðK §¡ð K°ô KðK e§j¡jð K°Sô Kð1 e§j¡jð 1°Sô 1ð:¨¯
©
ð :°sô :ðC 5§:¡:ð C°#ô Cð+ U§Z¡Zð +°Cô +ðd e§j¡jð d°Sô dð
¨¯
©
ð 
°sô 
ðD E§J¡Jð D°3ô Dð
5˜uŸz™zð 5¨cô 5ð:K E§J¡Jð K°3ô KðK 5§:¡:ð K°#ô KðK U§Z¡Zð K°Cô Kð3˜uŸz™zð 3¨cô 3ð3˜uŸz™zð 3¨cô 3ð8˜uŸz™zð 8¨cô 8ð8¨U¯Z©Zð 8¸Cô 8ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð8¨U¯Z©Zð 8¸Cô 8ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð8¨U¯Z©Zð 8¸Cô 8ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð9¨e¯j©jð 9¸Sô 9ð: e§j¡jð :°Sô :ða¨¯
©
ð a°sô að u§z¡zð °cô ð¨¯
©
ð °sô ð9 E§J¡Jð 9°3ô 9ð0¨E¯J©Jð 0¸3÷ 0r   r6  )r<  rS   Úsympy.printing.precedencer   r   Úsympy.printing.strr   rA  r>  r?  r	   r”   r6  r‹   r   r   Ú<module>rÅ     sN   ðÛ 
ã ß <Ý )ð €
Ø€Ø€ô
z
�*ô z
ôzU)�Kô U)ôpb0�õ b0r   