diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py
index dd75f42d52ee467166fe111f85e868bb33e934ba..46d9e3a77e6a163acec4fbfcf1ddf0f9a15f8712 100644
--- a/pystencils/backends/cbackend.py
+++ b/pystencils/backends/cbackend.py
@@ -361,6 +361,12 @@ class CustomSympyPrinter(CCodePrinter):
         result = super(CustomSympyPrinter, self)._print_Piecewise(expr)
         return result.replace("\n", "")
 
+    def _print_Abs(self, expr):
+        if expr.is_integer:
+            return 'abs({0})'.format(self._print(expr.args[0]))
+        else:
+            return 'fabs({0})'.format(self._print(expr.args[0]))
+
     def _print_Type(self, node):
         return str(node)
 
diff --git a/pystencils/cpu/vectorization.py b/pystencils/cpu/vectorization.py
index f99c77f2d95f1d45191726101718beff7c9d3b0e..12b492cf452e27220b3013ac6339aeaf6073c051 100644
--- a/pystencils/cpu/vectorization.py
+++ b/pystencils/cpu/vectorization.py
@@ -176,6 +176,10 @@ def insert_vector_casts(ast_node):
                                         visit_expr(expr.args[4]))
         elif isinstance(expr, cast_func):
             return expr
+        elif expr.func is sp.Abs:
+            new_arg = visit_expr(expr.args[0])
+            pw = sp.Piecewise((-1 * new_arg, new_arg < 0), (new_arg, True))
+            return visit_expr(pw)
         elif expr.func in handled_functions or isinstance(expr, sp.Rel) or isinstance(expr, BooleanFunction):
             new_args = [visit_expr(a) for a in expr.args]
             arg_types = [get_type_of_expression(a) for a in new_args]