diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 46d9e3a77e6a163acec4fbfcf1ddf0f9a15f8712..696690e8972f26daaf17a4475cc210ffd946052e 100644 --- a/pystencils/backends/cbackend.py +++ b/pystencils/backends/cbackend.py @@ -391,6 +391,8 @@ class CustomSympyPrinter(CCodePrinter): if isinstance(arg, sp.Number) and arg.is_finite: return self._typed_number(arg, data_type) else: + if str(arg) == "-1": + print("!!") return "((%s)(%s))" % (data_type, self._print(arg)) elif isinstance(expr, fast_division): return "({})".format(self._print(expr.args[0] / expr.args[1])) diff --git a/pystencils/data_types.py b/pystencils/data_types.py index 786351f528573179543900bde760f675ddfe10a6..c5233ed6408b7775c97ba84c80fb549e78930500 100644 --- a/pystencils/data_types.py +++ b/pystencils/data_types.py @@ -550,7 +550,7 @@ def get_type_of_expression(expr, return result elif isinstance(expr, sp.Pow): base_type = get_type(expr.args[0]) - if expr.exp.is_integer: + if expr.exp.is_integer or expr.exp == sp.Rational(1, 2): return base_type else: return collate_types([create_type(default_float_type), base_type])