
    JThAK                         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 S\5      r
 " S S	\
5      r " S
 S\
5      rg)    N)Optional)
PRECEDENCE
precedence)
StrPrinterint64_tc                   j   \ rS rSrS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g)ExprPrinter   _torch_sympystrexprreturnc                 N    U R                  UR                  S[        U5      5      $ )N*	stringifyargsr   selfr   s     S/var/www/auris/envauris/lib/python3.13/site-packages/torch/utils/_sympy/printers.py
_print_MulExprPrinter._print_Mul   s    ~~diij.>??    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 / r.   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   _printr   r   s     r   _print_IdentityExprPrinter._print_Identity-   s    {{499Q<((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_Pow7   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_ToFloatE   s    !$GT
|"TUUr   c                 0    [        S[        U 5       35      e)Nz$_print_Infinity not implemented for rO   r   s     r   _print_InfinityExprPrinter._print_InfinityH       !$Hd"UVVr   c                 0    [        S[        U 5       35      e)Nz,_print_NegativeInfinity not implemented for rO   r   s     r   _print_NegativeInfinity#ExprPrinter._print_NegativeInfinityK   s    !:4:,G
 	
r   c                 0    [        S[        U 5       35      e)Nz$_print_FloorDiv not implemented for rO   r   s     r   r<   ExprPrinter._print_FloorDivP   rW   r   c                 0    [        S[        U 5       35      e)Nz%_print_PythonMod not implemented for rO   r   s     r   _print_PythonModExprPrinter._print_PythonModS   s    !$I$t*"VWWr   c                 0    [        S[        U 5       35      e)Nz&_print_IntTrueDiv not implemented for rO   r   s     r   _print_IntTrueDivExprPrinter._print_IntTrueDivV       !$J4PT:,"WXXr   c                 0    [        S[        U 5       35      eNz(_print_PowByNatural not implemented for rO   r   s     r   _print_PowByNaturalExprPrinter._print_PowByNaturalY       !6tDzlC
 	
r   c                 0    [        S[        U 5       35      e)Nz$_print_FloatPow not implemented for rO   r   s     r   _print_FloatPowExprPrinter._print_FloatPow^   rW   r   c                 0    [        S[        U 5       35      e)Nz&_print_TruncToInt not implemented for rO   r   s     r   _print_TruncToIntExprPrinter._print_TruncToInta   rc   r   c                 0    [        S[        U 5       35      e)Nz&_print_RoundToInt not implemented for rO   r   s     r   _print_RoundToIntExprPrinter._print_RoundToIntd   rc   r   c                 0    [        S[        U 5       35      e)Nz(_print_RoundDecimal not implemented for rO   r   s     r   _print_RoundDecimalExprPrinter._print_RoundDecimalg   rh   r   c                 0    [        S[        U 5       35      e)Nz(_print_TruncToFloat not implemented for rO   r   s     r   _print_TruncToFloatExprPrinter._print_TruncToFloatq   rh   r    r;   ) __name__
__module____qualname____firstlineno__printmethodsympyExprstrr   r   r   r    r%   r)   r0   r8   r=   rC   rL   rR   rU   rY   r<   r^   ra   rf   rj   rm   rp   rs   rv   __static_attributes__rx   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                      \ 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'g%)&PythonPrinterw   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   r6   lenr   rB   r   s     r   rR   PythonPrinter._print_ToFloatx   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r.   r/   Nparenthesizer   .0argr   s     r   	<genexpr>7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>   s.      
HQDc:f#5#;<<	   ),rG   r5    // r6   r-   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.infrx   r   s     r   rU   PythonPrinter._print_Infinity   s    r   c                     g)Nz	-math.infrx   r   s     r   rY   %PythonPrinter._print_NegativeInfinity   s    r   c                 P    U R                  UR                  S[        S   S-
  5      $ r,   r$   r   s     r   r^   PythonPrinter._print_PythonMod   r2   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   r<   PythonPrinter._print_FloorDiv   s#    XdiiXDr   c                 P    U R                  UR                  S[        S   S-
  5      $ )Nr4   r.   r/   r$   r   s     r   ra   PythonPrinter._print_IntTrueDiv   r2   r   c                 ,    SU R                  U5       S3$ )Nz
math.sqrt(r6   )rB   r   s     r   _helper_sqrtPythonPrinter._helper_sqrt   s    DKK-.a00r   c                 >    U R                  UR                  S   5      $ r@   )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   rj   PythonPrinter._print_FloatPow       ~~diiE1BCCr   c                 J    U R                  UR                  S[        S   5      $ r   r$   r   s     r   rf   !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   r6   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   r6   r   r   s     r   rm   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   r6   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   r6   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(, r6   r   r   joinmaprB   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   round(r   r6   r   r   s     r   rp   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   r6   )r   r   
isinstancer~   IntegerrB   )r   r   numberndigitss       r   rs   !PythonPrinter._print_RoundDecimal  sY    499~"""))'5==1111F+,Bwiq99r   rx   N)(ry   rz   r{   r|   r~   r   r   rR   r   r   r   rU   rY   r^   r<   ra   r   r   rj   rf   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rp   rs   r   rx   r   r   r   r   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   r   c                   l   \ 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+g))*
CppPrinteri  r   r   c                 b    [         R                  S;   a  [        U5       S3$ [        U5       S3$ )N)darwinwin32LLL)sysplatformrH   r   s     r   _print_IntegerCppPrinter._print_Integer  s5     #0C Cs4yk	
LOPTI;VW	
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_integer
INDEX_TYPEr   s        r   r   !CppPrinter._print_ModularIndexing  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  r  r  )r   r  r  r   s       r   r<   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   r6   static_cast<r  r   r   rB   r  r   r   r   rs      r   r   CppPrinter._print_floor+  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$ r%  r'  r(  s      r   r   CppPrinter._print_FloorToInt0  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   r6   r&  r  )r   r   rB   r   r(  s      r   rm   CppPrinter._print_TruncToInt5  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   r/  r   r6   r   r   s     r   rv   CppPrinter._print_TruncToFloat:  r   r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   static_cast<double>(r   r6   r   r   s     r   rR   CppPrinter._print_ToFloat>  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   r6   )r   r  r   s       r   r^   CppPrinter._print_PythonModB  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$ )Nr4  z) / static_cast<double>(r6   r   rB   )r   r   lhsrhss       r   ra   CppPrinter._print_IntTrueDivH  s<    99%dkk#&6%77OPTP[P[\_P`Oaabccr   c                 0    [        S[        U 5       35      ere   rO   r   s     r   rf   CppPrinter._print_PowByNaturalO  rh   r   c                 l    UR                   u  p#SU R                  U5       SU R                  U5       S3$ )N	std::pow(r   r6   r9  rI   s       r   rj   CppPrinter._print_FloatPowT  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$ )Nr/   g      
std::sqrt(r6   z1.0/std::sqrt(r   r   rF   z1.0/(z1.0/z1.0r&  r  r@  r   )	r   rB   r  rH   r   r   absr   float)r   r   rJ   rK   r)  s        r   rL   CppPrinter._print_PowX  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&  r  r6   )r  r  r  r   r(  s      r   _print_RationalCppPrinter._print_Rationals  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   r6   r&  r  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$ rL  r'  r(  s      r   r   CppPrinter._print_CeilToInt  rN  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U S3$ s  snf )Nr   zstd::min(static_cast<r  r   ), static_cast<r   r  {r   }z	std::min(r6   r   rB   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rd!$$ 3   A4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U S3$ s  snf )Nr   zstd::max(static_cast<r  r   rR  r   r  rS  r   rT  z	std::max(r6   rU  rV  s        r   r   CppPrinter._print_Max  rZ  r[  c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   z	std::abs(r   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   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   r6   r   r   s     r   r   $CppPrinter._print_OpaqueUnaryFn_atan  r   r   c                 F    SU R                  UR                  S   5       S3$ )NrC  r   r6   rA   r   s     r   r   $CppPrinter._print_OpaqueUnaryFn_sqrt  s#    DKK		!56a88r   c                 |    [        UR                  5      S:X  d   eSU R                  UR                  S   5       S3$ )Nr   zstd::lrint(r   r6   r   r   s     r   rp   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 .rF   z%static_cast<double>(std::nearbyint(1ez * z) * 1er6   )r   r   r  
ValueErrorr   r   )r   r   r  r  
number_strs        r   rs   CppPrinter._print_RoundDecimal  s    499~"""))Q;;abiajjkl  &&vz%/@A
6wis:,fV]U]T^^_``r   c                     g)Ntruerx   r   s     r   _print_BooleanTrueCppPrinter._print_BooleanTrue  s    r   c                     g)Nfalserx   r   s     r   _print_BooleanFalseCppPrinter._print_BooleanFalse  s    r   c                     g)Nz'std::numeric_limits<double>::infinity()rx   r   s     r   rU   CppPrinter._print_Infinity  s    8r   c                 *    SU R                  U5       3$ )N-)rU   r   s     r   rY   "CppPrinter._print_NegativeInfinity  s    4''-.//r   rx   N),ry   rz   r{   r|   r~   r   r   r  r  r   r<   r   r   rm   rv   rR   r^   ra   rf   rj   rL   rI  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rp   rs   r}  r  rU   rY   r   rx   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   r~   sympy.printing.precedencer   r   sympy.printing.strr   r   r	   r   r  rx   r   r   <module>r     sG    
   < ) 

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