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