From 4c6e977ff2afba3d15de17c7846f3644ed49c95a Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Sat, 21 Jan 2012 15:26:43 -0500 Subject: [PATCH] Don't generate x**z in C when x*(*z) is meant--i.e. add spaces. --- pymbolic/mapper/c_code.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pymbolic/mapper/c_code.py b/pymbolic/mapper/c_code.py index bae2d10..0c06625 100644 --- a/pymbolic/mapper/c_code.py +++ b/pymbolic/mapper/c_code.py @@ -27,6 +27,15 @@ class CCodeMapper(SimplifyingSortingStringifyMapper): return self.copy(self.cse_name_list + cses_and_values) # mappings ---------------------------------------------------------------- + def map_product(self, expr, enclosing_prec): + from pymbolic.mapper.stringifier import PREC_PRODUCT + return self.parenthesize_if_needed( + # Spaces prevent '**z' (times dereference z), which + # is hard to read. + + self.join_rec(" * ", expr.children, PREC_PRODUCT), + enclosing_prec, PREC_PRODUCT) + def map_constant(self, x, enclosing_prec): if isinstance(x, complex): return "std::complex<%s>(%s, %s)" % ( -- GitLab