One embodiment of the present invention provides a system that automatically
computes a derivative of a numerical expression within a digital computer system.
The system operates by receiving a representation of the numerical expression,
wherein the numerical expression includes one or more independent variables. Next,
the system forms an expression tree for the derivative of the numerical expression
with respect to an independent variable, wherein the expression tree makes use
of temporary variables to form results of sub-expressions for computing the derivative.
While forming this expression tree, the system seeks to introduce only temporary
variables and associated sub-expressions as necessary to eliminate repeated common
sub-expressions, thereby substantially minimizing the number of temporary variables.
The system subsequently uses this expression tree to compute the derivative of
the numerical expression during a computation.