OPRAD - A reverse automatic differentiation tool offering first- and second-order derivatives.
OPFAD - A general purpose forward automatic differentiation tool offering first derivatives.
Both are Fortran 90 modules from the Numerical Optimization Centre's Optima90 library (under development).
Mike Bartholomew-Biggs
Numerical Optimization Centre
University of Hertfordshire
College Lane
Hatfield
Hertfordshire, AL10 9AB
Tel.: +44 1707 28 4762
FAX: +44 1707 284303
e-mail: M.Bartholomew-Biggs@herts.ac.uk
Bruce Christianson
Numerical Optimization Centre
University of Hertfordshire
College Lane
Hatfield
Hertfordshire, AL10 9AB
Tel.: +44 1707 28 4335
FAX: +44 1707 284303
e-mail: B.Christianson@herts.ac.uk
Stephen Brown
Numerical Optimization Centre
University of Hertfordshire
College Lane
Hatfield
Hertfordshire, AL10 9AB
Tel.: +44 1707 28 5113
FAX: +44 1707 284303
e-mail: S.Brown@herts.ac.uk
Both OPRAD and OPFAD can be used to produce Jacobians of vector functions as well as gradients of scalar functions. In addition OPRAD can---for scalar functions only---produce either the Hessian or the product of the Hessian with a chosen vector.
OPFAD implements the forward accumulation approach in a fairly naive way and is recommended only for problems with fewer than about 100 variables. At present it is more tolerant than OPRAD of functions whose evaluation involves branching on IF statements.
OPRAD implements reverse accumulation and builds the computational scheme of the expressions. It is more expensive than OPFAD in terms of storage, but is expected to be more efficient in terms of arithmetic. In applications in nonlinear optimization where gradients must be evaluated many times, efficiency is often more important than storage cost.
Ada implementations of the same techniques are also available.