From c66d8970d0f57bcac75c31d1d9fa11b4975b1923 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Thu, 31 Aug 2017 11:40:09 +0200
Subject: [PATCH] Automatically optimize quotients in pymbolic

---
 python/dune/perftool/ufl/visitor.py | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/python/dune/perftool/ufl/visitor.py b/python/dune/perftool/ufl/visitor.py
index d3c4ebe7..e31ad9f2 100644
--- a/python/dune/perftool/ufl/visitor.py
+++ b/python/dune/perftool/ufl/visitor.py
@@ -256,8 +256,7 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker):
     #
 
     def product(self, o):
-        from pymbolic import flattened_product
-        return flattened_product(tuple(self.call(op) for op in o.ufl_operands))
+        return prim.flattened_product(tuple(self.call(op) for op in o.ufl_operands))
 
     def float_value(self, o):
         return o.value()
@@ -266,11 +265,10 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker):
         return o.value()
 
     def division(self, o):
-        return Quotient(self.call(o.ufl_operands[0]), self.call(o.ufl_operands[1]))
+        return prim.quotient(self.call(o.ufl_operands[0]), self.call(o.ufl_operands[1]))
 
     def sum(self, o):
-        from pymbolic import flattened_sum
-        return flattened_sum(tuple(self.call(op) for op in o.ufl_operands))
+        return prim.flattened_sum(tuple(self.call(op) for op in o.ufl_operands))
 
     def zero(self, o):
         # UFL has Zeroes with shape. We ignore those indices.
-- 
GitLab