§
    OŠtjûy  ã                   ó²  — d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZB d dlCmDZDmEZE d dlFmGZG d d	lHmIZImJZJmKZK d d
lLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZf d dlgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZr d dlsmtZt d dlumvZv d dlwmxZxmyZy d dlzm{Z{m|Z|m}Z} d dlFm~Z~  ed¦  «        \  ZZ€Z�d„ Z‚d„ Zƒd„ Z„d„ Z…d„ Z†d„ Z‡d„ Zˆd„ Z‰d„ ZŠd„ Z‹d„ ZŒd„ Z�d„ ZŽd„ Z�d „ Z�d!„ Z‘d"„ Z’d#„ Z“d$„ Z”d%„ Z•d&„ Z–d'„ Z—d(„ Z˜d)„ Z™d*„ Zšd+„ Z›d,„ Zœd-„ Z�d.„ Zžd/„ ZŸd0„ Z d1„ Z¡d2„ Z¢d3„ Z£d4„ Z¤d5„ Z¥d6„ Z¦d7„ Z§d8„ Z¨d9„ Z©d:„ ZªeEd;„ ¦   «         Z«d<„ Z¬d=„ Z­d>„ Z®d?„ Z¯d@„ Z°dA„ Z±dB„ Z²dC„ Z³dD„ Z´dE„ ZµdF„ Z¶dGS )Hé    )ÚSÚpiÚooÚSymbolÚsymbolsÚRationalÚIntegerÚFloatÚFunctionÚModÚGoldenRatioÚ
EulerGammaÚCatalanÚLambdaÚDummyÚnanÚMulÚPowÚUnevaluatedExpr)ÚEqÚGeÚGtÚLeÚLtÚNe)ÚAbsÚacosÚacoshÚasinÚasinhÚatanÚatanhÚatan2ÚceilingÚcosÚcoshÚerfÚerfcÚexpÚfloorÚgammaÚlogÚloggammaÚMaxÚMinÚ	PiecewiseÚsignÚsinÚsinhÚsqrtÚtanÚtanhÚ	fibonacciÚlucas)ÚRange)ÚITEÚImpliesÚ
Equivalent)ÚForÚ
aug_assignÚ
Assignment)ÚraisesÚXFAIL)ÚPrintMethodNotImplementedError)ÚC89CodePrinterÚC99CodePrinterÚget_math_macros)ÚAddAugmentedAssignmentÚElementÚTypeÚ	FloatTypeÚDeclarationÚPointerÚVariableÚvalue_constÚpointer_constÚWhileÚScopeÚPrintÚFunctionPrototypeÚFunctionDefinitionÚFunctionCallÚReturnÚrealÚfloat32Úfloat64Úfloat80Úfloat128ÚintcÚCommentÚ	CodeBlockÚstderrÚQuotedString)Úexpm1Úlog1pÚexp2Úlog2ÚfmaÚlog10ÚCbrtÚhypotÚSqrtÚisnanÚisinf)Úrestrict)Úimplemented_function)ÚIndexedBaseÚIdx)ÚMatrixÚMatrixSymbolÚSparseMatrix©Úccodezx,y,zc                  ór   —  G d„ dt           ¦  «        } t           | t          ¦  «        ¦  «        dk    sJ ‚d S )Nc                   ó   — e Zd Zd„ ZdS )útest_printmethod.<locals>.fabsc                 óH   — d|                      | j        d         ¦  «        z  S )Nzfabs(%s)r   )Ú_printÚargs)ÚselfÚprinters     úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/printing/tests/test_c.pyÚ_ccodez%test_printmethod.<locals>.fabs._ccode#   s   € Ø §¢¨t¬y¸¬|Ñ <Ô <Ñ<Ð<ó    N)Ú__name__Ú
__module__Ú__qualname__r}   © r~   r|   Úfabsrv   "   s#   € € € € € ð	=ð 	=ð 	=ð 	=ð 	=r~   rƒ   úfabs(x))r   rs   Úx)rƒ   s    r|   Útest_printmethodr†   !   sS   € ð=ð =ð =ð =ð =�sñ =ô =ð =õ ��•a‘”‰>Œ>˜YÒ&Ð&Ð&Ð&Ð&Ð&r~   c                  óÜ   — t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          dz  ¦  «        dk    sJ ‚t          t          t          ¦  «        ¦  «        dk    sJ ‚d S )Nzsqrt(x)ç      à?)rs   r4   r…   r‚   r~   r|   Útest_ccode_sqrtr‰   )   s]   € Ý••a‘”‰>Œ>˜YÒ&Ð&Ð&Ð&Ý•�C‘‰=Œ=˜IÒ%Ð%Ð%Ð%Ý••a‘”‰>Œ>˜YÒ&Ð&Ð&Ð&Ð&Ð&r~   c                  óÄ  — t          t          dz  ¦  «        dk    sJ ‚t          t          t          dz  z  ¦  «        dk    sJ ‚t          dt	          t          dt          z  ¦  «        ¦  «        } t          d | t          ¦  «        dz  t          t          t          z  z
  z  z  t          dz  t          z   z  ¦  «        dk    sJ ‚t          t          d	z  ¦  «        d
k    sJ ‚t          t          t          dd¦  «        z  ¦  «        dk    sJ ‚t          t          t          dd¦  «        z  t          t          i¬¦  «        dk    sJ ‚d„ dfd„ dfg}t          t          dz  d|i¬¦  «        dk    sJ ‚t          t          dz  d|i¬¦  «        dk    sJ ‚t          t          t          dd¦  «        z  d|i¬¦  «        dk    sJ ‚d„ d„ fd„ dfg}t          dt          z  d|i¬¦  «        dk    sJ ‚t          t          dz  d|i¬¦  «        dk    sJ ‚t          t          dt          t          t          t          t          d ¬!¦  «        d"d ¬!¦  «        d ¬!¦  «        ¦  «        d#k    sJ ‚d S )$Né   z	pow(x, 3)zpow(x, pow(y, 3))Úgé   é   g      @z,pow(3.5*2*x, -x + pow(y, x))/(pow(x, 2) + y)ç      ð¿z1.0/xzpow(x, 2.0/3.0)©Útype_aliaseszpowl(x, 2.0L/3.0L)c                 ó   — |j         S ©N©Ú
is_integer©Úbaser)   s     r|   ú<lambda>z test_ccode_Pow.<locals>.<lambda>8   s   €  c¤n€ r~   Údpowic                 ó   — |j          S r“   r”   r–   s     r|   r˜   z test_ccode_Pow.<locals>.<lambda>9   s   € ¨#¬.Ð&8€ r~   Úpowr   ©Úuser_functionszdpowi(x, 3)rˆ   zpow(x, 0.5)é   é   zpow(x, 16.0/5.0)c                 ó   — | dk    S ©Nr�   r‚   r–   s     r|   r˜   z test_ccode_Pow.<locals>.<lambda>=   ó
   €  t¨q¢y€ r~   c                 ó   — d|z  S )Nzexp2(%s)r‚   r–   s     r|   r˜   z test_ccode_Pow.<locals>.<lambda>=   s   € ÀJÐQTÑDT€ r~   c                 ó   — | dk    S r¡   r‚   r–   s     r|   r˜   z test_ccode_Pow.<locals>.<lambda>>   r¢   r~   úexp2(x)z	pow(x, 2)éþÿÿÿF©Úevaluateéÿÿÿÿz
-2*x/(y*y))
rs   r…   Úyrl   r   r   rV   rY   r   r   )rŒ   Ú_cond_cfuncÚ_cond_cfunc2s      r|   Útest_ccode_Powr­   /   s˜  € Ý•�A‘‰;Œ;˜+Ò%Ð%Ð%Ð%Ý••Q˜‘T‘ÑÔÐ2Ò2Ð2Ð2Ð2Ý˜S¥&­¨A­a©C¡.¤.Ñ1Ô1€AÝ��A�A•a‘D”D˜‘H¥¥A¥q¡D¡Ñ)Ñ)­1¨a©4µ!©8Ñ4Ñ5Ô5Ø6ò7ð 7ð 7ð 7å•�D‘‰>Œ>˜WÒ$Ð$Ð$Ð$Ý••H˜Q ‘N”NÑ"Ñ#Ô#Ð'8Ò8Ð8Ð8Ð8Ý••H˜Q ‘N”NÑ"µ$½°ÐAÑAÔAÐEYÒYÐYÐYÐYØ4Ð4°gÐ>Ø8Ð8¸%Ð@ðB€Kå•�A‘ u¨kÐ&:Ð;Ñ;Ô;¸}ÒLÐLÐLÐLÝ•�C‘¨°Ð(<Ð=Ñ=Ô=ÀÒNÐNÐNÐNÝ••H˜R ‘O”OÑ#°U¸KÐ4HÐIÑIÔIÐM_Ò_Ð_Ð_Ð_Ø0Ð0Ð2TÐ2TÐUØ0Ð0°%Ð8ð:€Lõ �•A‘ u¨lÐ&;Ð<Ñ<Ô<À	ÒIÐIÐIÐIÝ•�A‘ u¨lÐ&;Ð<Ñ<Ô<ÀÒKÐKÐKÐKå•�R��C¥¥A¥a°Ð 7Ñ 7Ô 7¸ÀeÐLÑLÔLØ9>ð@ñ @ô @ñ Aô AØDPòQð Qð Qð Qð Qð Qr~   c                  óz   — t          t          t          t          t          z  ¦  «        dddœ¬¦  «        dk    sJ ‚d S )NÚmy_maxÚmy_pow)r.   r   rœ   zmy_max(x, my_pow(x, 2)))rs   r.   r…   r‚   r~   r|   Útest_ccode_Maxr±   G   s;   € å••Q•q�‘s‘”°(À(Ð+KÐ+KÐLÑLÔLÐPiÒiÐiÐiÐiÐiÐir~   c                  óº   — t          t          d¦  «        Ž } dD ]A}t          | |¬¦  «        }|                     d¦  «        |                     d¦  «        k    sJ ‚ŒBd S )Nza[0:50])Úc89Úc99Úc11©Ústandardú(ú))r/   r   rs   Úcount)Úbig_minÚcurr_standardÚoutputs      r|   Útest_ccode_Min_performancer¾   L   sk   € å•7˜9Ñ%Ô%Ð&€GØ.ð 6ð 6ˆÝ�w¨Ð7Ñ7Ô7ˆØ�|Š|˜CÑ Ô  F§L¢L°Ñ$5Ô$5Ò5Ð5Ð5Ð5Ð5ð6ð 6r~   c                  ó®  — t          t          d¦  «        ¦  «        dk    sJ ‚t          t          ¦  «        dk    sJ ‚t          t          d¬¦  «        dk    sJ ‚t          t           d¬¦  «        dk    sJ ‚t          t          ¦  «        dk    sJ ‚t          t           d	¬¦  «        d
k    sJ ‚t          t          t          t
          i¬¦  «        dk    sJ ‚d S )NrŽ   ÚM_EÚM_PIr³   r¶   ÚHUGE_VALz	-HUGE_VALÚINFINITYr´   z	-INFINITYr�   ÚM_PIl)rs   r)   r   r   rV   rY   r‚   r~   r|   Útest_ccode_constants_mathhrÅ   T   sÓ   € Ý•�Q‘”‰=Œ=˜EÒ!Ð!Ð!Ð!Ý•‰9Œ9˜ÒÐÐÐÝ•˜eÐ$Ñ$Ô$¨
Ò2Ð2Ð2Ð2Ý•"�˜uÐ%Ñ%Ô%¨Ò4Ð4Ð4Ð4Ý•‰9Œ9˜
Ò"Ð"Ð"Ð"Ý•"�˜uÐ%Ñ%Ô%¨Ò4Ð4Ð4Ð4Ý•¥4­ /Ð2Ñ2Ô2°gÒ=Ð=Ð=Ð=Ð=Ð=r~   c                  ó2  — t          dt          z  ¦  «        dt          j        d¦  «        z  k    sJ ‚t          dt          z  ¦  «        dt          j        d¦  «        z  k    sJ ‚t          dt          z  ¦  «        dt	          j        d¦  «        z  k    sJ ‚d S )Nr�   z,const double GoldenRatio = %s;
2*GoldenRatioé   z$const double Catalan = %s;
2*Catalanz*const double EulerGamma = %s;
2*EulerGamma)rs   r   Úevalfr   r   r‚   r~   r|   Útest_ccode_constants_otherrÉ   ^   s¦   € Ý�•;‘ÑÔÐ#RÕU`ÔUfÐgiÑUjÔUjÑ#jÒjÐjÐjÐjÝØ	�'‰	ñô Ø=ÅÄÈbÑ@QÔ@QÑQòRð Rð Rð Rå�•:‘ÑÔÐ"OÕR\ÔRbÐceÑRfÔRfÑ"fÒfÐfÐfÐfÐfÐfr~   c                  óÔ  — t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          dd¦  «        t          t          i¬¦  «        dk    sJ ‚t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          dd	¦  «        ¦  «        d
k    sJ ‚t          t          dd	¦  «        t          t          i¬¦  «        dk    sJ ‚t          t          dd	¦  «        ¦  «        dk    sJ ‚t          t          dd	¦  «        t          t          i¬¦  «        dk    sJ ‚t          t          t          dd¦  «        z   ¦  «        dk    sJ ‚t          t          t          dd¦  «        z   t          t          i¬¦  «        dk    sJ ‚t          t          dd¦  «        t          z  ¦  «        dk    sJ ‚t          t          dd¦  «        t          z  t          t          i¬¦  «        dk    sJ ‚d S )Nr‹   é   z3.0/7.0r�   z	3.0L/7.0Lé   é	   Ú2éùÿÿÿz-3.0/7.0z
-3.0L/7.0Léýÿÿÿzx + 3.0/7.0zx + 3.0L/7.0Lz(3.0/7.0)*xz(3.0L/7.0L)*x)rs   r   rV   rY   r…   r‚   r~   r|   Útest_ccode_RationalrÑ   e   s¸  € Ý•˜!˜Q‘”Ñ Ô  IÒ-Ð-Ð-Ð-Ý•˜!˜Q‘”­tµW¨oÐ>Ñ>Ô>À+ÒMÐMÐMÐMÝ•˜"˜a‘”Ñ!Ô! SÒ(Ð(Ð(Ð(Ý•˜!˜R‘”Ñ!Ô! ZÒ/Ð/Ð/Ð/Ý•˜!˜R‘”µµg¨Ð?Ñ?Ô?À<ÒOÐOÐOÐOÝ•˜"˜bÑ!Ô!Ñ"Ô" iÒ/Ð/Ð/Ð/Ý•˜"˜bÑ!Ô!µµw°Ð@Ñ@Ô@ÀKÒOÐOÐOÐOÝ••X˜a ‘^”^Ñ#Ñ$Ô$¨Ò5Ð5Ð5Ð5Ý••X˜a ‘^”^Ñ#µ4½°/ÐBÑBÔBÀoÒUÐUÐUÐUÝ•˜!˜Q‘”¥Ñ!Ñ"Ô" mÒ3Ð3Ð3Ð3Ý•˜!˜Q‘”¥Ñ!µµw°Ð@Ñ@Ô@ÀOÒSÐSÐSÐSÐSÐSr~   c                  óŽ   — t          t          d¦  «        ¦  «        dk    sJ ‚t          t          d¦  «        ¦  «        dk    sJ ‚d S )NéC   Ú67r©   z-1)rs   r	   r‚   r~   r|   Útest_ccode_IntegerrÕ   s   sF   € Ý•˜‘”ÑÔ Ò%Ð%Ð%Ð%Ý•˜‘”ÑÔ Ò%Ð%Ð%Ð%Ð%Ð%r~   c                  ó~   — t          t          t          ¦  «        t          t          ¦  «        z  ¦  «        dk    sJ ‚d S )Nzpow(sin(x), cos(x)))rs   r2   r…   r%   r‚   r~   r|   Útest_ccode_functionsr×   x   s3   € Ý••Q‘”�3�q™6œ6Ñ!Ñ"Ô"Ð&;Ò;Ð;Ð;Ð;Ð;Ð;r~   c            	      ób  — t          d¦  «        } t          dt          | d| z  ¦  «        ¦  «        }t           || ¦  «        ¦  «        dk    sJ ‚t          dt          | d| z  t          z  ¦  «        ¦  «        }t           || ¦  «        ¦  «        dt	          j        d¦  «        z  k    sJ ‚t          d¦  «        }t          dt          d	d
¬¦  «        ¦  «        }t          dt          | | d| z   z  d| z   z  ¦  «        ¦  «        }t           |||         ¦  «        ||         ¬¦  «        dk    sJ ‚d S )Nr…   rŒ   r�   z2*xz&const double Catalan = %s;
2*x/CatalanrÇ   ÚAÚiÚnT©ÚintegerrŽ   ©Ú	assign_toz@for (int i=0; i<n; i++){
   A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
})r   rl   r   rs   r   rÈ   rm   rn   )r…   rŒ   rÙ   rÚ   s       r|   Útest_ccode_inline_functionrà   |   s@  € Ý�‰Œ€AÝ˜S¥&¨¨A¨a©C¡.¤.Ñ1Ô1€AÝ���1‘”‰;Œ;˜%ÒÐÐÐÝ˜S¥&¨¨A¨a©Cµ©KÑ"8Ô"8Ñ9Ô9€AÝØ	ˆˆ!‰Œñô Ø:½W¼]È2Ñ=NÔ=NÑNòOð Oð Oð Oå�CÑÔ€AÝˆC•˜ dÐ+Ñ+Ô+Ñ,Ô,€AÝ˜S¥&¨¨A¨q°1©u©I°q¸1±uÑ,=Ñ">Ô">Ñ?Ô?€AÝ���1�Q”4‘” A a¤DÐ)Ñ)Ô)ð	òð ð ð ð ð r~   c                  óÞ  — t          t          t          ¦  «        d¬¦  «        dk    sJ ‚t          t          ¦  «        5  t          t          t          ¦  «        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          t          t          ¦  «        dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          t          ¦  «        dd¬¦  «         d S )NÚC99r¶   ú	tgamma(x)ÚC89F)r·   Úallow_unknown_functionsT)rs   r+   r…   r@   rB   r‚   r~   r|   Útest_ccode_exceptionsræ   �   sV  € Ý••q‘” EÐ*Ñ*Ô*¨kÒ9Ð9Ð9Ð9Ý	Õ.Ñ	/Ô	/ð (ð (Ý�e•A‰hŒh Ð'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (å	Õ.Ñ	/Ô	/ð Gð GÝ�e•A‰hŒh ÀÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 
�%•‰(Œ(˜U¸DÐAÑAÔAÐAÐAÐAs#   ¾$A.Á.A2Á5A2Â%B>Â>CÃCc                  ó¶  — t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t	          t          ¦  «        ¦  «        dk    sJ ‚t          dd¬¦  «        \  } }t          t          t          | ¦  «        t          |¦  «        ¦  «        ¦  «        dk    sJ ‚t          t          | |¦  «        ¦  «        dk    sJ ‚t          d	dd¬
¦  «        \  }}t          t          ||¦  «        ¦  «        dk    sJ ‚t          t          ||dz   ¦  «        ¦  «        dk    sJ ‚t          t          ddd¬¦  «        ¦  «        dk    sJ ‚t          t          ddd¬¦  «         ¦  «        dk    sJ ‚t          | t          ||¦  «        z  ¦  «        dk    sJ ‚t          t          ||¦  «        |z  ¦  «        dk    sJ ‚t          ddd¬¦  «        }t          t          | |¦  «        ¦  «        dk    sJ ‚t          t          |¦  «        ¦  «        dk    sJ ‚t          t          |¦  «        ¦  «        dk    sJ ‚d S )Núceil(x)r„   rã   zr,sT©rV   z)((ceil(r) % ceil(s)) + ceil(s)) % ceil(s)z
fmod(r, s)zp1 p2©rÝ   Úpositivezp1 % p2r‹   zp1 % (p2 + 3)rÐ   rÏ   Fr§   z(-3) % (-7)rË   z-(3 % 7)zr*(p1 % p2)zpow(p1 % p2, s)rÛ   )rÝ   Únegativez	(-n) % p2zK((1.0/5.0)*pow(2, -n)*sqrt(5)*(-pow(1 - sqrt(5), n) + pow(1 + sqrt(5), n)))z8(pow(2, -n)*(pow(1 - sqrt(5), n) + pow(1 + sqrt(5), n))))	rs   r$   r…   r   r+   r   r   r7   r8   )ÚrÚsÚp1Úp2rÛ   s        r|   Útest_ccode_functions2rñ   ˜   sH  € Ý•�‘”ÑÔ 	Ò)Ð)Ð)Ð)Ý••Q‘”‰=Œ=˜IÒ%Ð%Ð%Ð%Ý••q‘”‰?Œ?˜kÒ)Ð)Ð)Ð)Ý�5˜tÐ$Ñ$Ô$�D€A€qÝ••W˜Q‘Z”Z¥¨¡¤Ñ,Ô,Ñ-Ô-ð 2Fò Fð Fð Fð Få•�Q˜‘”ÑÔ˜|Ò+Ð+Ð+Ð+Ý�W d°TÐ:Ñ:Ô:�F€BˆÝ•�R˜‘”ÑÔ Ò*Ð*Ð*Ð*Ý•�R˜˜a™‘”Ñ!Ô! _Ò4Ð4Ð4Ð4Ý•�R˜ eÐ,Ñ,Ô,Ñ-Ô-°Ò>Ð>Ð>Ð>Ý•#�a˜ UÐ+Ñ+Ô+Ð+Ñ,Ô,°
Ò:Ð:Ð:Ð:Ý�•3�r˜2‘;”;‘ÑÔ =Ò0Ð0Ð0Ð0Ý•�R˜‘”˜a‘Ñ Ô Ð$5Ò5Ð5Ð5Ð5Ý�˜T¨DÐ1Ñ1Ô1€AÝ•�a�R˜‘”ÑÔ Ò,Ð,Ð,Ð,Ý•˜1‘”ÑÔÐ"oÒoÐoÐoÐoÝ•�q‘”‰?Œ?ÐXÒXÐXÐXÐXÐXÐXr~   c                  ó\  — t          dd¬¦  «        } t          dd¬¦  «        }dd„ dfd	„ d
fgdœ}t          t          | ¦  «        |¬¦  «        dk    sJ ‚t          t          | ¦  «        |¬¦  «        dk    sJ ‚t          t          |¦  «        |¬¦  «        dk    sJ ‚t	          d¦  «        }t          d¦  «        }t          dd¦  «        D ]-} |t          dd¦  «        t	          d|› �¦  «        |¦  «        }Œ.t          |ddi¬¦  «        }d|v sJ ‚|                     d¦  «        dk    sJ ‚d S )Nr…   FrÜ   rÛ   TÚceilc                 ó   — | j          S r“   r”   ©r…   s    r|   r˜   z+test_ccode_user_functions.<locals>.<lambda>²   s   € ˜qœ|Ð+€ r~   rƒ   c                 ó   — | j         S r“   r”   rõ   s    r|   r˜   z+test_ccode_user_functions.<locals>.<lambda>²   s   € ÀÄ€ r~   Úabs)r$   r   rœ   rè   r„   úabs(n)ÚaÚmuladdr   éd   rŽ   r�   Úa99)	r   rs   r$   r   r   r   Úranger   rº   )r…   rÛ   Úcustom_functionsÚexprrú   rÚ   Úouts          r|   Útest_ccode_user_functionsr  ­   s_  € Ý�˜UÐ#Ñ#Ô#€AÝ�˜TÐ"Ñ"Ô"€AàØ+Ð+¨VÐ4Ð7MÐ7MÈuÐ6UÐVðð Ðõ •˜‘”Ð,<Ð=Ñ=Ô=ÀÒJÐJÐJÐJÝ•�Q‘”Ð(8Ð9Ñ9Ô9¸YÒFÐFÐFÐFÝ•�Q‘”Ð(8Ð9Ñ9Ô9¸XÒEÐEÐEÐEå�#‰;Œ;€DÝ�hÑÔ€FÝ�1�c‰]Œ]ð =ð =ˆàˆv•h˜q !‘n”n¥f¨W°¨W¨W¡o¤o°tÑ<Ô<ˆˆÝ
� h¨xÐ%8Ð
9Ñ
9Ô
9€CØ�Cˆ<ˆ<ˆ<ˆ<Ø�9Š9�XÑÔ #Ò%Ð%Ð%Ð%Ð%Ð%r~   c            
      ór  — t          d¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚t          t          j        ¦  «        dk    sJ ‚t          t          t
          z  ¦  «        dk    sJ ‚t          t          t
          z  ¦  «        dk    sJ ‚t          t           ¦  «        dk    sJ ‚t          t          t
          z  t          z  ¦  «        dk    sJ ‚t          t          t
          z  t          z  ¦  «        d	k    sJ ‚t          t          t
          z  t          z  ¦  «        d
k    sJ ‚t          t          t
          z  t          z  ¦  «        dk    sJ ‚t          t          t
          z  ¦  «        dk    sJ ‚t          t          t
          z  t          z  ¦  «        dk    sJ ‚t          t          t          t
          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          t
          z  t          t          t          ¦  «        ¦  «        ¦  «        dk    sJ ‚d S )NTÚtrueFÚfalsezx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y)z(x || y) && (!x || !y)zF(x || y || z) && (x || !y || !z) && (y || !x || !z) && (z || !x || !y)zy || !xzD(x || (y || !z) && (z || !y)) && (z && !x || (y || z) && (!y || !z)))	rs   r   r  r  r…   rª   Úzr;   r<   r‚   r~   r|   Útest_ccode_booleanr  Â   sÌ  € Ý�‰;Œ;˜&Ò Ð Ð Ð Ý•”‰=Œ=˜FÒ"Ð"Ð"Ð"Ý�‰<Œ<˜7Ò"Ð"Ð"Ð"Ý•”‰>Œ>˜WÒ$Ð$Ð$Ð$Ý••Q‘‰<Œ<˜8Ò#Ð#Ð#Ð#Ý••Q‘‰<Œ<˜8Ò#Ð#Ð#Ð#Ý•!�‰9Œ9˜ÒÐÐÐÝ••Q‘�‘ÑÔ˜}Ò,Ð,Ð,Ð,Ý••Q‘�‘ÑÔ˜}Ò,Ð,Ð,Ð,Ý•!•a‘%�1‘ÑÔ Ò.Ð.Ð.Ð.Ý•!•a‘%�1‘ÑÔ Ò0Ð0Ð0Ð0å••Q‘‰<Œ<Ð3Ò3Ð3Ð3Ð3Ý•!•a‘%�1‘ÑÔÐ!iÒiÐiÐiÐiÝ•��A‘”ÑÔ 9Ò,Ð,Ð,Ð,Ý•�A�q¥1™u¥g­aµ¡m¤mÑ4Ô4Ñ5Ô5Ð9ÒÐÐÐÐÐr~   c                  ó"  — t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t	          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        ¦  «        dk    sJ ‚d S )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	rs   r   r…   rª   r   r   r   r   r   r‚   r~   r|   Útest_ccode_Relationalr  Õ   sÂ   € Ý••A•q‘”‰?Œ?˜hÒ&Ð&Ð&Ð&Ý••A•q‘”‰?Œ?˜hÒ&Ð&Ð&Ð&Ý••A•q‘”‰?Œ?˜hÒ&Ð&Ð&Ð&Ý••A•q‘”‰?Œ?˜gÒ%Ð%Ð%Ð%Ý••A•q‘”‰?Œ?˜gÒ%Ð%Ð%Ð%Ý••A•q‘”‰?Œ?˜hÒ&Ð&Ð&Ð&Ð&Ð&r~   c                  óZ  ‡ — t          t          t          dk     ft          dz  df¦  «        Š t          ‰ ¦  «        dk    sJ ‚t          ‰ d¬¦  «        dk    sJ ‚t          t          t          dk     ft          dz   t          dk     ft          dz  df¦  «        Š t          ‰ ¦  «        dk    sJ ‚t          ‰ d¬¦  «        d	k    sJ ‚t          t          t          dk     ft          dz  t          dk    ft          t          ¦  «        t          d
k    f¦  «        Š t	          t
          ˆ fd„¦  «         d S )NrŽ   r�   Tz'((x < 1) ? (
   x
)
: (
   pow(x, 2)
))ÚcrÞ   z3if (x < 1) {
   c = x;
}
else {
   c = pow(x, 2);
}zB((x < 1) ? (
   x
)
: ((x < 2) ? (
   x + 1
)
: (
   pow(x, 2)
)))zUif (x < 1) {
   c = x;
}
else if (x < 2) {
   c = x + 1;
}
else {
   c = pow(x, 2);
}r   c                  ó"   •— t          ‰ ¦  «        S r“   rr   ©rÿ   s   €r|   r˜   z&test_ccode_Piecewise.<locals>.<lambda>  s   ø€ �u T™{œ{€ r~   )r0   r…   rs   r2   r@   Ú
ValueErrorr  s   @r|   Útest_ccode_Piecewiser  Þ   s@  ø€ Ý•a�˜Qš�Z¥! Q¡$¨ Ñ.Ô.€DÝ�‰;Œ;ðòð ð ð õ � Ð%Ñ%Ô%ðòð ð ð õ •a�˜Qš�Z¥! a¡%­¨Qª µ!°Q±$¸°Ñ>Ô>€DÝ�‰;Œ;ðò	ð 	ð 	ð 	õ � Ð%Ñ%Ô%ðò	ð 	ð 	ð 	õ •a�˜Qš�Z¥! Q¡$­¨Aª µµQ±´½¸Qº°Ñ@Ô@€DÝ
�:Ð*Ð*Ð*Ð*Ñ+Ô+Ð+Ð+Ð+r~   c                  ó\   — ddl m}   | t          ¦  «        }t          |¦  «        dk    sJ ‚d S )Nr   )Úsincz)(((x != 0) ? (
   sin(x)/x
)
: (
   1
))))Ú(sympy.functions.elementary.trigonometricr  r…   rs   )r  rÿ   s     r|   Útest_ccode_sincr    sM   € Ø=Ð=Ð=Ð=Ð=Ð=Øˆ4•‰7Œ7€DÝ�‰;Œ;ðòð ð ð ð ð r~   c            	      óÌ  — t          dt          t          t          dk     ft          dz   t          dk     ft          dz  df¦  «        z  ¦  «        } | dk    sJ ‚t          t          z  t          z  t          dz  z   t          dz  z   t          dt          dk     fd¦  «        z   t          t          ¦  «        z   dz
  }t          |¦  «        dk    sJ ‚t          |d	¬
¦  «        dk    sJ ‚d S )Nr�   rŽ   TzD2*((x < 1) ? (
   x
)
: ((x < 2) ? (
   x + 1
)
: (
   pow(x, 2)
)))r   rˆ   )rŽ   TzNpow(x, 2) + x*y*z + pow(y, 2) + ((x < 0.5) ? (
   0
)
: (
   1
)) + cos(z) - 1r
  rÞ   zSc = pow(x, 2) + x*y*z + pow(y, 2) + ((x < 0.5) ? (
   0
)
: (
   1
)) + cos(z) - 1;)rs   r0   r…   rª   r  r%   )Úprÿ   s     r|   Útest_ccode_Piecewise_deepr    sö   € Ýˆa•	�1�a !še˜*¥q¨1¡u­a°!ªe nµq¸!±t¸T°lÑCÔCÑCÑDÔD€AØðò	ð 	ð 	ð 	õ �Q‰3�q‰5•1�a‘4‰<�!˜Q™$Ñ¥¨A­q°3ªw¨<¸Ñ!CÔ!CÑCÅcÍ!ÁfÄfÑLÈqÑP€DÝ�‰;Œ;ðòð ð ð õ � Ð%Ñ%Ô%ðò ð  ð  ð  ð  ð  r~   c                  óx   — t          t          dk     t          t          ¦  «        } t	          | ¦  «        dk    sJ ‚d S )NrŽ   z((x < 1) ? (
   y
)
: (
   z
)))r:   r…   rª   r  rs   r  s    r|   Útest_ccode_ITEr  1  sC   € Ý�q�1Šu•a�ÑÔ€DÝ�‰;Œ;ðòð ð ð ð ð r~   c                  ó2   — t          t          d„ ¦  «         d S )Nc                  óH   — t          t          t          ¦  «        d¬¦  «        S )NÚgarbage)Úmethod)rs   r2   r…   r‚   r~   r|   r˜   z%test_ccode_settings.<locals>.<lambda>=  s   € �e¥C­¡F¤F°9Ð=Ñ=Ô=€ r~   )r@   Ú	TypeErrorr‚   r~   r|   Útest_ccode_settingsr  <  s   € Ý
�9Ð=Ð=Ñ>Ô>Ð>Ð>Ð>r~   c                  óþ  — t          dd¬¦  «        \  } }}}t          d|¦  «        t          d|¦  «        t          d|¦  «        }}}t          d¦  «        |         }t          d¦  «        ||f         }t          d	¦  «        |||f         }	t          ¦   «         }
|
                     |¦  «        d
k    sJ ‚|
                     |¦  «        d||z  |z   z  k    sJ ‚|
                     |	¦  «        d||z  |z  ||z  z   |z   z  k    sJ ‚t          dd¬¦  «        ||f         }|
                     |¦  «        dd|z  |z   z  k    sJ ‚t          ddd¬¦  «        ||f         }t          |¦  «        d|d|z  z   z  k    sJ ‚t          ddd| f|¬¦  «        ||f         }t          |¦  «        dk    sJ ‚t          d| ||f|¬¦  «        }t          ||||f         ¦  «        dk    sJ ‚t          |dd|f         ¦  «        dk    sJ ‚d S )Nzs n m oTrÜ   rÚ   ÚjÚkr…   rÙ   ÚBzx[j]zA[%s]zB[%s])rŸ   r‹   ©Úshaper‹   ÚF)r#  ÚstridesrŸ   )é   r&  rŽ   )r#  r%  ÚoffsetzA[o + s*j + i]©r%  r'  zA[m*j + n*k + o + s*i]r�   zA[3*m + n*k + o + 2*s])r   rn   rm   rD   Ú_print_Indexedrs   )rî   rÛ   ÚmÚorÚ   r  r   r…   rÙ   r!  r  ÚAbases               r|   Útest_ccode_Indexedr-  @  s:  € Ý˜¨DÐ1Ñ1Ô1�J€A€qˆ!ˆQÝ�#�q‰kŒk�3˜s A™;œ;­¨C°©¬ˆ!€q€Aå�CÑÔ˜Ô€AÝ�CÑÔ˜˜A˜Ô€AÝ�CÑÔ˜˜A˜q˜Ô!€AåÑÔ€Aà×Ò˜AÑÔ &Ò(Ð(Ð(Ð(Ø×Ò˜AÑÔ '¨Q¨q©S°©UÑ"3Ò3Ð3Ð3Ð3Ø×Ò˜AÑÔ '¨Q¨q©S°©U°1°Q±3©Y°q©[Ñ"9Ò9Ð9Ð9Ð9å�C˜uÐ%Ñ%Ô% a¨ dÔ+€AØ×Ò˜AÑÔ '¨Q¨q©S°1©WÑ"5Ò5Ð5Ð5Ð5å�C˜u¨cÐ2Ñ2Ô2°1°a°4Ô8€AÝ�‰8Œ8�w ! a¨¡c¡'Ñ*Ò*Ð*Ð*Ð*å�C˜w°°A°¸qÐAÑAÔAÀ!ÀQÀ$ÔG€AÝ�‰8Œ8Ð'Ò'Ð'Ð'Ð'å˜ a¨¨A Y°qÐ9Ñ9Ô9€EÝ��q˜!˜Q�w”Ñ Ô Ð$<Ò<Ð<Ð<Ð<Ý��q˜!˜Q�w”Ñ Ô Ð$<Ò<Ð<Ð<Ð<Ð<Ð<r~   c                  ó$  — t          t          dd¦  «        ¦  «        dk    sJ ‚t          t          dddd¬¦  «        ¦  «        dk    sJ ‚t          t          dd¦  «        ¦  «        d	k    sJ ‚t          t          dd
¦  «        ¦  «        dk    sJ ‚d S )Nr…   Úijzx[i][j]Úklr+  r(  zx[i*k + j*l + o])r‹   zx[3])r‹   é   rŸ   z
x[3][4][5])rs   rG   r‚   r~   r|   Útest_Elementr2  \  sœ   € Ý•˜˜dÑ#Ô#Ñ$Ô$¨	Ò1Ð1Ð1Ð1Ý•˜˜d¨D¸Ð=Ñ=Ô=Ñ>Ô>ÐBTÒTÐTÐTÐTÝ•˜˜dÑ#Ô#Ñ$Ô$¨Ò.Ð.Ð.Ð.Ý•˜˜gÑ&Ô&Ñ'Ô'¨<Ò7Ð7Ð7Ð7Ð7Ð7r~   c                  ó~  — d} t          d| f¬¦  «        }t          d| f¬¦  «        }t          d| dz
  f¬¦  «        }t          d| dz
  ¦  «        }t          ||         ||dz            ||         z
  ||dz            ||         z
  z  ¦  «        }t          |j        |j        d¬	¦  «        }|d
|dz   ›d|dz   ›d�k    sJ ‚d S )NrŸ   rª   r"  r…   ÚDyrŽ   rÚ   F)rß   ÚcontractzDy[i] = (y[z] - y[i])/(x[z
] - x[i]);)rm   rn   r   rs   ÚrhsÚlhs)Úlen_yrª   r…   r4  rÚ   ÚeÚcode0s          r|   Ú2test_ccode_Indexed_without_looking_for_contractionr;  c  sØ   € Ø€EÝ�C ˜xÐ(Ñ(Ô(€AÝ�C ˜xÐ(Ñ(Ô(€AÝ	�T %¨¡' Ð	,Ñ	,Ô	,€BÝˆC��q‘ÑÔ€AÝ
ˆ2ˆaŒ5�1�Q�q‘S”6˜!˜Aœ$‘;  1 Q¡3¤¨¨!¬¡Ñ-Ñ.Ô.€AÝ�!”% 1¤5°5Ð9Ñ9Ô9€EØˆ5ÀÀAÁÀÀÀqÈ1ÁuÀuÀuÐMÒMÐMÐMÐMÐMÐMr~   c                  ó@  — t          dd¬¦  «        \  } }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d|¦  «        }t          d| ¦  «        }d	|| z  |z   z  d
z   }t          |||f         ||         z  ||         ¬¦  «        |k    sJ ‚d S )Nún mTrÜ   rÙ   r…   rª   rÚ   r  z}for (int i=0; i<m; i++){
   y[i] = 0;
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      y[i] = A[%s]*x[j] + y[i];
ú   }
}rÞ   ©r   rm   rn   rs   )rÛ   r*  rÙ   r…   rª   rÚ   r  rî   s           r|   Útest_ccode_loops_matrix_vectorr@  n  s¹   € Ý�5 $Ð'Ñ'Ô'�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€Að	,ð
 01°©s°Q©wñ	8ð	ñ	ð õ ��1�a�4”˜˜1œ‘¨¨1¬Ð.Ñ.Ô.°!Ò3Ð3Ð3Ð3Ð3Ð3r~   c                  ó
  — t          ddt          ¬¦  «        \  } }t          d¦  «        }t          d¦  «        }t          | |¦  «        } d| j        j        |j        dœz  }t          ||          ||          ¬¦  «        |k    sJ ‚d S )	Nzi mT)rÝ   Úclsr…   rª   zlfor (int i_%(icount)i=0; i_%(icount)i<m_%(mcount)i; i_%(icount)i++){
   y[i_%(icount)i] = x[i_%(icount)i];
})ÚicountÚmcountrÞ   )r   r   rm   rn   ÚlabelÚdummy_indexrs   )rÚ   r*  r…   rª   Úexpecteds        r|   Útest_dummy_loopsrH  ƒ  s�   € Ý�5 $­EÐ2Ñ2Ô2�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝˆAˆq‰	Œ	€Að	ð ”7Ô&°!´-Ð@Ð@ñ	A€Hõ ��1”  1¤Ð&Ñ&Ô&¨(Ò2Ð2Ð2Ð2Ð2Ð2r~   c                  ó‚  — t          dd¬¦  «        \  } }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d|¦  «        }t          d	| ¦  «        }d
|| z  |z   z  dz   }t          |||f         ||         z  ||         z   ||         z   ||         ¬¦  «        |k    sJ ‚d S )Nr=  TrÜ   rÙ   r…   rª   r  rÚ   r  z‡for (int i=0; i<m; i++){
   y[i] = x[i] + z[i];
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      y[i] = A[%s]*x[j] + y[i];
r>  rÞ   r?  )	rÛ   r*  rÙ   r…   rª   r  rÚ   r  rî   s	            r|   Útest_ccode_loops_addrJ  ’  sØ   € Ý�5 $Ð'Ñ'Ô'�D€A€qÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€Að	,ð
 01°©s°Q©wñ	8ð	ñ	ð õ ��1�a�4”˜˜1œ‘  !¤Ñ$ q¨¤tÑ+°q¸´tÐ<Ñ<Ô<ÀÒAÐAÐAÐAÐAÐAr~   c                  óÞ  — t          dd¬¦  «        \  } }}}t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d|¦  «        }t          d| ¦  «        }t          d	|¦  «        }	t          d
|¦  «        }
d|| z  |z  |z  ||z  |z  z   |	|z  z   |
z   ›d||z  |z  |	|z  z   |
z   ›d�dz   }t          |||	|
f         ||||	|
f         z  ||         ¬¦  «        |k    sJ ‚d S )Nún m o pTrÜ   rù   Úbrª   rÚ   r  r   Úlz³for (int i=0; i<m; i++){
   y[i] = 0;
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      for (int k=0; k<o; k++){
         for (int l=0; l<p; l++){
            y[i] = a[z]*b[ú
] + y[i];
ú         }
      }
   }
}rÞ   r?  )rÛ   r*  r+  r  rù   rM  rª   rÚ   r  r   rN  rî   s               r|   Ú&test_ccode_loops_multiple_contractionsrQ  ¨  s+  € Ý˜¨DÐ1Ñ1Ô1�J€A€qˆ!ˆQÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€A€Að 78¸±c¸!±e¸A±gÀÀ!ÁÀAÁ±oÈÈ!ÉÑ6KÈaÑ6OÐ6OÐ6OÐQRÐSTÑQTÐUVÑQVÐYZÐ[\ÑY\ÑQ\Ð_`ÑQ`ÐQ`ÐQ`ð	bð	ñ	ð õ ��1�a˜�7”˜A˜a  A q˜jœMÑ)°Q°q´TÐ:Ñ:Ô:¸aÒ?Ð?Ð?Ð?Ð?Ð?r~   c                  óR  — t          dd¬¦  «        \  } }}}t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d|¦  «        }t          d	| ¦  «        }	t          d
|¦  «        }
t          d|¦  «        }d|| z  |z  |z  |	|z  |z  z   |
|z  z   |z   ›d|| z  |z  |z  |	|z  |z  z   |
|z  z   |z   ›d|	|z  |z  |
|z  z   |z   ›d�dz   }t          |||	|
|f         |||	|
|f         z   ||	|
|f         z  ||         ¬¦  «        |k    sJ ‚d S )NrL  TrÜ   rù   rM  r
  rª   rÚ   r  r   rN  z´for (int i=0; i<m; i++){
   y[i] = 0;
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      for (int k=0; k<o; k++){
         for (int l=0; l<p; l++){
            y[i] = (a[z] + b[z])*c[rO  rP  rÞ   r?  )rÛ   r*  r+  r  rù   rM  r
  rª   rÚ   r  r   rN  rî   s                r|   Útest_ccode_loops_addfactorrS  Ã  s«  € Ý˜¨DÐ1Ñ1Ô1�J€A€qˆ!ˆQÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€A€Að ABÀ!ÁÀAÁÀaÁÈ!ÈAÉ#ÈaÉ%ÁÐRSÐTUÑRUÑ@UÐXYÑ@YÐ@YÐ@YÐ[\Ð]^Ñ[^Ð_`Ñ[`ÐabÑ[bÐefÐghÑehÐijÑejÑ[jÐmnÐopÑmpÑ[pÐstÑ[tÐ[tÐ[tÐvwÐxyÑvyÐz{Ñv{Ð~ð  ABñ  Bñ  wBð  EFñ  wFð  wFð  wFð	Gð	ñ	ð õ �!�A�q˜!˜Q�J”- ! A q¨!¨Q J¤-Ñ/°°1°a¸°7´Ñ;ÀqÈÄtÐLÑLÔLÐPQÒQÐQÐQÐQÐQÐQr~   c                  óT  — t          dd¬¦  «        \  } }}}t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d|¦  «        }t          d	| ¦  «        }	t          d
|¦  «        }
d}d|| z  |z  |	|z  z   |
z   z  dz   }d||z  |
z   z  dz   }d|| z  |	z   z  dz   }t          ||	         |||	f         z  ||
         |||
f         z  z   ||	         ||
         z  |||	|
f         z  z   ||         ¬¦  «        }|||z   |z   |d d…         z   k    su|||z   |z   |d d…         z   k    s`|||z   |z   |d d…         z   k    sK|||z   |z   |d d…         z   k    s6|||z   |z   |d d…         z   k    s!|||z   |z   |d d…         z   k    sJ ‚d S d S d S d S d S d S )NrL  TrÜ   rù   rM  r
  rª   rÚ   r  r   z(for (int i=0; i<m; i++){
   y[i] = 0;
}
z|for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      for (int k=0; k<o; k++){
         y[i] = b[j]*b[k]*c[%s] + y[i];
z      }
   }
}
zUfor (int i=0; i<m; i++){
   for (int k=0; k<o; k++){
      y[i] = a[%s]*b[k] + y[i];
z   }
}
zUfor (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      y[i] = a[%s]*b[j] + y[i];
rÞ   r©   r?  )rÛ   r*  r+  r  rù   rM  r
  rª   rÚ   r  r   Ús0Ús1Ús2Ús3s                  r|   Útest_ccode_loops_multiple_termsrY  ß  sE  € Ý˜¨DÐ1Ñ1Ô1�J€A€qˆ!ˆQÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝ�CÑÔ€AÝˆC�‰Œ€AÝˆC�‰Œ€AÝˆC�‰Œ€Að	ð ð	4ð 89¸±s¸1±u¸qÀ¹s±{ÀQ±ñ	Hð	ñ		ð ð	,à/0°©s°Q©wñ	8ð	ñ	ð ð	,à/0°©s°Q©wñ	8ð	ñ	ð õ 	ˆa�Œd�1�Q˜�T”7‰l˜Q˜qœT ! A q D¤'™\Ñ)¨A¨a¬D°°1´©I°a¸¸1¸a¸´jÑ,@Ñ@ÈAÈaÌDÐQÑQÔQ€AØ��b‘˜2‘  3 B 3¤Ñ'Ò'Ð'Ø��b‘˜2‘  3 B 3¤Ñ'Ò'Ð'Ø��b‘˜2‘  3 B 3¤Ñ'Ò'Ð'Ø��b‘˜2‘  3 B 3¤Ñ'Ò'Ð'Ø��b‘˜2‘  3 B 3¤Ñ'Ò'Ð'Ø��b‘˜2‘  3 B 3¤Ñ'Ò'Ð'Ð'ð(Ð'Ð'Ø'Ð'Ø'Ð'Ø'Ð'Ø'Ð'Ø'Ð'r~   c                  ó˜   — t           t          z   t          t          ¦  «        z   t          z   } t	          | t          g¬¦  «        dk    sJ ‚d S )N©Údereferencezx + y + (*z) + sin((*z)))r…   rª   r2   r  rs   r  s    r|   Útest_dereference_printingr]    sA   € Ý�q‰5•3•q‘6”6‰>�AÑ€DÝ�¥A 3Ð'Ñ'Ô'Ð+EÒEÐEÐEÐEÐEÐEr~   c            	      ó2  — t          t          t          z  t          dt          z   t          dk    ft          df¦  «        t	          t
          ¦  «        g¦  «        } t          ddd¦  «        }t          | |¦  «        dk    sJ ‚t          d|d         z  t          dk    f|d         df¦  «        t	          |d	         ¦  «        z   |d
         z   }t          |¦  «        dk    sJ ‚t          ddd¦  «        }t          ddd¦  «        }t          t	          |d	         ¦  «        dt          |d         ¦  «        g|d	         |d         z   |d         dgd|d         z  |d	         z  t          |d
         ¦  «        dz   dgg¦  «        }t          ||¦  «        dk    sJ ‚d S )Nr�   r   TrÙ   r‹   rŽ   zPA[0] = x*y;
if (y > 0) {
   A[1] = x + 2;
}
else {
   A[1] = y;
}
A[2] = sin(z);)r�   r   )rŽ   r   ©r   r   z:((x > 0) ? (
   2*A[2]
)
: (
   A[2]
)) + sin(A[1]) + A[0]ÚqrŸ   ÚM)r‹   r   )r1  r   r1  z�M[0] = sin(q[1]);
M[1] = 0;
M[2] = cos(q[2]);
M[3] = q[1] + q[2];
M[4] = q[3];
M[5] = 5;
M[6] = 2*q[4]/q[1];
M[7] = sqrt(q[0]) + 4;
M[8] = 0;)
ro   r…   rª   r0   r2   r  rp   rs   r%   r4   )ÚmatrÙ   rÿ   r`  ra  r*  s         r|   Útest_Matrix_printingrc    sœ  € å
•!•A‘#•y !¥a¡%­¨1ª µ°4¨yÑ9Ô9½3½q¹6¼6ÐBÑ
CÔ
C€CÝ�S˜!˜QÑÔ€AÝ��a‰=Œ=ð	òð ð ð õ �a˜˜$œ‘i¥ Q¢Ð'¨!¨D¬'°4¨Ñ9Ô9½CÀÀ$Ä¹L¼LÑHÈ1ÈTÌ7ÑR€DÝ�‰;Œ;ð	 ò!ð !ð !ð !õ 	�S˜!˜QÑÔ€AÝ�S˜!˜QÑÔ€AÝ•�Q�s”V‘”˜a¥ Q s¤V¡¤Ð-Ø	
ˆ3Œ�!�C”&‰˜!˜Dœ' 1Ð%Ø	
ˆ1ˆTŒ7‰�1�S”6Ñ	�4  #¤™<œ<¨!Ñ+¨QÐ/ð1ñ 	2ô 	2€Aõ ��A‰;Œ;ð	ò	ð 	ð 	ð 	ð 	ð 	r~   c                  ó  — t          t          ¦  «        5  t          t          g d¢g¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   dt	          ddi¦  «                             t          g d¢g¦  «        ¦  «        v sJ ‚d S )N)rŽ   r�   r‹   zNot supported in CÚstrictF)r@   rB   rs   rq   rC   Údoprintr‚   r~   r|   Útest_sparse_matrixrg  ;  sÈ   € å	Õ.Ñ	/Ô	/ð )ð )Ý�l˜I˜I˜I˜;Ñ'Ô'Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð  ¥>°8¸UÐ2CÑ#DÔ#D×#LÒ#LÍ\Ð[dÐ[dÐ[dÐZeÑMfÔMfÑ#gÔ#gÐgÐgÐgÐgÐgÐgs   • AÁAÁAc                  óL  — t          d¦  «        \  } }t          t          ¦  «        5  t          |dz  dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |dz  ¦  «        dk    sJ ‚t          | |dz  z  |g¬¦  «        dk    sJ ‚t          |dz  d	¬
¦  «        dk    sJ ‚d S )Nzx, ifr�   Trâ   )Úerror_on_reservedr·   zpow(if_, 2)r[  zpow((*if_), 2)*xÚ_unreserved)Úreserved_word_suffixzpow(if_unreserved, 2))r   r@   r  rs   )r…   rª   s     r|   Útest_ccode_reserved_wordsrl  D  sü   € Ý�7ÑÔ�D€A€qÝ	•
Ñ	Ô	ð <ð <Ýˆa�‰d d°UÐ;Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <å��A‘‰;Œ;˜-Ò'Ð'Ð'Ð'Ý��Q˜‘T‘¨ sÐ+Ñ+Ô+Ð/AÒAÐAÐAÐAÝ��A‘¨MÐ:Ñ:Ô:Ð>UÒUÐUÐUÐUÐUÐUs   §A	Á	AÁAc                  ó¦  — t          t          ¦  «        t          z  d}} t          t          t          ¦  «        ¦  «        d}}t          dt          z  t          dz  z   ¦  «        t          z  t          dz  z   d}}t	          | ¦  «        |k    sJ ‚t	          | d¦  «        d|z  k    sJ ‚t	          |¦  «        |k    sJ ‚t	          |¦  «        |k    sJ ‚d S )Nzy*(((x) > 0) - ((x) < 0))z!(((cos(x)) > 0) - ((cos(x)) < 0))r�   zApow(x, 2) + x*(((pow(x, 2) + 2*x) > 0) - ((pow(x, 2) + 2*x) < 0))r  zz = %s;)r1   r…   rª   r%   rs   )Úexpr1Úref1Úexpr2Úref2Úexpr3Úref3s         r|   Útest_ccode_signrt  M  sÃ   € Ý•q‘'”'�A‘+Ð:ˆ4€EÝ•s�1‘v”v‘,”,Ð Cˆ4€EÝ�q�1‘u�q !™t‘|Ñ$Ô$¥qÑ(­1¨a©4Ñ/Ð1tˆ4€EÝ�‰<Œ<˜4ÒÐÐÐÝ�˜ÑÔ 	¨DÑ 0Ò0Ð0Ð0Ð0Ý�‰<Œ<˜4ÒÐÐÐÝ�‰<Œ<˜4ÒÐÐÐÐÐr~   c                  óÜ   — t          t          t          t          t          z   ¦  «        ¦  «        dk    sJ ‚t          t          t          dt          t          z   ¦  «        ¦  «        dk    sJ ‚d S )Nz
x = y + z;ú+zx += y + z;)rs   r?   r…   rª   r  r>   r‚   r~   r|   Útest_ccode_Assignmentrw  V  sX   € Ý•�A�q¥1™uÑ%Ô%Ñ&Ô&¨,Ò6Ð6Ð6Ð6Ý•�A˜s¥A­¡EÑ*Ô*Ñ+Ô+¨}Ò<Ð<Ð<Ð<Ð<Ð<r~   c            	      ó®   — t          t          t          ddd¦  «        t          t          dt          ¦  «        g¦  «        } t          | ¦  «        dk    sJ ‚d S )Nr   é
   r�   Ú*z*for (x = 0; x < 10; x += 2) {
   y *= x;
})r=   r…   r9   r>   rª   rs   )Úfs    r|   Útest_ccode_Forr|  [  sX   € Ý�A�u�Q˜˜A‰Œ¥­A¨sµAÑ!6Ô!6Ð 7Ñ8Ô8€AÝ�‰8Œ8ð ò ð ð ð ð ð r~   c            	      ó(  — t          t          t          d¦  «        d¬¦  «        dk    sJ ‚t          t          t          d¦  «        d¬¦  «        dk    sJ ‚t          t          t          dt	          t          ¦  «        ¦  «        d¬¦  «        dk    sJ ‚d S )	Nr   rä   r¶   z((0 > x) ? 0 : x)râ   z
fmax(0, x)r³   zI((0 < ((x < sqrt(x)) ? x : sqrt(x))) ? 0 : ((x < sqrt(x)) ? x : sqrt(x))))rs   r.   r…   r/   r4   r‚   r~   r|   Útest_ccode_Max_Minr~  a  s’   € Ý••Q˜‘” UÐ+Ñ+Ô+Ð/BÒBÐBÐBÐBÝ••Q˜‘” UÐ+Ñ+Ô+¨|Ò;Ð;Ð;Ð;Ý••Q˜�4¥™7œ7Ñ#Ô#¨eÐ4Ñ4Ô4ØSòð ð ð ð ð r~   c                  óØ   — t          t          t          ¦  «        d¬¦  «        dk    sJ ‚t          t          d¬¦  «        dk    sJ ‚t          t	          d¦  «        d¬¦  «        dk    sJ ‚d S )Nr´   r¶   úexpm1(x)ÚNANr   )rs   r`   r…   r   Úfloatr‚   r~   r|   Útest_ccode_standardrƒ  h  sn   € Ý••q‘” EÐ*Ñ*Ô*¨jÒ8Ð8Ð8Ð8Ý•˜uÐ%Ñ%Ô%¨Ò.Ð.Ð.Ð.Ý•�u‘”¨Ð.Ñ.Ô.°%Ò7Ð7Ð7Ð7Ð7Ð7r~   c                  óÜ   — t          ¦   «         } | j        dk    sJ ‚| j        dk    sJ ‚d| j        v sJ ‚d| j        vsJ ‚|                      t          t          ¦  «        ¦  «        dk    sJ ‚d S )NÚCrä   ÚvoidÚtemplateúlog10(x))rC   Úlanguager·   Úreserved_wordsrf  re   r…   )Ú
c89printers    r|   Útest_C89CodePrinterrŒ  n  sˆ   € ÝÑ!Ô!€JØÔ #Ò%Ð%Ð%Ð%ØÔ %Ò'Ð'Ð'Ð'Ø�ZÔ.Ð.Ð.Ð.Ð.Ø˜ZÔ6Ð6Ð6Ð6Ð6Ø×Ò�e¥A™hœhÑ'Ô'¨:Ò5Ð5Ð5Ð5Ð5Ð5r~   c                  ó¤  — t          ¦   «                              t          t          ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t	          t          ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          t          t           ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          t          ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          ¦  «        ¦  «        d	k    sJ ‚t          ¦   «                              t          t          d
t          dz  ¦  «        ¦  «        dk    sJ ‚t          ¦   «                              t          t          d
¦  «        ¦  «        dk    sJ ‚t          ¦   «         } | j        dk    sJ ‚| j        dk    sJ ‚d| j        v sJ ‚d| j        vsJ ‚d S )Nr€  zlog1p(x)r¥   zlog2(x)zfma(x, y, -z)rˆ  zcbrt(x)zhypot(x, y)z	lgamma(x)r‹   r�   zfmax(3, fmax(x, pow(x, 2)))z
fmin(3, x)r…  râ   rk   Úusing)rD   rf  r`   r…   ra   rb   rc   rd   rª   r  re   rf   rg   r-   r.   r/   r‰  r·   rŠ  )Ú
c99printers    r|   Útest_C99CodePrinterr�  w  sO  € ÝÑÔ×#Ò#¥E­!¡H¤HÑ-Ô-°Ò;Ð;Ð;Ð;ÝÑÔ×#Ò#¥E­!¡H¤HÑ-Ô-°Ò;Ð;Ð;Ð;ÝÑÔ×#Ò#¥D­¡G¤GÑ,Ô,°	Ò9Ð9Ð9Ð9ÝÑÔ×#Ò#¥D­¡G¤GÑ,Ô,°	Ò9Ð9Ð9Ð9ÝÑÔ×#Ò#¥C­­1­q¨b¡M¤MÑ2Ô2°oÒEÐEÐEÐEÝÑÔ×#Ò#¥E­!¡H¤HÑ-Ô-°Ò;Ð;Ð;Ð;ÝÑÔ×#Ò#¥D­¡G¤GÑ,Ô,°	Ò9Ð9Ð9Ð9ÝÑÔ×#Ò#¥E­!­Q¡K¤KÑ0Ô0°MÒAÐAÐAÐAÝÑÔ×#Ò#¥H­Q¡K¤KÑ0Ô0°KÒ?Ð?Ð?Ð?ÝÑÔ×#Ò#¥C­¨1­a°©d¡O¤OÑ4Ô4Ð8UÒUÐUÐUÐUÝÑÔ×#Ò#¥C­¨1¡I¤IÑ.Ô.°,Ò>Ð>Ð>Ð>ÝÑ!Ô!€JØÔ #Ò%Ð%Ð%Ð%ØÔ %Ò'Ð'Ð'Ð'Ø˜Ô2Ð2Ð2Ð2Ð2Ø˜*Ô3Ð3Ð3Ð3Ð3Ð3Ð3r~   c                  óº   — t          dt          t          ii¦  «        } |                      t	          t
          t          d¦  «        z   ¦  «        ¦  «        dk    sJ ‚d S )Nr‘   z2.1zsinl(x + 2.1L))rD   rV   rY   rf  r2   r…   r
   )Úf80_printers    r|   Ú"test_C99CodePrinter__precision_f80r“  Š  sQ   € å  .µ4½°/Ð!BÑCÔC€KØ×Ò�s¥1¥u¨U¡|¤|Ñ#3Ñ4Ô4Ñ5Ô5Ð9IÒIÐIÐIÐIÐIÐIr~   c            	      óÌ  ‡‡— t          dd¬¦  «        } t          ddd¬¦  «        }t          dt          t          ii¦  «        }t          dt          t          ii¦  «        }t          dt          t
          ii¦  «        }|                     t          t          dz   ¦  «        ¦  «        dk    sJ ‚|                     t          t          dz   ¦  «        ¦  «        d	k    sJ ‚|                     t          t          t          d
¦  «        z   ¦  «        ¦  «        dk    sJ ‚t          |||gg d¢¦  «        D �]³\  ŠŠˆˆfd„} |t          | ¦  «        d¦  «          |t          t          dz   ¦  «        d¦  «          |t          t          dz   ¦  «        t          t          dz
  ¦  «        z  d¦  «          |t          t          dz  ¦  «        d¦  «          |t          t          ¦  «        d¦  «          |t          t          dz  ¦  «        d¦  «          |t!          |d¦  «        d¦  «          |t!          d|z  dz   d|z  dz   d¬¦  «        d¦  «          |t!          t          dz   d¦  «        d¦  «          |t!          t          dt          z  dz   ¦  «        d ¦  «          |t#          t          dz  ¦  «        d!¦  «          |t%          dt          z  dz  ¦  «        d"¦  «          |t'          t          dz  ¦  «        d#¦  «          |t)          t          ¦  «        d$¦  «          |dt          z  d%¦  «          |dt          z  d&¦  «          |t          dz  d'¦  «          |t          dz  d(¦  «          |t+          dt          z   ¦  «        d)¦  «          |t-          t          dz
  ¦  «        d*¦  «          |t/          t          t0          ¦  «        d+¦  «          |t          dt          z  dz   ¦  «        d,¦  «          |t          dt          z  d-z
  ¦  «        d.¦  «          |t3          dt0          z  dz   ¦  «        d/¦  «          |t5          dt          z  dz   ¦  «        d0¦  «          |t7          dt          z  dz   ¦  «        d1¦  «          |t9          dt          z  dz   ¦  «        d2¦  «          |t;          dt          z  dt0          z  ¦  «        d3¦  «          |t=          dt          z  dz   ¦  «        d4¦  «          |t?          dt          z  d-z
  ¦  «        d5¦  «          |tA          dt0          z  dz   ¦  «        d6¦  «          |tC          dt          z  dz   ¦  «        d7¦  «          |tE          dt          z  dz   ¦  «        d8¦  «          |tG          dt          z  dz   ¦  «        d9¦  «          |tI          d:t          z  ¦  «        d;¦  «          |tK          d:t          z  ¦  «        d<¦  «          |tM          t          ¦  «        d=¦  «          |tO          t          ¦  «        d>¦  «          |tQ          t          dz   ¦  «        d?¦  «          |tS          t          dz   ¦  «        d@¦  «          |tU          t          t0          tV           ¦  «        dA¦  «          |tY          t          dt          dz  ¦  «        dB¦  «          |t[          t          d¦  «        dC¦  «         �Œµd S )DNrÛ   TrÜ   r  rê   r‘   gÍÌÌÌÌÌ @zsinf(x + 2.1F)zsin(x + 2.1000000000000001)z2.0zsinl(x + 2.0L))r{  Ú rN  c                 óŒ   •— ‰                      | ¦  «        |                     ‰‰                     ¦   «         ¬¦  «        k    sJ ‚d S )N)rî   r   )rf  ÚformatÚupper)rÿ   Úrefr{   Úsuffixs     €€r|   Úcheckz-test_C99CodePrinter__precision.<locals>.check›  s>   ø€ Ø—?’? 4Ñ(Ô(¨C¯JªJ¸À6Ç<Â<Á>Ä>¨JÑ,RÔ,RÒRÐRÐRÐRÐRÐRr~   rø   ç       @zfabs{s}(x + 2.0{S})g      @z.pow{s}(sin{s}(x + 4.0{S}), cos{s}(x - 2.0{S}))g       @zexp{s}(8.0{S}*x)z
exp2{s}(x)zexpm1{s}(4.0{S}*x)r�   zp % 2r‹   rŸ   Fr§   z(2*p + 3) % (3*p + 5)g      @z"fmod{s}(1.0{S}*x + 2.0{S}, 3.0{S})z$fmod{s}(1.0{S}*x, 2.0{S}*x + 3.0{S})zlog{s}((1.0{S}/2.0{S})*x)zlog10{s}((3.0{S}/2.0{S})*x)zlog2{s}(8.0{S}*x)zlog1p{s}(x)zpow{s}(2, x)zpow{s}(2.0{S}, x)zpow{s}(x, 3)zpow{s}(x, 4.0{S})zsqrt{s}(x + 3)zcbrt{s}(x - 2.0{S})zhypot{s}(x, y)zsin{s}(3.0{S}*x + 2.0{S})g      ð?zcos{s}(3.0{S}*x - 1.0{S})ztan{s}(4.0{S}*y + 2.0{S})zasin{s}(3.0{S}*x + 2.0{S})zacos{s}(3.0{S}*x + 2.0{S})zatan{s}(3.0{S}*x + 2.0{S})zatan2{s}(3.0{S}*x, 2.0{S}*y)zsinh{s}(3.0{S}*x + 2.0{S})zcosh{s}(3.0{S}*x - 1.0{S})ztanh{s}(4.0{S}*y + 2.0{S})zasinh{s}(3.0{S}*x + 2.0{S})zacosh{s}(3.0{S}*x + 2.0{S})zatanh{s}(3.0{S}*x + 2.0{S})g      E@zerf{s}(42.0{S}*x)zerfc{s}(42.0{S}*x)ztgamma{s}(x)zlgamma{s}(x)zceil{s}(x) + 2zfloor{s}(x) + 2zfma{s}(x, y, -z)z.fmax{s}(8.0{S}, fmax{s}(x, pow{s}(x, 4.0{S})))zfmin{s}(2.0{S}, x)).r   rD   rV   rW   rX   rY   rf  r2   r…   r
   Úzipr   r%   r)   rb   r`   r   r,   re   rc   ra   r4   rf   rg   rª   r5   r   r   r!   r#   r3   r&   r6   r    r   r"   r'   r(   r+   r-   r$   r*   rd   r  r.   r/   )rÛ   r  Úf32_printerÚf64_printerr’  r›  r{   rš  s         @@r|   Útest_C99CodePrinter__precisionr   �  sm  øø€ Ý�˜TÐ"Ñ"Ô"€AÝ�˜T¨DÐ1Ñ1Ô1€AÝ  .µ4½°/Ð!BÑCÔC€KÝ  .µ4½°/Ð!BÑCÔC€KÝ  .µ4½°/Ð!BÑCÔC€KØ×Ò�s¥1 S¡5™zœzÑ*Ô*Ð.>Ò>Ð>Ð>Ð>Ø×Ò�s¥1 S¡5™zœzÑ*Ô*Ð.KÒKÐKÐKÐKØ×Ò�s¥1¥U¨5¡\¤\¡>Ñ2Ô2Ñ3Ô3Ð7GÒGÐGÐGÐGå ¨[¸+ÐFÈÈÈÑWÔWð /1ñ /1‰ˆ�ð	Sð 	Sð 	Sð 	Sð 	Sð 	Sàˆ�c�!‰fŒf�hÑÔÐØˆ�c•!�c‘'‰lŒlÐ1Ñ2Ô2Ð2Øˆ�c•!�c‘'‰lŒl�C¥ C¡™LœLÑ(Ð*ZÑ[Ô[Ð[Øˆ�c•!�C‘%‰jŒjÐ,Ñ-Ô-Ð-Øˆ�d•1‰gŒg�|Ñ$Ô$Ð$Øˆ�e•A�c‘E‰lŒlÐ0Ñ1Ô1Ð1Øˆ�c�!�Q‰iŒi˜Ñ!Ô!Ð!Øˆ�c�!�A‘#˜‘'˜1˜Q™3 ™7¨UÐ3Ñ3Ô3Ð5LÑMÔMÐMØˆ�c•!�c‘'˜3ÑÔÐ!EÑFÔFÐFØˆ�c•!�S�‘U˜S‘[Ñ!Ô!Ð#IÑJÔJÐJØˆ�c•!�A‘#‰hŒhÐ3Ñ4Ô4Ð4Øˆ�e�A•a‘C˜‘E‰lŒlÐ9Ñ:Ô:Ð:Øˆ�d•1�S‘5‰kŒkÐ.Ñ/Ô/Ð/Øˆ�e•A‰hŒh˜Ñ&Ô&Ð&Øˆˆa•‰d�NÑ#Ô#Ð#Øˆˆc•1‰fÐ)Ñ*Ô*Ð*Øˆ�a�‰d�NÑ#Ô#Ð#Øˆ�a�‰fÐ)Ñ*Ô*Ð*Øˆ�d�1•Q‘3‰iŒiÐ)Ñ*Ô*Ð*Øˆ�d•1�S‘5‰kŒkÐ0Ñ1Ô1Ð1Øˆ�e•A•q‰kŒkÐ+Ñ,Ô,Ð,Øˆ�c�"•Q‘$˜‘)‰nŒnÐ9Ñ:Ô:Ð:Øˆ�c�"•Q‘$˜‘)‰nŒnÐ9Ñ:Ô:Ð:Øˆ�c�"•Q‘$˜‘)‰nŒnÐ9Ñ:Ô:Ð:Øˆ�d�2•a‘4˜"‘9‰oŒoÐ;Ñ<Ô<Ð<Øˆ�d�2•a‘4˜"‘9‰oŒoÐ;Ñ<Ô<Ð<Øˆ�d�2•a‘4˜"‘9‰oŒoÐ;Ñ<Ô<Ð<Øˆ�e�B•q‘D˜"�Q™$ÑÔÐ!?Ñ@Ô@Ð@àˆ�d�2•a‘4˜"‘9‰oŒoÐ;Ñ<Ô<Ð<Øˆ�d�2•a‘4˜"‘9‰oŒoÐ;Ñ<Ô<Ð<Øˆ�d�3•q‘5˜2‘:ÑÔÐ <Ñ=Ô=Ð=Øˆ�e�B•q‘D˜2‘IÑÔÐ =Ñ>Ô>Ð>Øˆ�e�B•q‘D˜2‘IÑÔÐ =Ñ>Ô>Ð>Øˆ�e�B•q‘D˜2‘IÑÔÐ =Ñ>Ô>Ð>Øˆ�c�#•a‘%‰jŒjÐ-Ñ.Ô.Ð.Øˆ�d�3•q‘5‰kŒkÐ/Ñ0Ô0Ð0Øˆ�e•A‰hŒh˜Ñ'Ô'Ð'Øˆ�h•q‰kŒk˜>Ñ*Ô*Ð*àˆ�g•a˜"‘f‰oŒoÐ/Ñ0Ô0Ð0Øˆ�e•A˜‘F‰mŒmÐ.Ñ/Ô/Ð/Øˆ�c•!•Q�˜‰mŒmÐ/Ñ0Ô0Ð0Øˆ�c•!�S�!˜S™&Ñ!Ô!Ð#SÑTÔTÐTØˆ�c•!�S‰kŒkÐ/Ñ0Ô0Ð0Ñ0ð_/1ð /1r~   c                  ó”   — t          ¦   «         } | t          d¦  «                 dk    sJ ‚| dt          d¦  «        z           dk    sJ ‚d S )NrŽ   rÀ   r�   Ú	M_SQRT1_2)rE   r)   rh   )Úmacross    r|   Útest_get_math_macrosr¤  Ì  sN   € ÝÑÔ€FØ•#�a‘&”&Œ>˜UÒ"Ð"Ð"Ð"Ø�!•D˜‘G”G‘)Ô Ò+Ð+Ð+Ð+Ð+Ð+r~   c                  ód  — t          dd¬¦  «        } t          | t          j        | ¦  «        ¬¦  «        }t	          |¦  «        }t          |¦  «        dk    sJ ‚t          t          t          t          h¬¦  «        }t	          |¦  «        }t          |¦  «        dk    sJ ‚| 	                    t          ¬¦  «        }t          |¦  «        d	k    sJ ‚t          t          t          d
¦  «        ¬¦  «        }t	          |¦  «        }t          ¦   «         }d|j        vsJ ‚|                     |¦  «        dk    sJ ‚d|j        v sJ ‚t          dd¬¦  «        }	t          j        |	t"          t$          h¬¦  «        }
t	          |
¦  «        }t          |¦  «        dk    sJ ‚t          t          t          d¦  «        t          h¬¦  «        }t	          |¦  «        }t          |¦  «        dk    sJ ‚t          |j        |j        t          |j        ¬¦  «        }t	          |¦  «        }t          |¦  «        dk    sJ ‚d S )NrÚ   TrÜ   ©Útypezint i)r§  Úattrszconst float x)Úvaluezconst float x = M_PIÚboolz	stdbool.hzbool yÚuré   ©r¨  zdouble * const restrict uÚ
__float128zconst __float128 xzconst __float128 x = M_PI)r   rL   rH   Ú	from_exprrJ   rs   r…   rW   rM   Úas_Declarationr   rª   rC   Úheadersrf  rK   ÚdeducedrN   rk   Úsymbolr§  r¨  )rÚ   Úvar1Údcl1Úvar2Údcl2aÚdcl2bÚvar3Údcl3r{   r«  Úptr4Údcl4Úvar5Údcl5aÚvar5bÚdcl5bs                   r|   Útest_ccode_DeclarationrÀ  Ò  s	  € Ý�˜TÐ"Ñ"Ô"€AÝ�A�DœN¨1Ñ-Ô-Ð.Ñ.Ô.€DÝ�tÑÔ€DÝ�‰;Œ;˜'Ò!Ð!Ð!Ð!å•A�G­K¨=Ð9Ñ9Ô9€DÝ˜ÑÔ€EÝ�‰<Œ<˜?Ò*Ð*Ð*Ð*Ø×Ò¥bÐÑ)Ô)€EÝ�‰<Œ<Ð1Ò1Ð1Ð1Ð1å•A�D ™LœLÐ)Ñ)Ô)€DÝ�tÑÔ€DÝÑÔ€GØ˜gœoÐ-Ð-Ð-Ð-Ø�?Š?˜4Ñ Ô  HÒ,Ð,Ð,Ð,Ø˜'œ/Ð)Ð)Ð)Ð)å�˜$ÐÑÔ€AÝŒ?˜1¥]µHÐ$=Ð>Ñ>Ô>€DÝ�tÑÔ€DÝ�‰;Œ;Ð5Ò5Ð5Ð5Ð5å•A•t˜LÑ)Ô)µ+°Ð?Ñ?Ô?€DÝ˜ÑÔ€EÝ�‰<Œ<Ð/Ò/Ð/Ð/Ð/Ý�T”[ $¤)­R°t´zÐBÑBÔB€EÝ˜ÑÔ€EÝ�‰<Œ<Ð6Ò6Ð6Ð6Ð6Ð6Ð6r~   c            	      óò  — t          dt          j        t          j        t          j        ¦  «        } t          t          | i| di| dit          d| di| didœ¦  «        }|                     t          ¦  «        dk    sJ ‚|j	        rJ ‚|j
        rJ ‚|j        rJ ‚|                     d¦  «        dk    sJ ‚|j	        rJ ‚|j
        rJ ‚|j        d	hk    sJ ‚|                     t          d
d¦  «        ¦  «        dk    sJ ‚|                     t          t          ¦  «        ¦  «        dk    sJ ‚|                     t          dd¬¦  «        ¦  «        dk    sJ ‚|                     t          dz  ¦  «        dk    sJ ‚t          t          | t           h¬¦  «        }t#          |¦  «        }t%          |¦  «        dk    sJ ‚t          t          | t&          t           h¬¦  «        }t#          |¦  «        }|                     |¦  «        dk    sJ ‚t          t          | t)          j        d¦  «        t           h¬¦  «        }t#          |¦  «        }|                     |¦  «        dt)          j        | j        ¦  «        z  k    sJ ‚d S )NÚ	_Float128ÚQÚf128)Ú!__STDC_WANT_IEC_60559_TYPES_EXT__)r‘   Útype_literal_suffixesÚtype_func_suffixesÚtype_math_macro_suffixesÚtype_macrosr…   rœ  z2.0QrÅ  rŽ   r�   z	1.0Q/2.0Qz
sinf128(x)Fr§   zcosf128(2.0Q)r�   z1.0Q/xr¬  zconst _Float128 xzconst _Float128 x = M_PIf128é&   )r©  r¨  zconst _Float128 x = %sQ)rI   rZ   ÚnbitsÚnmantÚnexprD   rV   rf  r…   r°  Ú	librariesr£  r   r2   r%   rL   rM   rJ   rs   r   r   rÈ   Údecimal_dig)rÄ  Úp128r¼  r½  r¾  r¿  Údcl5cs          r|   Útest_C99CodePrinter_custom_typerÒ  ò  sq  € å�[¥(¤.µ(´.Å(Ä-ÑPÔP€DÝÝ˜t˜Ø"&¨ Ø# V˜nå�&Ø�&ð%
ð
 Ð8ð
ðð ñ ô €Dð �<Š<�‰?Œ?˜cÒ!Ð!Ð!Ð!ØŒ|ÐÐÐØŒ~ÐÐÐØŒ{ÐÐˆ?Ø�<Š<˜ÑÔ Ò&Ð&Ð&Ð&ØŒ|ÐÐÐØŒ~ÐÐÐØŒ;Ð>Ð?Ò?Ð?Ð?Ð?à�<Š<�  A™œÑ'Ô'¨;Ò6Ð6Ð6Ð6Ø�<Š<��A™œÑÔ <Ò/Ð/Ð/Ð/Ø�<Š<�˜B¨Ð/Ñ/Ô/Ñ0Ô0°OÒCÐCÐCÐCØ�<Š<�˜4™Ñ Ô  HÒ,Ð,Ð,Ð,å•A�t¥K =Ð1Ñ1Ô1€Då˜ÑÔ€EÝ�‰<Œ<Ð.Ò.Ð.Ð.Ð.Ý•Q˜�b­¨Ð6Ñ6Ô6€EÝ˜ÑÔ€EØ�<Š<˜ÑÔÐ"@Ò@Ð@Ð@Ð@Ý•Q˜¥G¤M°"Ñ$5Ô$5½k¸]ÐKÑKÔK€EÝ˜ÑÔ€EØ�<Š<˜ÑÔÐ";½g¼mÈDÔL\Ñ>]Ô>]Ñ"]Ò]Ð]Ð]Ð]Ð]Ð]r~   c                  óF  — t          ddd¦  «        } t          ddd¦  «        }t          ddd¦  «        }t          | d         ¦  «        dk    sJ ‚t          d| d         z  ¦  «        dk    sJ ‚|d                              || |z
  ¦  «        }t          |¦  «        d	k    sJ ‚d S )
NrÙ   rŽ   r‹   r!  r…  r_  zA[0]z3*A[0]z
(A - B)[0])rp   rs   Úsubs)rÙ   r!  r…  r$  s       r|   Útest_MatrixElement_printingrÕ    s©   € å�S˜!˜QÑÔ€AÝ�S˜!˜QÑÔ€AÝ�S˜!˜QÑÔ€Aå��4”‰>Œ>˜VÒ#Ð#Ð#Ð#Ý��Q�t”W‘ÑÔ Ò)Ð)Ð)Ð)à	ˆ$Œ�Š�Q˜˜A™ÑÔ€AÝ�‰8Œ8�|Ò#Ð#Ð#Ð#Ð#Ð#r~   c                  óZ  — t          t          t          d¦  «        z   ¦  «        dk    sJ ‚t          t          t          t          d¦  «        ¦  «        z   ¦  «        dk    sJ ‚t          t          dt	          d¦  «        z  z   ¦  «        dk    sJ ‚t          t          t	          d¦  «        z   ¦  «        dk    sJ ‚t          t          t	          d¦  «        z   ¦  «        dk    sJ ‚t          t          t
          z   ¦  «        dk    sJ ‚t          t          t
          dz  z   ¦  «        d	k    sJ ‚t          t          t
          d
z  z   ¦  «        dk    sJ ‚t          t          dt
          z  z   ¦  «        dk    sJ ‚t          t          dt
          z  z   ¦  «        dk    sJ ‚t          t          dt          t
          ¦  «        z  z   ¦  «        dk    sJ ‚t          t          dt          t
          ¦  «        z  z   ¦  «        dk    sJ ‚t          t          t          d¦  «        z   ¦  «        dk    sJ ‚t          t          t          d¦  «        z   ¦  «        dk    sJ ‚t          t          dt          d¦  «        z  z   ¦  «        dk    sJ ‚t          t          dt          d¦  «        z  z   ¦  «        dk    sJ ‚d S )NrŽ   zz + M_Ezz + M_LOG2Er�   z	z + M_LN2ry  z
z + M_LN10zz + M_PIz
z + M_PI_2r1  z
z + M_PI_4z
z + M_1_PIz
z + M_2_PIzz + M_2_SQRTPIzz + M_SQRT2zz + M_SQRT1_2)rs   r  r)   rc   r,   r   r4   rh   r‚   r~   r|   Útest_ccode_math_macrosr×  '  s=  € Ý••S˜‘V”V‘ÑÔ 	Ò)Ð)Ð)Ð)Ý••T�#˜a™&œ&‘\”\Ñ!Ñ"Ô" mÒ3Ð3Ð3Ð3Ý•�Q•s˜1‘v”v‘X‘ÑÔ -Ò/Ð/Ð/Ð/Ý••S˜‘V”V‘ÑÔ Ò+Ð+Ð+Ð+Ý••S˜‘W”W‘ÑÔ Ò-Ð-Ð-Ð-Ý••R‘‰=Œ=˜JÒ&Ð&Ð&Ð&Ý••R˜‘T‘‰?Œ?˜lÒ*Ð*Ð*Ð*Ý••R˜‘T‘‰?Œ?˜lÒ*Ð*Ð*Ð*Ý•�Q•r‘T‘‰?Œ?˜lÒ*Ð*Ð*Ð*Ý•�Q•r‘T‘‰?Œ?˜lÒ*Ð*Ð*Ð*Ý•�Q•t�B‘x”x‘Z‘Ñ Ô Ð$4Ò4Ð4Ð4Ð4Ý•�Q•t�B‘x”x‘Z‘Ñ Ô Ð$4Ò4Ð4Ð4Ð4Ý••T˜!‘W”W‘ÑÔ Ò.Ð.Ð.Ð.Ý••T˜!‘W”W‘ÑÔ Ò.Ð.Ð.Ð.Ý•�Q•t˜A‘w”w‘Y‘ÑÔ ?Ò2Ð2Ð2Ð2Ý•�Q•t˜A‘w”w‘Y‘ÑÔ ?Ò2Ð2Ð2Ð2Ð2Ð2r~   c                  ó~   — t          t          d¦  «        ¦  «        dk    sJ ‚t          t          ¦  «        dk    sJ ‚d S )Nr‚  Úint)rs   rH   r[   r‚   r~   r|   Útest_ccode_TyperÚ  :  s>   € Ý•�g‘”ÑÔ 7Ò*Ð*Ð*Ð*Ý•‰;Œ;˜%ÒÐÐÐÐÐr~   c                  óÚ  — t          t          d¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¦  «        dk    t          t          dd¦  «        g¦  «        ¦  «        dk    sJ ‚t          t          t          t          d¦  «        g¦  «        ¦  «        dk    sJ ‚t          t          t          t          ¬¦  «        ¦  «        } t          t          t          d| g¦  «        ¦  «        d	k    sJ ‚t          t          t          d| gt          t          t          d
z  ¦  «        g¦  «        ¦  «        dk    sJ ‚t          t          t          t          t           gd¦  «        t          t#          d¦  «        t           gdt$          ¬¦  «        t'          dt          g¦  «        t)          t          ¦  «        ¦  «        }t          |¦  «        d                     g d¢¦  «        k    sJ ‚d S )Nzthis is a commentz/* this is a comment */rŽ   ú-z"while (fabs(x) > 1) {
   x -= 1;
}z{
   x += 1;
}r¦  Úpwerzdouble pwer(double x)r�   z*double pwer(double x){
   x = pow(x, 2);
}z%d %dÚhelloz%s %d)Úfileú
)zx;zprintf("%d %d", x, y);z%fprintf(stderr, "%s %d", "hello", y);zpwer(x);z	return x;)rs   r\   rO   r÷   r…   r>   rP   rF   rJ   rL   rV   rR   rS   r?   r]   rQ   rª   r_   r^   rT   rU   Újoin)Úinp_xÚblocks     r|   Útest_ccode_codegen_asträ  ?  sÙ  € õ •Ð,Ñ-Ô-Ñ.Ô.Ð2KÒKÐKÐKÐKÝ••s�1‘v”v ’z¥J­q°#°qÑ$9Ô$9Ð#:Ñ;Ô;Ñ<Ô<ð	òð ð ð õ
 •Õ.­q°!Ñ4Ô4Ð5Ñ6Ô6Ñ7Ô7ð	òð ð ð õ
 �¥­Ð.Ñ.Ô.Ñ/Ô/€EÝÕ"¥4¨°%°Ñ9Ô9Ñ:Ô:Ð>UÒUÐUÐUÐUÝÕ#¥D¨&°5°'½JÅqÍ!ÈQÉ$Ñ<OÔ<OÐ;PÑQÔQÑRÔRð	òð ð ð õ Ý	Ý�q•!ˆf�gÑÔÝ�|˜GÑ$Ô$¥aÐ(¨'½Ð?Ñ?Ô?Ý�V�a˜SÑ!Ô!Ý�q‰	Œ	ñô €Eõ �‰<Œ<˜4Ÿ9š9ð &ð &ð &ñ ô ò ð ð ð ð ð r~   c                  óD  — t          t          t          t          z  ¦  «        t          z   ¦  «        dk    sJ ‚t          t          t          t          z   ¦  «        t          z   ¦  «        dk    sJ ‚t          d¦  «        } t          t          t          t          z   ¦  «        t          t          | z   ¦  «        z   ¦  «        dk    sJ ‚t          dd¬¦  «        \  }}}t          ||z   ¦  «        }t          t          ||z   ¦  «        ¦  «        }t          |¦  «        dk    sJ ‚d S )	Nzz + x*yzz + (x + y)Úwz(w + z) + (x + y)zp q rTré   zexp(p + (q + r)))rs   r   rª   r…   r  r   r÷   r)   )ræ  r  r`  rí   Úq_rrÿ   s         r|   Útest_ccode_UnevaluatedExprrè  f  sô   € Ý•¥¥Q¡Ñ'Ô'­!Ñ+Ñ,Ô,°	Ò9Ð9Ð9Ð9Ý•¥¥Q¡Ñ'Ô'­!Ñ+Ñ,Ô,°Ò=Ð=Ð=Ð=Ý�‰Œ€AÝ•¥¥Q¡Ñ'Ô'­/½!¸a¹%Ñ*@Ô*@Ñ@ÑAÔAÐEXÒXÐXÐXÐXå�g DÐ)Ñ)Ô)�G€A€qˆ!Ý
˜!˜a™%Ñ
 Ô
 €CÝ�s�1�S‘5‰zŒz‰?Œ?€DÝ�‰;Œ;Ð,Ò,Ð,Ð,Ð,Ð,Ð,r~   c                  ó^   — t          g d¢¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚d S )N)r�   r‹   r1  z	{2, 3, 4}rr   r‚   r~   r|   Ú test_ccode_array_like_containersrê  r  s:   € Ý���‰>Œ>˜[Ò(Ð(Ð(Ð(Ý�‰>Œ>˜[Ò(Ð(Ð(Ð(Ð(Ð(r~   c                  ó¢   — t          t          t          ¦  «        ¦  «        dk    sJ ‚t          t          t          ¦  «        ¦  «        dk    sJ ‚d S )Nzisinf(x)zisnan(x))rs   rj   r…   ri   r‚   r~   r|   Útest_ccode__isinf_isnanrì  v  sB   € Ý••q‘”‰?Œ?˜jÒ(Ð(Ð(Ð(Ý••q‘”‰?Œ?˜jÒ(Ð(Ð(Ð(Ð(Ð(r~   N)·Ú
sympy.corer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Úsympy.core.relationalr   r   r   r   r   r   Úsympy.functionsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   Ú
sympy.setsr9   Úsympy.logicr:   r;   r<   Úsympy.codegenr=   r>   r?   Úsympy.testing.pytestr@   rA   Úsympy.printing.codeprinterrB   Úsympy.printing.crC   rD   rE   Úsympy.codegen.astrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   Úsympy.codegen.cfunctionsr`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   Úsympy.codegen.cnodesrk   Úsympy.utilities.lambdifyrl   Úsympy.tensorrm   rn   Úsympy.matricesro   rp   rq   rs   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-  r2  r;  r@  rH  rJ  rQ  rS  rY  r]  rc  rg  rl  rt  rw  r|  r~  rƒ  rŒ  r�  r“  r   r¤  rÀ  rÒ  rÕ  r×  rÚ  rä  rè  rê  rì  r‚   r~   r|   ú<module>rü     s)  ððð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø EÐ EÐ EÐ EÐ EÐ EØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Lðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 kÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jÐ jØ )Ð )Ð )Ð )Ð )Ð )Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à ,Ð ,Ð ,Ð ,Ð ,Ð ,à
ˆ'�'Ñ
Ô
�€€1€að'ð 'ð 'ð'ð 'ð 'ðQð Qð Qð0jð jð jð
6ð 6ð 6ð>ð >ð >ðgð gð gðTð Tð Tð&ð &ð &ð
<ð <ð <ðð ð ð"Bð Bð BðYð Yð Yð*&ð &ð &ð*@ð @ð @ð&'ð 'ð 'ð',ð ',ð ',ðT	ð 	ð 	ð ð  ð  ð:ð ð ð?ð ?ð ?ð=ð =ð =ð88ð 8ð 8ðNð Nð Nð4ð 4ð 4ð*3ð 3ð 3ðBð Bð Bð,@ð @ð @ð6Rð Rð Rð8,)ð ,)ð ,)ð^Fð Fð Fð
%ð %ð %ðPhð hð hðVð Vð Vð ð  ð  ð=ð =ð =ð
ð ð ðð ð ð8ð 8ð 8ð6ð 6ð 6ð4ð 4ð 4ð& ðJð Jñ „ðJð
91ð 91ð 91ðx,ð ,ð ,ð7ð 7ð 7ð@&^ð &^ð &^ðR
%ð 
%ð 
%ð3ð 3ð 3ð& ð  ð  ð
%ð %ð %ðN	-ð 	-ð 	-ð)ð )ð )ð)ð )ð )ð )ð )r~   