Skip to content
awalther1 edited this page Mar 31, 2020 · 5 revisions

Welcome to the ADOL-C home page


The package ADOL-C (Automatic Differentiation by OverLoading in C++) facilitates the evaluation of first and higher derivatives of vector functions that are defined by computer programs written in C or C++. The resulting derivative evaluation routines may be called from C/C++, Fortran, or any other language that can be linked with C.

The numerical values of derivative vectors are obtained free of truncation errors at a small multiple of the run time and randomly accessed memory of the given function evaluation program.


ADOL-C uses the operator overloading concept to compute in forward and reverse mode of automatic differentiation:

* derivatives of any order
* one-sided derivatives in non-smooth cases (e.g. evaluation of fabs)

for a function that is given as a C/C++ code. The user has to make a few modifications to the evaluation code:

* redeclare type of all variables that are involved in the evaluation code (active variables) to the new type adouble,
* mark the evaluation section,
* specify independent and dependent variables and pass their values,
* recompile the code and link the ADOL-C library.

ADOL-C provides:

* convenient drivers for common differentiation tasks,
* application oriented drivers, e.g.
     * for the computation of sparsity patterns
     * for ordinary differential equations
     * for the calculation of full higher-derivative tensors
* advanced automatic differentiation, i.e.
      * optimal checkpointing for time integrations
      * adapted automatic differentiation of fixpoint iterations
* parallel automatic differentiation of MPI and OpenMP parallel programs

The operator overloading is used to produce the tape, an internal representation of the evaluation section marked for differentiation. For each operation on the tape

* truncated Taylor series are propagated in the forward mode
* the corresponding adjoint operations are performed on the adjoint variables in the reverse mode.


ADOL-C is written in C++ and is released as open source code under the Eclipse Public License (EPL) or the GNU General Public License (GPL). It is available from the COIN-OR initiative.

Latest stable:

Latest release:

Download ADOL-C (source tarballs). You can also obtain the ADOL-C code via Subversion. Please refer to the Installation Instructions for COIN projects.

Individual files can also be obtained from the svn web interface (see the "Browse Source" button above).

Please Cite Us

We provide this program in the hope that it may be useful to others, and we would very much like to hear about your experience with it. If you found it helpful and are using it within our software, we encourage you to add your feedback to these wiki-based webpages, Success Stories.

Since a lot of time and effort has gone into the development of ADOL-C, please cite the following publication if you are using ADOL-C for your own research:

A. Walther und A. Griewank: Getting started with ADOL-C. In U. Naumann und O. Schenk, Combinatorial Scientific Computing, Chapman-Hall CRC Computational Science, pp. 181-202 (2012).


The PDF version of the ADOL-C documentation can be downloaded here

Further Information

<a href="">Mailing List</a>

Success Stories

Papers related to ADOL-C

<a href="" rel="publisher">Google+</a>