diff --git a/tests/nbackend/test_code_printing.py b/tests/nbackend/test_code_printing.py index 5e80cae223c78ab00c911df9144d42768cfb52e1..c8294c6dd4ac1a8683a5f779cb52d3e628cbc708 100644 --- a/tests/nbackend/test_code_printing.py +++ b/tests/nbackend/test_code_printing.py @@ -75,3 +75,27 @@ def test_arithmetic_precedence(): expr = (a / b) + (c / (d + e) * f) code = cprint(expr) assert code == "a / b + c / (d + e) * f" + + +def test_printing_integer_functions(): + (i, j, k) = [PsExpression.make(PsSymbol(x, UInt(64))) for x in "ijk"] + cprint = CAstPrinter() + + from pystencils.backend.ast.expressions import ( + PsLeftShift, + PsRightShift, + PsBitwiseAnd, + PsBitwiseOr, + PsBitwiseXor, + PsIntDiv, + ) + + expr = PsBitwiseAnd( + PsBitwiseXor( + PsBitwiseXor(j, k), + PsBitwiseOr(PsLeftShift(i, PsRightShift(j, k)), PsIntDiv(i, k)), + ), + i, + ) + code = cprint(expr) + assert code == "(j ^ k ^ (i << (j >> k) | i / k)) & i"