From 748fb4958397b8cd2954c721d622528b2b91502c Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Wed, 2 Nov 2011 16:16:05 -0400 Subject: [PATCH] Force parentheses around remainders and floordivs. (Those are not associative.) --- pymbolic/mapper/c_code.py | 11 +++++------ pymbolic/mapper/stringifier.py | 6 ++---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/pymbolic/mapper/c_code.py b/pymbolic/mapper/c_code.py index 4a1b9b7..bae2d10 100644 --- a/pymbolic/mapper/c_code.py +++ b/pymbolic/mapper/c_code.py @@ -67,12 +67,11 @@ class CCodeMapper(SimplifyingSortingStringifyMapper): # Let's see how bad of an idea this is--sane people would only # apply this to integers, right? - from pymbolic.mapper.stringifier import PREC_PRODUCT, PREC_POWER - return self.parenthesize_if_needed( - self.format("%s/%s", - self.rec(expr.numerator, PREC_PRODUCT), - self.rec(expr.denominator, PREC_POWER)), # analogous to ^{-1} - enclosing_prec, PREC_PRODUCT) + from pymbolic.mapper.stringifier import ( + PREC_PRODUCT, PREC_POWER) + return self.format("(%s/%s)", + self.rec(expr.numerator, PREC_PRODUCT), + self.rec(expr.denominator, PREC_POWER)) # analogous to ^{-1} def map_common_subexpression(self, expr, enclosing_prec): try: diff --git a/pymbolic/mapper/stringifier.py b/pymbolic/mapper/stringifier.py index 677d8b4..b6c5c0b 100644 --- a/pymbolic/mapper/stringifier.py +++ b/pymbolic/mapper/stringifier.py @@ -112,11 +112,9 @@ class StringifyMapper(pymbolic.mapper.RecursiveMapper): enclosing_prec, PREC_POWER) def map_remainder(self, expr, enclosing_prec): - return self.parenthesize_if_needed( - self.format("%s %% %s", + return self.format("(%s %% %s)", self.rec(expr.numerator, PREC_PRODUCT), - self.rec(expr.denominator, PREC_POWER)), # analogous to ^{-1} - enclosing_prec, PREC_PRODUCT) + self.rec(expr.denominator, PREC_POWER)) # analogous to ^{-1} def map_polynomial(self, expr, enclosing_prec): from pymbolic.primitives import flattened_sum -- GitLab