def __init__(self, expr, dtype=None):
assert isinstance(expr, Eq)
assert isinstance(expr.lhs, (Symbol, Indexed))
self.expr = expr
self.dtype = dtype
# Traverse /expression/ to determine meta information
# Note: at this point, expressions have already been indexified
self.reads = [i for i in retrieve_terminals(self.expr.rhs)
if isinstance(i, (types.Indexed, types.Symbol))]
self.reads = filter_ordered(self.reads)
self.functions = [self.write] + [i.base.function for i in self.reads]
self.functions = filter_ordered(self.functions)
# Filter collected dimensions and functions
self.dimensions = flatten(i.indices for i in self.functions)
self.dimensions = filter_ordered(self.dimensions)
评论列表
文章目录