diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 46d9e3a77e6a163acec4fbfcf1ddf0f9a15f8712..3552aeea4f4b280837650021322dd551c3c0f5e2 100644 --- a/pystencils/backends/cbackend.py +++ b/pystencils/backends/cbackend.py @@ -362,7 +362,7 @@ class CustomSympyPrinter(CCodePrinter): return result.replace("\n", "") def _print_Abs(self, expr): - if expr.is_integer: + if expr.args[0].is_integer: return 'abs({0})'.format(self._print(expr.args[0])) else: return 'fabs({0})'.format(self._print(expr.args[0])) diff --git a/pystencils_tests/test_abs.py b/pystencils_tests/test_abs.py new file mode 100644 index 0000000000000000000000000000000000000000..53917bcc60a8b409490c492b8281d90b44003c25 --- /dev/null +++ b/pystencils_tests/test_abs.py @@ -0,0 +1,19 @@ +import sympy + +import pystencils +from pystencils.data_types import cast_func, create_type + + +def test_abs(): + x, y, z = pystencils.fields('x, y, z: float64[2d]') + + default_int_type = create_type('int64') + + assignments = pystencils.AssignmentCollection({ + x[0, 0]: sympy.Abs(cast_func(y[0, 0], default_int_type)) + }) + + ast = pystencils.create_kernel(assignments, target="gpu") + code = pystencils.get_code_str(ast) + print(code) + assert 'fabs(' not in code