AUTO_DERIV: tool for automatic differentiation of a Fortran code. S. Stamatiadis, R. Prosmiti, S.C. Farantos.

PROGRAM SUMMARY
Title of program: AUTO_DERIV
Catalogue identifier: ADLS
Ref. in CPC: 127(2000)343
Distribution format: gzip file
Operating system: GNU/Linux, AIX 4.3, HP-UX B.10.01
High speed store required: 680K words
Number of bits in a word: 32
Number of lines in distributed program, including test data, etc: 2851
Programming language used: Fortran
Computer: Intel Pentium II PC

Nature of physical problem:
Complicated analytical functions of many independent variables often appear in molecular simulations. Particularly, in Molecular Dynamics the first and occasionally the second partial derivatives of the potential function are required which AUTO_DERIV evaluates to machine precision.

Method of solution
The mathematical rules for differentiation of sums, products, quotients, elementary functions in conjunction with the chain rule for compound functions are applied. The function should be expressed as one or more Fortran 90 or Fortran 77 procedures. A new type of variables is defined and the overloading mechanism of functions and operators provided by the Fortran 90 language is extensively used to implement the differentiation rules.

Restrictions on the complexity of the problem
None imposed by the program. There are certain limitations that may appear mostly due to the specific implementation chosen in the user code. They can always be overcome by recoding parts of the routines developed by the user or by modifying AUTO_DERIV according to specific instructions given below. The common restrictions of available memory and the capabilities of the compiler hold.

Typical running time
The typical running time for the program depends on the compiler and the complexity of the differentiated function. A rough estimate is that AUTO_DERIV is an order of magnitude slower than the evaluation of the analytical function value and derivatives (if they are available).

Unusual features of the program
None (The program has been tested using the following compilers: HP f90, NAGWare f95, IBM xlf90, Fujitsu F95, Absoft Pro Fortran F90, PGI Workstation pgf90.)