Table of Contents Author Guidelines Submit a Manuscript
Scientific Programming
Volume 1, Issue 1, Pages 11-29
http://dx.doi.org/10.1155/1992/717832

ADIFOR–Generating Derivative Codes from Fortran Programs

Christian Bischof,1 Alan Carle,2 George Corliss,1 Andreas Griewank,1 and Paul Hovland1

1Mathematics and Computer Science Division, Argonne National Laboratory, 9700 S. Cass Avenue, Argonne, IL 60439, USA
2Center for Research on Parallel Computation, Rice University, P. O. Box 7892, Houston, TX 77251, USA

Received 25 January 1992; Accepted 25 January 1992

Copyright © 1992 Hindawi Publishing Corporation. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Abstract

The numerical methods employed in the solution of many scientific computing problems require the computation of derivatives of a function f Rn→Rm. Both the accuracy and the computational requirements of the derivative computation are usually of critical importance for the robustness and speed of the numerical solution. Automatic Differentiation of FORtran (ADIFOR) is a source transformation tool that accepts Fortran 77 code for the computation of a function and writes portable Fortran 77 code for the computation of the derivatives. In contrast to previous approaches, ADIFOR views automatic differentiation as a source transformation problem. ADIFOR employs the data analysis capabilities of the ParaScope Parallel Programming Environment, which enable us to handle arbitrary Fortran 77 codes and to exploit the computational context in the computation of derivatives. Experimental results show that ADIFOR can handle real-life codes and that ADIFOR-generated codes are competitive with divided-difference approximations of derivatives. In addition, studies suggest that the source transformation approach to automatic differentiation may improve the time to compute derivatives by orders of magnitude.