				POLSYS_PLP

POLSYS_PLP is Fortran 90 code for solving N complex coefficient
polynomial systems of equations in N unknowns by a probability-one,
globally convergent homotopy method.  The package consists of 2
modules:  GLOBAL_PLP contains the derived data types which define the
polynomial system, the system partition, and the start system of the
homotopy; the module POLSYS contains the actual solver POLSYS_PLP and
its internal routines, and the routines responsible for root counting,
BEZOUT_PLP and SINGSYS_PLP.  POLSYS_PLP uses the HOMPACK90 modules
HOMOTOPY, HOMPACK90_GLOBAL, and REAL_PRECISION, the HOMPACK90 path
tracking routine STEPNX, and numerous BLAS and LAPACK routines.

The physical organization into files is as follows:  The file
polsys_plp.f90 contains (in order) REAL_PRECISION, GLOBAL_PLP, POLSYS,
HOMPACK90_GLOBAL, HOMOTOPY, and STEPNX; the file lapack_plp.f contains
all the necessary BLAS and LAPACK routines.  A sample calling program
MAIN_TEMPLATE and a template for a hand-crafted function/Jacobian
evaluation program TARGET_SYSTEM_USER are contained in the file
main_template.f90.  MAIN_TEMPLATE reads the data file INPUT.DAT and
writes the solutions to the file OUTPUT.DAT.  The file test_install.f90
contains a main program TEST_INSTALL to verify the installation.  It
reads INPUT.DAT, solves a problem defined there, compares the computed
results to known answers, and prints a message indicating whether the
installation was apparently successful.

To test the package, compile polsys_plp.f90 (as free form Fortran 90
files) and compile lapack_plp.f (as fixed form Fortran 90 files). Then
compile main_template.f90 and link to the object files from the two
compiles above.  Do the same for test_install.f90.  TEST_INSTALL
provides a simple test of the installation.  MAIN_TEMPLATE produces
detailed output in the file OUTPUT.DAT, which, with an understanding of
how POLSYS_PLP works, can be compared to the file OUTPUT.DAT in the
package.  The modules and external subroutines in polsys_plp.f90 and
lapack_plp.f can be stored in module and object libraries and need not
be recompiled.  The subroutine TARGET_SYSTEM_USER defining the
polynomial system and its Jacobian matrix, or a dummy subroutine, must
be supplied on every call to POLSYS_PLP.  However, if the user does not
wish to change TARGET_SYSTEM_USER, its object code can be stored in the
aforementioned object library.

-------------------------------------------------------------------------------

Inquiries should be directed to Layne T. Watson, Department of Computer
Science, VPI & SU, Blacksburg, VA 24061-0106; (540) 231-7540; ltw@vt.edu.
