
    VhAK                         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y)    N)Optional)
PRECEDENCE
precedence)
StrPrinterint64_tc                   4   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y)ExprPrinter_torch_sympystrexprreturnc                 N    | j                  |j                  dt        |            S )N*	stringifyargsr   selfr   s     K/home/dcms/DCMS/lib/python3.12/site-packages/torch/utils/_sympy/printers.py
_print_MulzExprPrinter._print_Mul   s    ~~diij.>??    Norderc                 N    | j                  |j                  dt        |            S )Nz + r   )r   r   r   s      r   
_print_AddzExprPrinter._print_Add   s    ~~dii
40@AAr   c                 j    | j                  |j                  d|j                   dt        |            S )N )r   r   rel_opr   r   s     r   _print_RelationalzExprPrinter._print_Relational   s+    ~~dii1T[[M);Z=MNNr   c                 J    | j                  |j                  dt        d         S )Nz & 
BitwiseAndr   r   r   r   s     r   _print_BitwiseFn_bitwise_andz(ExprPrinter._print_BitwiseFn_bitwise_and   s    ~~dii
<0HIIr   c                 J    | j                  |j                  dt        d         S )Nz | 	BitwiseOrr    r   s     r   _print_BitwiseFn_bitwise_orz'ExprPrinter._print_BitwiseFn_bitwise_or   s    ~~dii
;0GHHr   c                 P    | j                  |j                  dt        d   dz
        S N % Atom      ?r    r   s     r   
_print_ModzExprPrinter._print_Mod#   #    ~~dii
60BS0HIIr   c                 \    | j                  |j                  dt        d   dz
        }d| dS )N / r(   r)   ()r    )r   r   ss      r   _print_FloatTrueDivzExprPrinter._print_FloatTrueDiv&   s/    NN499eZ-?#-EF1#Qxr   c                 $    | j                  |      S N)_print_FloorDivr   s     r   _print_CleanDivzExprPrinter._print_CleanDiv*   s    ##D))r   c                 >    | j                  |j                  d         S Nr   _printr   r   s     r   _print_IdentityzExprPrinter._print_Identity-   s    {{499Q<((r   c                     |j                   \  }}|t        |      k(  sJ |       t        |      }|dk\  sJ |dkD  r| j                  |g|z  dt        d         S y)Nr   r   Mul1)r   intr   r   r   r   baseexps       r   
_print_PowzExprPrinter._print_Pow7   s`    II	cc#h###haxx7>>4&3,Z5FGGr   c                 0    t        dt        |              )Nz#_print_ToFloat not implemented for NotImplementedErrortyper   s     r   _print_ToFloatzExprPrinter._print_ToFloatE   s    !$GT
|"TUUr   c                 0    t        dt        |              )Nz$_print_Infinity not implemented for rD   r   s     r   _print_InfinityzExprPrinter._print_InfinityH       !$Hd"UVVr   c                 0    t        dt        |              )Nz,_print_NegativeInfinity not implemented for rD   r   s     r   _print_NegativeInfinityz#ExprPrinter._print_NegativeInfinityK   s    !:4:,G
 	
r   c                 0    t        dt        |              )Nz$_print_FloorDiv not implemented for rD   r   s     r   r4   zExprPrinter._print_FloorDivP   rJ   r   c                 0    t        dt        |              )Nz%_print_PythonMod not implemented for rD   r   s     r   _print_PythonModzExprPrinter._print_PythonModS   s    !$I$t*"VWWr   c                 0    t        dt        |              )Nz&_print_IntTrueDiv not implemented for rD   r   s     r   _print_IntTrueDivzExprPrinter._print_IntTrueDivV       !$J4PT:,"WXXr   c                 0    t        dt        |              Nz(_print_PowByNatural not implemented for rD   r   s     r   _print_PowByNaturalzExprPrinter._print_PowByNaturalY       !6tDzlC
 	
r   c                 0    t        dt        |              )Nz$_print_FloatPow not implemented for rD   r   s     r   _print_FloatPowzExprPrinter._print_FloatPow^   rJ   r   c                 0    t        dt        |              )Nz&_print_TruncToInt not implemented for rD   r   s     r   _print_TruncToIntzExprPrinter._print_TruncToInta   rR   r   c                 0    t        dt        |              )Nz&_print_RoundToInt not implemented for rD   r   s     r   _print_RoundToIntzExprPrinter._print_RoundToIntd   rR   r   c                 0    t        dt        |              )Nz(_print_RoundDecimal not implemented for rD   r   s     r   _print_RoundDecimalzExprPrinter._print_RoundDecimalg   rV   r   c                 0    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	      s7   #K@uzz @c @Buzz B(3- B3 BOejj OS OJ J JI

 Is I
Juzz Jc J

 s *EJJ *3 *)EJJ )3 )uzz c V5:: V# VWEJJ W3 W
EJJ 
3 

WEJJ W3 WXUZZ XC XYejj YS Y


 
s 

WEJJ W3 WYejj YS YYejj YS 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%y#)$PythonPrinterr   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )N   ztorch.sym_float(r   r/   lenr   r9   r   s     r   rG   zPythonPrinter._print_ToFloatx   s;    499~""" "$++diil";!<A>>r   c                 N    | j                  |j                  dt        |            S )Nz and r   r   s     r   
_print_AndzPythonPrinter._print_And   s    ~~dii*T2BCCr   c                 N    | j                  |j                  dt        |            S )Nz or r   r   s     r   	_print_OrzPythonPrinter._print_Or   s    ~~diiD1ABBr   c                 d      fd|j                   D        \  }}}|dk7  r	d| d| d}d| d| dS )Nc              3   V   K   | ]   }j                  |t        d    dz
         " ywr(   r)   Nparenthesizer   .0argr   s     r   	<genexpr>z7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>   s-      
ADDc:f#5#;<
   &)r=   r.    // r/   r'   r   r   r   xdivmods   `    r   _print_ModularIndexingz$PythonPrinter._print_ModularIndexing   sN    
HL		
3 #:A3d3%q!A1#SQr   c                      y)Nzmath.infrh   r   s     r   rI   zPythonPrinter._print_Infinity   s    r   c                      y)Nz	-math.infrh   r   s     r   rL   z%PythonPrinter._print_NegativeInfinity   s    r   c                 P    | j                  |j                  dt        d   dz
        S r&   r    r   s     r   rO   zPythonPrinter._print_PythonMod   r+   r   c                 B      fd|j                   D        \  }}| d| S )Nc              3   V   K   | ]   }j                  |t        d    dz
         " ywru   rv   rx   s     r   r{   z0PythonPrinter._print_FloorDiv.<locals>.<genexpr>   s(     Xs$##CF);c)ABXr|   r}   r~   r   r   r   r   s   `   r   r4   zPythonPrinter._print_FloorDiv   s%    XdiiX3Dr   c                 P    | j                  |j                  dt        d   dz
        S )Nr-   r(   r)   r    r   s     r   rQ   zPythonPrinter._print_IntTrueDiv   r+   r   c                 ,    d| j                  |       dS )Nz
math.sqrt(r/   )r9   r   s     r   _helper_sqrtzPythonPrinter._helper_sqrt   s    DKK-.a00r   c                 >    | j                  |j                  d         S r7   )r   r   r   s     r   _print_OpaqueUnaryFn_sqrtz'PythonPrinter._print_OpaqueUnaryFn_sqrt   s      1..r   c                 J    | j                  |j                  dt        d         S Nz ** Powr    r   s     r   rX   zPythonPrinter._print_FloatPow       ~~diiE1BCCr   c                 J    | j                  |j                  dt        d         S r   r    r   s     r   rU   z!PythonPrinter._print_PowByNatural   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS Nrl   zmath.floor(r   r/   rm   r   s     r   _print_floorzPythonPrinter._print_floor   9    499~"""T[[167q99r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS r   rm   r   s     r   _print_FloorToIntzPythonPrinter._print_FloorToInt   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   zmath.trunc(r   r/   rm   r   s     r   rZ   zPythonPrinter._print_TruncToInt   9    499~"""T[[167q99r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS Nrl   z
math.ceil(r   r/   rm   r   s     r   _print_ceilingzPythonPrinter._print_ceiling   9    499~"""DKK		!56a88r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS r   rm   r   s     r   _print_CeilToIntzPythonPrinter._print_CeilToInt   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   zabs(r   r/   rm   r   s     r   
_print_AbszPythonPrinter._print_Abs   s9    499~"""dkk$))A,/022r   c                     t        |j                        dk\  sJ ddj                  t        | j                  |j                               dS )N   zmax(, r/   rn   r   joinmapr9   r   s     r   
_print_MaxzPythonPrinter._print_Max   @    499~"""diiDKK ;<=Q??r   c                     t        |j                        dk\  sJ ddj                  t        | j                  |j                               dS )Nr   zmin(r   r/   r   r   s     r   
_print_MinzPythonPrinter._print_Min   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z	math.cos(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_cosz&PythonPrinter._print_OpaqueUnaryFn_cos   9    499~"""4;;tyy|45Q77r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
math.cosh(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_coshz'PythonPrinter._print_OpaqueUnaryFn_cosh   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
math.acos(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_acosz'PythonPrinter._print_OpaqueUnaryFn_acos   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z	math.sin(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_sinz&PythonPrinter._print_OpaqueUnaryFn_sin   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
math.sinh(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_sinhz'PythonPrinter._print_OpaqueUnaryFn_sinh   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
math.asin(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_asinz'PythonPrinter._print_OpaqueUnaryFn_asin   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z	math.tan(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_tanz&PythonPrinter._print_OpaqueUnaryFn_tan   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
math.tanh(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_tanhz'PythonPrinter._print_OpaqueUnaryFn_tanh   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
math.atan(r   r/   rm   r   s     r   _print_OpaqueUnaryFn_atanz'PythonPrinter._print_OpaqueUnaryFn_atan   r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   round(r   r/   rm   r   s     r   r\   zPythonPrinter._print_RoundToInt   s9    499~"""DIIaL12!44r   c                     t        |j                        dk(  sJ |j                  \  }}t        |t        j                        sJ d| j                  |       d| dS )Nr   r   r   r/   )rn   r   
isinstancere   Integerr9   )r   r   numberndigitss       r   r^   z!PythonPrinter._print_RoundDecimal  sX    499~"""))'5==111F+,Bwiq99r   N)&ra   rb   rc   re   rf   rg   rG   rp   rr   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:: ?# ?"Duzz Dc DCejj CS C 5::  #  EJJ 3 EJJ 3 JUZZ JC JEJJ 3 Jejj JS J1 1 1/ejj /S /DEJJ D3 DD

 Ds D: : ::ejj :S ::ejj :S :
95:: 9# 99UZZ 9C 93uzz 3c 3@uzz @c @@uzz @c @8UZZ 8C 89ejj 9S 99ejj 9S 98UZZ 8C 89ejj 9S 99ejj 9S 98UZZ 8C 89ejj 9S 99ejj 9S 95ejj 5S 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ej                  defd%Z(dej                  defd&Z)y')(
CppPrinterr   r   c                 ^    t         j                  dv rt        |       dS t        |       dS )N)darwinwin32LLL)sysplatformr>   r   s     r   _print_IntegerzCppPrinter._print_Integer  s5     #0C Cs4yk	
LOPTI;VW	
r   c                 J      fd|j                   D        \  }}}| d| d| S )Nc              3   V   K   | ]   }j                  |t        d    dz
         " ywru   rv   rx   s     r   r{   z*CppPrinter._print_Where.<locals>.<genexpr>  s-      
ADDc:f#5#;<
r|   z ? z : r~   )r   r   cpqs   `    r   _print_WherezCppPrinter._print_Where  s5    
HL		
1a Cs#aS!!r   c           	          |j                   \  }}}| j                  |      }|dk7  r0| j                  |      }|j                  r
d| d| d}n	d| d| d}| j                  |      }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    ii3LLO!8,,s#CB1#E]^a]bbdeB1#E\]`\aacdll3zl"QC/?
|2cURTUUr   c                     |j                   \  }}| j                  |      }| 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#  sc    3LLOll3??A!D\]`\aacdd=aS@WX[W\\^__r   c                     t        |j                        dk(  sJ d| j                  |j                  d          d}|j                  rdt         d| dS |S Nrl   zstd::floor(r   r/   static_cast<r   rn   r   r9   r   r   r   r   rs      r   r   zCppPrinter._print_floor+  X    499~"""$++diil34A648OOj\A3a0JJr   c                     t        |j                        dk(  sJ d| j                  |j                  d          d}|j                  rdt         d| dS |S r   r   r   s      r   r   zCppPrinter._print_FloorToInt0  r   r   c                     t        |j                        dk(  sJ d| j                  |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_TruncToInt5  sM    499~"""$++diil34A6j\A3a00r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   r   r   r/   rm   r   s     r   r`   zCppPrinter._print_TruncToFloat:  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   static_cast<double>(r   r/   rm   r   s     r   rG   zCppPrinter._print_ToFloat>  s9    499~"""%dkk$))A,&?%@BBr   c                 v    |j                   \  }}| j                  |      }| j                  |      }d| d| dS )Nzc10::div_mod(r   r/   )r   r   r   s       r   rO   zCppPrinter._print_PythonModB  s?    3LLOll3qcC5**r   c                 n    |j                   \  }}d| j                  |       d| j                  |       dS )Nr   z) / static_cast<double>(r/   r   r9   )r   r   lhsrhss       r   rQ   zCppPrinter._print_IntTrueDivH  s>    99S%dkk#&6%77OPTP[P[\_P`Oaabccr   c                 0    t        dt        |              rT   rD   r   s     r   rU   zCppPrinter._print_PowByNaturalO  rV   r   c                 n    |j                   \  }}d| j                  |       d| j                  |       dS )N	std::pow(r   r/   r   r?   s       r   rX   zCppPrinter._print_FloatPowT  s8    II	c4;;t,-RC0@/ACCr   c                    |j                   \  }}|dk(  s|dk(  r"| j                  |      }|dk(  rd| dS d| dS |j                  rt        |      }|dkD  r| j	                  |g|z  dt
        d         }nO|d	k  r.d
| j	                  |gt        |      z  dt
        d         z   dz   }n|d	k(  rd| j                  |      z   }nd}|j                  rdt         d| dS |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_PowX  s   II	c#:;;t$D+.#:ZvQ'S^D6QR;SS>>c(CQwNND6C<j6GHrnndVc#h%6Z=NOP 
 T[[..8<\*Rs!4NQN tfBuSzl!44r   c                     |j                   dk(  r|j                   }n|j                   d|j                    d}|j                  rdt         d| dS |S )Nrl   z.0/z.0r   r   r/   )r   r   r   r   r   s      r   _print_RationalzCppPrinter._print_Rationals  sR    66Q;66(A66(#dffXR(A48OOj\A3a0JJr   c                     t        |j                        dk(  sJ d| j                  |j                  d          d}|j                  rdt         d| dS |S Nrl   z
std::ceil(r   r/   r   r   r   r   s      r   r   zCppPrinter._print_ceiling{  X    499~"""TYYq\231548OOj\A3a0JJr   c                     t        |j                        dk(  sJ d| j                  |j                  d          d}|j                  rdt         d| dS |S r   r   r   s      r   r   zCppPrinter._print_CeilToInt  r  r   c           	          |j                   D cg c]  }| j                  |       }}t        |      dk(  rdt         d|d    dt         d|d    d	S dd	j	                  |      z   d
z   }d| dS c c}w )Nr   zstd::min(static_cast<r   r   ), static_cast<rl   r   {r   }z	std::min(r/   r   r9   rn   r   r   r   r   ar   ils        r   r   zCppPrinter._print_Min      (,		21A22t9>*:,ba	Q[P\\^_cde_f^ggijj tyy&,Brd!$$ 3   A1c           	          |j                   D cg c]  }| j                  |       }}t        |      dk(  rdt         d|d    dt         d|d    d	S dd	j	                  |      z   d
z   }d| dS c c}w )Nr   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                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z	std::abs(r   r/   rm   r   s     r   r   zCppPrinter._print_Abs  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z	std::cos(r   r/   rm   r   s     r   r   z#CppPrinter._print_OpaqueUnaryFn_cos  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
std::cosh(r   r/   rm   r   s     r   r   z$CppPrinter._print_OpaqueUnaryFn_cosh  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
std::acos(r   r/   rm   r   s     r   r   z$CppPrinter._print_OpaqueUnaryFn_acos  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z	std::sin(r   r/   rm   r   s     r   r   z#CppPrinter._print_OpaqueUnaryFn_sin  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
std::sinh(r   r/   rm   r   s     r   r   z$CppPrinter._print_OpaqueUnaryFn_sinh  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
std::asin(r   r/   rm   r   s     r   r   z$CppPrinter._print_OpaqueUnaryFn_asin  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z	std::tan(r   r/   rm   r   s     r   r   z#CppPrinter._print_OpaqueUnaryFn_tan  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
std::tanh(r   r/   rm   r   s     r   r   z$CppPrinter._print_OpaqueUnaryFn_tanh  r   r   c                 z    t        |j                        dk(  sJ d| j                  |j                  d          dS )Nrl   z
std::atan(r   r/   rm   r   s     r   r   z$CppPrinter._print_OpaqueUnaryFn_atan  r   r   c                 F    d| j                  |j                  d          dS )Nr   r   r/   r8   r   s     r   r   z$CppPrinter._print_OpaqueUnaryFn_sqrt  s#    DKK		!56a88r   c                 z    t        |j                        dk(  sJ d| j                  |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      | j	                  |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   
ValueErrorrw   r   )r   r   r   r   
number_strs        r   r^   zCppPrinter._print_RoundDecimal  s    499~"""))Q;;abiajjkl  &&vz%/@A
6wis:,fV]U]T^^_``r   c                      y)Ntruerh   r   s     r   _print_BooleanTruezCppPrinter._print_BooleanTrue  s    r   c                      y)Nfalserh   r   s     r   _print_BooleanFalsezCppPrinter._print_BooleanFalse  s    r   c                      y)Nz'std::numeric_limits<double>::infinity()rh   r   s     r   rI   zCppPrinter._print_Infinity  s    8r   c                 *    d| j                  |       S )N-)rI   r   s     r   rL   z"CppPrinter._print_NegativeInfinity  s    4''-.//r   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#  rI   rL   rh   r   r   r   r     s_   
5:: 
# 

" " "
V5:: 
V# 
V`EJJ `3 `K K K
Kejj KS K
1ejj 1S 1
:

 :s :C5:: C# C+UZZ +C +dejj dS d


 
s 

DEJJ D3 D5uzz 5c 56KEJJ K3 KK5:: K# K
KUZZ KC K
%uzz %c %%uzz %c %8uzz 8c 88UZZ 8C 89ejj 9S 99ejj 9S 98UZZ 8C 89ejj 9S 99ejj 9S 98UZZ 8C 89ejj 9S 99ejj 9S 99ejj 9S 9:ejj :S :

a

 
as 
auzz c 

 s 9EJJ 93 90EJJ 03 0r   r   )r   typingr   re   sympy.printing.precedencer   r   sympy.printing.strr   r   r	   rj   r   rh   r   r   <module>r*     sG    
   < ) 

f
* f
RQ:K Q:hR0 R0r   