The full polymorphic package is a coherent set of tools based on the LBNL version of "DA-Package" of Berz, denoted as DAB. DAB creates a Taylor series type for automatic differentiation. It was originally a FORTRAN77 program where each Taylor series was located by an integer pointer. Etienne Forest, in collaboration with Berz and Irwin, wrote a library to handle Taylor maps and their analysis, LIELIB. Both DAB and LIELIB still exist as FORTRAN90 modules of FPP but should not be used anymore as stand alone.

FPP achieves THE following goals:

1) Creates the new types Taylor and Complextaylor which supports ordinary Fortran syntax

2) Creates from Taylor and Complextaylor more powerful polymorphic types Real_8 and Double_complex  which are capable of switch between beiong standard numbers and power series at run time. A user who wants to implement a flexible automatic differentiation should use these types.

3) Creates a type DAMAP and various other representations including Lie representations.

4) Finally provides a large number of analysis tools including the type NORMALFORM.

 

The primary idea being FPP is to provide a tool which allows flexible automatic differentiation for numerical integrators. In the restricted domain of accelerator physics, it provides the analysis tools for the propagation and analysis of maps in tracking codes. The library PTC (Polymorphic Tracking Code) uses FPP and is incorporated in MAD-X (CERN) and BMAD (Cornell) for example.