ADOL-C

A Package for Automatic Differentiation

of Algorithms Written in C/C++



 Current versions:
 
  • For UNIX / LINUX:
  • For Windows / DOS:
ADOL-C 1.8.7  (March 2000) 
ADOL-C 1.8.?  (Please contact us for detailed information!)

go to: Synopsis - Functionality - Availability - Sources and ArticlesApplications - Contact



Synopsis

The package ADOL-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.



Functionality

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

for a function that is given as a C/C++ code. The user has to make a few modifications to the evaluation code: ADOL-C provides: The operator overloading is used to produce the tape, an internal representation of the evaluation section marked. For each operation on the tape Instead of calling the routines for the forward and reverse mode directly the user may apply appropriate drivers to get the desired derivatives for a scalar-valued function scalar.gif.  Some of these comvientient drivers are listed in the following table:
 
function(tag,m,n,x,y)$y = f(x) $
gradient(tag,n,x,g)gradient.gif
hessian(tag,n,x,H)$H =\,$ lower triangle of nabla1.gif
hess_vec(tag,n,x,v,z)nabla2.gif
lagra_hess_vec(tag,m,n,x,v,u,h)nabla3.gif

For vector-valued functions vector.gif ADOL-C provides also easy to use drivers. Again some of them are listed below:
 

function(tag,m,n,x,y)$y = f(x) $
jacobian(tag,m,n,x,J)$f^\prime(x) = J(x) = \left[\frac{\partial f_i}{\partial x_j}\right] \left. \right\vert _x$
jac_vec(tag,m,n,x,v,j)$j = J(x)\,v $
vec_jac(tag,m,n,repeat,x,u,j)$j = u^T\,J(x)$

Drivers for ODE's and routines to get full higher order derivative tensors are available. Storage and runtime requirements are clearly predictable. The tape is transferred to external mass storage devices and only strictly sequentially accessed. The much smaller randomly accessed memory can be precalculated using information on the tape.



Availability

ADOL-C is available free of charge. Check the ftp sites for the source, the manual and examples. ADOL-C was tested on several platforms
including Sun, LinuX, SGI, DEC, and IBM. ADOL-C Version 1.6 for Borland C++ is available on the same sites (README of the PC version). There are some ports of the new ADOL-C versions to Windows; please, contact us for detailed information.

Read about the features planned for ADOL-C 2.0.


    Source and Articles

Software:

Papers:

Applications


Whom to Contact

Andreas Griewank
Institute of Scientific Computing
Technical University of Dresden
Mommsenstr. 13
01062 Dresden, Germany
phone: +49 (0)351 463 4266
FAX: +49 (0)351 463 7114
griewank@math.tu-dresden.de

Olaf Vogel
Institute of Scientific Computing
Technical University of Dresden
Mommsenstr. 13
01062 Dresden, Germany
phone: +49 (0)351 463 4082
FAX: +49 (0)351 463 7114
vogel@math.tu-dresden.de

or mail to adol-c@math.tu-dresden.de


[return to:] Institute homepage

 vogel@math.tu-dresden.de; (Apr/26/2001)