Skip to content
Snippets Groups Projects
Commit 8c4d996a authored by Dominic Kempf's avatar Dominic Kempf
Browse files

Code generation time evaluationof products and sums

parent 4b056248
No related branches found
No related tags found
No related merge requests found
......@@ -37,6 +37,7 @@ from ufl.classes import (Coefficient,
JacobianDeterminant,
)
from pytools import product as ptproduct
import pymbolic.primitives as prim
import numpy as np
......@@ -278,6 +279,9 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker):
#
def product(self, o):
ops = tuple(self.call(op) for op in o.ufl_operands)
if all(isinstance(op, (int, float)) for op in ops):
return ptproduct(ops)
return prim.flattened_product(tuple(self.call(op) for op in o.ufl_operands))
def float_value(self, o):
......@@ -290,6 +294,9 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker):
return prim.quotient(self.call(o.ufl_operands[0]), self.call(o.ufl_operands[1]))
def sum(self, o):
ops = tuple(self.call(op) for op in o.ufl_operands)
if all(isinstance(op, (int, float)) for op in ops):
return sum(ops)
return prim.flattened_sum(tuple(self.call(op) for op in o.ufl_operands))
def zero(self, o):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment