ó
¡¼™\c           @   s·  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 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& m' Z' m( Z( m) Z) m* Z* m+ Z+ m, Z, m- Z- d  d l. m/ Z/ d  d l0 m1 Z1 d  d l2 m3 Z3 m4 Z4 m5 Z5 d  d l6 m7 Z7 m8 Z8 d  d l9 m: Z: m; Z; m< Z< m= Z= d  d l> m? Z? m@ Z@ mA ZA mB ZB mC ZC mD ZD mE ZE mF ZF mG ZG mH ZH mI ZI mJ ZJ mK ZK mL ZL mM ZM mN ZN mO ZO mP ZP mQ ZQ mR ZR mS ZS mT ZT mU ZU mV ZV d  d	 lW mX ZX mY ZY mZ ZZ m[ Z[ m\ Z\ m] Z] m^ Z^ m_ Z_ m` Z` d  d
 la mb Zb d  d lc md Zd d  d l6 me Ze d  d lf mg Zg mh Zh d  d li mj Zj mk Zk d  d ll mm Zm e d ƒ \ Zn Zo Zp d „  Zq d „  Zr d „  Zs d „  Zt d „  Zu d „  Zv d „  Zw d „  Zx d „  Zy d „  Zz 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˜ e8 d9 „  ƒ Z™ d: „  Zš d; „  Z› d< „  Zœ d= „  Z d> „  Zž d? „  ZŸ d@ „  Z  dA „  Z¡ dB „  Z¢ dC S(D   iÿÿÿÿ(   t   St   pit   oot   symbolst   Rationalt   Integert   Floatt   Modt   GoldenRatiot
   EulerGammat   Catalant   Lambdat   Dummyt   Eqt   nant   Mult   Pow(   t   Abst   acost   acosht   asint   asinht   atant   atanht   atan2t   ceilingt   cost   cosht   erft   erfct   expt   floort   gammat   logt   loggammat   Maxt   Mint	   Piecewiset   signt   sint   sinht   sqrtt   tant   tanh(   t   Range(   t   ITE(   t   Fort
   aug_assignt
   Assignment(   t   raisest   XFAIL(   t   CCodePrintert   C89CodePrintert   C99CodePrintert   get_math_macros(   t   AddAugmentedAssignmentt   Elementt   Typet	   FloatTypet   Declarationt   Pointert   Variablet   value_constt   pointer_constt   Whilet   Scopet   Printt   FunctionPrototypet   FunctionDefinitiont   FunctionCallt   Returnt   realt   float32t   float64t   float80t   float128t   intct   Commentt	   CodeBlock(	   t   expm1t   log1pt   exp2t   log2t   fmat   log10t   Cbrtt   hypott   Sqrt(   t   restrict(   t   implemented_function(   t   warns_deprecated_sympy(   t   IndexedBaset   Idx(   t   Matrixt   MatrixSymbol(   t   ccodes   x,y,zc          C   s8   d t  f d „  ƒ  Y}  t |  t ƒ ƒ d k s4 t ‚ d  S(   Nt   fabsc           B   s   e  Z d  „  Z RS(   c         S   s   d | j  |  j d ƒ S(   Ns   fabs(%s)i    (   t   _printt   args(   t   selft   printer(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   _ccode"   s    (   t   __name__t
   __module__Re   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyR`   !   s   s   fabs(x)(   R   R_   t   xt   AssertionError(   R`   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_printmethod    s    c           C   s\   t  t t ƒ ƒ d k s t ‚ t  t d ƒ d k s: t ‚ t  t t ƒ ƒ d k sX t ‚ d  S(   Ns   sqrt(x)g      à?(   R_   R)   Rh   Ri   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_sqrt(   s    c       
   C   sj  t  t d ƒ d k s t ‚ t  t t d ƒ d k s< t ‚ t d t t d t ƒ ƒ }  t  d |  t ƒ d t t t t d t ƒ d k s– t ‚ t  t d	 ƒ d
 k s² t ‚ t  t t d d ƒ ƒ d k s× t ‚ t  t t d d ƒ d i t t 6ƒd k s	t ‚ d „  d f d „  d f g } t  t d d i | d 6ƒd k sPt ‚ t  t d d i | d 6ƒd k syt ‚ t  t t d d ƒ d i | d 6ƒd k s«t ‚ d „  d „  f d „  d f g } t  d t d i | d 6ƒd k sõt ‚ t  t d d i | d 6ƒd k st ‚ t  t	 d t t
 t	 t t d  t ƒd! d  t ƒd  t ƒƒ d" k sft ‚ d  S(#   Ni   s	   pow(x, 3)s   pow(x, pow(y, 3))t   gi   i   g      @s,   pow(3.5*2*x, -x + pow(y, x))/(pow(x, 2) + y)g      ð¿s   1.0/xs   pow(x, 2.0/3.0)t   type_aliasess   powl(x, 2.0L/3.0L)c         S   s   | j  S(   N(   t
   is_integer(   t   baseR   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   <lambda>7   t    t   dpowic         S   s   | j  S(   N(   Rn   (   Ro   R   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp   8   Rq   t   powt   user_functionsR   s   dpowi(x, 3)g      à?s   pow(x, 0.5)i   i   s   pow(x, 16.0/5.0)c         S   s
   |  d k S(   Ni   (    (   Ro   R   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp   <   Rq   c         S   s   d | S(   Ns   exp2(%s)(    (   Ro   R   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp   <   Rq   c         S   s
   |  d k S(   Ni   (    (   Ro   R   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp   =   Rq   s   exp2(x)s	   pow(x, 2)iþÿÿÿt   evaluateiÿÿÿÿs
   -2*x/(y*y)(   R_   Rh   Ri   t   yRY   R   R   RJ   RG   R   R   t   False(   Rl   t   _cond_cfunct   _cond_cfunc2(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Pow.   s&     /%2))2))0c           C   s=   t  t t t t ƒ d i d d 6d d 6ƒd k s9 t ‚ d  S(   NRt   t   my_maxR#   t   my_powR   s   my_max(x, my_pow(x, 2))(   R_   R#   Rh   Ri   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_MaxF   s    c          C   s]   t  t d ƒ Œ  }  xD d D]< } t |  d | ƒ} | j d ƒ | j d ƒ k s t ‚ q Wd  S(	   Ns   a[0:50]t   c89t   c99t   c11t   standardt   (t   )(   R~   R   R€   (   R$   R   R_   t   countRi   (   t   big_mint   curr_standardt   output(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Min_performanceK   s    c           C   sÓ   t  t d ƒ ƒ d k s t ‚ t  t ƒ d k s6 t ‚ t  t d d ƒd k sT t ‚ t  t d d ƒd k ss t ‚ t  t ƒ d k s‹ t ‚ t  t d d	 ƒd
 k sª t ‚ t  t d i t t 6ƒd k sÏ t ‚ d  S(   Ni   t   M_Et   M_PIR   R~   t   HUGE_VALs	   -HUGE_VALt   INFINITYR   s	   -INFINITYRm   t   M_PIl(   R_   R   Ri   R   R   RJ   RG   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_constants_mathhS   s    c           C   s   t  d t ƒ d t j d ƒ k s) t ‚ t  d t ƒ d t j d ƒ k sR t ‚ t  d t ƒ d t j d ƒ k s{ t ‚ d  S(   Ni   s,   const double GoldenRatio = %s;
2*GoldenRatioi   s$   const double Catalan = %s;
2*Catalans*   const double EulerGamma = %s;
2*EulerGamma(   R_   R   t   evalfRi   R
   R	   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_constants_other^   s    )&c           C   sÀ  t  t d d ƒ ƒ d k s! t ‚ t  t d d ƒ d i t t 6ƒd k sO t ‚ t  t d d ƒ ƒ d k sp t ‚ t  t d d	 ƒ ƒ d
 k s‘ t ‚ t  t d d	 ƒ d i t t 6ƒd k s¿ t ‚ t  t d d	 ƒ ƒ d k sà t ‚ t  t d d	 ƒ d i t t 6ƒd k st ‚ t  t t d d ƒ ƒ d k s3t ‚ t  t t d d ƒ d i t t 6ƒd k set ‚ t  t d d ƒ t ƒ d k sŠt ‚ t  t d d ƒ t d i t t 6ƒd k s¼t ‚ d  S(   Ni   i   s   3.0/7.0Rm   s	   3.0L/7.0Li   i	   t   2iùÿÿÿs   -3.0/7.0s
   -3.0L/7.0Liýÿÿÿs   x + 3.0/7.0s   x + 3.0L/7.0Ls   (3.0/7.0)*xs   (3.0L/7.0L)*x(   R_   R   Ri   RJ   RG   Rh   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Rationale   s    !.!!.!.%2%c           C   s@   t  t d ƒ ƒ d k s t ‚ t  t d ƒ ƒ d k s< t ‚ d  S(   NiC   t   67iÿÿÿÿs   -1(   R_   R   Ri   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Integers   s    c           C   s,   t  t t ƒ t t ƒ ƒ d k s( t ‚ d  S(   Ns   pow(sin(x), cos(x))(   R_   R'   Rh   R   Ri   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_functionsx   s    c          C   s  t  d ƒ }  t d t |  d |  ƒ ƒ } t | |  ƒ ƒ d k sF t ‚ t d t |  d |  t ƒ ƒ } t | |  ƒ ƒ d t j d ƒ k s‘ t ‚ t d ƒ } t d t  d	 d
 t	 ƒƒ } t d t |  |  d |  d |  ƒ ƒ } t | | | ƒ d | | ƒd k st ‚ d  S(   NRh   Rl   i   s   2*xs&   const double Catalan = %s;
2*x/Catalani   t   At   it   nt   integeri   t	   assign_tos@   for (int i=0; i<n; i++){
   A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
}(
   R   RY   R   R_   Ri   R
   R   R[   R\   t   True(   Rh   Rl   R–   R—   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_inline_function|   s     ((c          C   s„  t  t t ƒ d d ƒd k s$ t ‚ t  t t ƒ d d ƒ}  d |  j ƒ  k sT t ‚ t  t t ƒ d d d t ƒ}  d |  j ƒ  k sŠ t ‚ t  t t ƒ d d d t ƒ}  d |  j ƒ  k sÀ t ‚ t  t t ƒ ƒ d k sÞ t ‚ t  t t ƒ ƒ d k sü t ‚ t  t t ƒ ƒ d k st ‚ t	 d	 d
 t ƒ\ } } t  t
 t | ƒ t | ƒ ƒ ƒ d k s_t ‚ t  t
 | | ƒ ƒ d k s€t ‚ d  S(   NR   t   C99s	   tgamma(x)t   C89s   not supported in ct   allow_unknown_functionss   ceil(x)s   fabs(x)s   r,sRG   s   ((ceil(r)) % (ceil(s)))s
   fmod(r, s)(   R_   R    Rh   Ri   t   lowerRw   R›   R   R   R   R   (   t	   gamma_c89t   rt   s(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_exceptions   s    $-c          C   sÀ   t  d d t ƒ}  t  d d t ƒ} i d d 6d „  d f d „  d	 f g d
 6} t t |  ƒ d | ƒd k st t ‚ t t |  ƒ d | ƒd k s˜ t ‚ t t | ƒ d | ƒd k s¼ t ‚ d  S(   NRh   R™   R˜   t   ceilR   c         S   s   |  j  S(   N(   Rn   (   Rh   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp   ¢   Rq   R`   c         S   s   |  j  S(   N(   Rn   (   Rh   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp   ¢   Rq   t   absR   Rt   s   ceil(x)s   fabs(x)s   abs(n)(   R   Rw   R›   R_   R   Ri   R   (   Rh   R˜   t   custom_functions(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_user_functions   s    "$$c           C   s;  t  t ƒ d k s t ‚ t  t j ƒ d k s3 t ‚ t  t ƒ d k sK t ‚ t  t j ƒ d k sf t ‚ t  t t @ƒ d k s‚ t ‚ t  t t Bƒ d k sž t ‚ t  t ƒ d k s· t ‚ t  t t @t	 @ƒ d k s× t ‚ t  t t Bt	 Bƒ d k s÷ t ‚ t  t t @t	 Bƒ d k st ‚ t  t t Bt	 @ƒ d	 k s7t ‚ d  S(
   Nt   truet   falses   x && ys   x || ys   !xs   x && y && zs   x || y || zs   z || x && ys   z && (x || y)(
   R_   R›   Ri   R    R©   Rw   Rª   Rh   Rv   t   z(    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_boolean©   s       c          C   sø   d d l  m }  m } m } m } m } m } t |  t t	 ƒ ƒ d k sO t
 ‚ t | t t	 ƒ ƒ d k sp t
 ‚ t | t t	 ƒ ƒ d k s‘ t
 ‚ t | t t	 ƒ ƒ d k s² t
 ‚ t | t t	 ƒ ƒ d k sÓ t
 ‚ t | t t	 ƒ ƒ d k sô t
 ‚ d  S(	   Niÿÿÿÿ(   R   t   Net   Let   Ltt   Gtt   Ges   x == ys   x != ys   x <= ys   x < ys   x > ys   x >= y(   t   sympyR   R­   R®   R¯   R°   R±   R_   Rh   Rv   Ri   (   R   R­   R®   R¯   R°   R±   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Relational·   s    .!!!!!c              s#  t  t t d k  f t d t f ƒ ‰  t ˆ  ƒ d k s= t ‚ t ˆ  d d ƒd k s[ t ‚ t  t t d k  f t d t d k  f t d t f ƒ ‰  t ˆ  ƒ d k s« t ‚ t ˆ  d d ƒd k sÉ t ‚ t  t t d k  f t d t d k f t t ƒ t d	 k f ƒ ‰  t t ‡  f d
 †  ƒ d  S(   Ni   i   s'   ((x < 1) ? (
   x
)
: (
   pow(x, 2)
))Rš   t   cs3   if (x < 1) {
   c = x;
}
else {
   c = pow(x, 2);
}sB   ((x < 1) ? (
   x
)
: ((x < 2) ? (
   x + 1
)
: (
   pow(x, 2)
)))sU   if (x < 1) {
   c = x;
}
else if (x < 2) {
   c = x + 1;
}
else {
   c = pow(x, 2);
}i    c              s
   t  ˆ  ƒ S(   N(   R_   (    (   t   expr(    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp   è   Rq   (   R%   Rh   R›   R_   Ri   R'   R1   t
   ValueError(    (    (   Rµ   s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_PiecewiseÁ   s    %	8		
@c          C   s8   d d l  m }  |  t ƒ } t | ƒ d k s4 t ‚ d  S(   Niÿÿÿÿ(   t   sincs'   ((x != 0) ? (
   sin(x)/x
)
: (
   1
))(   R²   R¸   Rh   R_   Ri   (   R¸   Rµ   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_sincë   s    	c          C   sÙ   t  d t t t d k  f t d t d k  f t d t f ƒ ƒ }  |  d k sT t ‚ t t t t d t d t d t d k  f d t f ƒ t t ƒ d } t  | ƒ d k s· t ‚ t  | d d ƒd	 k sÕ t ‚ d  S(
   Ni   i   sD   2*((x < 1) ? (
   x
)
: ((x < 2) ? (
   x + 1
)
: (
   pow(x, 2)
)))i    g      à?sN   pow(x, 2) + x*y*z + pow(y, 2) + ((x < 0.5) ? (
   0
)
: (
   1
)) + cos(z) - 1Rš   R´   sS   c = pow(x, 2) + x*y*z + pow(y, 2) + ((x < 0.5) ? (
   0
)
: (
   1
)) + cos(z) - 1;(   R_   R%   Rh   R›   Ri   Rv   R«   R   (   t   pRµ   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Piecewise_deep÷   s    B	K	c          C   s4   t  t d k  t t ƒ }  t |  ƒ d k s0 t ‚ d  S(   Ni   s   ((x < 1) ? (
   y
)
: (
   z
))(   R-   Rh   Rv   R«   R_   Ri   (   Rµ   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_ITE  s    	c           C   s   t  t d „  ƒ d  S(   Nc           S   s   t  t t ƒ d d ƒS(   Nt   methodt   garbage(   R_   R'   Rh   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRp      Rq   (   R1   t	   TypeError(    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_settings  s    c       	   C   s¢  d d l  m }  m } d d l m } | d d t ƒ\ } } } } | d | ƒ | d | ƒ | d | ƒ } } }	 |  d	 ƒ | }
 |  d
 ƒ | | f } |  d ƒ | | |	 f } t ƒ   t ƒ  } Wd  QXt ƒ  | _	 | j
 |
 ƒ d k sò t ‚ | j
 | ƒ d | | | k st ‚ | j
 | ƒ d | | | | | |	 k sLt ‚ | j	 t ƒ  k sdt ‚ |  d
 d d ƒ| | f } | j
 | ƒ d d | | k s§t ‚ |  d
 d d d d ƒ| | f } t | ƒ d | d | k sít ‚ |  d
 d d d d | f d | ƒ| | f } t | ƒ d k s3t ‚ |  d
 d | | | f d | ƒ} t | | | |	 f ƒ d k syt ‚ t | d d |	 f ƒ d k sžt ‚ d  S(   Niÿÿÿÿ(   R[   R\   (   R   s   s n m oR™   R—   t   jt   kRh   R–   t   Bs   x[j]s   A[%s]s   B[%s]t   shapei   i   t   stridest   Fi   i   t   offsets   A[o + s*j + i]s   A[m*j + n*k + o + s*i]i   s   A[3*m + n*k + o + 2*s](   i   i   (   i   i   (   i   i   (   t   sympy.tensorR[   R\   R²   R   R›   RZ   R3   t   sett   _not_ct   _print_IndexedRi   R_   (   R[   R\   R   R£   R˜   t   mt   oR—   RÁ   RÂ   Rh   R–   RÃ   Rº   t   Abase(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Indexed#  s.    /
'3'"$.!%c           C   s”   t  t d d ƒ ƒ d k s! t ‚ t  t d d d d d d ƒƒ d k sN t ‚ t  t d d ƒ ƒ d
 k so t ‚ t  t d d ƒ ƒ d k s t ‚ d  S(   NRh   t   ijs   x[i][j]RÅ   t   klRÇ   RÍ   s   x[i*k + j*l + o]i   s   x[3]i   i   s
   x[3][4][5](   i   (   i   i   i   (   R_   R8   Ri   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ElementD  s    !-!c          C   sÙ   d }  t  d d |  f ƒ} t  d d |  f ƒ} t  d d |  d f ƒ} t d |  d ƒ } t | | | | d | | | | d | | ƒ } t | j d | j d	 t ƒ} | d
 | d | d f k sÕ t ‚ d  S(   Ni   Rv   RÄ   Rh   t   Dyi   R—   Rš   t   contracts&   Dy[i] = (y[%s] - y[i])/(x[%s] - x[i]);(   R[   R\   R   R_   t   rhst   lhsRw   Ri   (   t   len_yRv   Rh   RÓ   R—   t   et   code0(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt2   test_ccode_Indexed_without_looking_for_contractionK  s    7c          C   s¨   t  d d t ƒ\ }  } t d ƒ } t d ƒ } t d ƒ } t d | ƒ } t d |  ƒ } d | |  | d	 } t | | | f | | d
 | | ƒ| k s¤ t ‚ d  S(   Ns   n mR™   R–   Rh   Rv   R—   RÁ   s}   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];
s      }
}Rš   (   R   R›   R[   R\   R_   Ri   (   R˜   RÌ   R–   Rh   Rv   R—   RÁ   R£   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_loops_matrix_vectorV  s    c          C   s   t  d d t d t ƒ\ }  } t d ƒ } t d ƒ } t |  | ƒ }  d i |  j j d 6| j d 6} t | |  d	 | |  ƒ| k sŒ t ‚ d  S(
   Ns   i mR™   t   clsRh   Rv   sl   for (int i_%(icount)i=0; i_%(icount)i<m_%(mcount)i; i_%(icount)i++){
   y[i_%(icount)i] = x[i_%(icount)i];
}t   icountt   mcountRš   (	   R   R›   R   R[   R\   t   labelt   dummy_indexR_   Ri   (   R—   RÌ   Rh   Rv   t   expected(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_dummy_loopsk  s    c          C   sê   d d l  m }  m } d d l m } | d d t ƒ\ } } |  d ƒ } |  d ƒ } |  d ƒ } |  d	 ƒ } | d
 | ƒ }	 | d | ƒ }
 d |	 | |
 d } t | |	 |
 f | |
 | |	 | |	 d | |	 ƒ| k sæ t ‚ d  S(   Niÿÿÿÿ(   R[   R\   (   R   s   n mR™   R–   Rh   Rv   R«   R—   RÁ   s‡   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];
s      }
}Rš   (   RÈ   R[   R\   R²   R   R›   R_   Ri   (   R[   R\   R   R˜   RÌ   R–   Rh   Rv   R«   R—   RÁ   R£   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_loops_addz  s    c          C   s7  d d l  m }  m } d d l m } | d d t ƒ\ } } } } |  d ƒ } |  d ƒ } |  d ƒ }	 | d	 | ƒ }
 | d
 | ƒ } | d | ƒ } | d | ƒ } d |
 | | | | | | | | | | | | | | | f d } t | | | | f | |
 | | | f d |	 |
 ƒ| k s3t ‚ d  S(   Niÿÿÿÿ(   R[   R\   (   R   s   n m o pR™   t   at   bRv   R—   RÁ   RÂ   t   lsÅ   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[%s]*b[%s] + y[i];
s            }
      }
   }
}Rš   (   RÈ   R[   R\   R²   R   R›   R_   Ri   (   R[   R\   R   R˜   RÌ   RÍ   Rº   Rä   Rå   Rv   R—   RÁ   RÂ   Ræ   R£   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt&   test_ccode_loops_multiple_contractions’  s    Bc          C   s~  d d l  m }  m } d d l m } | d d t ƒ\ } } } } |  d ƒ } |  d ƒ } |  d ƒ }	 |  d	 ƒ }
 | d
 | ƒ } | d | ƒ } | d | ƒ } | d | ƒ } d | | | | | | | | | | | | | | | | | | | | | | | | | | f d } t | | | | | f | | | | | f |	 | | | f d |
 | ƒ| k szt ‚ d  S(   Niÿÿÿÿ(   R[   R\   (   R   s   n m o pR™   Rä   Rå   R´   Rv   R—   RÁ   RÂ   Ræ   sÏ   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[%s] + b[%s])*c[%s] + y[i];
s            }
      }
   }
}Rš   (   RÈ   R[   R\   R²   R   R›   R_   Ri   (   R[   R\   R   R˜   RÌ   RÍ   Rº   Rä   Rå   R´   Rv   R—   RÁ   RÂ   Ræ   R£   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_loops_addfactor¯  s    ic          C   s  d d l  m }  m } d d l m } | d d t ƒ\ } } } } |  d ƒ } |  d ƒ } |  d ƒ }	 |  d	 ƒ }
 | d
 | ƒ } | d | ƒ } | d | ƒ } d } d | | | | | | d } d | | | d } d | | | d } t | | | | | f | | | | | f | | | | |	 | | | f d |
 | ƒ}	 |	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k st ‚ d  S(   Niÿÿÿÿ(   R[   R\   (   R   s   n m o pR™   Rä   Rå   R´   Rv   R—   RÁ   RÂ   s(   for (int i=0; i<m; i++){
   y[i] = 0;
}
s|   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];
s         }
   }
}
sU   for (int i=0; i<m; i++){
   for (int k=0; k<o; k++){
      y[i] = a[%s]*b[k] + y[i];
s      }
}
sU   for (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_   Ri   (   R[   R\   R   R˜   RÌ   RÍ   Rº   Rä   Rå   R´   Rv   R—   RÁ   RÂ   t   s0t   s1t   s2t   s3(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_loops_multiple_termsÍ  s6    _c          C   s=   t  t t t ƒ t }  t |  d t g ƒd k s9 t ‚ d  S(   Nt   dereferences   x + y + (*z) + sin((*z))(   Rh   Rv   R'   R«   R_   Ri   (   Rµ   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_dereference_printingþ  s    c          C   s{  t  t t t d t t d k f t t f ƒ t t ƒ g ƒ }  t d d d ƒ } t |  | ƒ d k sk t	 ‚ t d | d t d k f | d t f ƒ t | d ƒ | d } t | ƒ d k sÆ t	 ‚ t d d	 d ƒ } t d
 d d ƒ } t  t | d ƒ d t
 | d ƒ g | d | d | d d	 g d | d | d t | d ƒ d d g g ƒ } t | | ƒ d k swt	 ‚ d  S(   Ni   i    R–   i   i   sP   A[0] = x*y;
if (y > 0) {
   A[1] = x + 2;
}
else {
   A[1] = y;
}
A[2] = sin(z);s:   ((x > 0) ? (
   2*A[2]
)
: (
   A[2]
)) + sin(A[1]) + A[0]t   qi   t   Mi   s   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;(   i   i    (   i   i    (   i   i    (   i    i    (   i   i    (   i   i    (   i   i    (   i   i    (   i   i    (   i   i    (   i   i    (   i    i    (   R]   Rh   Rv   R%   R›   R'   R«   R^   R_   Ri   R   R)   (   t   matR–   Rµ   Rð   Rñ   RÌ   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_Matrix_printing  s    >	C	#3c       
   C   sª   t  d ƒ \ }  } t t ƒ  t | d d t d d ƒWd  QXt | d ƒ d k s[ t ‚ t |  | d d | g ƒd k s„ t ‚ t | d d	 d
 ƒd k s¦ t ‚ d  S(   Ns   x, ifi   t   error_on_reservedR   R   s   pow(if_, 2)Rî   s   pow((*if_), 2)*xt   reserved_word_suffixt   _unreserveds   pow(if_unreserved, 2)(   R   R1   R¶   R_   R›   Ri   (   Rh   Rv   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_reserved_words+  s     )c          C   sÆ   t  t ƒ t d }  } t  t t ƒ ƒ d } } t  d t t d ƒ t t d d } } t |  ƒ | k ss t ‚ t |  d ƒ d | k s’ t ‚ t | ƒ | k sª t ‚ t | ƒ | k sÂ t ‚ d  S(   Ns   y*(((x) > 0) - ((x) < 0))s!   (((cos(x)) > 0) - ((cos(x)) < 0))i   sA   pow(x, 2) + x*(((pow(x, 2) + 2*x) > 0) - ((pow(x, 2) + 2*x) < 0))R«   s   z = %s;(   R&   Rh   Rv   R   R_   Ri   (   t   expr1t   ref1t   expr2t   ref2t   expr3t   ref3(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_sign4  s    +c           C   sQ   t  t t t t ƒ ƒ d k s% t ‚ t  t t d t t ƒ ƒ d k sM t ‚ d  S(   Ns
   x = y + z;t   +s   x += y + z;(   R_   R0   Rh   Rv   R«   Ri   R/   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Assignment=  s    %c          C   sI   t  t t d d d ƒ t t d t ƒ g ƒ }  t |  ƒ d k sE t ‚ d  S(   Ni    i
   i   t   *s*   for (x = 0; x < 10; x += 2) {
   y *= x;
}(   R.   Rh   R,   R/   Rv   R_   Ri   (   t   f(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_ForB  s    -c           C   s‚   t  t t d ƒ d d ƒd k s' t ‚ t  t t d ƒ d d ƒd k sN t ‚ t  t t d t t ƒ ƒ d d ƒd k s~ t ‚ d  S(	   Ni    R   Rž   s   ((0 > x) ? 0 : x)R   s
   fmax(0, x)R~   sI   ((0 < ((x < sqrt(x)) ? x : sqrt(x))) ? 0 : ((x < sqrt(x)) ? x : sqrt(x)))(   R_   R#   Rh   Ri   R$   R)   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Max_MinH  s    ''!c           C   sj   t  t t ƒ d d ƒd k s$ t ‚ t  t d d ƒd k sB t ‚ t  t d ƒ d d ƒd k sf t ‚ d  S(   NR   R   s   expm1(x)t   NANR   (   R_   RO   Rh   Ri   R   t   float(    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_standardO  s    $c           C   sC   t  ƒ   t ƒ  Wd  QXt  ƒ   t ƒ  j d k s9 t ‚ Wd  QXd  S(   Nt   C(   RZ   R3   t   languageRi   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_CCodePrinterU  s    

c          C   sa   t  ƒ  }  |  j d k s t ‚ |  j d k s3 t ‚ d |  j k sH t ‚ d |  j k s] t ‚ d  S(   NR  Rž   t   voidt   template(   R4   R	  Ri   R   t   reserved_words(   t
   c89printer(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_C89CodePrinter\  s
    	c          C   s  t  ƒ  j t t ƒ ƒ d k s$ t ‚ t  ƒ  j t t ƒ ƒ d k sH t ‚ t  ƒ  j t t ƒ ƒ d k sl t ‚ t  ƒ  j t t ƒ ƒ d k s t ‚ t  ƒ  j t t t	 t
 ƒ ƒ d k s» t ‚ t  ƒ  j t t ƒ ƒ d k sß t ‚ t  ƒ  j t t ƒ ƒ d k st ‚ t  ƒ  j t t t	 ƒ ƒ d k s*t ‚ t  ƒ  j t t ƒ ƒ d	 k sNt ‚ t  ƒ  j t t d
 t d ƒ ƒ d k s|t ‚ t  ƒ  j t t d
 ƒ ƒ d k s£t ‚ t  ƒ  }  |  j d k sÁt ‚ |  j d k sÖt ‚ d |  j k sët ‚ d |  j k s t ‚ d  S(   Ns   expm1(x)s   log1p(x)s   exp2(x)s   log2(x)s   fma(x, y, -z)s   log10(x)s   cbrt(x)s   hypot(x, y)s	   lgamma(x)i   i   s   fmax(3, fmax(x, pow(x, 2)))s
   fmin(3, x)R  R   RX   t   using(   R5   t   doprintRO   Rh   Ri   RP   RQ   RR   RS   Rv   R«   RT   RU   RV   R"   R#   R$   R	  R   R  (   t
   c99printer(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_C99CodePrinterd  s     $$$$+$$'$.'	c          C   sK   t  t d i t t 6ƒ ƒ }  |  j t t t d ƒ ƒ ƒ d k sG t ‚ d  S(   NRm   s   2.1s   sinl(x + 2.1L)(	   R5   t   dictRJ   RG   R  R'   Rh   R   Ri   (   t   f80_printer(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt"   test_C99CodePrinter__precision_f80w  s    c             s<  t  d d t ƒ}  t t d i t t 6ƒ ƒ } t t d i t t 6ƒ ƒ } t t d i t t 6ƒ ƒ } | j t	 t
 d ƒ ƒ d k s‹ t ‚ | j t	 t
 d ƒ ƒ d k s° t ‚ | j t	 t
 t d ƒ ƒ ƒ d k sÛ t ‚ xZt | | | g d	 d
 d g ƒ D]7\ ‰  ‰ ‡  ‡ f d †  } | t |  ƒ d ƒ | t t
 d ƒ d ƒ | t	 t
 d ƒ t t
 d ƒ d ƒ | t t
 d ƒ d ƒ | t t
 ƒ d ƒ | t t
 d ƒ d ƒ | t |  d ƒ d ƒ | t d |  d d |  d ƒ d ƒ | t t
 d d ƒ d ƒ | t t
 d t
 d ƒ d ƒ | t t
 d ƒ d ƒ | t d t
 d ƒ d ƒ | t t
 d ƒ d  ƒ | t t
 ƒ d! ƒ | d t
 d" ƒ | d t
 d# ƒ | t
 d d$ ƒ | t
 d d% ƒ | t d t
 ƒ d& ƒ | t t
 d ƒ d' ƒ | t t
 t ƒ d( ƒ | t	 d t
 d ƒ d) ƒ | t d t
 d* ƒ d+ ƒ | t d t d ƒ d, ƒ | t d t
 d ƒ d- ƒ | t d t
 d ƒ d. ƒ | t d t
 d ƒ d/ ƒ | t  d t
 d t ƒ d0 ƒ | t! d t
 d ƒ d1 ƒ | t" d t
 d* ƒ d2 ƒ | t# d t d ƒ d3 ƒ | t$ d t
 d ƒ d4 ƒ | t% d t
 d ƒ d5 ƒ | t& d t
 d ƒ d6 ƒ | t' d7 t
 ƒ d8 ƒ | t( d7 t
 ƒ d9 ƒ | t) t
 ƒ d: ƒ | t* t
 ƒ d; ƒ | t+ t
 d ƒ d< ƒ | t, t
 d ƒ d= ƒ | t- t
 t t. ƒ d> ƒ | t/ t
 d t
 d ƒ d? ƒ | t0 t
 d ƒ d@ ƒ qý Wd  S(A   NR˜   R™   Rm   gÍÌÌÌÌÌ @s   sinf(x + 2.1F)s   sin(x + 2.1000000000000001)s   2.0s   sinl(x + 2.0L)R  Rq   Ræ   c            s7   ˆ  j  |  ƒ | j d ˆ d ˆ j ƒ  ƒ k s3 t ‚ d  S(   NR£   R    (   R  t   formatt   upperRi   (   Rµ   t   ref(   Rd   t   suffix(    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   check‡  s    s   abs(n)g       @s   fabs{s}(x + 2.0{S})g      @s.   pow{s}(sin{s}(x + 4.0{S}), cos{s}(x - 2.0{S}))g       @s   exp{s}(8.0{S}*x)s
   exp2{s}(x)s   expm1{s}(4.0{S}*x)i   s   ((n) % (2))i   i   s   ((2*n + 3) % (3*n + 5))g      @s"   fmod{s}(1.0{S}*x + 2.0{S}, 3.0{S})s$   fmod{s}(1.0{S}*x, 2.0{S}*x + 3.0{S})s   log{s}((1.0{S}/2.0{S})*x)s   log10{s}((3.0{S}/2.0{S})*x)s   log2{s}(8.0{S}*x)s   log1p{s}(x)s   pow{s}(2, x)s   pow{s}(2.0{S}, x)s   pow{s}(x, 3)s   pow{s}(x, 4.0{S})s   sqrt{s}(x + 3)s   cbrt{s}(x - 2.0{S})s   hypot{s}(x, y)s   sin{s}(3.0{S}*x + 2.0{S})g      ð?s   cos{s}(3.0{S}*x - 1.0{S})s   tan{s}(4.0{S}*y + 2.0{S})s   asin{s}(3.0{S}*x + 2.0{S})s   acos{s}(3.0{S}*x + 2.0{S})s   atan{s}(3.0{S}*x + 2.0{S})s   atan2{s}(3.0{S}*x, 2.0{S}*y)s   sinh{s}(3.0{S}*x + 2.0{S})s   cosh{s}(3.0{S}*x - 1.0{S})s   tanh{s}(4.0{S}*y + 2.0{S})s   asinh{s}(3.0{S}*x + 2.0{S})s   acosh{s}(3.0{S}*x + 2.0{S})s   atanh{s}(3.0{S}*x + 2.0{S})g      E@s   erf{s}(42.0{S}*x)s   erfc{s}(42.0{S}*x)s   tgamma{s}(x)s   lgamma{s}(x)s   ceil{s}(x + 2.0{S})s   floor{s}(x + 2.0{S})s   fma{s}(x, y, -z)s.   fmax{s}(8.0{S}, fmax{s}(x, pow{s}(x, 4.0{S})))s   fmin{s}(2.0{S}, x)(1   R   R›   R5   R  RH   RG   RI   RJ   R  R'   Rh   Ri   R   t   zipR   R   R   RQ   RO   R   R!   RT   RR   RP   R)   RU   RV   Rv   R*   R   R   R   R   R(   R   R+   R   R   R   R   R   R    R"   R   R   RS   R«   R#   R$   (   R˜   t   f32_printert   f64_printerR  R  (    (   Rd   R  s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_C99CodePrinter__precision}  sh    %%+.%&c          C   sI   t  ƒ  }  |  t d ƒ d k s% t ‚ |  d t d ƒ d k sE t ‚ d  S(   Ni   R‰   i   t	   M_SQRT1_2(   R6   R   Ri   RW   (   t   macros(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_get_math_macros¸  s    	c          C   s  t  d d t ƒ}  t |  d t j |  ƒ ƒ} t | ƒ } t | ƒ d k sQ t ‚ t t d t	 d t
 h ƒ} t | ƒ } t | ƒ d k s t ‚ | j d t ƒ } t | ƒ d k sº t ‚ t t d t d	 ƒ ƒ} t | ƒ } t ƒ  } d
 | j k sü t ‚ | j | ƒ d k st ‚ d
 | j k s,t ‚ t  d d t ƒ}	 t j |	 d t t h ƒ}
 t |
 ƒ } t | ƒ d k s}t ‚ t t t d ƒ d t
 h ƒ} t | ƒ } t | ƒ d k s¿t ‚ t | j | j t d | j ƒ} t | ƒ } t | ƒ d k st ‚ d  S(   NR—   R™   t   types   int it   attrss   const float xt   values   const float x = M_PIt   bools	   stdbool.hs   bool yt   uRG   s   double * const restrict ut
   __float128s   const __float128 xs   const __float128 x = M_PI(   R   R›   R=   R9   t	   from_exprR;   R_   Ri   Rh   RH   R>   t   as_DeclarationR   Rv   R4   t   headersR  R<   t   deducedR?   RX   t   symbolR#  R$  (   R—   t   var1t   dcl1t   var2t   dcl2at   dcl2bt   var3t   dcl3Rd   R'  t   ptr4t   dcl4t   var5t   dcl5at   var5bt   dcl5b(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Declaration¾  s2    	!c          C   s_  t  d t j t j t j ƒ }  t t d i |  t 6d i d |  6d i d |  6d i d t 6d |  6d i d |  6ƒ ƒ } | j t	 ƒ d
 k s t
 ‚ | j s  t
 ‚ | j s° t
 ‚ | j sÀ t
 ‚ | j d ƒ d k sÛ t
 ‚ | j së t
 ‚ | j sû t
 ‚ | j d	 h k st
 ‚ | j t d d ƒ ƒ d k s7t
 ‚ | j t t	 ƒ ƒ d k sXt
 ‚ | j t d d t ƒƒ d k st
 ‚ t t	 |  d t h ƒ} t | ƒ } t | ƒ d k s»t
 ‚ t t	 |  t d t h ƒ} t | ƒ } | j | ƒ d k sýt
 ‚ t t	 |  d t j d ƒ d t h ƒ} t | ƒ } | j | ƒ d t j |  j ƒ k s[t
 ‚ d  S(   Nt	   _Float128Rm   t   type_literal_suffixest   Qt   type_func_suffixest   f128t   type_math_macro_suffixest   type_macrost!   __STDC_WANT_IEC_60559_TYPES_EXT__Rh   g       @s   2.0Qi   i   s	   1.0Q/2.0Qs
   sinf128(x)Ru   s   cosf128(2.0Q)R$  s   const _Float128 xs   const _Float128 x = M_PIf128R%  i&   s   const _Float128 x = %sQ(   RC  (   R:   RK   t   nbitst   nmantt   nexpR5   R  RG   R  Rh   Ri   R+  t	   librariesR!  R   R'   R   Rw   R=   R>   R;   R_   R   R
   R   t   decimal_dig(   R@  t   p128R7  R8  R9  R:  t   dcl5c(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_C99CodePrinter_custom_typeÞ  s<    	
$!''c          C   s¨   t  d d d ƒ }  t  d d d ƒ } t  d d d ƒ } t |  d
 ƒ d k sR t ‚ t d |  d ƒ d k sr t ‚ | d j | |  | ƒ } t | ƒ d	 k s¤ t ‚ d  S(   NR–   i   i   RÃ   R  i    s   A[0]s   3*A[0]s
   (A - B)[0](   i    i    (   i    i    (   i    i    (   R^   R_   Ri   t   subs(   R–   RÃ   R  RÆ   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_MatrixElement_printing  s     c          C   s   d t  f d „  ƒ  Y}  d  S(   Nt
   MySubClassc           B   s   e  Z RS(    (   Rf   Rg   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyRN    s   (   R3   (   RN  (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_subclass_CCodePrinter  s    c           C   s0  t  t t d ƒ ƒ d k s" t ‚ t  t t t d ƒ ƒ ƒ d k sJ t ‚ t  t d t d ƒ ƒ d k sp t ‚ t  t t d ƒ ƒ d k s’ t ‚ t  t t d ƒ ƒ d k s´ t ‚ t  t t ƒ d k sÐ t ‚ t  t t d ƒ d	 k sð t ‚ t  t t d
 ƒ d k st ‚ t  t d t ƒ d k s0t ‚ t  t d t ƒ d k sPt ‚ t  t d t t ƒ ƒ d k svt ‚ t  t d t t ƒ ƒ d k sœt ‚ t  t t d ƒ ƒ d k s¾t ‚ t  t t d ƒ ƒ d k sàt ‚ t  t d t d ƒ ƒ d k st ‚ t  t d t d ƒ ƒ d k s,t ‚ d  S(   Ni   s   z + M_Es   z + M_LOG2Ei   s	   z + M_LN2i
   s
   z + M_LN10s   z + M_PIs
   z + M_PI_2i   s
   z + M_PI_4s
   z + M_1_PIs
   z + M_2_PIs   z + M_2_SQRTPIs   z + M_SQRT2s   z + M_SQRT1_2(	   R_   R«   R   Ri   RR   R!   R   R)   RW   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_math_macros  s     "(&""    &&""&c           C   s:   t  t d ƒ ƒ d k s t ‚ t  t ƒ d k s6 t ‚ d  S(   NR  t   int(   R_   R9   Ri   RL   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_Type,  s    c       	   C   sd  t  t d ƒ ƒ d k s t ‚ t  t t t ƒ d k t t d d ƒ g ƒ ƒ d k sZ t ‚ t  t t t d ƒ g ƒ ƒ d k s„ t ‚ t	 t
 t d t ƒƒ }  t  t t d |  g ƒ ƒ d	 k sÃ t ‚ t  t t d |  g t t t d
 ƒ g ƒ ƒ d k sý t ‚ t t t t t g d ƒ t d t g ƒ t t ƒ ƒ } t  | ƒ d j d d d d g ƒ k s`t ‚ d  S(   Ns   this is a comments   // this is a commenti   t   -s"   while (fabs(x) > 1) {
   x -= 1;
}s   {
   x += 1;
}R#  t   pwers   double pwer(double x)i   s*   double pwer(double x){
   x = pow(x, 2);
}s   %d %ds   
s   x;s   printf("%d %d", x, y);s   pwer(x);s	   return x;(   R_   RM   Ri   R@   R¦   Rh   R/   RA   R7   R;   R=   RG   RC   RD   R0   RN   RB   Rv   RE   RF   t   join(   t   inp_xt   block(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   test_ccode_codegen_ast1  s&    -'+N(£   t
   sympy.coreR    R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   R   t   sympy.functionsR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   t
   sympy.setsR,   t   sympy.logicR-   t   sympy.codegenR.   R/   R0   t   sympy.utilities.pytestR1   R2   t   sympy.printing.ccodeR3   R4   R5   R6   t   sympy.codegen.astR7   R8   R9   R:   R;   R<   R=   R>   R?   R@   RA   RB   RC   RD   RE   RF   RG   RH   RI   RJ   RK   RL   RM   RN   t   sympy.codegen.cfunctionsRO   RP   RQ   RR   RS   RT   RU   RV   RW   t   sympy.codegen.cnodesRX   t   sympy.utilities.lambdifyRY   RZ   RÈ   R[   R\   t   sympy.matricesR]   R^   R²   R_   Rh   Rv   R«   Rj   Rk   Rz   R}   Rˆ   RŽ   R   R’   R”   R•   Rœ   R¤   R¨   R¬   R³   R·   R¹   R»   R¼   RÀ   RÏ   RÒ   RÚ   RÛ   Râ   Rã   Rç   Rè   Rí   Rï   Ró   R÷   Rþ   R   R  R  R  R
  R  R  R  R  R"  R;  RK  RM  RO  RP  RR  RX  (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_ccode.pyt   <module>   s‚   p¬"š@															
	*					!								1		(												;		 	(				