+
    ‹°³jƒi  ã                  óD  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t) ^ RI*H+t+H,t, ^ R	I-H.t.H/t/ ^ R
I0H1t1 ^ RI*H2t2H3t3 / RR R3R R3.bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRR bR!R!bt4]5! ]43/ / R"R"bR#R#bR$R$bR%R%bR&R'bR(R(bR)R)bR*R+bR,R,bR-R.bR/R0bR1R1bR2R2bR3R3bR4R4bR5R6bB t6. R7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNt7RXRY.t8RZ t9R[ t: ! R\ R]]+4      t; ! R^ R_];4      t<R`P{                  4        F  t>]?! ]<Ra]>,          ]<P€                  4       K   	   ! Rb Rc]<4      tARd];Re]<Rf]A/tBRg# )ha†  
C code printer

The C89CodePrinter & C99CodePrinter converts single SymPy expressions into
single C expressions, using the functions defined in math.h where possible.

A complete code generator, which uses ccode extensively, can be found in
sympy.utilities.codegen. The codegen module can be used to generate complete
source code files that are compilable without further modifications.


)Úannotations)ÚAny©Úwraps)Úchain)ÚS)Úequal_valuedÚFloat)Ú
AssignmentÚPointerÚVariableÚDeclarationÚTypeÚrealÚcomplex_ÚintegerÚbool_Úfloat32Úfloat64Úfloat80Ú	complex64Ú
complex128ÚintcÚvalue_constÚpointer_constÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64ÚuntypedÚnone)ÚCodePrinterÚrequires)Ú
precedenceÚ
PRECEDENCE)ÚRange)ÚccodeÚprint_ccodeÚAbsc                ó$   € V P                   '       * # ©N©Ú
is_integer©Úxs   &ÚQ/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/printing/c.pyÚ<lambda>r4   (   s   € ˜1Ÿ<™<Õ'ó    Úfabsc                ó   € V P                   # r.   r/   r1   s   &r3   r4   r4   (   s   € ¸Q¿\º\r5   ÚabsÚsinÚcosÚtanÚasinÚacosÚatanÚatan2ÚexpÚlogÚlog10ÚsinhÚcoshÚtanhÚfloorÚceilingÚceilÚsqrtÚexp2Úexpm1Úlog2Úlog1pÚCbrtÚcbrtÚhypotÚfmaÚloggammaÚlgammaÚerfcÚMaxÚfmaxÚMinÚfminÚasinhÚacoshÚatanhÚerfÚgammaÚtgammaÚautoÚbreakÚcaseÚcharÚconstÚcontinueÚdefaultÚdoÚdoubleÚelseÚenumÚexternÚfloatÚforÚgotoÚifÚintÚlongÚregisterÚreturnÚshortÚsignedÚsizeofÚstaticÚstructÚentryÚswitchÚtypedefÚunionÚunsignedÚvoidÚvolatileÚwhileÚinlineÚrestrictc                 ó€  € ^ RI Hp Hp ^ RIHp ^ RIHp / \        P                  RbV ! \        P                  4      Rb^V! ^4      ,          RbV! ^4      RbV! ^
4      Rb\        P                  Rb\        P                  ^,          R	b\        P                  ^,          R
b^\        P                  ,          Rb^\        P                  ,          Rb^V! \        P                  4      ,          Rb^V! \        P                  4      ,          RbV! ^4      RbV! ^4      Rb^V! ^4      ,          Rb^V! ^4      ,          Rb# )a9  Returns a dictionary with math-related macros from math.h/cmath

Note that these macros are not strictly required by the C/C++-standard.
For MSVC they are enabled by defining "_USE_MATH_DEFINES" (preferably
via a compilation flag).

Returns
=======

Dictionary mapping SymPy expressions to strings (macro names)

)rL   ÚSqrt)rA   )rI   ÚM_EÚM_LOG2EÚM_LN2ÚM_LN10ÚM_PIÚM_PI_2ÚM_PI_4ÚM_1_PIÚM_2_PIÚ
M_2_SQRTPIÚM_SQRT2Ú	M_SQRT1_2)
Úsympy.codegen.cfunctionsrL   rƒ   Ú&sympy.functions.elementary.exponentialrA   Ú(sympy.functions.elementary.miscellaneousrI   r   ÚExp1ÚPi)rL   rƒ   rA   rI   s       r3   Úget_math_macrosr•   [   sC  € ÷ 4Ý:Ý=ðÜ	�‰�ðáŒQ�V‰V‹�iðð 	
‰#ˆa‹&��)ðñ 	ˆA‹�ð	ñ
 	ˆB‹�ðô 	
�‰ˆfðô 	
�‰ˆQ��ðô 	
�‰ˆQ��ðð 	
Œ!�$‰$��ðð 	
Œ!�$‰$��ðð 	
‰$Œq�t‰t‹*��lðð 	
‰$Œq�t‰t‹*��lðñ 	ˆQ‹�ðñ 	ˆQ‹�ðð 	
‰$ˆq‹'�	�;ðð  	
‰$ˆq‹'�	�;ð!ð r5   c                ó0   a € \        S 4      V 3R l4       pV# )al  Decorator for printer methods

When a Printer's method is decorated using this decorator the expressions printed
will first be looked for in the attribute ``math_macros``, and if present it will
print the macro name in ``math_macros`` followed by a type suffix for the type
``real``. e.g. printing ``sympy.pi`` would print ``M_PIl`` if real is mapped to float80.

c                óŽ   <€ WP                   9   d-   V P                   V,          : V P                  \        4      : 2# S! W3/ VB # r.   )Úmath_macrosÚ_get_math_macro_suffixr   )ÚselfÚexprÚkwargsÚmeths   &&,€r3   Ú_meth_wrapperÚ+_as_macro_if_defined.<locals>._meth_wrapper‰   sA   ø€ à×#Ñ#Ô#Ø!×-Ñ-¨d×3°T×5PÑ5PÔQUÕ5VÐWÐWá˜Ñ- fÑ-Ð-r5   r   )r�   rž   s   f r3   Ú_as_macro_if_definedr    €   s#   ø€ ô ˆ4ƒ[ô.ó ð.ð Ðr5   c                  ó6  a € ] tR t^“t$ RtRtRtRt]! ]	4      t	]
! ]P                  3/ R^R/ RRR	]! 4       R
R/B tR]R&   ]]]]]]/t]R]R]R]R]R]R]R]R]R]R]R]R]R]R/tR]R&   ]R0]R0]R0]R0]R0]R0]R0]R0]R0/	t / t!R]R&   ]R]R]"R/t#]R]R]"R /t$]"R/t%R!t&Rt'](t)R]R"&   R[V 3R# llt*R$ t+R% t,R& t-R' t.R( t/R) t0]1V 3R* l4       t2]1R+ 4       t3R, t4R- t5R. t6]1V 3R/ l4       t7R0 t8R1 t9R2 t:R3 t;R4 t<V 3R5 lt=R6 t>R7 t?R8 t@R9 tAR: tBR; tCR< tDR= tER> tFR? tG]GtHR@ tIRA tJRB tK]L! R0RC7      RD 4       tM]L! R0RC7      RE 4       tNRF tORG tPRH tQRI tR]L! RJ0RC7      RK 4       tSRL tTRM tURN tVRO tWRP tXRQ tYRR tZRS t[RT t\RU t]RV t^RW t_RX t`RY ta]_tbRZtcV ;td# )\ÚC89CodePrinterz<A printer to convert Python expressions to strings of C codeÚ_ccodeÚCÚC89Ú	precisionÚuser_functionsÚcontractTÚdereferenceÚerror_on_reservedFúdict[str, Any]Ú_default_settingsrg   ro   rk   ÚboolÚint8_tÚint16_tÚint32_tÚint64_tzdict[Type, Any]Útype_mappingsz	stdbool.hzstdint.hzdict[Type, tuple[str, ...]]Útype_macrosÚfÚ ÚlÚFÚLNÚ_kfc           	     	óè  <€ T;'       g    / pV P                   f    VP                  R\        4       4      V n         \        \	        V P
                  P                  4       VP                  R/ 4      P                  4       4      4      V n        \        \	        V P                  P                  4       VP                  R/ 4      P                  4       4      4      V n        \        \	        V P                  P                  4       VP                  R/ 4      P                  4       4      4      V n        \        \	        V P                  P                  4       VP                  R/ 4      P                  4       4      4      V n	        \        \	        V P                  P                  4       VP                  R/ 4      P                  4       4      4      V n
        \        \	        V P                  P                  4       VP                  R/ 4      P                  4       4      4      V n        \        \	        V P                  P                  4       VP                  R/ 4      P                  4       4      4      V n        \        SV `9  V4       \        V P                  3/ VP!                  R	/ 4      B V n        \%        VP!                  R
. 4      4      V n        \%        4       V n        \%        4       V n        \%        4       V n        R # )Nr˜   Útype_aliasesr²   Útype_headersr³   Útype_func_suffixesÚtype_literal_suffixesÚtype_math_macro_suffixesr§   r©   )r˜   Úpopr•   Údictr   r»   Úitemsr²   r¼   r³   r½   r¾   r¿   ÚsuperÚ__init__r¹   ÚgetÚknown_functionsÚsetÚ_dereferenceÚheadersÚ	librariesÚmacros)rš   ÚsettingsÚ	__class__s   &&€r3   rÄ   ÚC89CodePrinter.__init__Þ   sH  ø€ Ø—>�>˜rˆØ×ÑÒ#Ø'Ÿ|™|¨M¼?Ó;LÓMˆDÔÜ ¤ t×'8Ñ'8×'>Ñ'>Ó'@Ø'/§|¡|°NÀBÓ'G×'MÑ'MÓ'Oó"Qó RˆÔä!¤%¨×(:Ñ(:×(@Ñ(@Ó(BØ(0¯©°_ÀbÓ(I×(OÑ(OÓ(Qó#Só TˆÔä ¤ t×'8Ñ'8×'>Ñ'>Ó'@Ø'/§|¡|°NÀBÓ'G×'MÑ'MÓ'Oó"Qó RˆÔä¤ d×&6Ñ&6×&<Ñ&<Ó&>Ø'/§|¡|°MÀ2Ó'F×'LÑ'LÓ'Nó!Pó QˆÔä"&¤u¨T×-DÑ-D×-JÑ-JÓ-LØ(0¯©Ð5IÈ2Ó(N×(TÑ(TÓ(Vó(Xó #YˆÔä%)¬%°×0JÑ0J×0PÑ0PÓ0RØ(0¯©Ð5LÈbÓ(Q×(WÑ(WÓ(Yó+[ó &\ˆÔ"ä(,¬U°4×3PÑ3P×3VÑ3VÓ3XØ(0¯©Ð5OÐQSÓ(T×(ZÑ(ZÓ(\ó.^ó )_ˆÔ%ä‰Ñ˜Ô"Ü# D§H¡HÑS°·±Ð=MÈrÓ0RÑSˆÔÜ §¡¨]¸BÓ ?Ó@ˆÔÜ“uˆŒÜ›ˆŒÜ“eˆŽr5   c                	ó   € V^,          # )é   © )rš   Úps   &&r3   Ú_rate_index_positionÚ#C89CodePrinter._rate_index_position÷   s   € Ø��sˆ
r5   c                óF   € VP                  R4      '       d   V# VR,           # )z?Get code string as a statement - i.e. ending with a semicolon. Ú;)Úendswith)rš   Ú
codestrings   &&r3   Ú_get_statementÚC89CodePrinter._get_statementú   s"   € à'×0Ñ0°×5Ò5ˆzÐK¸:ÈÕ;KÐKr5   c                	ó$   € R P                  V4      # )z/* {} */)Úformat)rš   Útexts   &&r3   Ú_get_commentÚC89CodePrinter._get_commentþ   s   € Ø× Ñ  Ó&Ð&r5   c                	óÞ   € V P                   \        ,          p\        WVP                  VP                  4      \
        0R 7      p\        V4      pV P                  V P                  V4      4      # ))ÚtypeÚvalueÚattrs)	r»   r   r   ÚevalfÚdecimal_digr   r   rÙ   Ú_print)rš   Únamerâ   Útype_ÚvarÚdecls   &&&   r3   Ú_declare_number_constÚ$C89CodePrinter._declare_number_const  sW   € Ø×!Ñ!¤$Õ'ˆÜ�t¨u¯{©{¸5×;LÑ;LÓ/MÔVaÐUbÔcˆÜ˜3ÓˆØ×"Ñ" 4§;¡;¨tÓ#4Ó5Ð5r5   c                	ó$   € V P                  V4      # r.   )Úindent_code)rš   Úliness   &&r3   Ú_format_codeÚC89CodePrinter._format_code  s   € Ø×Ñ Ó&Ð&r5   c                	óL   a€ VP                   w  poV3R  l\        V4       4       # )c              3  óN   <"  € T F  p\        S4       F  q!V3x € K
  	  K  	  R # 5ir.   )Úrange)Ú.0ÚiÚjÚcolss   &  €r3   Ú	<genexpr>Ú:C89CodePrinter._traverse_matrix_indices.<locals>.<genexpr>  s   øé € ÐA¡˜1´U¸4¶[°�A•±[‘£ùs   ƒ"%)Úshaperô   )rš   ÚmatÚrowsrø   s   && @r3   Ú_traverse_matrix_indicesÚ'C89CodePrinter._traverse_matrix_indices
  s   ø€ Ø—Y‘Y‰
ˆˆdÜA¤ d¤ÓAÐAr5   c                	ó&   <€ \         SV `  ! V3/ VB # r.   )rÃ   Ú
_print_Mul)rš   r›   rœ   rÍ   s   &&,€r3   r  ÚC89CodePrinter._print_Mul  s   ø€ ä‰wÒ! $Ñ1¨&Ñ1Ð1r5   c           	     	ó:  € R V P                   9   d   V P                  V4      # \        V4      pV P                  \        4      p\        VP                  R4      '       d<   V P                  \        R4      4      : RV P                  VP                  V4      : 2# \        VP                  R4      '       d2   V P                  : RV: RV P                  VP                  4      : R2# VP                  \        P                  ^,          8X  dC   V P                  R8w  d2   V P                  : RV: RV P                  VP                  4      : R2# V P                  : R	V: RV P                  VP                  4      : R
V P                  VP                  4      : R2# )ÚPowg      ð?Ú/g      à?rI   Ú(Ú)r¥   rO   Úpowú, éÿÿÿÿ)rÆ   Ú_print_Functionr'   Ú_get_func_suffixr   r   r@   Ú_print_Floatr	   ÚparenthesizeÚbaseÚ_nsræ   r   ÚOneÚstandard)rš   r›   ÚPRECÚsuffixs   &&  r3   Ú
_print_PowÚC89CodePrinter._print_Pow  s  € à�D×(Ñ(Ô(Ø×'Ñ'¨Ó-Ð-Ü˜$ÓˆØ×&Ñ&¤tÓ,ˆÜ˜Ÿ™ "×%Ò%Ø"×/Ñ/´°c³
Ö;¸T×=NÑ=NÈtÏyÉyÐZ^Õ=_Ð`Ð`Ü˜$Ÿ(™( C×(Ò(Ø%)§X¤X«v°t·{±{À4Ç9Á9Ö7MÐNÐNØ�X‰XœŸ™˜q�Ô  T§]¡]°eÔ%;Ø%)§X¤X«v°t·{±{À4Ç9Á9Ö7MÐNÐNà(,¯¬³&¸$¿+¹+ÀdÇiÁiÖ:PØ#'§;¡;¨t¯x©xÖ#8ð:ð :r5   c                	ó¾  € VP                   w  r#VP                  '       d§   VP                  '       d•   \        V4      pVP                    Uu. uF  qPP                  WT4      NK  	  upw  rgVP                  '       d   VP                  '       g%   VP
                  '       d   VP
                  '       d   V R V 2# RV R V RV RV 2# V P                  VRR7      # u upi )z % ú((z) + z) % Úfmod)Úknown)Úargsr0   r'   r  Úis_nonnegativeÚis_nonpositiveÚ_print_math_func)rš   r›   ÚnumÚdenr  ÚargÚsnumÚsdens   &&      r3   Ú
_print_ModÚC89CodePrinter._print_Mod"  sÇ   € Ø—9‘9‰ˆØ�>�>ˆ>˜cŸnŸn˜nÜ˜dÓ#ˆDØBFÇ)Â)ÓLÁ)¸3×+Ñ+¨CÖ6Á)ÑL‰JˆDð ×"×"Ð" s×'9×'9Ð'9Ø×"×"Ð" s×'9×'9Ð'9Ø˜˜s 4 &Ð)Ð)Ø˜�v˜S   d¨4¨&°°T°FÐ;Ð;à×$Ñ$ T°Ð$Ó8Ð8ùò Ms   ÁCc                	ó”   € \        VP                  4      \        VP                  4      r2V P                  \        4      pR W$W43,          # )z%d.0%s/%d.0%s)ro   rÒ   ÚqÚ_get_literal_suffixr   )rš   r›   rÒ   r'  r  s   &&   r3   Ú_print_RationalÚC89CodePrinter._print_Rational1  s9   € Ü�4—6‘6‹{œC §¡›Kˆ1Ø×)Ñ)¬$Ó/ˆØ !¨QÐ!7Õ7Ð7r5   c                	ó¨  € \        VP                  R \        P                  4      p\        VP                  RR4      pVP                  pVe   \        V\        4      '       d”   VP                  p\        P                  pRpVR8X  g   Vf,   \        \        VP                  4      4      pVRRR	1,          pMVR8X  d   \        VP                  4      pX F  p	Wv3,          pWeV	,          ,          pK  	  Tp\        R \        WC4       4       4      V,           p
V P                  VP                  P                  4      : RV P                  V
4      : R2# )
ÚoffsetÚstridesNr¤   r·   c              3  óN   "  € T F  q^ ,          V^,          ,          x € K  	  R# 5i)é    NrÑ   )rõ   r2   s   & r3   rù   Ú0C89CodePrinter._print_Indexed.<locals>.<genexpr>J  s   é € ÐBÑ,A q˜1�˜a �dŸšÓ,Aùs   ‚#%Ú[Ú]rÑ   r
  )Úgetattrr  r   ÚZeroÚindicesÚ
isinstanceÚstrrû   r  Úreversedrô   ÚrankÚsumÚzipræ   Úlabel)rš   r›   r,  r-  r5  ÚdimsÚshiftÚtempÚ	traversalrö   Ú
flat_indexs   &&         r3   Ú_print_IndexedÚC89CodePrinter._print_Indexed6  s  € ä˜Ÿ™ H¬a¯f©fÓ5ˆÜ˜$Ÿ)™) Y°Ó5ˆØ—,‘,ˆàŠ?œj¨´#×6Ò6Ø—:‘:ˆDÜ—E‘EˆEØˆDØ˜#Œ~ ¢Ü$¤U¨4¯9©9Ó%5Ó6�	Ø!¡$ B $�-‘Ø˜C”Ü! $§)¡)Ó,�	ã�Ø˜Õ �Ø˜a�Õ ’ñ ð ˆGÜÑB¬C°Ô,AÓBÓBÀVÕKˆ
ØŸ;™; t§y¡y§¡Ö7ØŸ;™; zÖ2ð4ð 	4r5   c                	ó"   <€ \         SV `  V4      # r.   )rÃ   Ú_print_NumberSymbol)rš   r›   rÍ   s   &&€r3   rE  Ú"C89CodePrinter._print_NumberSymbolN  s   ø€ ä‰wÑ*¨4Ó0Ð0r5   c                	ó   € R # )ÚHUGE_VALrÑ   ©rš   r›   s   &&r3   Ú_print_InfinityÚC89CodePrinter._print_InfinityR  ó   € Ùr5   c                	ó   € R # )z	-HUGE_VALrÑ   rI  s   &&r3   Ú_print_NegativeInfinityÚ&C89CodePrinter._print_NegativeInfinityU  ó   € Ùr5   c           
     	ó  € VP                   R,          P                  R8w  d   \        R4      h. pVP                  \        4      '       dö   \        VP                   4       FË  w  pw  rEV^ 8X  d)   VP                  RV P                  V4      ,          4       MaV\        VP                   4      ^,
          8X  d   VR8X  d   VP                  R4       M'VP                  RV P                  V4      ,          4       V P                  V4      pVP                  V4       VP                  R4       KÍ  	  RP                  V4      # VP                   RR  UUu. uF.  w  rER	V P                  V4      : R
V P                  V4      : R2NK0  	  pppRV P                  VP                   R,          P                  4      ,          pRP                  V4      V,           RP                  R\        V4      ,          .4      ,           # u uppi )é   Tz¼All Piecewise expressions must contain an (expr, True) statement to be used as a default condition. Without one, the generated expression may not evaluate to anything under some condition.z	if (%s) {zelse {zelse if (%s) {Ú}Ú
Nr  z) ? (
z
)
z: (
%s
)z: Ú r  r
  )r  ÚcondÚ
ValueErrorÚhasr
   Ú	enumerateÚappendræ   ÚlenÚjoinr›   )	rš   r›   rï   rö   ÚeÚcÚcode0ÚecpairsÚ	last_lines	   &&       r3   Ú_print_PiecewiseÚC89CodePrinter._print_PiecewiseX  s�  € Ø�9‰9�R�=×Ñ Ô%ô ð /ó 0ð 0ð
 ˆØ�8‰8”J×ÒÜ& t§y¡yÖ1‘	�‘6�AØ˜”6Ø—L‘L ¨t¯{©{¸1«~Õ!=Õ>Øœ#˜dŸi™i›.¨1Õ,Ô,°°d´Ø—L‘L Õ*à—L‘LÐ!1°D·K±KÀ³NÕ!BÔCØŸ™ A›�Ø—‘˜UÔ#Ø—‘˜SÖ!ñ 2ð —9‘9˜UÓ#Ð#ð !%§	¡	¨#¨2¡ô0á .™˜˜1ð 04¯{©{¸1®~Ø/3¯{©{¸1®~ó?á .ð ñ 0ð % t§{¡{°4·9±9¸Rµ=×3EÑ3EÓ'FÕFˆIØ—9‘9˜WÓ%¨	Õ1°C·H±H¸cÄ#ÀgÃ,Õ>NÐ=OÓ4PÕPÐPùó	0s   Å4G;c                	óR   € ^ RI Hp V P                  VP                  VRR7      4      # )r/  )Ú	PiecewiseF)Údeep)Úsympy.functionsre  ræ   Úrewrite)rš   r›   re  s   && r3   Ú
_print_ITEÚC89CodePrinter._print_ITEy  s!   € Ý-Ø�{‰{˜4Ÿ<™<¨	¸˜<Ó>Ó?Ð?r5   c                	óî   € R P                  V P                  VP                  \        R,          RR7      VP                  VP
                  VP                  P                  ^,          ,          ,           4      # )z{}[{}]ÚAtomT)Ústrict)rÜ   r  Úparentr(   r÷   rö   rû   rI  s   &&r3   Ú_print_MatrixElementÚ#C89CodePrinter._print_MatrixElement}  s[   € Ø�‰˜t×0Ñ0°·±¼jÈÕ>PØð  1ó  ØŸ&™& 4§6¡6¨$¯+©+×*;Ñ*;¸AÕ*>Õ#>Õ>ó@ð 	@r5   c                	óv   <€ \         SV `  V4      pWP                  R ,          9   d   RP                  V4      # V# )r©   z(*{}))rÃ   Ú_print_SymbolÚ	_settingsrÜ   )rš   r›   rç   rÍ   s   && €r3   rr  ÚC89CodePrinter._print_Symbol�  s5   ø€ Ü‰wÑ$ TÓ*ˆØ—>‘> -Õ0Ô0Ø—>‘> $Ó'Ð'àˆKr5   c                	óª   € V P                  VP                  4      pV P                  VP                  4      pVP                  pR P	                  W$V4      # )z{} {} {})ræ   ÚlhsÚrhsÚrel_oprÜ   )rš   r›   Úlhs_codeÚrhs_codeÚops   &&   r3   Ú_print_RelationalÚ C89CodePrinter._print_Relationalˆ  sB   € Ø—;‘;˜tŸx™xÓ(ˆØ—;‘;˜tŸx™xÓ(ˆØ�[‰[ˆØ× Ñ  ¨xÓ8Ð8r5   c                	ó   € V P                  VP                  4      p\        VP                  \        4      '       d   VP                  P
                  w  r4pM\        R 4      hV P                  VP                  4      pRP                  W#WEVR7      # )z*Only iterable currently supported is RangezLfor ({target} = {start}; {target} < {stop}; {target} += {step}) {{
{body}
}})ÚtargetÚstartÚstopÚstepÚbody)	ræ   r  r6  Úiterabler)   r  ÚNotImplementedErrorrƒ  rÜ   )rš   r›   r  r€  r�  r‚  rƒ  s   &&     r3   Ú
_print_ForÚC89CodePrinter._print_ForŽ  sw   € Ø—‘˜TŸ[™[Ó)ˆÜ�d—m‘m¤U×+Ò+Ø $§¡× 2Ñ 2ÑˆE™ä%Ð&RÓSÐSØ�{‰{˜4Ÿ9™9Ó%ˆð)ß*0©&¸Ø¨4ð +1ó +1ð	1r5   c                	ód   € R P                  V P                  VP                  ^ ,          4      4      # )z((({0}) > 0) - (({0}) < 0)))rÜ   ræ   r  )rš   Úfuncs   &&r3   Ú_print_signÚC89CodePrinter._print_sign™  s$   € Ø,×3Ñ3°D·K±KÀÇ	Á	È!ÅÓ4MÓNÐNr5   c                	ó|   a a€ R S P                   9   d   S P                  V4      # VV 3R loS! VP                  4      # )rU   c           	     ó´   <€ \        V 4      ^8X  d   SP                  V ^ ,          4      # \        V 4      ^,          pRRS! V RV 4      RS! WR 4      /,          # )rR  z!((%(a)s > %(b)s) ? %(a)s : %(b)s)ÚaNÚb©r[  ræ   )r  ÚhalfÚinner_print_maxrš   s   & €€r3   r’  Ú2C89CodePrinter._print_Max.<locals>.inner_print_maxŸ  ó^   ø€ Ü�4‹y˜AŒ~Ø—{‘{ 4¨¥7Ó+Ð+Ü�t“9 •>ˆDØ6Ø‘_ T¨%¨4 [Ó1Ø‘_ T¨% [Ó1ð:õ ð r5   ©rÆ   r  r  )rš   r›   r’  s   f&@r3   Ú
_print_MaxÚC89CodePrinter._print_Maxœ  ó8   ù€ Ø�D×(Ñ(Ô(Ø×'Ñ'¨Ó-Ð-ö	ñ ˜tŸy™yÓ)Ð)r5   c                	ó|   a a€ R S P                   9   d   S P                  V4      # VV 3R loS! VP                  4      # )rW   c           	     ó´   <€ \        V 4      ^8X  d   SP                  V ^ ,          4      # \        V 4      ^,          pRRS! V RV 4      RS! WR 4      /,          # )rR  z!((%(a)s < %(b)s) ? %(a)s : %(b)s)rŽ  Nr�  r�  )r  r‘  Úinner_print_minrš   s   & €€r3   r›  Ú2C89CodePrinter._print_Min.<locals>.inner_print_min¬  r”  r5   r•  )rš   r›   r›  s   f&@r3   Ú
_print_MinÚC89CodePrinter._print_Min©  r˜  r5   c                ó²  € \        V\        4      '       d2   V P                  VP                  R4      4      pRP	                  V4      # RpRpRpV Uu. uF  qfP                  R4      NK  	  ppV Uu. uF+  p\        \        \        VP                  V4      4      4      NK-  	  ppV Uu. uF+  p\        \        \        VP                  V4      4      4      NK-  	  pp. p	^ p
\        V4       FZ  w  r¶VR9   d   V	P                  V4       K  W¨V,          ,          p
V	P                  W:,          : V: 24       W§V,          ,          p
K\  	  V	# u upi u upi u upi )z0Accepts a string of code or a list of code linesTrµ   z   z 	)Ú{r  z{
z(
)rS  r  )rµ   rT  )r6  r7  rî   Ú
splitlinesr\  Úlstripro   ÚanyÚmapr×   Ú
startswithrY  rZ  )rš   ÚcodeÚ
code_linesÚtabÚ	inc_tokenÚ	dec_tokenÚlineÚincreaseÚdecreaseÚprettyÚlevelÚns   &&          r3   rî   ÚC89CodePrinter.indent_code¶  s#  € ô �dœC× Ò Ø×)Ñ)¨$¯/©/¸$Ó*?Ó@ˆJØ—7‘7˜:Ó&Ð&àˆØ,ˆ	Øˆ	á/3Ó4©t t—‘˜EÖ"©tˆÐ4áHLÓMÉÀ”CœœC §¡¨yÓ9Ó:Ö;ÉˆÐMÙJNÓOÉ$À$”CœœC §¡°Ó;Ó<Ö=É$ˆÐOàˆØˆÜ  –‰GˆAØ�zÔ!Ø—‘˜dÔ#ÙØ˜a•[Õ ˆEØ�M‰M C§IªtÐ4Ô5Ø˜a•[Õ ŠEñ 'ð ˆùò 5ùâMùÚOs   ÁE
Á11EÂ(1Ec                	óZ   € V P                   V P                  P                  W4      ,          # r.   )r½   r»   rÅ   ©rš   rè   s   &&r3   r  ÚC89CodePrinter._get_func_suffixÑ  s$   € Ø×&Ñ& t×'8Ñ'8×'<Ñ'<¸UÓ'JÕKÐKr5   c                	óZ   € V P                   V P                  P                  W4      ,          # r.   )r¾   r»   rÅ   r³  s   &&r3   r(  Ú"C89CodePrinter._get_literal_suffixÔ  s$   € Ø×)Ñ)¨$×*;Ñ*;×*?Ñ*?ÀÓ*MÕNÐNr5   c                	ó¦   € V P                   P                  W4      pV P                  P                  VR 4      pV P                  P                  W4      # )rµ   )r»   rÅ   r¿   )rš   rè   ÚaliasÚdflts   &&  r3   r™   Ú%C89CodePrinter._get_math_macro_suffix×  sG   € Ø×!Ñ!×%Ñ% eÓ3ˆØ×,Ñ,×0Ñ0°¸Ó;ˆØ×,Ñ,×0Ñ0°Ó=Ð=r5   c                	óV   a € R RP                  V 3R lV 4       4      ,           R,           # )r   r	  c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir.   ©ræ   )rõ   r]  rš   s   & €r3   rù   Ú.C89CodePrinter._print_Tuple.<locals>.<genexpr>Ý  s   øé € Ð:±T°˜TŸ[™[¨Ÿ^˜^³Tùó   ƒ!rS  )r\  rI  s   f&r3   Ú_print_TupleÚC89CodePrinter._print_TupleÜ  s"   ø€ Ø�4—9‘9Ô:±TÓ:Ó:Õ:¸3Õ>Ð>r5   c                	ó^  € V P                   P                  V P                  P                  V\	        4       4      4       V P
                  P                  V P                  P                  V\	        4       4      4       V P                  V P                  P                  WP                  4      4      # r.   )
rÉ   Úupdater¼   rÅ   rÇ   rË   r³   ræ   r²   rç   r³  s   &&r3   Ú_print_TypeÚC89CodePrinter._print_Typeá  st   € Ø�‰×Ñ˜D×-Ñ-×1Ñ1°%¼»Ó?Ô@Ø�‰×Ñ˜4×+Ñ+×/Ñ/°´s³uÓ=Ô>Ø�{‰{˜4×-Ñ-×1Ñ1°%¿¹ÓDÓEÐEr5   c           	     	ó*  € ^ RI Hp VP                  pVP                  pVP                  \
        8X  d   \        R4      h\        V\        4      '       dŠ   RP                  \        VP                  9   d   RMRV P                  VP                  4      \        VP                  9   d   RMRW#P                  9   d   RMRV P                  VP                  4      R7      pM�\        V\        4      '       d_   R	P                  \        VP                  9   d   RMRV P                  VP                  4      V P                  VP                  4      R
7      pM\!        R\	        V4      ,          4      hVR8w  d    VRV P                  V4      ,          ,          pV# )r/  )r�   z$C does not support untyped variablesz{vc}{t} *{pc} {r}{s}zconst rµ   z constz	restrict )ÚvcÚtÚpcÚrÚsz{vc}{t} {s})rÇ  rÈ  rË  zUnknown type of var: %sNz = %s)Úsympy.codegen.cnodesr�   Úvariablerâ   rá   r#   rW  r6  r   rÜ   r   rã   ræ   r   Úsymbolr   r…  )rš   rê   r�   ré   ÚvalÚresults   &&    r3   Ú_print_DeclarationÚ!C89CodePrinter._print_Declarationæ  s.  € Ý1Ø�m‰mˆØ�i‰iˆØ�8‰8”wÔÜÐCÓDÐDä�cœ7×#Ò#Ø+×2Ñ2Ü*¨c¯i©iÔ7‘8¸RØ—+‘+˜cŸh™hÓ'Ü,°·	±	Ô9‘8¸rØ!)¯Y©YÔ!6‘+¸BØ—+‘+˜cŸj™jÓ)ð 3ó ‰Fô ˜œX×&Ò&Ø"×)Ñ)Ü*¨c¯i©iÔ7‘8¸RØ—+‘+˜cŸh™hÓ'Ø—+‘+˜cŸj™jÓ)ð *ó ‰Fô &Ð&?Ä$ÀsÃ)Õ&KÓLÐLØ�$Œ;Ø�g §¡¨CÓ 0Õ0Õ0ˆFØˆr5   c                	óJ  € V P                   P                  \        \        4      pV P                  P	                  V P
                  P                  V\        4       4      4       V P                  V4      p\        VP                  VP                  4      4      pR V9  d   RV9  d
   VR,          pVP                  R 4      pV^ ,          P                  R4      V^ &   V^ ,          P                  R4      '       d   V^ ;;,          R,          uu&   R P                  V4      V,           # )r]  Ú.z.0Ú0)r»   rÅ   r   rË   rÃ  r³   rÇ   r(  r7  rä   rå   ÚsplitÚrstripr×   r\  )rš   Úfltrè   r  r  Ú	num_partss   &&    r3   r  ÚC89CodePrinter._print_Float  sÜ   € Ø×!Ñ!×%Ñ%¤d¬DÓ1ˆØ�‰×Ñ˜4×+Ñ+×/Ñ/°´s³uÓ=Ô>Ø×)Ñ)¨%Ó0ˆÜ�#—)‘)˜E×-Ñ-Ó.Ó/ˆØ�cŒ>˜c¨œnØ�4�KˆCØ—I‘I˜c“Nˆ	Ø  •|×*Ñ*¨3Ó/ˆ	�!‰Ø�Q�<× Ñ  ×%Ò%Ø�a�L˜CÕ‹LØ�x‰x˜	Ó" VÕ+Ð+r5   ©rÉ   c                	ó   € R # )ÚtruerÑ   rI  s   &&r3   Ú_print_BooleanTrueÚ!C89CodePrinter._print_BooleanTrue  s   € ár5   c                	ó   € R # )ÚfalserÑ   rI  s   &&r3   Ú_print_BooleanFalseÚ"C89CodePrinter._print_BooleanFalse  s   € ár5   c                	óÊ  a € VP                   R 8X  dC   VP                  R 8w  d   \        R4      hRP                  V 3R lVP                   4       4      pMd\        R \        VP                  VP                   4       4       4      pVP                  R 8w  d   W1P                  ,          pS P                  V4      pRP                  S P                  VP                  4      VR7      # )Nz%Expected strides when offset is givenz][c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir.   r½  ©rõ   r!  rš   s   & €r3   rù   Ú0C89CodePrinter._print_Element.<locals>.<genexpr>  s   øé € ÐG¹,°3˜dŸk™k¨#×.Ð.»,ùr¿  c              3  ó6   "  € T F  w  rW,          x € K  	  R # 5ir.   rÑ   )rõ   rö   rË  s   &  r3   rù   rç    s   é € ÐMÑ-L¡T Q˜QŸSšSÓ-Lùs   ‚z{symb}[{idxs}])ÚsymbÚidxs)
r-  r,  rW  r\  r5  r:  r;  ræ   rÜ   rÎ  )rš   Úelemrê  Ú
global_idxs   f&  r3   Ú_print_ElementÚC89CodePrinter._print_Element  s¯   ø€ Ø�<‰<˜4ÔØ�{‰{˜dÔ"Ü Ð!HÓIÐIØ—9‘9ÔG¸$¿,º,ÓGÓH‰DäÑM¬S°·±¸t¿|¹|Ô-LÓMÓMˆJØ�{‰{˜dÔ"ØŸk™kÕ)�
Ø—;‘;˜zÓ*ˆDà×&Ñ&Ø—‘˜TŸ[™[Ó)Øð 'ó 
ð 	
r5   c           
     óœ   € RP                  VP                   Uu. uF"  q P                  V P                  V4      4      NK$  	  up4      # u upi )z/Elements of code blocks printed as statements. rT  )r\  r  rÙ   ræ   )rš   r›   rö   s   && r3   Ú_print_CodeBlockÚC89CodePrinter._print_CodeBlock&  s8   € à�y‰yÀtÇyÂyÓQÁyÀ!×-Ñ-¨d¯k©k¸!«nÖ=ÁyÑQÓRÐRùÒQs   š(A	c                	óP   a € R P                   ! R/ VP                  V 3R lR7      B # )z while ({condition}) {{
{body}
}}c                ó&   <€ SP                  V 4      # r.   r½  )r!  rš   s   &€r3   r4   Ú-C89CodePrinter._print_While.<locals>.<lambda>,  s   ø€ ˜dŸk™k¨#Ô.r5   )ÚapplyrÑ   )rÜ   rœ   rI  s   f&r3   Ú_print_WhileÚC89CodePrinter._print_While*  s/   ø€ Ø3×:Ò:ñ 1¸T¿[¹[Ü.ð >Ió >0ñ 1ð 	1r5   c                	óF   € R V P                  VP                  4      ,          # )z{
%s
})rð  rƒ  rI  s   &&r3   Ú_print_ScopeÚC89CodePrinter._print_Scope.  s   € Ø˜D×1Ñ1°$·)±)Ó<Õ<Ð<r5   zstdio.hc                	óH  a € VP                   \        8X  d   R pM$RRS P                  VP                   4      /,          pTP                  VP                  \        8X  d   RMS P                  VP                  4      RP                  V 3R lVP                   4       4      R7      # )zprintf({fmt}, {pargs})z fprintf(%(out)s, {fmt}, {pargs})Úoutz%s
r	  c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir.   r½  ræ  s   & €r3   rù   Ú.C89CodePrinter._print_Print.<locals>.<genexpr>;  s   øé € ÐI¹°#˜TŸ[™[¨×-Ð-»ùr¿  )ÚfmtÚpargs)Úfiler$   ræ   rÜ   Úformat_stringr\  Ú
print_args)rš   r›   Útemplates   f& r3   Ú_print_PrintÚC89CodePrinter._print_Print1  s„   ø€ à�9‰9œÔØ/‰Hà9Ø�t—{‘{ 4§9¡9Ó-ð=õ ˆHð �‰Ø×,Ñ,´Ô4‘¸$¿+¹+Àd×FXÑFXÓ:YØ—)‘)ÔI¸¿ºÓIÓJð ó 
ð 	
r5   c                	ó   € VP                   # r.   )rç   )rš   Ústrms   &&r3   Ú_print_StreamÚC89CodePrinter._print_Stream>  s   € Ø�y‰yÐr5   c                	ó(  a € R P                  V 3R lVP                   4       4      pR\        ;QJ d-    . V 3R lVP                  VP                  3 4       F  NK  	  5M&! V 3R lVP                  VP                  3 4       4      V3,           ,          # )r	  c              3  óX   <"  € T F  pSP                  \        V4      4      x € K!  	  R # 5ir.   )ræ   r   ræ  s   & €r3   rù   Ú:C89CodePrinter._print_FunctionPrototype.<locals>.<genexpr>B  s"   øé € ÐSÁ?¸C˜$Ÿ+™+¤k°#Ó&6×7Ð7Ã?ùs   ƒ'*z	%s %s(%s)c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir.   r½  ræ  s   & €r3   rù   r  D  s   øé € ÐMÑ/L¨�4—;‘;˜s×#Ð#Ó/Lùr¿  )r\  Ú
parametersÚtupleÚreturn_typerç   )rš   r›   Úparss   f& r3   Ú_print_FunctionPrototypeÚ'C89CodePrinter._print_FunctionPrototypeA  sk   ø€ Ø�y‰yÔSÀ4Ç?Â?ÓSÓTˆØßŒEÔM°×0@Ñ0@À$Ç)Á)Ñ/LÓM�E‰EÔM°×0@Ñ0@À$Ç)Á)Ñ/LÓMÓNÐRVÐQXÕXõ
ð 	
r5   c                	óN   € V P                  V4      : V P                  V4      : 2# r.   )r  rù  rI  s   &&r3   Ú_print_FunctionDefinitionÚ(C89CodePrinter._print_FunctionDefinitionG  s(   € Ø×6Ñ6°tÕ<Ø×*Ñ*¨4Õ0ð2ð 	2r5   c                	óN   € VP                   w  pR V P                  V4      ,          # )z	return %s©r  ræ   ©rš   r›   r!  s   && r3   Ú_print_ReturnÚC89CodePrinter._print_ReturnK  s!   € Ø�y‰y‰ˆØ˜TŸ[™[¨Ó-Õ-Ð-r5   c                	ó\   a € R RP                  V 3R lVP                   4       4      ,          # )z(%s)r	  c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir.   r½  ræ  s   & €r3   rù   Ú6C89CodePrinter._print_CommaOperator.<locals>.<genexpr>P  s   øé € Ð"I¹y¸ 4§;¡;¨s×#3Ð#3»yùr¿  )r\  r  rI  s   f&r3   Ú_print_CommaOperatorÚ#C89CodePrinter._print_CommaOperatorO  s!   ø€ Ø˜Ÿ	™	Ô"I¸t¿yºyÓ"IÓJÕJÐJr5   c                	ó‚  € VP                   \        8X  d   R \        VP                  4      ,          # \	        VP                   P
                  4      ^8X  d6   \        VP                  4      : RV P                  VP                   4      : 2# \        VP                  4      : RV P                  VP                   4      : R2# )z%s:z:
z:
{
z
})rƒ  r$   r7  rç   r[  r  rð  rI  s   &&r3   Ú_print_LabelÚC89CodePrinter._print_LabelR  sz   € Ø�9‰9œÔØœ3˜tŸy™y›>Õ)Ð)Üˆt�y‰y�~‰~Ó !Ô#Ü # D§I¡I¦°×0EÑ0EÀdÇiÁiÕ0PÐQÐQÜ"% d§i¡i¦.°$×2GÑ2GÈÏ	É	Ö2RÐSÐSr5   c                	ó<   € R VP                   P                  ,          # )zgoto %s)r<  rç   rI  s   &&r3   Ú_print_gotoÚC89CodePrinter._print_gotoY  s   € Ø˜4Ÿ:™:Ÿ?™?Õ*Ð*r5   c                	óN   € VP                   w  pR V P                  V4      ,          # )z++(%s)r  r  s   && r3   Ú_print_PreIncrementÚ"C89CodePrinter._print_PreIncrement\  ó!   € Ø�y‰y‰ˆØ˜$Ÿ+™+ cÓ*Õ*Ð*r5   c                	óN   € VP                   w  pR V P                  V4      ,          # )z(%s)++r  r  s   && r3   Ú_print_PostIncrementÚ#C89CodePrinter._print_PostIncrement`  r+  r5   c                	óN   € VP                   w  pR V P                  V4      ,          # )z--(%s)r  r  s   && r3   Ú_print_PreDecrementÚ"C89CodePrinter._print_PreDecrementd  r+  r5   c                	óN   € VP                   w  pR V P                  V4      ,          # )z(%s)--r  r  s   && r3   Ú_print_PostDecrementÚ#C89CodePrinter._print_PostDecrementh  r+  r5   c                	óä   € R RVP                   P                  RVP                  RRP                  VP                   Uu. uF  q P                  V4      NK  	  upR.,           4      /,          # u upi )z!%(keyword)s %(name)s {
%(lines)s}Úkeywordrç   rï   z;
rµ   )rÍ   Ú__name__rç   r\  Údeclarationsræ   )rš   r›   rê   s   && r3   Ú_print_structÚC89CodePrinter._print_structl  se   € Ø3Ø�t—~‘~×.Ñ.°¸¿	¹	À7ÈEÏJÉJØ/3×/@Ò/@ÓAÑ/@ t—‘˜TÖ"Ñ/@ÑAÀRÀDÕHóMJð7
õ 
ð 	
ùâAs   ¾A-c                	ó   € R # )r`   rÑ   ©rš   Ú_s   &&r3   Ú_print_BreakTokenÚ C89CodePrinter._print_BreakTokenr  s   € Ùr5   c                	ó   € R # )rd   rÑ   r<  s   &&r3   Ú_print_ContinueTokenÚ#C89CodePrinter._print_ContinueTokenu  rL  r5   )rÈ   rÉ   rÆ   rÊ   rË   r˜   r»   r½   r¼   r¾   r³   r²   r¿   r.   )er7  Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚprintmethodÚlanguager  rÇ   Úreserved_wordsrÁ   r%   r¬   Ú__annotations__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  Úknown_functions_C89r¹   rÄ   rÓ   rÙ   rÞ   rë   rð   rþ   r    r  r  r$  r)  rB  rE  rJ  rN  rb  ri  ro  rr  r|  r†  rŠ  r–  r�  rî   r  r(  r™   rÀ  Ú_print_ListrÄ  rÑ  r  r&   rÞ  râ  rí  rð  rö  rù  r  r	  r  r  r  r   r#  r&  r)  r-  r0  r3  r9  r>  rA  Ú_print_unionÚ__static_attributes__Ú__classcell__)rÍ   s   @r3   r¢   r¢   “   s  ø‡ ÙFØ€KØ€HØ€HÙ˜Ó(€Ná(,¨[×-JÑ-Jñ )Ø�RØ˜"Ø�DØ‘s“uØ˜UðOñ )Ð�~ó ð 	ˆgØ�*Ø�ð€Lð 	ˆhØˆeØ�Ø�Ø�ØˆvØˆhØˆyØˆyØˆyØˆxØ�	Ø�	Ø�	ð&€M�?ó ð$ 	�ˆ}ØˆzˆlØ�
ˆ|Ø�
ˆ|Ø�
ˆ|Ø�
ˆ|Ø��Ø��Ø��ð
€Lð 02€KÐ,Ó1ð 	�Ø�Ø�ðÐð 	�Ø�Ø�ðÐð 	�ð Ðð €Kà
€Cà-€CˆÓ-÷ò2òLò'ò6ò'òBð ô2ó ð2ð ñ:ó ð:ò9ò8ò
4ð0 ô1ó ð1òòòQòB@ò@õò9ò	1òOò*ò*òò6LòOò>ò
?ð €KòFò
ò6,ñ �{�mÔ$ñó %ðñ �{�mÔ$ñó %ðò
ò Sò1ò=ñ �y�kÔ"ñ

ó #ð

òò
ò2ò.òKòTò+ò+ò+ò+ò+ò
òòð !†Lr5   r¢   c            	      ó¦  € ] tR tRt$ Rt]! ]],           4      t]! ]	! ]
P                  P                  4       ]R]R/P                  4       4      4      t]! ]	! ]
P                  P                  4       ]R0]R0/P                  4       4      4      t]tR]R&   RP'                  4       tR	 tR
 tR t]! R0R0R7      ]RR l4       4       tR tR tR tRtR# )ÚC99CodePrinteriz  ÚC99zfloat complexzdouble complexz	complex.hr«   r¹   a  fabs fmod remainder remquo fma fmax fmin fdim nan exp exp2 expm1 log log10 log2 log1p pow sqrt cbrt hypot sin cos tan asin acos atan atan2 sinh cosh tanh asinh acosh atanh erf erfc tgamma lgamma ceil floor trunc round nearbyint rint frexp ldexp modf scalbn ilogb logb nextafter copysignc                	ó   € R # )ÚINFINITYrÑ   rI  s   &&r3   rJ  ÚC99CodePrinter._print_Infinity�  rL  r5   c                	ó   € R # )z	-INFINITYrÑ   rI  s   &&r3   rN  Ú&C99CodePrinter._print_NegativeInfinity“  rP  r5   c                	ó   € R # )ÚNANrÑ   rI  s   &&r3   Ú
_print_NaNÚC99CodePrinter._print_NaN–  s   € Ùr5   zmath.hÚm)rÉ   rÊ   Nc           
     	óà  a € Vf(   S P                   VP                  P                  ,          p\        V\        4      '       g1   V F  w  rEV! VP
                  !  '       g   K  Tp M	  \        R4      h V! S .VP
                  O5!  #   \         d=    S P                  T,           S P                  9   d   S P                  \        4      MRp Mi ; iT'       dÓ   S P                  TP
                  ^ ,          4      p\        TP
                  4      ^8”  d–   RpTP
                  ^R
  FA  p	TR,          pTRP                  S P                  TTS P                  T	4      R7      ,          pKC  	  TRS P                  TP                  TP
                  R
,          4      4      : T: 2,          pM%RP!                  T 3R lTP
                   4       4      pRP                  S P                  TTTR	7      # )NzNo matching printerrµ   r  z, {ns}{name}{suffix}({next})Únsrç   r  Únextr	  c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir.   r½  ræ  s   & €r3   rù   Ú2C99CodePrinter._print_math_func.<locals>.<genexpr>½  s   øé € ÐD¹)°3˜dŸk™k¨#×.Ð.»)ùr¿  z{ns}{name}{suffix}({args}))r^  rç   r  r  r
  )rÆ   rÍ   r7  r6  r7  r  rW  Ú	TypeErrorr  Ú_prec_funcsr  r   ræ   r[  rÜ   r‰  r\  )
rš   r›   Únestr  Úcbrç   r  r  Ú
paren_pileÚcurr_args
   f&&&      r3   r  ÚC99CodePrinter._print_math_func›  s­  ø€ ð Š=Ø×(Ñ(¨¯©×)@Ñ)@ÕAˆEÜ˜%¤×%Ò%Û!‘�Ù�t—y‘y—>’>Ø �EÙñ "ô
 !Ð!6Ó7Ð7ð	aÙ˜Ð* §	¡	Ó*Ð*øÜô 	aØ48·H±H¸uÕ4DÈ×HXÑHXÔ4X�T×*Ñ*¬4Ô0Ð^`ŠFð	aú÷ Ø—;‘;˜tŸy™y¨�|Ó,ˆDÜ�4—9‘9‹~ Ô!Ø�
Ø $§	¡	¨!¨B£�HØ #Õ%�JØÐ9×@Ñ@ØŸ8™8Ø"Ø%Ø#Ÿ{™{¨8Ó4ð	 Aó õ ’Dñ !0ñ Ø—K‘K §	¡	¨$¯)©)°B­-Ó 8Õ9Úðõ �øð
 —9‘9ÔD¸$¿)º)ÓDÓEˆDØ+×2Ñ2Ø�x‰xØØØð	 3ó 
ð 	
s   Á4B ÂACÃCc                	ó(   € V P                  VR R7      # ©T)rd  ©r  rI  s   &&r3   r–  ÚC99CodePrinter._print_MaxÅ  ó   € Ø×$Ñ$ T°Ð$Ó5Ð5r5   c                	ó(   € V P                  VR R7      # rj  rk  rI  s   &&r3   r�  ÚC99CodePrinter._print_MinÈ  rm  r5   c                	ó(  € . p. pR pV F„  pVP                  VRV P                  VP                  4      RV P                  VP                  4      RV P                  VP                  ^,           4      /,          4       VP                  R4       K†  	  W#3# )z8for (int %(var)s=%(start)s; %(var)s<%(end)s; %(var)s++){ré   r€  ÚendrS  )rZ  ræ   r<  ÚlowerÚupper)rš   r5  Ú
open_linesÚclose_linesÚ	loopstartrö   s   &&    r3   Ú_get_loop_opening_endingÚ'C99CodePrinter._get_loop_opening_endingË  sŠ   € Øˆ
ØˆØNˆ	ÛˆAà×Ñ˜iØ�t—{‘{ 1§7¡7Ó+Ø˜Ÿ™ Q§W¡WÓ-Ø�t—{‘{ 1§7¡7¨Q¥;Ó/ð+1õ 1ô 2ð ×Ñ˜sÖ#ñ ð Ð&Ð&r5   rÑ   )FN)r7  rC  rD  rE  r  rÇ   rI  Úreserved_words_c99rÁ   r   r¢   r²   rÂ   r   r   r¼   Úknown_functions_C99r¹   rJ  rÖ  rc  rJ  rN  rZ  r&   r    r  r–  r�  rw  rN  rÑ   r5   r3   rQ  rQ  z  sü   ‡ Ø€HÙ˜Ð*<Õ<Ó=€NÙ‘u˜^×9Ñ9×?Ñ?ÓAØ�?ØÐ$ðD÷ �eƒgóó €Mñ ™˜n×9Ñ9×?Ñ?ÓAØ�K�=Ø�[�MðD÷ �eƒgóó €Lð .€CˆÓ-ðL÷ NSÉUËWð	 òòòñ
 �x�j¨S¨EÔ2Øó&
ó ó 3ð&
òP6ò6ö'r5   rQ  z¬Abs Sqrt exp exp2 expm1 log log10 log2 log1p Cbrt hypot fma loggamma sin cos tan asin acos atan atan2 sinh cosh tanh asinh acosh atanh erf erfc loggamma gamma ceiling floorz	_print_%sc                  ó6   € ] tR tRt]! R0R7      R 4       tRtR# )ÚC11CodePrinteriß  z
stdalign.hrÛ  c                	óN   € VP                   w  pR V P                  V4      ,          # )zalignof(%s)r  r  s   && r3   Ú_print_alignofÚC11CodePrinter._print_alignofá  s!   € à�y‰y‰ˆØ˜tŸ{™{¨3Ó/Õ/Ð/r5   rÑ   N)r7  rC  rD  rE  r&   r~  rN  rÑ   r5   r3   r|  r|  ß  s   † á�|�nÔ%ñ0ó &ô0r5   r|  Úc89Úc99Úc11N)CrF  Ú
__future__r   Útypingr   Ú	functoolsr   Ú	itertoolsr   Ú
sympy.corer   Úsympy.core.numbersr   r	   Úsympy.codegen.astr
   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$   Úsympy.printing.codeprinterr%   r&   Úsympy.printing.precedencer'   r(   Úsympy.sets.fancysetsr)   r*   r+   rK  rÁ   rz  rI  ry  r•   r    r¢   rQ  rÖ  ÚkÚsetattrr  r|  Úc_code_printersrÑ   r5   r3   Ú<module>r�     sÍ  ðñõ #Ý å Ý å ß 2÷÷ ÷ ÷ ÷ ÷ ÷ ñ ÷ =ß <Ý &÷ :ðØ	Ñ'¨Ð0Ñ3IÈ5Ð2QÐRðà	ˆ5ðð 
ˆ5ðð 
ˆ5ð	ð
 ˆFðð ˆFðð ˆFðð ˆWðð 
ˆ5ðð 
ˆ5ðð ˆWðð ˆFðð ˆFðð ˆFðð ˆWðð  ˆvð!ð" ˆFð#Ð ñ( Ð.ñ ð 3Ø
ˆFð3àˆWð3ð ˆFð3ð ˆWð	3ð
 ˆFð3ð ˆWð3ð 
ˆ5ð3ð �ð3ð ˆFð3ð 
ˆ6ð3ð 
ˆ6ð3ð ˆWð3ð ˆWð3ð ˆWð3ð 
ˆ5ð3ð  ˆXð!3ñ Ð ð,Ø
ðØðØðØ#ðØ%,ðØ.8ðØ:CðØEIðàðàðàðà&ðà(/ðà16ðà8>ðà@DðàFKðð ðð ðð !ðð #*ðð ,4ðð 6>ðð @Hðð ð	ð ð	ð
 ðð
 ðð
 !ðð
 #-ðð
 /5ðð
 7Aðð
 CJð€ð  
Ð+Ð ò"òJô&e!�[ô e!ôN\'�^ô \'ð~8ç9>¹»ò
A€Añ ˆN˜K¨!�O¨^×-LÑ-LÖMñ
Aô0�^ô 0ð 
ˆ>Ø	ˆ>Ø	ˆ>ð‚r5   