
    9iP                         S SK r S SKJ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)Optional)
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\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!g)!ExprPrinter   _torch_sympystrexprreturnc                 N    U R                  UR                  S[        U5      5      $ )N*	stringifyargsr   selfr   s     [/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/utils/_sympy/printers.py
_print_MulExprPrinter._print_Mul   s    ~~dii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{{499Q<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    ~~dii
40@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+    ~~dii1T[[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    s    ~~dii
<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    ~~dii
;0GHHr   c                 P    U R                  UR                  S[        S   S-
  5      $ N % Atom      ?r+   r   s     r   
_print_ModExprPrinter._print_Mod(   #    ~~dii
60BS0HIIr   c                 \    U R                  UR                  S[        S   S-
  5      nSU S3$ )N / r5   r6   (r   r+   )r   r   ss      r   _print_FloatTrueDivExprPrinter._print_FloatTrueDiv+   s/    NN499eZ-?#-EF1#Qxr   c                 $    U R                  U5      $ N)_print_FloorDivr   s     r   _print_CleanDivExprPrinter._print_CleanDiv/   s    ##D))r   c                 >    U R                  UR                  S   5      $ Nr   r   r   s     r   _print_IdentityExprPrinter._print_Identity2   s    {{499Q<((r   c                 t    UR                   S:X  a  [        [        R                  " USS95      $ [        U5      $ )N5      )dps)_precstrsympyFloatr   s     r   _print_FloatExprPrinter._print_Float5   s2    :: u{{4R011 t9r   c                     UR                   u  p#U[        U5      :X  d   U5       e[        U5      nUS:  d   eUS:  a  U R                  U/U-  S[        S   5      $ g)Nr   r   Mul1)r   intr   r   r   r   baseexps       r   
_print_PowExprPrinter._print_PowE   s^    II	c#h###haxx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_ToFloatS   s    !$GT
|"TUUr   c                 0    [        S[        U 5       35      e)Nz$_print_Infinity not implemented for r]   r   s     r   _print_InfinityExprPrinter._print_InfinityV       !$Hd"UVVr   c                 0    [        S[        U 5       35      e)Nz,_print_NegativeInfinity not implemented for r]   r   s     r   _print_NegativeInfinity#ExprPrinter._print_NegativeInfinityY   s    !:4:,G
 	
r   c                 0    [        S[        U 5       35      e)Nz$_print_FloorDiv not implemented for r]   r   s     r   rB   ExprPrinter._print_FloorDiv^   re   r   c                 0    [        S[        U 5       35      e)Nz%_print_PythonMod not implemented for r]   r   s     r   _print_PythonModExprPrinter._print_PythonModa   s    !$I$t*"VWWr   c                 0    [        S[        U 5       35      e)Nz&_print_IntTrueDiv not implemented for r]   r   s     r   _print_IntTrueDivExprPrinter._print_IntTrueDivd       !$J4PT:,"WXXr   c                 0    [        S[        U 5       35      e)N(_print_PowByNatural not implemented for r]   r   s     r   _print_PowByNaturalExprPrinter._print_PowByNaturalg       !6tDzlC
 	
r   c                 0    [        S[        U 5       35      e)Nz$_print_FloatPow not implemented for r]   r   s     r   _print_FloatPowExprPrinter._print_FloatPowl   re   r   c                 0    [        S[        U 5       35      e)Nz&_print_TruncToInt not implemented for r]   r   s     r   _print_TruncToIntExprPrinter._print_TruncToInto   rq   r   c                 0    [        S[        U 5       35      e)Nz&_print_RoundToInt not implemented for r]   r   s     r   _print_RoundToIntExprPrinter._print_RoundToIntr   rq   r   c                 0    [        S[        U 5       35      e)Nz(_print_RoundDecimal not implemented for r]   r   s     r   _print_RoundDecimalExprPrinter._print_RoundDecimalu   rv   r   c                 0    [        S[        U 5       35      e)Nz(_print_TruncToFloat not implemented for r]   r   s     r   _print_TruncToFloatExprPrinter._print_TruncToFloat   rv   r    rA   )"__name__
__module____qualname____firstlineno__printmethodrO   ExprrN   r   r   r   r"   r'   r,   r0   r7   r>   rC   rG   rQ   rZ   r`   rc   rg   rB   rl   ro   rt   rx   r{   r~   r   r   __static_attributes__r   r   r   r
   r
      se   #K@uzz @c @4uzz 4c 4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                      \ 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(g&)'PythonPrinter   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )N   ztorch.sym_float(r   r   lenr   r   r   s     r   r`   PythonPrinter._print_ToFloat   s;    499~""" "$++dii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    ~~dii*T2BCCr   c                 N    U R                  UR                  S[        U5      5      $ )Nz or r   r   s     r   	_print_OrPythonPrinter._print_Or   s    ~~diiD1A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r5   r6   Nparenthesizer   .0argr   s     r   	<genexpr>7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>   s.      
HQDc:f#5#;<<	   ),rU   r<    // r   r4   r   r   r   xdivmods   `    r   _print_ModularIndexing$PythonPrinter._print_ModularIndexing   sL    
HL		
 #:A3d3%q!A1#SQr   c                     g)Nzmath.infr   r   s     r   rc   PythonPrinter._print_Infinity   s    r   c                     g)Nz	-math.infr   r   s     r   rg   %PythonPrinter._print_NegativeInfinity   s    r   c                 P    U R                  UR                  S[        S   S-
  5      $ r3   r+   r   s     r   rl   PythonPrinter._print_PythonMod   r9   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+     Xis$##CF);c)ABBir   r   r   r   r   r   r   s   `   r   rB   PythonPrinter._print_FloorDiv   s#    XdiiXDr   c                 P    U R                  UR                  S[        S   S-
  5      $ )Nr;   r5   r6   r+   r   s     r   ro   PythonPrinter._print_IntTrueDiv   r9   r   c                 ,    SU R                  U5       S3$ )Nz
math.sqrt(r   )r   r   s     r   _helper_sqrtPythonPrinter._helper_sqrt   s    DKK-.a00r   c                 >    U R                  UR                  S   5      $ rF   )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   rx   PythonPrinter._print_FloatPow       ~~diiE1BCCr   c                 J    U R                  UR                  S[        S   5      $ r   r+   r   s     r   rt   !PythonPrinter._print_PowByNatural   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ Nr   zmath.floor(r   r   r   r   s     r   _print_floorPythonPrinter._print_floor   9    499~"""T[[167q99r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ r   r   r   s     r   _print_FloorToIntPythonPrinter._print_FloorToInt   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   zmath.trunc(r   r   r   r   s     r   r{   PythonPrinter._print_TruncToInt   9    499~"""T[[167q99r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ Nr   z
math.ceil(r   r   r   r   s     r   _print_ceilingPythonPrinter._print_ceiling   9    499~"""DKK		!56a88r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ r   r   r   s     r   _print_CeilToIntPythonPrinter._print_CeilToInt   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   zabs(r   r   r   r   s     r   
_print_AbsPythonPrinter._print_Abs   s9    499~"""dkk$))A,/022r   c                     [        UR                  5      S:  d   eSSR                  [        U R                  UR                  5      5       S3$ )N   zmax(, r   r   r   joinmapr   r   s     r   
_print_MaxPythonPrinter._print_Max   @    499~"""diiDKK ;<=Q??r   c                     [        UR                  5      S:  d   eSSR                  [        U R                  UR                  5      5       S3$ )Nr   zmin(r   r   r   r   s     r   
_print_MinPythonPrinter._print_Min   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	math.cos(r   r   r   r   s     r   _print_OpaqueUnaryFn_cos&PythonPrinter._print_OpaqueUnaryFn_cos   9    499~"""4;;tyy|45Q77r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
math.cosh(r   r   r   r   s     r   _print_OpaqueUnaryFn_cosh'PythonPrinter._print_OpaqueUnaryFn_cosh   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
math.acos(r   r   r   r   s     r   _print_OpaqueUnaryFn_acos'PythonPrinter._print_OpaqueUnaryFn_acos   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	math.sin(r   r   r   r   s     r   _print_OpaqueUnaryFn_sin&PythonPrinter._print_OpaqueUnaryFn_sin   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
math.sinh(r   r   r   r   s     r   _print_OpaqueUnaryFn_sinh'PythonPrinter._print_OpaqueUnaryFn_sinh   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
math.asin(r   r   r   r   s     r   _print_OpaqueUnaryFn_asin'PythonPrinter._print_OpaqueUnaryFn_asin   r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	math.tan(r   r   r   r   s     r   _print_OpaqueUnaryFn_tan&PythonPrinter._print_OpaqueUnaryFn_tan  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
math.tanh(r   r   r   r   s     r   _print_OpaqueUnaryFn_tanh'PythonPrinter._print_OpaqueUnaryFn_tanh  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
math.atan(r   r   r   r   s     r   _print_OpaqueUnaryFn_atan'PythonPrinter._print_OpaqueUnaryFn_atan
  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
math.log2(r   r   r   r   s     r   _print_OpaqueUnaryFn_log2'PythonPrinter._print_OpaqueUnaryFn_log2  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   round(r   r   r   r   s     r   r~   PythonPrinter._print_RoundToInt  s9    499~"""DIIaL12!44r   c                     [        UR                  5      S:X  d   eUR                  u  p#[        U[        R                  5      (       d   eSU R                  U5       SU S3$ )Nr   r  r   r   )r   r   
isinstancerO   Integerr   )r   r   numberndigitss       r   r   !PythonPrinter._print_RoundDecimal  sY    499~"""))'5==1111F+,Bwiq99r   r   N))r   r   r   r   rO   r   rN   r`   r   r   r   rc   rg   rl   rB   ro   r   r   rx   rt   r   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r~   r   r   r   r   r   r   r      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9ejj 9S 95ejj 5S 5:

 :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
                  S\4S& jr)S\R
                  S\4S' jr*S\R
                  S\4S( jr+S)r,g*)+
CppPrinteri  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:X  d   eSU S3$ U U 3$ )N)darwinwin32LLLz too big to convert to r   z(-1z << 63))sysplatformrV   INDEX_TYPE_MAXINDEX_TYPE_MINOverflowError
INDEX_TYPE)r   r   suffixis       r   _print_IntegerCppPrinter._print_Integer  sw    )<<#I~^!31#%<ZL IJJ. 
?"? ((VH~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.      
HQDc:f#5#;<<	r   z ? z : r   )r   r   cpqs   `    r   _print_WhereCppPrinter._print_Where*  s3    
HL		
a Cs#aS!!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_integerr  r   s        r   r   !CppPrinter._print_ModularIndexing0  s    iiLLO!8,,s#CB1#E]^a]bbdeB1#E\]`\aacdll3zl"QC/?
|2cURT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$ )Nr-  r.  r/  r0  r1  )r   r3  r4  r   s       r   rB   CppPrinter._print_FloorDiv<  sa    LLOll3??A!D\]`\aacdd=aS@WX[W\\^__r   c                     [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3nUR                  (       a  S[         SU S3$ U$ Nr   zstd::floor(r   r   static_cast<r2  r   r   r   r4  r  r   r   rs      r   r   CppPrinter._print_floorD  X    499~"""$++diil34A648OOj\A3a0JJr   c                     [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3nUR                  (       a  S[         SU S3$ U$ r9  r;  r<  s      r   r   CppPrinter._print_FloorToIntI  r?  r   c                     [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3nS[         SU S3$ )Nr   std::trunc(r   r   r:  r2  )r   r   r   r  r<  s      r   r{   CppPrinter._print_TruncToIntN  sM    499~"""$++diil34A6j\A3a00r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   rC  r   r   r   r   s     r   r   CppPrinter._print_TruncToFloatS  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   static_cast<double>(r   r   r   r   s     r   r`   CppPrinter._print_ToFloatW  s9    499~"""%dkk$))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   r3  r   s       r   rl   CppPrinter._print_PythonMod[  s=    LLOll3qcC5**r   c                 l    UR                   u  p#SU R                  U5       SU R                  U5       S3$ )NrH  z) / static_cast<double>(r   r   r   )r   r   lhsrhss       r   ro   CppPrinter._print_IntTrueDiva  s<    99%dkk#&6%77OPTP[P[\_P`Oaab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 << (r/  rs   )r   r   r^   r_   rW   s       r   rt   CppPrinter._print_PowByNaturalh  sH    II	19T[[-.b11!6tDzl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   rM  rW   s       r   rx   CppPrinter._print_FloatPowq  s6    II	4;;t,-RC0@/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$ )Nr6   g      
std::sqrt(r   z1.0/std::sqrt(r   r   rT   z1.0/(z1.0/z1.0r:  r2  rT  r   )	r   r   r4  rV   r   r   absr  float)r   r   rX   rY   r=  s        r   rZ   CppPrinter._print_Powu  s   II	#:;;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                     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:  r2  r   )r)  r(  r4  r  r<  s      r   _print_RationalCppPrinter._print_Rational  sR    66Q;66(A66(#dffXR(A48OOj\A3a0JJr   c                     [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3nUR                  (       a  S[         SU S3$ U$ Nr   z
std::ceil(r   r   r:  r2  r;  r<  s      r   r   CppPrinter._print_ceiling  X    499~"""TYYq\231548OOj\A3a0JJr   c                     [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3nUR                  (       a  S[         SU S3$ U$ r`  r;  r<  s      r   r   CppPrinter._print_CeilToInt  rb  r   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<r2  r   ), static_cast<r   r/  {r   }z	std::min<r   r   r   r   r  r   r   r   ar   ils        r   r   CppPrinter._print_Min      (,		2	1A	2t9>*:,ba	Q[P\\^_cde_f^ggijj tyy&,Bzl"RD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<r2  r   rf  r   r/  rg  r   rh  z	std::max<r   ri  rj  s        r   r   CppPrinter._print_Max  rn  ro  c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	std::abs(r   r   r   r   s     r   r   CppPrinter._print_Abs  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	std::cos(r   r   r   r   s     r   r   #CppPrinter._print_OpaqueUnaryFn_cos  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
std::cosh(r   r   r   r   s     r   r   $CppPrinter._print_OpaqueUnaryFn_cosh  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
std::acos(r   r   r   r   s     r   r   $CppPrinter._print_OpaqueUnaryFn_acos  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	std::sin(r   r   r   r   s     r   r   #CppPrinter._print_OpaqueUnaryFn_sin  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
std::sinh(r   r   r   r   s     r   r   $CppPrinter._print_OpaqueUnaryFn_sinh  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
std::asin(r   r   r   r   s     r   r   $CppPrinter._print_OpaqueUnaryFn_asin  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	std::tan(r   r   r   r   s     r   r   #CppPrinter._print_OpaqueUnaryFn_tan  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
std::tanh(r   r   r   r   s     r   r  $CppPrinter._print_OpaqueUnaryFn_tanh  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z
std::atan(r   r   r   r   s     r   r  $CppPrinter._print_OpaqueUnaryFn_atan  r   r   c                 F    SU R                  UR                  S   5       S3$ )NrW  r   r   r   r   s     r   r   $CppPrinter._print_OpaqueUnaryFn_sqrt  #    DKK		!56a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_log2  r  r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   zstd::lrint(r   r   r   r   s     r   r~   CppPrinter._print_RoundToInt  r   r   c                     [        UR                  5      S:X  d   eUR                  u  p#UR                  (       a  US:  d   e[        SU S35      eU R	                  U[
        S   5      nSU SU SU*  S	3$ )
Nr   r   zOFor integer inputs, only non-negative ndigits are currently supported, but got .rT   z%static_cast<double>(std::nearbyint(1ez * z) * 1er   )r   r   r4  
ValueErrorr   r   )r   r   r  r  
number_strs        r   r   CppPrinter._print_RoundDecimal  s    499~"""))Q;;abiajjkl  &&vz%/@A
6wis:,fV]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   rc   CppPrinter._print_Infinity  s    8r   c                 *    SU R                  U5       3$ )N-)rc   r   s     r   rg   "CppPrinter._print_NegativeInfinity  s    4''-.//r   r   N)-r   r   r   r   rO   r   rN   r"  r*  r   rB   r   r   r{   r   r`   rl   ro   rt   rx   rZ   r]  r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r  r~   r   r  r  rc   rg   r   r   r   r   r  r    sv   
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
3uzz 3c 33uzz 3c 3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9ejj 9S 9:ejj :S :

a

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

 s 9EJJ 93 90EJJ 03 0r   r  )r  typingr   rO   sympy.printing.precedencer   r   sympy.printing.strr   r  r  r  r
   r   r  r   r   r   <module>r     sQ    
   < ) 

r
* r
jU:K U:p`0 `0r   