From Wikipedia, the free encyclopedia ------ In mathematics and computer algebra, automatic differentiation, or AD, sometimes alternatively called algorithmic differentiation, is a method to numerically evaluate the derivative of a function specified by a computer program. [...] AD exploits the fact that any computer program that implements a vector function y = F(x) (generally) can be decomposed into a sequence of elementary assignments, any one of which may be trivially differentiated by a simple table lookup. These elemental partial derivatives, evaluated at a particular argument, are combined in accordance with the chain rule from derivative calculus to form some derivative information for F (such as gradients, tangents, the Jacobian matrix, etc.). This process yields exact (to numerical accuracy) derivatives. ------ This also means that AD can only be applied to augment an existing computer program to make it calculate derivatives in addition to usual results. There are two different implementation strategies for AD (Source transformation and Operator overloading) which are used in so called AD tools to modify the source code in question.