diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 92a6080c73389a815163157efefac2186aeee09e..18fd1d344b750b61bd24b1ddfc45199da14848f2 100644 --- a/pystencils/backends/cbackend.py +++ b/pystencils/backends/cbackend.py @@ -263,6 +263,9 @@ class CustomSympyPrinter(CCodePrinter): result = super(CustomSympyPrinter, self)._print_Piecewise(expr) return result.replace("\n", "") + def _print_NoEvaluationPiecewise(self, expr): + return self._print_Piecewise(expr) + def _print_Function(self, expr): infix_functions = { bitwise_xor: '^', diff --git a/pystencils/sympyextensions.py b/pystencils/sympyextensions.py index 86614a21224d5891e8890868771c6d9dc693f9c0..db5a6792eff11ff00abbd02a2309966d237fc359 100644 --- a/pystencils/sympyextensions.py +++ b/pystencils/sympyextensions.py @@ -580,3 +580,10 @@ def sort_assignments_topologically(assignments: Sequence[Assignment]) -> List[As class SymbolCreator: def __getattribute__(self, name): return sp.Symbol(name) + + +class NoEvaluationPiecewise(sp.Piecewise): + def __new__(cls, *args, **kwargs): + kwargs['evaluate'] = False + obj = super(NoEvaluationPiecewise, cls).__new__(cls, *args, **kwargs) + return obj