
    \hy                        S SK JrJrJrJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJr  S SKJrJrJrJrJrJr  S SKJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:  S SK;J<r<J=r=J>r>  S SK?J@r@JArAJBrB  S SKCJDrDJErE  S SKFJGrG  S S	KHJIrIJJrJJKrK  S S
KLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrcJdrdJereJfrf  S SKgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoroJprpJqrqJrrr  S SKsJtrt  S SKuJvrv  S SKwJxrxJyry  S SKzJ{r{J|r|J}r}  S SKFJ~r~  \" S5      u  rrrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS  rS! rS" rS# rS$ rS% rS& rS' rS( rS) rS* rS+ rS, rS- rS. rS/ rS0 rS1 rS2 rS3 rS4 rS5 rS6 rS7 rS8 rS9 rS: r\ES; 5       rS< rS= rS> rS? rS@ rSA rSB rSC rSD rSE rSF rgG)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                  X     " S S[         5      n [        U " [        5      5      S:X  d   eg )Nc                       \ rS rSrS rSrg)test_printmethod.<locals>.fabs"   c                 D    SUR                  U R                  S   5      -  $ )Nzfabs(%s)r   )_printargs)selfprinters     S/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/tests/test_c.py_ccode%test_printmethod.<locals>.fabs._ccode#   s    tyy| <<<     N)__name__
__module____qualname____firstlineno__r~   __static_attributes__r   r   r}   fabsrv   "   s    	=r   r   fabs(x))r   rs   x)r   s    r}   test_printmethodr   !   s&    =s = a>Y&&&r   c                      [        [        [        5      5      S:X  d   e[        [        S-  5      S:X  d   e[        [        [        5      5      S:X  d   eg )Nzsqrt(x)      ?)rs   r4   r   r   r   r}   test_ccode_sqrtr   )   sD    a>Y&&&C=I%%%a>Y&&&r   c                     [        [        S-  5      S:X  d   e[        [        [        S-  -  5      S:X  d   e[        S[	        [        S[        -  5      5      n [        SU " [        5      S-  [        [        [        -  -
  -  -  [        S-  [        -   -  5      S:X  d   e[        [        S	-  5      S
:X  d   e[        [        [        SS5      -  5      S:X  d   e[        [        [        SS5      -  [        [        0S9S:X  d   eS S4S S4/n[        [        S-  SU0S9S:X  d   e[        [        S-  SU0S9S:X  d   e[        [        [        SS5      -  SU0S9S:X  d   eS S 4S S4/n[        S[        -  SU0S9S:X  d   e[        [        S-  SU0S9S:X  d   e[        [        S[        [        [        [        [        S S!9S"S S!9S S!95      S#:X  d   eg )$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                     UR                   $ N
is_integerbaser)   s     r}   <lambda> test_ccode_Pow.<locals>.<lambda>8   s    cnnr   dpowic                 $    UR                   (       + $ r   r   r   s     r}   r   r   9   s    #..&8r   powr   user_functionszdpowi(x, 3)r   zpow(x, 0.5)      zpow(x, 16.0/5.0)c                     U S:H  $ Nr   r   r   s     r}   r   r   =       tqyr   c                     SU-  $ )Nzexp2(%s)r   r   s     r}   r   r   =   s
    JQTDTr   c                     U S:g  $ r   r   r   s     r}   r   r   >   r   r   exp2(x)z	pow(x, 2)Fevaluatez
-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S&AaC.1AAaDHAqD))1a4!84567 7 7D>W$$$HQN"#'8888HQN"$AEYYYY4g>8%@BKAuk&:;}LLLC(<=NNNHRO#UK4HIM____02TU0%8:L Aul&;<	IIIAul&;<KKKRCAa 7eL9>@ ADPQ Q Qr   c                  \    [        [        [        [        [        -  5      SSS.S9S:X  d   eg )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'    Qqs((+KLPiiiir   c                      [        [        S5      6 n S H2  n[        XS9nUR                  S5      UR                  S5      :X  a  M2   e   g )Nza[0:50])c89c99c11standard())r/   r   rs   count)big_mincurr_standardoutputs      r}   test_ccode_Min_performancer   L   sE    79%&G.w7||C FLL$5555 /r   c                  D   [        [        S5      5      S:X  d   e[        [        5      S:X  d   e[        [        SS9S:X  d   e[        [        * SS9S:X  d   e[        [        5      S:X  d   e[        [        * S	S9S
:X  d   e[        [        [        [
        0S9S:X  d   eg )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e$
222"u%4449
""""u%4444/2g===r   c                     [        S[        -  5      S[        R                  " S5      -  :X  d   e[        S[        -  5      S[        R                  " S5      -  :X  d   e[        S[        -  5      S[        R                  " S5      -  :X  d   eg )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    ;#RU`UfUfgiUj#jjjj	'	=b@QQR R R:"OR\RbRbceRf"ffffr   c                     [        [        SS5      5      S:X  d   e[        [        SS5      [        [        0S9S:X  d   e[        [        SS5      5      S:X  d   e[        [        SS	5      5      S
:X  d   e[        [        SS	5      [        [        0S9S:X  d   e[        [        SS	5      5      S:X  d   e[        [        SS	5      [        [        0S9S:X  d   e[        [        [        SS5      -   5      S:X  d   e[        [        [        SS5      -   [        [        0S9S:X  d   e[        [        SS5      [        -  5      S:X  d   e[        [        SS5      [        -  [        [        0S9S:X  d   eg )Nr      z3.0/7.0r   z	3.0L/7.0L   	   2z-3.0/7.0z
-3.0L/7.0Lz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   sI   !Q I---!QtWo>+MMM"a!S(((!R!Z///!Rg?<OOO"b!"i///"b!w@KOOOXa^#$555Xa^#4/BoUUU!Q!"m333!Q!w@OSSSr   c                  l    [        [        S5      5      S:X  d   e[        [        S5      5      S:X  d   eg )NC   67r   z-1)rs   r	   r   r   r}   test_ccode_Integerr   s   s0    %%%%%%r   c                  `    [        [        [        5      [        [        5      -  5      S:X  d   eg )Nzpow(sin(x), cos(x)))rs   r2   r   r%   r   r   r}   test_ccode_functionsr   x   s#    Q3q6!"&;;;;r   c            	         [        S5      n [        S[        U SU -  5      5      n[        U" U 5      5      S:X  d   e[        S[        U SU -  [        -  5      5      n[        U" U 5      5      S[        R
                  " S5      -  :X  d   e[        S5      n[        S[        S	S
S95      n[        S[        X SU -   -  SU -   -  5      5      n[        U" X#   5      X#   S9S:X  d   eg )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&AaC.1A1;%S&AaCK"89A	!:W]]2=NNO O OCACd+,AS&q1uIq1u,=">?A14AD)	  r   c                  p   [        [        [        5      SS9S:X  d   e[        [        5         [        [        [        5      SS9  S S S 5        [        [        5         [        [        [        5      SSS9  S S S 5        [        [        [        5      SSS9  g ! , (       d  f       NW= f! , (       d  f       N8= f)NC99r   	tgamma(x)C89F)r   allow_unknown_functionsT)rs   r+   r   r@   rB   r   r   r}   test_ccode_exceptionsr      sw    qE*k999	.	/eAh' 
0	.	/eAhF 
0 
%(UDA 
0	/	/	/s   BB'
B$'
B5c                  z   [        [        [        5      5      S:X  d   e[        [        [        5      5      S:X  d   e[        [	        [        5      5      S:X  d   e[        SSS9u  p[        [        [        U 5      [        U5      5      5      S:X  d   e[        [        X5      5      S:X  d   e[        S	SSS
9u  p#[        [        X#5      5      S:X  d   e[        [        X#S-   5      5      S:X  d   e[        [        SSSS95      S:X  d   e[        [        SSSS9* 5      S:X  d   e[        U [        X#5      -  5      S:X  d   e[        [        X#5      U-  5      S:X  d   e[        SSSS9n[        [        U* U5      5      S:X  d   e[        [        U5      5      S:X  d   e[        [        U5      5      S:X  d   eg )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      s   	)))Q=I%%%q?k)))5t$DAWQZ,- 2F F F FQ|+++WdT:FBR***Ra!_444Re,->>>#aU++,
:::3r;=000Ra $5555TD1AaR,,,1"ooooq?XXXXr   c                     [        SSS9n [        SSS9nSS S4S	 S
4/S.n[        [        U 5      US9S:X  d   e[        [        U 5      US9S:X  d   e[        [        U5      US9S:X  d   e[	        S5      n[        S5      n[        SS5       H#  nU" [        SS5      [	        SU 35      U5      nM%     [        USS0S9nSU;   d   eUR                  S5      S:X  d   eg )Nr   Fr   r   Tceilc                 $    U R                   (       + $ r   r   r   s    r}   r   +test_ccode_user_functions.<locals>.<lambda>   s    q||+r   r   c                     U R                   $ r   r   r   s    r}   r   r      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47Mu6UV ,<=JJJQ(89YFFFQ(89XEEE#;DhF1c]hq!nfqWot<  hx%8
9CC<<99X#%%%r   c            
         [        S5      S:X  d   e[        [        R                  5      S:X  d   e[        S5      S:X  d   e[        [        R                  5      S:X  d   e[        [        [
        -  5      S:X  d   e[        [        [
        -  5      S:X  d   e[        [        ) 5      S:X  d   e[        [        [
        -  [        -  5      S:X  d   e[        [        [
        -  [        -  5      S	:X  d   e[        [        [
        -  [        -  5      S
:X  d   e[        [        [
        -  [        -  5      S:X  d   e[        [        [
        -  5      S:X  d   e[        [        [
        -  [        -  5      S:X  d   e[        [        [        [
        5      5      S:X  d   e[        [        [        [        [
        -  [        [        [        5      5      5      S:X  d   eg )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     sq   ;&   =F"""<7""">W$$$Q<8###Q<8###!9Q},,,Q},,,!a%1...!a%1000Q<3333!a%1!iiiiA9,,,Aq1ugam459r   c                     [        [        [        [        5      5      S:X  d   e[        [	        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   eg )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    Aq?h&&&Aq?h&&&Aq?h&&&Aq?g%%%Aq?g%%%Aq?h&&&r   c                    ^  [        [        [        S:  4[        S-  S45      m [        T 5      S:X  d   e[        T SS9S:X  d   e[        [        [        S:  4[        S-   [        S:  4[        S-  S45      m [        T 5      S:X  d   e[        T SS9S	:X  d   e[        [        [        S:  4[        S-  [        S:  4[        [        5      [        S
:  45      m [	        [
        U 4S j5        g )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 5      $ r   rr   r  s   r}   r   &test_ccode_Piecewise.<locals>.<lambda>  s	    uT{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                  J    SSK Jn   U " [        5      n[        U5      S:X  d   eg )Nr   )sincz)(((x != 0) ? (
   sin(x)/x
)
: (
   1
))))(sympy.functions.elementary.trigonometricr  r   rs   )r  r  s     r}   test_ccode_sincr    s)    =7D;  r   c            	      v   [        S[        [        [        S:  4[        S-   [        S:  4[        S-  S45      -  5      n U S:X  d   e[        [        -  [        -  [        S-  -   [        S-  -   [        S[        S:  4S5      -   [        [        5      -   S-
  n[        U5      S:X  d   e[        US	S
9S:X  d   eg )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	1a!e*q1ua!enq!tTlCCDA	 	 	 Q3q51a4<!Q$Aq3w<!CCc!fLqPD;   %     r   c                  ^    [        [        S:  [        [        5      n [	        U 5      S:X  d   eg )Nr   z((x < 1) ? (
   y
)
: (
   z
)))r:   r   r   r  rs   r  s    r}   test_ccode_ITEr  1  s/    q1uaD;  r   c                  &    [        [        S 5        g )Nc                  0    [        [        [        5      SS9$ )Ngarbage)method)rs   r2   r   r   r   r}   r   %test_ccode_settings.<locals>.<lambda>=  s    eCF9=r   )r@   	TypeErrorr   r   r}   test_ccode_settingsr%  <  s    
9=>r   c                     [        SSS9u  pp#[        SU5      [        SU5      [        SU5      pen[        S5      U   n[        S5      XE4   n[        S	5      XEU4   n	[        5       n
U
R	                  U5      S
:X  d   eU
R	                  U5      SX$-  U-   -  :X  d   eU
R	                  U	5      SXC-  U-  XS-  -   U-   -  :X  d   e[        SSS9XE4   nU
R	                  U5      SSU-  U-   -  :X  d   e[        SSSS9XE4   n[        U5      SUSU-  -   -  :X  d   e[        SSSU 4US9XE4   n[        U5      S:X  d   e[        SXU4US9n[        XXV4   5      S:X  d   e[        USSU4   5      S:X  d   eg )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_Indexedr5  @  s   D1JA!#qk3sA;C!ACACACq!AAA&(((A'QSU"3333A'QSU13Yq["9999Cu%ad+AA'QqS1W"5555Cuc2148A8w!ac'****CwAqA!$GA8''''aAYq9E!w $<<<<q!Qw $<<<<r   c            	          [        [        SS5      5      S:X  d   e[        [        SSSSS95      S:X  d   e[        [        SS5      5      S	:X  d   e[        [        SS
5      5      S:X  d   eg )Nr   ijzx[i][j]klr3  r0  zx[i*k + j*l + o])r   zx[3])r      r   z
x[3][4][5])rs   rG   r   r   r}   test_Elementr:  \  so    d#$	111dD=>BTTTTd#$...g&'<777r   c                  $   Sn [        SU 4S9n[        SU 4S9n[        SU S-
  4S9n[        SU S-
  5      n[        X4   XS-      X   -
  X$S-      X$   -
  -  5      n[        UR                  UR
                  SS	9nUS
US-   < SUS-   < S3:X  d   eg )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   r<  r   ecode0s          r}   2test_ccode_Indexed_without_looking_for_contractionrC  c  s    ECx(ACx(A	T%'	,BCqA
251qS6!$;Q3-.A!%%15559EAq1uMMMMr   c                      [        SSS9u  p[        S5      n[        S5      n[        S5      n[        SU5      n[        SU 5      nS	XP-  U-   -  S
-   n[        X%U4   X6   -  XE   S9U:X  d   eg )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   r2  r   r   r   r   r'  r   s           r}   test_ccode_loops_matrix_vectorrH  n  s    5$'DACACACACACA	,
 01sQw	8		  a4.!333r   c                      [        SS[        S9u  p[        S5      n[        S5      n[        X5      n SU R                  R
                  UR
                  S.-  n[        X    X0   S9U:X  d   eg )	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   r2  r   r   expecteds        r}   test_dummy_loopsrP    so    5$E2DACACAA	A	 77&&!--@	AH &(222r   c                     [        SSS9u  p[        S5      n[        S5      n[        S5      n[        S5      n[        SU5      n[        S	U 5      nS
X`-  U-   -  S-   n[        X&U4   X7   -  X6   -   XV   -   XF   S9U:X  d   eg )NrE  Tr   r   r   r   r  r   r'  zfor (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];
rF  r   rG  )	r   r2  r   r   r   r  r   r'  r   s	            r}   test_ccode_loops_addrR    s    5$'DACACACACACACA	,
 01sQw	8		  a4$qt+qt<AAAr   c                  b   [        SSS9u  pp#[        S5      n[        S5      n[        S5      n[        SU5      n[        SU 5      n[        S	U5      n	[        S
U5      n
SXp-  U-  U-  X-  U-  -   X-  -   U
-   < SX-  U-  X-  -   U
-   < S3S-   n[        XXX4   XGXU
4   -  Xg   S9U:X  d   eg )Nn m o pTr   r   br   r   r'  r(  lzfor (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   rG  )r   r2  r3  r  r   rU  r   r   r'  r(  rV  r   s               r}   &test_ccode_loops_multiple_contractionsrY    s    D1JA!CACACACACACACA 78c!eAgAo6Ka6OQRQTUVQVYZY\Q\_`Q`	b		  a7AqjM)QT:a???r   c                     [        SSS9u  pp#[        S5      n[        S5      n[        S5      n[        S5      n[        SU5      n[        S	U 5      n	[        S
U5      n
[        SU5      nSX-  U-  U-  X-  U-  -   X-  -   U-   < SX-  U-  U-  X-  U-  -   X-  -   U-   < SX-  U-  X-  -   U-   < S3S-   n[        XHXU4   XXXU4   -   XiX4   -  Xx   S9U:X  d   eg )NrT  Tr   r   rU  r  r   r   r'  r(  rV  zfor (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[rW  rX  r   rG  )r   r2  r3  r  r   rU  r  r   r   r'  r(  rV  r   s                r}   test_ccode_loops_addfactorr[    s:   D1JA!CACACACACACACACA ABAa!#a%RSRU@UXY@Y[\[^_`[`ab[befehijej[jmnmp[pst[tvwvyz{v{~  B  wB  EF  wF	G		  !qQJ-!qQJ-/a7;qtLPQQQQr   c                  ^   [        SSS9u  pp#[        S5      n[        S5      n[        S5      n[        S5      n[        SU5      n[        S	U 5      n	[        S
U5      n
SnSX-  U-  X-  -   U
-   -  S-   nSX-  U
-   -  S-   nSX-  U	-   -  S-   n[        XY   XHU	4   -  XZ   XHU
4   -  -   XY   XZ   -  XhX4   -  -   Xx   S9nXkU-   U-   US S -   :X  d\  XkU-   U-   US S -   :X  dJ  XkU-   U-   US S -   :X  d8  XkU-   U-   US S -   :X  d&  XkU-   U-   US S -   :X  d  XkU-   U-   US S -   :X  d   eg g g g g g )NrT  Tr   r   rU  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   rG  )r   r2  r3  r  r   rU  r  r   r   r'  r(  s0s1s2s3s                  r}   test_ccode_loops_multiple_termsra    s   D1JA!CACACACACACACA	 	4 89s1uqs{Q	H			 	,/0sQw	8		 	,/0sQw	8		  	ad1T7lQT!qD'\)ADIa1j,@@ADQAb23B''b23B''b23B''b23B''b23B''b23B'') (
 ( ( ( ( ( (r   c                  v    [         [        -   [        [        5      -   [        -   n [	        U [        /S9S:X  d   eg )Ndereferencezx + y + (*z) + sin((*z)))r   r   r2   r  rs   r  s    r}   test_dereference_printingre    s0    q53q6>ADA3'+EEEEr   c            	      Z   [        [        [        -  [        S[        -   [        S:  4[        S45      [	        [
        5      /5      n [        SSS5      n[        X5      S:X  d   e[        SUS   -  [        S:  4US   S45      [	        US	   5      -   US
   -   n[        U5      S:X  d   e[        SSS5      n[        SSS5      n[        [	        US	   5      S[        US   5      /US	   US   -   US   S/SUS   -  US	   -  [        US
   5      S-   S//5      n[        XT5      S:X  d   eg )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   )r9  r   r9  zM[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  rh  ri  r2  s         r}   test_Matrix_printingrk    sX   
!A#y!a%14y93q6B
CCS!QA=	   a$iQ'!D'49C$LH1T7RD;	 ! ! ! 	S!QAS!QAQsVaQsV-	
3!C&!D'1%	
1T71S6	4#<!+Q/1 	2A ;		 	 	r   c                      [        [        5         [        [        / SQ/5      5        S S S 5        S[	        SS05      R                  [        / SQ/5      5      ;   d   eg ! , (       d  f       N== f)N)r   r   r   zNot supported in CstrictF)r@   rB   rs   rq   rC   doprintr   r   r}   test_sparse_matrixro  ;  sV    	.	/lI;'( 
0  >8U2C#D#L#L\[dZeMf#gggg 
0	/s   A
A-c                     [        S5      u  p[        [        5         [        US-  SSS9  S S S 5        [        US-  5      S:X  d   e[        XS-  -  U/S9S:X  d   e[        US-  S	S
9S:X  d   eg ! , (       d  f       NL= f)Nzx, ifr   Tr   )error_on_reservedr   zpow(if_, 2)rc  zpow((*if_), 2)*x_unreserved)reserved_word_suffixzpow(if_unreserved, 2))r   r@   r  rs   )r   r   s     r}   test_ccode_reserved_wordsrt  D  s    7DA	
	addU; 
A;-'''Ts+/AAAAAM:>UUUU	 
	s   A22
B c                  P   [        [        5      [        -  Sp[        [        [        5      5      Sp2[        S[        -  [        S-  -   5      [        -  [        S-  -   SpT[	        U 5      U:X  d   e[	        U S5      SU-  :X  d   e[	        U5      U:X  d   e[	        U5      U:X  d   eg )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_signr|  M  s    q'A+:4s1v, C4q1uq!t|$q(1a4/1t4<4	D 0000<4<4r   c                      [        [        [        [        [        -   5      5      S:X  d   e[        [        [        S[        [        -   5      5      S:X  d   eg )Nz
x = y + z;+zx += y + z;)rs   r?   r   r   r  r>   r   r   r}   test_ccode_Assignmentr  V  s@    Aq1u%&,666AsAE*+}<<<r   c            	          [        [        [        SSS5      [        [        S[        5      /5      n [        U 5      S:X  d   eg )Nr   
   r   *z*for (x = 0; x < 10; x += 2) {
   y *= x;
})r=   r   r9   r>   r   rs   )fs    r}   test_ccode_Forr  [  s?    AuQAAsA!6 78A8    r   c            	          [        [        [        S5      SS9S:X  d   e[        [        [        S5      SS9S:X  d   e[        [        [        S[	        [        5      5      SS9S:X  d   eg )	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  sb    QU+/BBBBQU+|;;;Q47#e4S  r   c                      [        [        [        5      SS9S:X  d   e[        [        SS9S:X  d   e[        [	        S5      SS9S:X  d   eg )Nr   r   expm1(x)NANr   )rs   r`   r   r   floatr   r   r}   test_ccode_standardr  h  sI    qE*j888u%...u.%777r   c                      [        5       n U R                  S:X  d   eU R                  S:X  d   eSU R                  ;   d   eSU R                  ;  d   eU R	                  [        [        5      5      S:X  d   eg )NCr   voidtemplatelog10(x))rC   languager   reserved_wordsrn  re   r   )
c89printers    r}   test_C89CodePrinterr  n  sw    !J#%%%%'''Z.....Z66666eAh':555r   c                     [        5       R                  [        [        5      5      S:X  d   e[        5       R                  [	        [        5      5      S:X  d   e[        5       R                  [        [        5      5      S:X  d   e[        5       R                  [        [        5      5      S:X  d   e[        5       R                  [        [        [        [        * 5      5      S:X  d   e[        5       R                  [        [        5      5      S:X  d   e[        5       R                  [        [        5      5      S:X  d   e[        5       R                  [        [        [        5      5      S:X  d   e[        5       R                  [        [        5      5      S	:X  d   e[        5       R                  [        [        S
[        S-  5      5      S:X  d   e[        5       R                  [        [        S
5      5      S:X  d   e[        5       n U R                   S:X  d   eU R"                  S:X  d   eSU R$                  ;   d   eSU R$                  ;  d   eg )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   rn  r`   r   ra   rb   rc   rd   r   r  re   rf   rg   r-   r.   r/   r  r   r  )
c99printers    r}   test_C99CodePrinterr  w  s   ##E!H-;;;##E!H-;;;##DG,	999##DG,	999##C1qbM2oEEE##E!H-;;;##DG,	999##E!QK0MAAA##HQK0K???##C1adO48UUUU##C1I.,>>>!J#%%%%'''22222*33333r   c                      [        S[        [        005      n U R                  [	        [
        [        S5      -   5      5      S:X  d   eg )Nr   z2.1zsinl(x + 2.1L))rD   rV   rY   rn  r2   r   r
   )f80_printers    r}   "test_C99CodePrinter__precision_f80r    s=     .4/!BCKs1uU|#3459IIIIr   c            	      
  ^^ [        SSS9n [        SSSS9n[        S[        [        005      n[        S[        [        005      n[        S[        [
        005      nUR                  [        [        S-   5      5      S:X  d   eUR                  [        [        S-   5      5      S	:X  d   eUR                  [        [        [        S
5      -   5      5      S:X  d   e[        X#U// SQ5       GHb  u  mmUU4S jnU" [        U 5      S5        U" [        [        S-   5      S5        U" [        [        S-   5      [        [        S-
  5      -  S5        U" [        [        S-  5      S5        U" [        [        5      S5        U" [        [        S-  5      S5        U" [!        US5      S5        U" [!        SU-  S-   SU-  S-   SS9S5        U" [!        [        S-   S5      S5        U" [!        [        S[        -  S-   5      S 5        U" [#        [        S-  5      S!5        U" [%        S[        -  S-  5      S"5        U" ['        [        S-  5      S#5        U" [)        [        5      S$5        U" S[        -  S%5        U" S[        -  S&5        U" [        S-  S'5        U" [        S-  S(5        U" [+        S[        -   5      S)5        U" [-        [        S-
  5      S*5        U" [/        [        [0        5      S+5        U" [        S[        -  S-   5      S,5        U" [        S[        -  S--
  5      S.5        U" [3        S[0        -  S-   5      S/5        U" [5        S[        -  S-   5      S05        U" [7        S[        -  S-   5      S15        U" [9        S[        -  S-   5      S25        U" [;        S[        -  S[0        -  5      S35        U" [=        S[        -  S-   5      S45        U" [?        S[        -  S--
  5      S55        U" [A        S[0        -  S-   5      S65        U" [C        S[        -  S-   5      S75        U" [E        S[        -  S-   5      S85        U" [G        S[        -  S-   5      S95        U" [I        S:[        -  5      S;5        U" [K        S:[        -  5      S<5        U" [M        [        5      S=5        U" [O        [        5      S>5        U" [Q        [        S-   5      S?5        U" [S        [        S-   5      S@5        U" [U        [        [0        [V        * 5      SA5        U" [Y        [        S[        S-  5      SB5        U" [[        [        S5      SC5        GMe     g )DNr   Tr   r  r   r   g @zsinf(x + 2.1F)zsin(x + 2.1000000000000001)z2.0zsinl(x + 2.0L))r   rV  c                 l   > TR                  U 5      UR                  TTR                  5       S9:X  d   eg )N)r   r   )rn  formatupper)r  refr|   suffixs     r}   check-test_C99CodePrinter__precision.<locals>.check  s-    ??4(CJJ6<<>J,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   rn  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    sP   T"ATD1A .4/!BCK .4/!BCK .4/!BCKs1S5z*.>>>>s1S5z*.KKKKs1U5\>237GGGG+FW	Sc!fhc!c'l12c!c'lCCL(*Z[c!C%j,-d1g|$eAcEl01c!Qi!c!A#'1Q37U35LMc!c'3!EFc!SUS[!#IJc!A#h34eAaCEl9:d1S5k./eAh&adN#c1f)*adN#af)*d1Q3i)*d1S5k01eAqk+,c"Q$)n9:c"Q$)n9:c"Q$)n9:d2a4"9o;<d2a4"9o;<d2a4"9o;<eBqD"Q$!?@d2a4"9o;<d2a4"9o;<d3q52: <=eBqD2I =>eBqD2I =>eBqD2I =>c#a%j-.d3q5k/0eAh'hqk>*ga"fo/0eAFm./c!Qm/0c!S!S&!#STc!Sk/0_ Xr   c                  n    [        5       n U [        S5         S:X  d   eU S[        S5      -     S:X  d   eg )Nr   r   r   	M_SQRT1_2)rE   r)   rh   )macross    r}   test_get_math_macrosr    s;    F#a&>U"""!DG)+++r   c                     [        SSS9n [        U [        R                  " U 5      S9n[	        U5      n[        U5      S:X  d   e[        [        [        [        1S9n[	        U5      n[        U5      S:X  d   eUR                  [        S9n[        U5      S	:X  d   e[        [        [        S
5      S9n[	        U5      n[        5       nSUR                  ;  d   eUR                  U5      S:X  d   eSUR                  ;   d   e[        SSS9n	[        R                   " U	["        [$        1S9n
[	        U
5      n[        U5      S:X  d   e[        [        [        S5      [        1S9n[	        U5      n[        U5      S:X  d   e[        UR&                  UR(                  [        UR*                  S9n[	        U5      n[        U5      S:X  d   eg )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   headersrn  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ADNN1-.DtD;'!!!AGK=9DE<?***b)E<1111ADL)DtDGgoo---??4 H,,,'//)))$A??1]H$=>DtD;5555AtL)+?DE<////T[[$))RtzzBEE<6666r   c            	         [        S[        R                  [        R                  [        R                  5      n [        [        U 0U S0U S0[        SU S0U S0S.5      nUR                  [        5      S:X  d   eUR                  (       a   eUR                  (       a   eUR                  (       a   eUR                  S5      S:X  d   eUR                  (       a   eUR                  (       a   eUR                  S	1:X  d   eUR                  [        S
S5      5      S:X  d   eUR                  [        [        5      5      S:X  d   eUR                  [        SSS95      S:X  d   eUR                  [        S-  5      S:X  d   e[        [        U [         1S9n[#        U5      n[%        U5      S:X  d   e[        [        U [&        [         1S9n[#        U5      nUR                  U5      S:X  d   e[        [        U [(        R*                  " S5      [         1S9n[#        U5      nUR                  U5      S[(        R*                  " U R,                  5      -  :X  d   eg )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   rn  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    s   [(..(..(--PDt"&#Vn&&%

 8
 D <<?c!!!||~~{{?<<&&&||~~;;>????<<A';666<<A<///<<B/0OCCC<<4 H,,,AtK=1DE<....Qb6EE<<"@@@@QGMM"$5k]KEE<<";gmmDL\L\>]"]]]]r   c                      [        SSS5      n [        SSS5      n[        SSS5      n[        U S   5      S:X  d   e[        SU S   -  5      S:X  d   eUS   R                  X U-
  5      n[        U5      S	:X  d   eg )
Nr   r   r   r)  r  rg  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#$#QtW)*)	$QAA8|#$#r   c                  J   [        [        [        S5      -   5      S:X  d   e[        [        [        [        S5      5      -   5      S:X  d   e[        [        S[	        S5      -  -   5      S:X  d   e[        [        [	        S5      -   5      S:X  d   e[        [        [	        S5      -   5      S:X  d   e[        [        [
        -   5      S:X  d   e[        [        [
        S-  -   5      S	:X  d   e[        [        [
        S
-  -   5      S:X  d   e[        [        S[
        -  -   5      S:X  d   e[        [        S[
        -  -   5      S:X  d   e[        [        S[        [
        5      -  -   5      S:X  d   e[        [        S[        [
        5      -  -   5      S:X  d   e[        [        [        S5      -   5      S:X  d   e[        [        [        S5      -   5      S:X  d   e[        [        S[        S5      -  -   5      S:X  d   e[        [        S[        S5      -  -   5      S:X  d   eg )Nr   zz + M_Ezz + M_LOG2Er   z	z + M_LN2r  z
z + M_LN10zz + M_PIz
z + M_PI_2r9  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	)))T#a&\!"m333Qs1vX-///SV+++SW---R=J&&&RT?l***RT?l***QrT?l***QrT?l***QtBxZ $4444QtBxZ $4444T!W...T!W...QtAwY?222QtAwY?222r   c                  b    [        [        S5      5      S:X  d   e[        [        5      S:X  d   eg )Nr  int)rs   rH   r[   r   r   r}   test_ccode_Typer  :  s+    g7***;%r   c                     [        [        S5      5      S:X  d   e[        [        [        [        5      S:  [        [        SS5      /5      5      S:X  d   e[        [        [        [        S5      /5      5      S:X  d   e[        [        [        [        S95      n [        [        [        SU /5      5      S	:X  d   e[        [        [        SU /[        [        [        S
-  5      /5      5      S:X  d   e[        [        [        [        [         /S5      [        [#        S5      [         /S[$        S9['        S[        /5      [)        [        5      5      n[        U5      SR+                  / SQ5      :X  d   eg )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s1vzJq#q$9#:;<	  
 .q!4567	  
 ./E"4%9:>UUUU#D&5'Jq!Q$<O;PQR	   	q!fg|G$a('?VaS!q	E <499 &    r   c                     [        [        [        [        -  5      [        -   5      S:X  d   e[        [        [        [        -   5      [        -   5      S:X  d   e[        S5      n [        [        [        [        -   5      [        [        U -   5      -   5      S:X  d   e[        SSS9u  pn[        X#-   5      n[        [        X-   5      5      n[        U5      S:X  d   eg )	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  rh  r   q_rr  s         r}   test_ccode_UnevaluatedExprr  f  s    Q'!+,	999Q'!+,===AQ'/!a%*@@AEXXXXgD)GA!
!%
 Cs15z?D;,,,,r   c                  L    [        / SQ5      S:X  d   e[        S5      S:X  d   eg )N)r   r   r9  z	{2, 3, 4}rr   r   r   r}    test_ccode_array_like_containersr  r  s&    >[(((>[(((r   c                  |    [        [        [        5      5      S:X  d   e[        [        [        5      5      S:X  d   eg )Nzisinf(x)zisnan(x))rs   rj   r   ri   r   r   r}   test_ccode__isinf_isnanr  v  s.    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%  r5  r:  rC  rH  rP  rR  rY  r[  ra  re  rk  ro  rt  r|  r  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 5 5 . E L L      
 k j j j ) 9 ) = = ,
'
1a''Q0j
6>gT&
<"BY*&*@&'',T	 :?=88N4*3B,@6R8,)^F
%PhV =
864& J J
91x,7@&^R
%3& 
%N	-))r   