From cb42f2c04e89534746849d6c41cce3238a990fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=B6nig?= <jan.hoenig@fau.de> Date: Thu, 17 Feb 2022 17:16:56 +0100 Subject: [PATCH] Reverting back to previous more correctly broken implementation --- pystencils/backends/cbackend.py | 2 +- pystencils/integer_set_analysis.py | 5 +++-- pystencils/transformations.py | 3 +-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py index 139c8b0f6..f425eef88 100644 --- a/pystencils/backends/cbackend.py +++ b/pystencils/backends/cbackend.py @@ -219,7 +219,7 @@ class CBackend: method_name = f"_print_{cls.__name__}" if hasattr(self, method_name): return getattr(self, method_name)(node) - return self.sympy_printer.doprint(node) + raise NotImplementedError(f"{self.__class__.__name__} does not support node of type {node.__class__.__name__}") def _print_AbstractType(self, node): return str(node) diff --git a/pystencils/integer_set_analysis.py b/pystencils/integer_set_analysis.py index a3fcd37a2..f90d89ab7 100644 --- a/pystencils/integer_set_analysis.py +++ b/pystencils/integer_set_analysis.py @@ -5,7 +5,7 @@ import sympy as sp import pystencils.astnodes as ast from pystencils.typing import parents_of_type -from pystencils.backends import generate_c +from pystencils.backends.cbackend import CustomSympyPrinter def remove_brackets(s): @@ -52,7 +52,8 @@ def simplify_loop_counter_dependent_conditional(conditional): dofs_in_loops, iteration_set = isl_iteration_set(conditional) if dofs_in_condition.issubset(dofs_in_loops): symbol_names = ','.join(dofs_in_loops) - condition_str = remove_brackets(generate_c(conditional.condition_expr)) + condition_str = CustomSympyPrinter().doprint(conditional.condition_expr) + condition_str = remove_brackets(condition_str) condition_set = isl.BasicSet(f"{{ [{symbol_names}] : {condition_str} }}") if condition_set.is_empty(): diff --git a/pystencils/transformations.py b/pystencils/transformations.py index 50ee67f7a..c022e728d 100644 --- a/pystencils/transformations.py +++ b/pystencils/transformations.py @@ -772,7 +772,7 @@ def simplify_conditionals(node: ast.Node, loop_counter_simplification: bool = Fa default. """ for conditional in node.atoms(ast.Conditional): - # TODO simplify conditional before the type system! + # TODO simplify conditional before the type system! Casts make it very hard here # conditional.condition_expr = sp.simplify(conditional.condition_expr) if conditional.condition_expr == sp.true: conditional.parent.replace(conditional, [conditional.true_block]) @@ -781,7 +781,6 @@ def simplify_conditionals(node: ast.Node, loop_counter_simplification: bool = Fa elif loop_counter_simplification: try: # noinspection PyUnresolvedReferences - raise ImportError from pystencils.integer_set_analysis import simplify_loop_counter_dependent_conditional simplify_loop_counter_dependent_conditional(conditional) except ImportError: -- GitLab