Classes to perform differentiation of equations and various utility classes. The main class is {@link org.lsmp.djep.djep.DifferentiationVisitor DifferentiationVisitor} which performs the differentation by repeated applications of the chain, product and quotient rules. Typically the result of differentation should be simplified to remove occurences of redundant expressions (for example diff(x^2.0,x) is 2.0*x^1.0*1.0 which is simplified to 2.0*x).

For each function, a rule is used to specify how to differentiate it. For example, the differative of sin is specified using

addDiffRule(new MacroDiffRules(Jep,"sin","cos(x)"))
There are various classes of differentiation rules which all implement {@link org.lsmp.djep.djep.DiffRulesI DiffRulesI} and have special behaviours.

Variables can also be differentiated, and the derivative of y with respect to x will be represented by the {@link org.lsmp.djep.djep.PartialDerivative PartialDerivative} dy/dx. To allow this, the {@link org.lsmp.djep.djep.DVariable DVariable} is used to represent variable and {@link org.lsmp.djep.djep.DSymbolTable DSymbolTable} and {@link org.lsmp.djep.djep.DVariableFactory DVariableFactory} are used to control the look up of variables and the creation of new variables.

Sub-packages
org.lsmp.djep.djep.diffRules Classes defining how to perform differentation of given functions.
@see DJep documentation