ADIFOR: Automatic Differentiation of Fortran

SYNOPSIS:

ADIFOR (Automatic Differentiation of Fortran) augments Fortran 77 programs with statements for the computation of first-order derivatives.
WHOM TO CONTACT:

Christian Bischof
Mathematics and Computer Science Division
Bldg. 221, Rm. C-223
Argonne National Laboratory
9700 S. Cass Ave.
Argonne, IL 60439
Tel.: (630) 252-8875
FAX: (630) 252-5986
WWW: http://www.mcs.anl.gov/people/bischof
e-mail: bischof@mcs.anl.gov

Alan Carle
Center for Research on Parallel Computation
Rice University, MS 41
6100 S. Main Street
Houston, TX 77251-1892
Tel.: (713) 285-5368
FAX: (713) 285-5136
WWW: http://www.cs.rice.edu/~carle
e-mail: carle@cs.rice.edu

DOCUMENTATION:

FUNCTIONALITY:

The ADIFOR (Automatic Differentiation of Fortran) system provides automatic differentiation for programs written in Fortran 77. Given a Fortran subroutine (or collection of subroutines) for a function f , ADIFOR produces Fortran 77 subroutines for the computation of the derivatives of this function.

The ADIFOR-generated code can be computed in various ways. Given a set of program variables considered the independent and dependent variables, respectively (let's call them "X" and "Y" for the sake of discussion), ADIFOR generates code that computes d Y/d X * S, where S, the "seed matrix", is initialized by the user at runtime. In this fashion, the same ADIFOR-generated code can be used to compute Jacobian*vector products, the whole Jacobian, or "compressed" versions of sparse Jacobians. This interface also allows for easy chaining of derivatives between different codes.

HIGHLIGHTS:

The ADIFOR 2.0 system offers the following features:
Full Fortran 77 Support:
For example, ADIFOR 2.0 supports common blocks, arbitrary subroutine calling sequences, COMPLEX arithmetic, FUNCTIONs and SUBROUTINEs, statement functions, or procedure parameters. In addition to these features, the ADIFOR 2.0 preprocessor also supports common extensions such as DOUBLE COMPLEX, INCLUDE statements, and IMPLICIT NONE.

Flexible Intrinsic Handler:
The ADIntrinsics 1.0 system, which is part of ADIFOR 2.0 provides for various reporting levels in response to exceptions such as the differentiation of sqrt(x) when x is zero, and can easily be customized through the use of template files.

Transparent Sparsity Support:
Code generated with ADIFOR 2.0 can perform derivative computations using the SparsLinC (Sparse Linear Combination) library, thus transparently exploiting sparsity arising in large sparse Jacobian computations or gradients of functions that have a sparse Hessian.

Code Customization:
ADIFOR 2.0 provides mechanisms to generate code that is particularly suited for the computation of Jacobian*vector products.

AVAILABILITY:

ADIFOR is available for noncommercial use free of charge, but since it is copyrighted software, the signing of a license is required. Check the Web sites for a form, or contact Bischof or Carle.