Automatic differentiation features

Adept enables C++ algorithms to be automatically differentiated. For each mathematical statement involving scalars or arrays of a special "active" type, Adept stores the corresponding differential statement symbolically on a stack. The stack may then be used to perform the following computations:

For full details of how to use Adept's automatic differentiation features, please consult Chapter 2 of the User Guide.

Speed

The way that expression templates have been used and several other important optimizations mean that reverse-mode differentiation is significantly faster than other tools that provide equivalent functionality (ADOL-C, CppAD and Sacado) and less memory is used. In fact, Adept is also often only around 10-25% slower than an adjoint code you might write by hand, but immeasurably faster in terms of user time; adjoint coding is very time consuming and error-prone. For further details of the comparison with other tools, read the Adept paper.

Missing features

At present Adept is missing some functionality that you may require:

See also