Adept is a combined automatic differentiation and array software library for the C++ programming language.
The automatic differentiation capability facilitates the development of applications involving mathematical optimization.
[1][2] Along with the efficient way that it stores the differential information, this makes it significantly faster than most other C++ tools that provide similar functionality (e.g. ADOL-C, CppAD and FADBAD),[1][3][4][5][6] although comparable performance has been reported for Stan and in some cases Sacado.
[3] Differentiation may be in forward mode, reverse mode (for use with a Quasi-Newton minimization scheme), or the full Jacobian matrix may be computed (for use with the Levenberg-Marquardt or Gauss-Newton minimization schemes).
The following simple example uses these types to differentiate a 3-norm calculation on a small vector: When compiled and executed, this program reports the derivative as: