From db4e5a862b0c9082b20152269772d269a0bb129c Mon Sep 17 00:00:00 2001
From: Stephan Seitz <stephan.seitz@fau.de>
Date: Sun, 18 Aug 2019 13:28:26 +0200
Subject: [PATCH] Avoid optimizations of IntegerFunctionTwoArgsMixIn

---
 pystencils/math_optimizations.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/pystencils/math_optimizations.py b/pystencils/math_optimizations.py
index 44fda53e..0b64b3e7 100644
--- a/pystencils/math_optimizations.py
+++ b/pystencils/math_optimizations.py
@@ -9,6 +9,7 @@ import itertools
 
 from pystencils import Assignment
 from pystencils.astnodes import SympyAssignment
+from pystencils.integer_functions import IntegerFunctionTwoArgsMixIn
 
 try:
     from sympy.codegen.rewriting import optims_c99, optimize
@@ -24,6 +25,9 @@ try:
     optims_pystencils_cpu = [evaluate_constant_terms] + list(optims_c99)
     optims_pystencils_gpu = [evaluate_constant_terms] + list(optims_c99)
 except ImportError:
+    from warnings import warn
+    warn("Could not import ReplaceOptim, optims_c99, optimize from sympy.codegen.rewriting."
+         "Please update your sympy installation!")
     optims_c99 = []
     optims_pystencils_cpu = []
     optims_pystencils_gpu = []
@@ -34,7 +38,8 @@ def optimize_assignments(assignments, optimizations):
 
     if HAS_REWRITING:
         assignments = [Assignment(a.lhs, optimize(a.rhs, optimizations))
-                       if hasattr(a, 'lhs') else a for a in assignments]
+                       if hasattr(a, 'lhs') and not a.rhs.atoms(IntegerFunctionTwoArgsMixIn)
+                       else a for a in assignments]
         assignments_nodes = [a.atoms(SympyAssignment) for a in assignments]
         for a in itertools.chain.from_iterable(assignments_nodes):
             a.optimize(optimizations)
-- 
GitLab