C      ALGORITHM 689, COLLECTED ALGORITHMS FROM ACM.
C      THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE,
C      VOL. 17, NO. 2, PP. 167-177.  JUNE, 1991.
 FILE_1: THIS INFO.
 FILE_2: SUBROUTINE COLDOC: DOCUMENTATION OF "COLVI2".
 FILE_3: SUBPROGRAMS OF "COLVI2"; "SOLVING" ROUTINES.
 FILE_4: SUBPROGRAMS OF "COLVI2"; "INITIALIZING" ROUTINES.
 FILE_5: SUBPROGRAMS OF "COLVI2"; "UTILITIES".
 FILE_6: SYSTEM DEPENDENT SUBPROGRAMS OF "COLVI2":
         SAVALL _ SAVE, IN CASE OF ERROR DURING COMPUTATIONAL PROCESS, ALL
                  NEEDED VARIABLES ON A SEQUENTIAL UNFORMATTED FILE "COLSAV".
         RELOAD _ RELOAD VARIABLES WRITTEN BY "SAVALL" TO CONTINUE
                  COMPUTATIONAL PROCESS AFTER ERRATIC EXIT.
         NCPJOB _ MONITOR THE CPU-TIME (CDC CYBER-750 VERSION).
         NCPJOB _                      (VAX VERSION).
         INICMC _ INITIALIZE MACHINE CONSTANTS (CALLS "MACHAR" FROM W.J.CODY).
 FILE_7: ENVIRONMENT DEPENDENT SUBPROGRAMS OF "COLVI2" THAT INVOKE
         IMSL LIBRARY ROUTINES.
         DECLUF _ DECOMPOSE A MATRIX.
         SOLLUF _ SOLVE A LINEAR SYSTEM USING THE MATRIX DECOMPOSED BY DECLUF.
         ZERPOL _ COMPUTE REAL ZEROS OF A POLYNOMIAL.
 FILE_8: SAME AS ABOVE BUT FOR USE ON A MACHINE WITHOUT NUMERICAL LIBRARIES.
         ZERPOL CALLS THE (INCORPORATED) ACM-TOMS ROUTINE "RPOLY".
 FILE_9: MACHAR ROUTINE (REVISION DECEMBER 4, 1987) FROM W.J.CODY TO
         COMPUTE SOME MACHINE CONSTANTS. (MUST BE MODIFIED BEFORE COMPILING).
 FILE10: THREE UTILITY SUBROUTINES USED BY THE DRIVER PROGRAMS.
 FILE11: SUBROUTINES DEFINING THE VIE2 FOR PASS 1 - PASS 10.
         DRIVER PROGRAM PASS 1 - 6.
         DRIVER PROGRAM PASS 7 - 8.
         DRIVER PROGRAM PASS 9.
         DRIVER PROGRAM PASS 10 (RESUMING INTERRUPTED PASS 9).
         DRIVER PROGRAM PASS 11 + PROBLEM ROUTINES.
         DRIVER PROGRAM PASS 12 (RESUMING INTERRUPTED PASS 11).
 FILE12: OUTPUT PASS 1 - 6.
         OUTPUT PASS 7 - 8.
         OUTPUT PASS 9.
         OUTPUT PASS 10.
         OUTPUT PASS 11.
         OUTPUT PASS 12.
         N.B. RESULTS ARE OBTAINED ON A CYBER 750 (MACHINE PRECISION
              APPROXIMATELY 14 DIGITS).

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

 LIST OF SUBPROGRAM NAMES IN "COLVI2" + PARAMETER LIST
            (IN LEXICOGRAPHICAL ORDER).

       SUBROUTINE ADDABM (A, IA, IO, JO, N, S, B, IB)
       SUBROUTINE ADDABV (V, N, S, W)
       SUBROUTINE ADDV (V, N, S1, W1, S2, W2)
       SUBROUTINE ADJLSV (TN, HN, NEQN, KC, C,W, UN, LAGSAV)
       SUBROUTINE CHKFIL (CNTRL, IERROR)
       SUBROUTINE CHKINI
      +   (NEQN,G, T0,TE, REQTOL, DEFOPT,IOPT,OPT,CNTRL, WKAREA,IW,
      +    TN, HINIT, ZLEESM, IERROR)
       SUBROUTINE CHKOPT (CNTRL, IOPT, OPT, MCDEF, HMINFX, IERROR)
       SUBROUTINE CHKPTO (NEQN, TN, TE, REQTOL, TOLMIN, IERROR)
       SUBROUTINE CHKREC (IOPT, MCDEF, IERROR)
       SUBROUTINE CHKWKA (IW, TN, TE, HFX, IWCONS, IWSTEP, IERROR)
       SUBROUTINE COLCWL (COLPAR, M, C, W, LC, IERROR)
       SUBROUTINE COLDOC
       SUBROUTINE COLVI2
      +   (NEQN, G,KC,DKCDY,LINEAR, T0,TE, REQTOL,
      +    DEFOPT, IOPT,OPT,CNTRL, WKAREA,IW, TNC, UE, GEE, IERROR)
       SUBROUTINE COMPLG (M, C, LCG, WKAREA)
       SUBROUTINE COMPLV (V, M, C, LCV)
       SUBROUTINE COMPUH (T, NEQN, T0, WKAREA, UH)
       SUBROUTINE COMPWL (M, S, L, C, W, LC)
       SUBROUTINE COPYV (V, N, W)
       SUBROUTINE DECLUF (A, N, IA, P, IERROR)
       SUBROUTINE DISWKS
      +   (NEQN, NHC, RENTRY, NEWOPT, ZLEESM, WKAREA, IW, GECO, MAXNCO)
       SUBROUTINE ERRMSG (STRING)
       SUBROUTINE ESCRGS (NEQN, WKAREA,IW, T0,TE, TN, IERROR)
       SUBROUTINE GAUSSC (M, C, P0, P1, IERROR)
       SUBROUTINE GAUSS (M, C, WKAREA, IERROR)
       SUBROUTINE INICMC
       SUBROUTINE INILAG
      +   (TN, NEQN,G,KC, C,W,LC,LOBAT, H, U, WKAREA, LAGSAV)
       SUBROUTINE INILGN (TN, NEQN, G, U, LC1, WKAREA, LAGN)
       SUBROUTINE INIVEC
      +   (IU,IURG,IURL,IURN,ILEESM, NEQN, G, TN, TE, U,UR,URN,LEESUM)
       REAL FUNCTION INTEGL (J, U, M, C, WKAREA)
       SUBROUTINE ITRCOL
      +   (TNP1, NEQN, G, KC, T0, H, C, W, U, WKAREA, LAGNP1, URNP1)
       REAL FUNCTION LAGPOL (J, V, M, C)
       REAL FUNCTION LEEWGT
      +   (TN,HN, NEQN,KC, T0, C,W, CR,WR, UN, URN, WKAREA)
       SUBROUTINE LOBATC (M, C, P0, P1, IERROR)
       SUBROUTINE LOBATO (M, C, WKAREA, IERROR)
       INTEGER FUNCTION NCPJOB ()
       SUBROUTINE RADAUC (M, C, P0, P1, IERROR)
       SUBROUTINE RADAU (M, C, WKAREA, IERROR)
       SUBROUTINE RELOAD
      +   (NSAV, WKAREA,IW, DEFOPT,IOPT,OPT, TE, TN, IERROR)
       SUBROUTINE SAVALL (WKAREA,IW, DEFOPT, IOPT,OPT, TE, TN)
       SUBROUTINE SGEVI2
      +   (NEQN, G,KC,DKCDY,LINEAR, T0, CR,WR,LCR, H, UR, WKAREA,
      +    TN, URN, IERROR)
       SUBROUTINE SLICE2
      +   (TN,HNM1,HN, NEQN,G,KC,DKCDY,LINEAR, C, CB, CR,WR,LCR,LOBATR,
      +    LAGSAV, GLAGR,CORR,DSYS,MW, WKAREA, URN, IERROR)
       SUBROUTINE SLQCE2
      +   (TN, H, NEQN,G,KC,DKCDY,LINEAR, T0, C,W,LC, MM,SS,LL, LOBAT,
      +    TOLCIT, LNP1FL, LAG, GLAG,CORR,DSYS,MW, WKAREA, U, LAGNP1,
      +    IERROR)
       SUBROUTINE SOLLUF (A, N, IA, B, P)
       SUBROUTINE SOLNEW
      +   (TN,HN, NEQN,KC,DKCDY,LINEAR, C,W,LC, MM,SS,LL, TOLCIT,
      +    GLAG, CORR,DSYS,MW, WKAREA, UN, IERROR)
       SUBROUTINE SOLSYS
      +   (TN,HN, NEQN,KC,DKCDY,LINEAR, C,W,LC, MM,SS,LL, TOLCIT,
      +    GLAG, CORR,DSYS,MW, WKAREA, UN, IERROR)
       SUBROUTINE SOLVI2
      +   (NEQN, G,KC,DKCDY,LINEAR, T0,TE, C,W,LC, H, U, CR,WR,LCR, UR,
      +    LAG,  LAGSAV, LEESUM,ESTGEE,LEE, LC1, LC0,LCG,UN2,LAGN,LAGNP1
      +    URN, URNP1, WKAREA, TN, UN, GEE, IERROR)
       REAL FUNCTION UEEWGT
      +   (TN,HN, NEQN,KC, T0,TE, C,W, CR,WR, UN, URN,
      +    LEESUM, ESTGEE, WKAREA, LEE)
       SUBROUTINE UNITM (A, N)
       SUBROUTINE UTILIP (NEQN, UI, LC1, UIP1)
       REAL FUNCTION WMXNRM (ERR, SOL, NDIM)
       SUBROUTINE WRIRES (TN, HN, YNP1, UNP1, NEQN, Y)
       LOGICAL FUNCTION YPOLM
      +   (TN,HN, NEQN,G,KC,DKCDY,LINEAR, C,W,LC, LCG,LC0,
      +    LAGN,LAG,LAGNP1, UN2, NYPOLM, GLAG2,CORR,DSYS,MW, WKAREA,
      +    UN, URN, IERROR)
       SUBROUTINE ZEROV (V, N)
       SUBROUTINE ZERPOL (C, N, S, IERROR)
*
 -----------------------------------------------------------------------
