def _extractFunctionsFromSympy(self, expr, top=False):
newVars = []
newArgs = []
isExpensive = False
for arg in expr.args:
(newVarsFromArg, newArg,dontcare) = self._extractFunctionsFromSympy(arg)
newVars += newVarsFromArg
newArgs.append(newArg)
if newVars:
expr = expr.func(*newArgs)
if isinstance(expr.func, type(sympy.Function)) or (
expr.func == sympy.Pow and (
not expr.exp.is_constant or
int(expr.exp) != expr.exp)):
if top:
isExpensive = True
else:
newSym = self.addSSA("_expensive_functions", expr)
expr = newSym
newVars.append(newSym)
return (newVars, expr, isExpensive)
评论列表
文章目录