From c5cdc7635350e1cc9c83cfd752d75d2272bc5754 Mon Sep 17 00:00:00 2001 From: markus <markus.holzer@fau.de> Date: Mon, 8 Jun 2020 22:21:29 +0200 Subject: [PATCH] Fix: vectorization of float sqrt --- pystencils/backends/cbackend.py | 2 ++ pystencils/data_types.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 46d9e3a77..696690e89 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 786351f52..c5233ed64 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]) -- GitLab