looks good, but please put a little description on what issue 1329 was 
about, so we don't have to go to the issue tracker to understand the patch.

Tomasz Buchert wrote:
> ---
>  sympy/printing/ccode.py            |   21 +++++++++++++++++----
>  sympy/printing/tests/test_ccode.py |   27 ++++++++++++++++++++++-----
>  2 files changed, 39 insertions(+), 9 deletions(-)
> 
> diff --git a/sympy/printing/ccode.py b/sympy/printing/ccode.py
> index e62786e..a1341b5 100644
> --- a/sympy/printing/ccode.py
> +++ b/sympy/printing/ccode.py
> @@ -7,19 +7,32 @@ from sympy.printing.precedence import precedence, PRECEDENCE
>  from sympy.core.basic import S
>  
>  class CCodePrinter(StrPrinter):
> -    """A printer to convert python expressions to stings of c code"""
> +    """A printer to convert python expressions to strings of c code"""
>      printmethod = "_ccode_"
>  
>      def _print_Pow(self, expr):
>          PREC = precedence(expr)
>          if expr.exp is S.NegativeOne:
> -            return '1/%s'%(self.parenthesize(expr.base, PREC))
> +            return '1.0/%s'%(self.parenthesize(expr.base, PREC))
>          else:
>              return 'pow(%s,%s)'%(self.parenthesize(expr.base, PREC),
>                                   self.parenthesize(expr.exp, PREC))
>  
> +    def _print_Rational(self, expr):
> +        p, q = int(expr.p), int(expr.q)
> +        return '%d.0/%d.0' % (p, q)
> +
>      def _print_Exp1(self, expr):
> -        return "exp(1)"
> +        return "M_E"
> +
> +    def _print_Pi(self, expr):
> +        return 'M_PI'
> +
> +    def _print_Infinity(self, expr):
> +        return 'HUGE_VAL'
> +
> +    def _print_NegativeInfinity(self, expr):
> +        return '-HUGE_VAL'
>  
>      def _print_Piecewise(self, expr):
>          ecpairs = ["(%s) {\n%s\n}\n" % (self._print(c), self._print(e)) \
> @@ -44,7 +57,7 @@ def ccode(expr):
>          >>> from sympy.abc import *
>  
>          >>> ccode((2*tau)**Rational(7,2))
> -        '8*pow(2,(1/2))*pow(tau,(7/2))'
> +        '8*pow(2,(1.0/2.0))*pow(tau,(7.0/2.0))'
>      """
>      return CCodePrinter().doprint(expr)
>  
> diff --git a/sympy/printing/tests/test_ccode.py 
> b/sympy/printing/tests/test_ccode.py
> index 9ff2587..9534891 100644
> --- a/sympy/printing/tests/test_ccode.py
> +++ b/sympy/printing/tests/test_ccode.py
> @@ -1,4 +1,5 @@
> -from sympy import abs, exp, Function, Piecewise, symbols
> +from sympy import sin, cos, abs, exp, pi, oo, symbols
> +from sympy import Function, Piecewise, Rational, Integer
>  
>  from sympy.printing import ccode
>  from sympy.utilities.pytest import XFAIL
> @@ -9,8 +10,8 @@ g = Function('g')
>  def test_printmethod():
>      class fabs(abs):
>          def _ccode_(self):
> -            return "fabs(%s);" % ccode(self.args[0])
> -    assert ccode(fabs(x)) == "fabs(x);"
> +            return "fabs(%s)" % ccode(self.args[0])
> +    assert ccode(fabs(x)) == "fabs(x)"
>  
>  def test_ccode_Pow():
>      assert ccode(x**3) == "pow(x,3)"
> @@ -18,8 +19,24 @@ def test_ccode_Pow():
>      assert ccode(1/(g(x)*3.5)**(x - y**x)/(x**2 + y)) == \
>          "pow((3.5*g(x)),(-x + pow(y,x)))/(y + pow(x,2))"
>  
> -def test_ccode_Exp1():
> -    assert ccode(exp(1)) == "exp(1)"
> +def test_ccode_constants():
> +    assert ccode(exp(1)) == "M_E"
> +    assert ccode(pi) == "M_PI"
> +    assert ccode(oo) == "HUGE_VAL"
> +    assert ccode(-oo) == "-HUGE_VAL"
> +
> +def test_ccode_Rational():
> +    assert ccode(Rational(3,7)) == "3.0/7.0"
> +    assert ccode(Rational(18,9)) == "2"
> +    assert ccode(Rational(3,-7)) == "-3.0/7.0"
> +    assert ccode(Rational(-3,-7)) == "3.0/7.0"
> +
> +def test_ccode_Integer():
> +    assert ccode(Integer(67)) == "67"
> +    assert ccode(Integer(-1)) == "-1"
> +
> +def test_ccode_functions():
> +    assert ccode(sin(x) ** cos(x)) == "pow(sin(x),cos(x))"
>  
>  def test_ccode_Piecewise():
>      p = ccode(Piecewise((x,x<1),(x**2,True)))


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy-patches" group.
To post to this group, send email to sympy-patches@googlegroups.com
To unsubscribe from this group, send email to 
sympy-patches+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sympy-patches?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to