Automatic Differentiation - Software

Software

  • C/C++
Package License Approach Brief Info
ADC Version 4.0 nonfree OO
ADIC free for noncommercial SCT forward mode
ADMB BSD SCT+OO
ADNumber Public Domain OO Support for forward mode, reverse mode, partial, nth, and nth partial derivatives.
ADOL-C CPL 1.0 or GPL 2.0 OO arbitrary order forward/reverse, part of COIN-OR
AMPL free for students SCT
FADBAD++ free for
noncommercial
OO uses operator new
CasADi LGPL OO/SCT Forward/reverse modes, matrix-valued atomic operations.
CppAD CPL 1.0 or GPL 2.0 OO arbitrary order forward/reverse, AD for arbitrary Base including AD, part of COIN-OR; can also be used to produce C source code using the CppADCodeGen library.
OpenAD depends on components SCT
Sacado GPL OO A part of the Trilinos collection, forward/reverse modes.
Stan BSD OO Estimates Bayesian statistical models using Hamiltonian Monte Carlo.
TAPENADE Free for noncommercial SCT
CTaylor free for noncommercial OO truncated taylor series, multi variable, high performance, calculating and storing only potentially nonzero derivatives, calculates higher order derivatives, order of derivatives increases when using matching operations until maximum order (parameter) is reached, example source code and executable available for testing performance
  • Fortran
Package License Approach Brief Info
ADF Version 4.0 nonfree OO
ADIFOR >>>
(free for non-commercial)
SCT
AUTO_DERIV free for non-commercial OO
OpenAD depends on components SCT
TAPENADE Free for noncommercial SCT
  • Matlab
Package License Approach Brief Info
AD for MATLAB GPL OO Forward (1st & 2nd derivative, Uses MEX files & Windows DLLs)
Adiff BSD OO Forward (1st derivative)
MAD Proprietary OO
ADiMat ? SCT Forward (1st & 2nd derivative) & Reverse (1st)
myAD BSD OO Forward (1st & 2nd derivative)
  • Python
Package License Approach Brief Info
FuncDesigner BSD OO uses NumPy arrays and SciPy sparse matrices,
also allows to solve linear/non-linear/ODE systems and
to perform numerical optimizations by OpenOpt
ScientificPython CeCILL OO see modules Scientific.Functions.FirstDerivatives and
Scientific.Functions.Derivatives
pycppad BSD OO arbitrary order forward/reverse, implemented as wrapper for CppAD including AD and AD< AD >.
pyadolc BSD OO wrapper for ADOL-C, hence arbitrary order derivatives in the (combined) forward/reverse mode of AD, supports sparsity pattern propagation and sparse derivative computations
uncertainties BSD OO first-order derivatives, reverse mode, transparent calculations
algopy BSD OO same approach as pyadolc and thus compatible, support to differentiate through numerical linear algebra functions like the matrix-matrix product, solution of linear systems, QR and Cholesky decomposition, etc.
pyderiv GPL OO automatic differentiation and (co)variance calculation
CasADi LGPL OO/SCT Python front-end to CasADi. Forward/reverse modes, matrix-valued atomic operations.
  • .NET
Package License Approach Brief Info
AutoDiff GPL OO Automatic differentiation with C# operators overloading.
FuncLib MIT OO Automatic differentiation and numerical optimization, operator overloading, unlimited order of differentiation, compilation to IL code for very fast evaluation.
  • Haskell
Package License Approach Brief Info
ad BSD OO Forward Mode (1st derivative or arbitrary order derivatives via lazy lists and sparse tries)
Reverse Mode
Combined forward-on-reverse Hessians.
Uses Quantification to allow the implementation automatically choose appropriate modes.
Quantification prevents perturbation/sensitivity confusion at compile time.
fad BSD OO Forward Mode (lazy list). Quantification prevents perturbation confusion at compile time.
rad BSD OO Reverse Mode. (Subsumed by 'ad').
Quantification prevents sensitivity confusion at compile time.
  • Octave
Package License Approach Brief Info
CasADi LGPL OO/SCT Octave front-end to CasADi. Forward/reverse modes, matrix-valued atomic operations.
  • Java
Package License Approach Brief Info
JAutoDiff - OO Provides a framework to compute derivatives of functions on arbitrary types of field using generics. Coded in 100% pure Java.

Read more about this topic:  Automatic Differentiation