Back
PCOMP
Modeling Language with Automatic Differentiation
Version 5.3 (1996)
Purpose
PCOMP reads symbolically defined nonlinear functions that are composed of standard elementary functions, and compiles them. Subsequently function and, in particular, derivative values up to order two can be computed directly, i.e., without numerical approximation or symbolic differentiation. Alternatively FORTRAN code for function and gradient evaluation can be generated by PCOMP.
Numerical Method
The underlying syntax of the proposed language is described by means of a formal grammar and is similar to FORTRAN with respect to input format and arithmetic expressions. In case of successful syntax check, an intermediate code is stored in an integer and a real working array and is passed to the subroutines that evaluate function and gradient values. Derivative computation is performed either by forward or backward evaluation.
Program Organization
PCOMP consists of several FORTRAN subroutines for parser, function and derivative evaluation, and code generation. Data must be passed on working arrays or files between these subroutines.
Special Features
- flexible index sets
- constants
- arbitrary names for variables and functions
- SUM- and PROD-statements
- indexed functions, data and variables
- spline, linear, and constant interpolation functions
- data definition in form of tables
- IF, ELSE, ENDIF statements, nested
- macros
- interface to user provided functions
- full documentation by separate report
- FORTRAN source code
Applications
PCOMP is used to develop executable codes for nonlinear optimization which allow symbolic input of nonlinear problem functions, and is implemented, e.g., in EASY-FIT.
Reference
- M. Dobmann, M. Liepelt, K. Schittkowski, C. Trassl, PCOMP: A FORTRAN code for automatic differentiation - language description and user's guide, Report, Dept. of Mathematics, University of Bayreuth (1994)
- M. Dobmann, M. Liepelt, K. Schittkowski, Algorithm 746: PCOMP: A FORTRAN code for automatic differentiation, ACM Transactions on Mathematical Software, Vol. 21, No. 3, 233-266 (1994)