ExpressionDifferentiator

public class ExpressionDifferentiator

Object that knows how to differentiate an expression.

Constructors

ExpressionDifferentiator

protected ExpressionDifferentiator(DifferentiationEnv adEnv)

Constructor.

Methods

adjointDifferentiateAssignedExpression

protected TapList<DiffAssignmentNode>[] adjointDifferentiateAssignedExpression(Tree lhs, boolean needSetDiffLhs, Tree expression, boolean needDiffRhs, TapList<NewBlockGraphNode> toPrecomputes, BoolVector beforeActiv, SymbolTable diffSymbolTable)

Adjoint differentiation of expression from assignment lhs:=expression.

Parameters
  • needSetDiffLhs – when true (general case, e.g. diffLhs is needed upstream) we must generate an instruction that recomputes diffLhs.

  • needDiffRhs – when true (general case, e.g. diffLhs is active downstream) we must generate the updates of the diff variables of the rhs expression.

Returns

an array (one per replica, in general only one) of lists of future differentiated assignments

cutCostsString

public static String cutCostsString(Tree tree)

getCost

protected static int getCost(Tree expression)

Run-time cost of expression.

Parameters
  • expression – expression to split if cost > 30.

Returns

run-time cost.

tangentDifferentiateAssignedExpression

protected Tree[] tangentDifferentiateAssignedExpression(Tree lhs, Tree expression, TapList<NewBlockGraphNode> toPrecomputes, TapList<DiffAssignmentNode> toPrecomputesDiff, Tree copySrcAssignment, BoolVector beforeActiv, TapPair<TapList<Tree>, TapList<Tree>> primRW, TapPair<TapList<Tree>, TapList<Tree>> diffRW, SymbolTable diffSymbolTable)

Tangent differentiation of expression from assignment lhs:=expression.

Returns

an array (one per replica, in general only one) of tangent diff assignment.

tangentDifferentiatePlainExpression

protected Tree[] tangentDifferentiatePlainExpression(ToObject<Tree> toPrimalExp, TapList<NewBlockGraphNode> toPrecomputes, TapList<DiffAssignmentNode> toPrecomputesDiff, BoolVector beforeActiv, TapPair<TapList<Tree>, TapList<Tree>> primRW, TapPair<TapList<Tree>, TapList<Tree>> diffRW, SymbolTable diffSymbolTable)

Tangent differentiation of a standalone expression (given in toPrimalExp.obj).

Returns

an array (one per replica, in general only one) of tangent diff expression.