and jorge j. more'digital.library.unt.edu/ark:/67531/metadc...i )q~2 implementation guide for...
TRANSCRIPT
ANL-80-68
I )Q~2
IMPLEMENTATION GUIDE FOR MINPACK-1
by
Burton S. Garbow, Kenneth E. Hillstrom,
and Jorge J. More'
MASTER
ARGONNENATIONAL
LABORATORY
ARGONNE NATIONAL LABORATORY, ARGONNE, ILLINOIS
Prepared for the U. S. DEPARTMENT OF ENERGYunder Contract W-31-109-Eng-38
"I3e1M.
ANL-80-68
Distribution Category:Mathematics and Computers
(UC-32)
ANL--80-68
ARGONNE NAT IONAL LABORATORY9700 South Cass Avenue
Argonne, Illinois 60439
IMPLEMENTATION GUIDE FOR MINPACK-1
by
Burton S. Garhow, Kenneth E. Hillstrom, Jorge J. More'
Applied Mathematics Division
July 1980
3
TABLE OF CONTENTS
Abstract .......................................................... 5
1. Introduction ................................................. 5
2. The Tape Organization........................................6
3. Overview of Tape Contents....................................6
4. Machine-Dependent Constants................................... 7
5. Files 1-6: The MINPACK-1 Package and its Documentation....... 7
6. Files 7-23: The Testing Aids................................. 8
7. Evaluation of the Test Results............................... 10
8. Referral for Questions and Comments.......................... 11
Appendix A - SPMPAR and DPMP*.R Listings ........................ 13
Appendix B - Test Driver Listings ............................... 23
Appendix C - Test Output Summaries .............................. 41
5
IMPLEMENTATION GUIDE FOR MINPACK-1
by
Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More'
ABSTRACT
MINPACK-1 is a package of Fortran subprograms for the numeicalsolution of systems of nonlinear equations and nonlinear leastsquares problems. This report describes how to implement thepackage from the tape on which it is transmitted.
1. Introduction
This report describes the tape containing MINPACK-1, a package of Fortran
subprograms for the numerical solution of systems of nonlinear equations and
nonlinear least squares problems. Future editions of the MINPACK package will
address unconstrained minimization and constrained optimization problems. For
each problem area MINPACK-1 contains algorithms that proceed either from an
analytic specification of the Jacobian matrix of the problem functions or
directly from the problem functions themselves. Since the specification of
the Jacobian matrix can be an error-prone task, MINPACK-l also contains an
algorithm to check that the Jacobian matrix is consistent with the func-
tions. Also included on the tape are machine-readable documentation and a
complete set of testing airs.
MINPACK-1 may be obtained from either:
National Energy Software CenterArgonne Na'ional Laboratory9700 S. Ca is Ave.Argonne, IL 60439Phone: (312) 972-7250
orIMSLSixth Floor-NBC Building7500 Bellaire Blvd.Houston, TX 77036
Phone: (713) 772-1927
6
2. The Tape Jrganization
The tape contains 23 files. The card counts for the respective files are
given in Table 1.
TABLE 1
File
1234567891011121314151617181920212223
Count
1394,7713,526
1864,7783,528
283551879
1,0221,033673858284552881
1,0251,036675860232915
3. Overview of Tape Contents
The tape contains both single and double precision versions of the
routines in MINPACK-l. For each precision there is a function that provides
machine-dependent constants (when an appropriate set of DATA statements is
activated); all other MINPACK-1 subprograms are written in a portable subset
of ANSI standard Fortran. For those subprograms normally called by the user,
machine-readable documentation is provided for both the single and the double
precision forms.
The first six files on the tape are:
1. Function SPMPAR, single precision machine-dependent constants.
2. MINPACK-1, single precision, 22 subprograms.
7
3. MINPACK-1 documentation, single precision, 11 documents.
4. Function DPMPAR, double precision machine-dependent constants.
5. MINPACK-1, double precision, 22 subprograms.
6. MINPACK-1 documentation, double precision, 11 Jocuments.
The remaining 17 files contain test material; their contents are described in
Section 6.
4. Machine-Dependent Constants
There are three machine-dependent constants that have to be set before
the single or double precision version of MINF'ACK-1 can be used; for most
machines the correct values of these constants are encoded into DATA state-
ments in functions SPMPAR (single precision) and DPMPAR (double precision).
As transmitted on the tape, the constants for the IBM 360,370 series are
"activated"; that is, the DATA statements encoding all other constants are
rendered comments by the presence of 'C' in column 1. If the activated
constants are appropriate for the target machine (various non-IBM machines
share these constants), then no changes are required to SPMPAR or DPMPAR.
Otherwise, a different set of constants will have to be "activated" and the
IBM constants "deactivated". The listings of SPMPAR and DPMPAR are included
as Appendix A of this report.
We are also including (files 7 and 14) single and double precision
versions (named SMCHAR and DMCHAR, respectively) of the environmental inquiry
program of W. J.. Cody, with which we confirmed many of the constants in SPMPAR
and DPMPAR (most of which were obtained from the corresponding Bell Labora-
tories PORT Library function). These programs should 'e useful in determining
the appropriate constants for machines not already covered in SPMPAR and
DPMPAR.
5. Files 1-6: The MINPACK-1 Package and Its Documentation
As described in Section 3, files 1-3 of the tape contain the single
precision version of MINPACK-1 and its associated documentation and files 4-6
contain the double precision equivalents. File 2 contains 22 Fortran sub-
programs: CHKDER, DOGLEG, ENORM, FDJAC1, FDJAC2, HYBRD, HYBRD1, HYBRJ, HYBRJI,
LMDER, LMDER1, LMDIF, LMDIF1, LMPAR, LMSTR, LMSTRI, QFORM, QRFAC, QRSOLV,
RWUPDT, RIMPYQ, and RIUPDT. ENORM is of FUNCTION type; the others are all
SUBROUTINE's. File 5 contains 22 subprograms with the same names and in the
8
same order. There are no separator cards between members, but the last card
of each subprogram has 'END' in columns 7-9.
File 1 contains SPMPAR and file 4 contains DPMPAR. As described in
Section 4, these programs may have to be changed, after which the programs in
files 1 and 2, or 4 and 5, can be compiled into a library. We might suggest
that you choose the precision that corresponds to your normal operating
environment.
Machine-readable documentation is provided in files 3 and 6 for the 11
MINPACK-1 members normally called by the user: HYBRD1, HYBRD, HYBRJL, HYBRJ,
LMDER1, LMDER, LMSTR1, LMSTR, LMDIF1, LMDIF, and CHKDER. HYBRD, HYBRJ, LMDER,
LMSTR, and LMDIF are the core subroutines in the five general algorithmic
paths in MINPACK-1. HYBRD1, HYBRJ1, LMDER1, LMSTR1, and LMDIFl are "easy-to-
use" drivers with simplified calling sequences made possible by assuming
default settings for certain parameters and by returning a limited amount of
information; many applications do not require full flexibility and in these
cases "easy-to-use" drivers can be invoked. Finally, CHKDER should be helpful
to use'-s who wish to check the coding of their Jacobian evaluation subroutine.
The documents are recorded with both upper and lower case characters
(realizable if the TN print chain is available). They include carriage
control characters '1', '0', and ' ' that enable their printing in paged
format under program control; one blank page is inserted between successive
documents. The printed material can be trimmed to fit onto 8 1/2 x 11 sheets
of paper.
6. Files 7-23: The Testing Aids
Files 7-13 on the tape contain testing aids for running the environmental
inquiry program (see Section 4 above), the five available algorithmic paths
(HYBRD, LiYBkJ, LMDER, LMSTR, and LMDIF), and CRKDER, respectively, in single
precision. Files 14-20 contain testing aids for the corresponding double
precision versions. The testing aids include drivers, initial point specify-
ing subroutines, and subroutines (named FCN) that evaluate the functions and
Jacobians. Files 21-23 comprise the input data -- file 21 is used by HYBRD
and HYBRJ, file 22 by LMDER, LMSTR, and LMDIF, and file 23 by CHKDER.
In summary, the contents of files 7-23 are as follows:
7. SMCHAR test8. HYBRD test (single precision)
9. HYBRJ test (single precision)
9
10. LMDER test (single precision)11. LMSTR test (single precision)12. LMDIF test (single precision)13. CHKDER test (single precision)14. DMCHAR test15. HYBRD test (double precision)16. HYBRJ test (double precision)17. LMDER test (double precision)18. LMSTR test (double precision)19. LMDIF test doublee precision)20. CHKDER test (double precision)21. HYBRD and HYBRJ data22. LMDER, LMSTR, and LMDIF data23. CHKDER data
Small changes may be required to the drivers, for example to renumber the
logical input and output units (from 5 and 6) or to include a program card.
To facilitate these changes we have placed the drivers at the beginning of the
respective test files and, in addition, are including listings of the drivers
(double precision versions) as Appendix B of this report.
For each test run, pair one of the program files with the corresponding
data file, and make available the library where the MINPACK-1 package has been
stored. For example, to run the double precision LMDER test you would point
to files 17 and 22.
A special note applies to the drivers for LMSTR in files 11 and 18.
Instead of calculating one row of the Jacobian per call, the test FCN subrou-
tine calculates the entire Jacobian at the first call and moves one row at
each subsequent call. This strategy depends, therefore, on retention by the
system of quantities stored at an earlier call of FCN toward accessing at
later calls. Although this feature is nonstandard, we hope that your system
enables it.
The test runs for HYBRD, HYBRJ, LMDER, LMSTR, and LMDIF each produce
about 1200 lines of output. The test run for CHKDER produces about 300 lines
of output, and the SMCHAR (or DMCHAR) test produces only a single page after
possibly triggering several underflow messages. The last page of the output
for each run contains a summary of the results. We are including listings of
the summaries that we produced from our double precision IBM runs (IBM 3033,
Fortran H Extended) as Appendix C of this report. Section 7 contains further
details toward the evaluation of the test results.
Towards estimating timing, we offer the following two tables: Table 2
records the CPU time in seconds on Argonne's IBM 3033 (including compilation)
10
and Table 3 gives the approximate ratio of the speed of the 3033 to various
other machines.
TABLE 2 TABLE 3
HYBRD 17 CDC 7600 1HYBRJ 17 CDC 6600 5LMDER 21 Univac 1110 11LMSTR 26 Amdahl 470V/6 3LMDIF 21 IBM 370/168 3CHKDER 4 IBM 360/75 15
Honeywell 6070 10-20DEC PDP-10 100-150
Burroughs 6700 100
7. Evaluation of the Test Results
The test runs for the machine constants (files 7 and 14) compare the
results obtained by the environmental inquiry programs SMCHAR and DMCHAR with
the constants specified in SPMPAR and DPMPAR, respectively. The test programs
RERR(1) = (EPSMCH - EPS) / EPSMCHRERR(2) = (DWARF - XMIN) / DWARFRERR(3) = (XMAX - GIANT) / GIANT
where EPSMCH, DWARF, and GIANT are the constants specified in the MINPACK-1
functions, and EPS, XMIN, and XMAX are the values returned from the
environmental inquiry programs.
The constants specified in the MINPACK-l functions are conservative and
do not take into account special features of the system. Therefore, compo-
nents of RERR are not necessarily zero. For example, rounded arithmetic is
reflected by EPS being half as large as EPSMCH, thereby producing a value of
0.5 in RERR(l). Values with magnitude as large a unity should usually be
considered suspicious, but we have encountered the following exceptions:
a) Ia CDC systems, the treatment of small double precision numbersrequires a value of DWARF that is large relative to XMIN, and so thevalue of RERR(2) is close to unity.
b) In Honeywell and Prime systems, the use of extra length registers
results in an overly small value of EPS, and so the value of RERR(l)is close to unity; this only occurs in single precision on the Prime
but in both precisions on the Honeywell. In addition, these systems
do not allow a proper determination of XMAX in double precision and
produce a value of RERR(3) close to minus unity.
11
The interpretation of the test results for the other MINPACK-1 programs
depends on the machine precision and on the sensitivity of the problems to the
precision of the computations. For those problems sensitive to the precision
of the computations we have underlined the (IBM) results in Appendix C. The
performances of the MINPACK-1 programs on these problems vary from machine to
machine, but in general we expect about the same number of successes and
failures as in the IBM runs if the working precision provides at least 10
decimal digits. If this is not the case, there is a deterioration in perfor-
mance commensurate to the lack of digits. For problems not sensitive to the
precision of the computations we expect about the same number of successes and
failures as in the IBM runs regardless of the machine precision.
The criteria for the designation "successful" that we have adopted are as
follows. For the nonlinear equation solvers success is obtained if the final
L2-norm is less than the square root of the machine precision. For the IBM
double precision runs (machine precision approximately 10**(-16)) there are 51
successes and four failures. For the nonlinear least squares solvers success
is obtained if either the absolute or the relative error in the final L2-norm
of the residuals is less than the square root of the machine precision. For
the IBM double precision runs there are 53 successes and one failure.
8. Referral for Questions and Comments
We hope that no difficulty will be encountered in installing MINPACK-1,
but if a problem occurs we will try to help. We are especially interested in
comments about the performance of the codes. Questions and comments may be
directed to:
Burton S. GarbowApplied Mathematics DivisionArgonne National Laboratory9700 S. Cass Ave.Argonne, IL 60439Phone: (312) 972-7184
13
A P P E N D I X A
SPMPAR and DPMPAR Listin-3
15
REAL FUNCTION SPMPAR(I) SPPROO10INTEGER I SPPR0020
C SPPR0030C SPPR0040C FUNCTION SPMPAR SPPR0050C SPPR0060C THIS FUNCTION PROVIDES SINGLE PREC. . 'HINE PARAMETERS SPPR0070C WHEN THE APPROPRIATE SET OF DATA S %. IS ACTIVATED (BY SPPR0080C REMOVING THE C FROM COLUMN 1) AND ALL uirIER DATA STATEMENTS ARE SPPR0090C RENDERED INACTIVE. MOST OF THE PARAMETER VALUES WERE OBTAINED SPPRO100C FROM THE CORRESPONDING BELL LABORATORIES PORT LIBRARY FUNCTION. SPPRO110C SPPR0120C THE FUNCTION STATEMENT IS SPPRO130C SPPR0140C REAL FUNCTION SPMPAR(I) SPPRO150C SPPRO160C WHERE SPPRO170C SPPRO180C I IS AN INTEGER INPUT VARIABLE SET TO 1, 2, OR 3 WHICH SPPR0190C SELECTS THE DESIRED MACHINE PARAMETER. IF THE MACHINE HAS SPPRO200C T BASE B DIGITS AND ITS SMALLEST AND LARGEST EXPONENTS ARE SPPRO210C EMIN AND EMAX, RESPECTIVELY, THEN THESE PARAMETERS ARE SPPR0220C SPPR0230C SPMPAR(1) = B**(1 - T), THE MACHINE PRECISION, SPPR0240C SPPRO250C SPMPAR(2) = B**(EMIN - 1), THE SMALLEST MAGNITUDE, SPPR0260C SPPR0270C SPMPAR(3) = B**EMAX*(1 - B**(-T)), THE LARGEST MAGNITUDE. SPPR0280C SPPR0290C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. SPPR0300C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE SPPRO310C SPPR0320C ***r*'r**'** SPPR0330
INTEGER MCHEPS(2) SPPRO340INTEGER MINMAG(2) SPPR0350INTEGER MAXMAG(2) SPPRO360REAL RMACH(3) SPPRO370EQUIVALENCE (RMACH(1),MCHEPS(1)) SPPR0380EQUIVALENCE (RMACH(2),MINMAG(1)) SPPR0390EQUIVALENCE (RMACH(3),MAXMAG(1)) SPPR0400
C SPPRO410C MACHINE CONSTANTS FOR THE IBM 360/370 SERIES, SPPR04^0C THE AMDAHL 470/V6, THE ICL 2900, THE ITEL AS/6, SPPR0430C THE XEROX SIGMA 5/7/9 AND THE SEL SYSTEMS 85/86. SPPR0440C SPPRO450
DATA RMACH(1) / Z3C100000 / SPPRO460DATA RMACH(2) / Z00100000 / SPPR0470DATA RMACH(3) / Z7FFFFFFF / SPPR0480
C SPPR0490C MACHINE CONSTANTS FOR THE HONEYWELL 600/6000 SERIES. SPPR0500C SPPRO510C DATA RMACH(1) / 0716400000000 / SPPRO520C DATA RMACH(2) / 0402400000000 / SPPRO530C DATA RMACH(3) / 0376777777777 / SPPRO540C SPPRO550C MACHINE CONSTANTS FOR THE CDC 6000/7000 SERIES. SPPRO560C SPPRO570C DATA RMACH(1) / 16414000000000000000B / SPPRO580C DATA RMACH(2) / 00014000000000000000B / SPPRO590C DATA RMACH(3) / 37767777777777777777B / SPPRO600
16
C SPPR0610C MACHINE CONSTANTS FOR THE PDP-10 (KA OR KI PROCESSOR). SPPR0620C SPPR0630C DATA RMACH(1) / "147400000000 / SPPR0640C DATA RMACH(2) / "000400000000 / SPPR0650C DATA RMACH(3) / "377777777777 / SPPR0660C SPPR0670C MACHINE CONSTANTS FOR THE PDP-11 FORTRAN SUPPORTING SPPR060C 32-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL). SPPR0690C SPPR0700C DATA MCHEPS(1) / 889192448 / SPPR0710C DATA MINMAG(1) / 8388608 / SPPR0720C DATA MAXMAG(1) / 2147483647 / SPPR0730C SPPR0740C DATA RMACH(1) / 006500000000 / SPPRO750C DATA RMACH(2) / 000040000000 / SPPR0760C DATA RMACH(3) / 017777777777 / SPPRO770C SPPRO780C MACHINE CONSTANTS FOR THE PDP-11 FORTRAN SUPPORTING SPPR0790C 16-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL). SPPR0800C SPPR0810
DATA MCHEPS(1),MCHEPS(2) / 13568, 0 / SPPR0820C DATA MINMAG(1),MINMAG(2) / 128, 0 / SPPR0830C DATA MAXMAG(1),MAXMAG(2) / 32767, -1 / SPPR0840C SPPR0850C DATA MCHEPS(1),MCHEPS(2) / 0032400, 0000000 / SPPR0860C DATA M;NMAG(J),MINMAG(2- / 0000200, 0000000 / SPPR0870C DATA MAXMAG(1),MAXMAG(2) / 0077777, 0177777 / SPPR0880C SPPRO890C MACHINE CONSTANTS FOR THE BURROUGHS 5700/6700/7700 SYSTEMS. SPPRO900C SPPRO910C DATA RMACH(1) / 01301000000000000 / SPPRO920C DATA RMACH(2) / 01771000000000000 / SPPRO930C DATA RMACH(3) / 00777777777777777 / SPPRO940C SPPR0950C MACHINE CONSTANTS FOR THE BURROUGHS 1700 SYSTEM. SPPRO960C SPPRO970C DATA RMACH(1) / Z4EA800000 / SPPRO980C DATA RMACH(2) / Z400800000 / SPPRO990C DATA RMACH(3) / Z5FFFFFFFF / SPPR1000C SPPR1010C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES. SPPR1020C SPPR1030C DATA RMACH(1) / 0147400000000 / SPPR1040C DATA RMACH(2) / 0000400000000 / SPPR1050C DATA RMACH(3) / 0377777777777 / SPPR1060C SPPR1070C MACHINE CONSTANTS FOR THE DATA GENERAL ECLIPSE S/200. SPPR1080C SPPR1090C NOTE - IT MAY BE APPROPRIATE TO INCLUDE THE FOLLOWING CARD - SPPR1100C STATIC RMACH(3) SPPR1110C SPPR1120C DATA MINMAG/20K.0/,MAXMAG/77777K,177777K/ SPPR1130C DATA MCHEPS/36020K,0/ SPPR1140C SPPR1150C MACHINE CONSTANTS FOR THE HARRIS 220. SPPR1160C SPPR1170C DATA MCHEPS(1) / '20000000, '00000353 / SPPR1180C DATA MINMAG(1) / '20000000, '00000201 / SPPR1190C DATA MAXMAG(1) / '37777777, '00000177 / SPPR1200
MACHINE CONSTANTS FOR THE CRAY-1.
DATA RMACH(1)DATA RMACH(2)DATA RMACH(3)
/ 0377224000000000000000B // 0200034000000000000000B // 05777777777777777777763 /
CCCCCCCCCCCCC
CCC
DATA MCHEPS(1)DATA MINMAG(1)DATA MAXMAG(1)
/ :10000000153 // :10000000000 // :17777777777 /
SPMPAR = RMACH(I)RETURN
LAST CARD OF FUNCTION SPMPAR.
END
17
MACHINE CONSTANTS FOR THE PRIME 400.
SPPR1210SPPR1220SPPR1230SPPR 1240SPPR1250SPPR1260SPPR1270SPPR1280SPPR1290SPPR1300SPPR1310SPPR1320SPPR1330SPPR1340SPPR1350SPPR1360SPPR1370SPPR1380SPPR1390
18
19
DOUBLE PRECISION FUNCTION DPMPAR(I) DPPROO10INTEGER I DPPR0020
C DPPR0030C DPPR0040C FUNCTION DPMPAR DPPR0050C DPPR0060C THIS FUNCTION PROVIDES DOUPLE PRECISION MACHINE PARAMETERS DPPR0070C WHEN THE APPROPRIATE SET OF DATA STATEMENTS IS ACTIVATED (BY DPPROO80C REMOVING THE C FROM COLUMN 1) AND ALL OTHER DATA STATEMENTS ARE DPPROO90C RENDERED INACTIVE. MOST OF THE PARAMETER VALUES WERE OBTAINED DPPRO100C FROM THE CORRESPONDING BELL LABORATORIES PORT LIBRARY FUNCTION. DPPRO110C DPPRO120C THE FUNCTION STATEMENT IS DPPRO130C DPPRO140C DOUBLE PRECISION FUNCTION DPMPAR(I) DPPRO150C DPPRO160C WHERE DPPRO170C DPPRO180C I IS AN INTEGER INPUT VARIABLE SET TO 1, 2, OR 3 WHICH DPPRO190C SELECTS THE DESIRED MACHINE PARAMETER. IF THE MACHINE HAS DPPRO200C T BASE B DIGITS AND ITS SMALLEST AND LARGEST EXPONENTS ARE DPPRO210C EMIN AND EMAX, RESPECTIVELY, THEN THESE PARAMETERS ARE DPPR0220C DPPRO230C DPMPAR(1) = B**(1 - T), THE MACHINE PRF.ISION, DPPR0240C DPPRO2S0C DPMPAR(2) = l**'r(EMIN - 1), THE SMALLEST MAGNITUDE, DPPRO260C DPPR0270C DPMPAR(3) = B**EMAX*(1 - B**(-T)), THE LARGEST MAGNITUDE. DPPRO280C DPPR0290C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. DPPRO300C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE DPPRO310C DPPRO320C * DPPR0330
INTEGER MCHEPS(4) DPPRO340INTEGER MINMAG(4) DPPR0350INTEGER MAXMAG(4) DPPRO360DOUBLE PRECISION DMACH(3) DPPRO370EQUIVALENCE (DMACH(1),MCHEPS(1)) DPPRO380EQUIVALENCE (DMACH(2),MINMAG(1)) DPPRO390EQUIVALENCE (DMACH(3),MAXMAG(1)) DPOR0400
C DPPRO410C MACHINE CONSTANTS FOR THE IBM 360/370 SERIES, DPPRO420C THE AMDAHL 470/V6, THE ICL 2900, THE ITEL AS/6, DPPR0430C THE XEROX SIGMA 5/7/9 AND THE SEL SYSTEMS 85/86. DPPRO440C DPPR0450
DATA MCHEPS(1),MCHEPS(2) / Z34100000, Z00000000 / DPPRO460DATA MINMAG(1),MINMAG(2) / 200100000, Z00000000 / DPPR0470DATA MAXMAG(1),MAXMAG(2) / Z7FFFFFFF, ZFFFFFFFF / DPPR0480
C DPPR0490C MACHINE CONSTANTS FOR THE HONEYWELL 600/6000 SERIES. DPPRO500C DPPR0510C DATA MCHEPS(1),MCHEPS(2) / 0606400000000, 0000000000000 / DPPRO520C DATA MINMAG(1),MINMAG(2) / 0402400000000, 0000000000000 / Drk53uC DATA MAXMAG(1),MAXMAG(2) / 0376777777777, 0777777777777 / DPPRO540C DPPR0550C MACHINE CONSTANTS FOR THE CDC 6000/7000 SERIES. DPPRO560C DPPR0570C DATA MCHEPS(1) / 15614000000000000000B / DPPRO580C DATA MCHEPS(2) / 15010000000000000000B / DPPRO590C DPPRO600
DATA MINMAG(1) / 00604000000000000000B /DATA MINMAG(2) / 00000000000000000000B /
DATA MAXMAG(1) / 37767777777777777777B /DATA MAXMAG(2) / 37167777777777777777B /
MACHINE CONSTANTS FOR THE PDP-10 (KA PROCESSOR).
CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
///
"114400000000,"033400000000,"377777777777,
"000000000000"000000000000"344777777777
MACHINE CONSTANTS FOR THE PDP-10 (KI PROCESSOR).
MCHEPS(1),MCHEPS(2)MINMAG(1),MINMAG(2)MAXMAG(1),MAXMAG(2)
//
/
"104400000000,"000400000000,"377777777777,
"000000000000"000000000000"377777777777
MACHINE CONSTANTS FOR THE PDP-11 FORTRAN SUPPORTING32-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL).
MCHEPS(1) ,MCHEPS(2)sINMAG(1) ,MINMAG(2)MAXMAG(1) ,MAXMAG(2)
>CHEPS(1) ,MCHEPS(2)MINMAG(1) ,MINMAG(2)MAXMAG(1) ,MAXMAG(2)
///
///
620756992,8388608,
2147483647,
0/o/-1 /
004500000000, 000000000000000040000000, 000000000000017777777777, 037777777777
///
C MACHINE CONSTANTS FOR THE PDP-11 FORTRAN SUPPORTINGC 16-BIT INTEGERS (EXPRESSED IN INTEGER AND OCTAL).
DATA MCHEPS(1),MCHEPS(2) /DATA NCHEPS(3),MCHEPS(4) /
DATA MINMAG(1),MINMAG(2) /DATA MINMAG(3),MINMAG(4) /
DATA MAXMAG(1),MAXMAG(2) /DATA MAXMAG(3),MAXMAG(4) /
9472,0,
128.0,
32767,-1,
0/0/
0/0/
-1 /-1 /
DATA MCHEPS(1),MCHEPS(2) / 0022400, 0000000 /DATA MCHEPS(3),MCHEPS(4) / 0000000, 0000000 /
DATA MINMAG(1),MINMAG(2) / 0000200, 0000000 /DATA MIN MAG(3),M1INMAG(4) / 0000000, 0000000 /
DATA AXMAG(1),MAXMAG(2) / 0077777, 0177777 /DATA MAXMAG(3),MAXMAG(4) / 0177777, 0177777 /
MACHINE CONSTANTS FOR THE BURROUGHS 6700/7700 SYSTEMS.
DATA MCHEPS(1) / 01451000000000000 /DATA MCHEPS(2) / 00000000000000000 /
DATA MINMAG(1) / 01771000000000000 /DATA MINMAG(2) / 07770000000000000 /
DATA MAX'IAG(1) / 0077777777777777 /DATA MAXMAG(2) / 07777777777777777 /
20
DATADATADATA
MCHEPS(1) ,MCHEPS(2)MINMAG(1),MINMAG(2)MAXMAG(1),MAXMAG(2)
DATADATADATA
///
///
DATADATADATA
DATADATADATA
DPPR0610DPPR0620DPPR0630DPPR0640DPPR0650DPPR0660DPPR0670DPPR0680DPPR0690DPPR0700DPPRO710DPPR0720DPPR0730DPPRO740DPPR0750DPPR0760DPPRO770DPPR0780DPPR0790DPPR0800DPPRO810DPPR0820DPPR0830DPPRO840DPPRO850DPPR0860DPPR0870DPPR0880DPPR0890V 'PRO900DPPRO910DPPR0920DPPR0930DPPR0940DPPRO950DPPR0960DPPR0970DPPR0980DPPRO990DPPR1000DPPR1010DPPR1020DPPR1030DPPR1040DPPR1050DPPR1060DPPR1070DPPR1080DPPR1090DPPR1I100DPPR1110DPPR1120DPPR1130DPPRI140DPPR1150DPPR1160DPPR1170DPPR1180DPPR1190
CCCC
CCCCCCCCCCCCCCCCCCCCCCCC DPPR1200
21
C DPPR1210C MACHINE CONSTANTS FOR THE BURROUGHS 5700 SYSTEM. DPPR1220C DPPR1230C DATA MCHEPS(1) / 01451000000000000 / DPPR1240C DATA MCHEPS(2) / 00000000000000000 / DPPR1250C DPPR1260C DATA MINMAG(1) / 01771000000000000 / DPPR1270C D.'iTA MINMAG(2) / 00000000000000000 / DPPR 1280C DPPR1290C DATA MAXMAG(1) / 00777777777777777 / DPPR1300C DATA MAXMAG(2) / 00007777777777777 / DPPR1310C DPPR 1320C MACHINE CONSTANTS FOR THE BURROUGHS 1700 SYSTEM. DPPR1330C DPPR1340C DATA MCHEPS(1) / ZCC6800000 / DPPR1350C DATA MCHEPS(2) / Z000000000 / DPPR1360C DPP:' 370C DATA MINMAG(1) / ZC00800000 / DPPR1380C DA"'A MINMAG(2) / Z000000000 / DPPR1390C DPPR1400C DATA MAXMAG(1) / ZDFFFFFFFF / DPPR1410C DATA MAXMAG(2) / ZFFFFFFFFF / DPPR1420C DPPR1430C MACHINE CONSTANTS FOR THE UNIVAC 1100 SERIES. DPPR1440C DPPR1450C DATA MCHEPS(1),MCHEPS(2) / 0170640000000, 0000000000000 / DPPR1460C DATA MINMG(1),MINMAG(2) / 0000040000000, 0000000000000 / DPPR1470C DATA MAXMAG(1),MAXMAG(2) / 0377777777777, 0777777777777 / DPPR1480C DPPR1490C MACHINE CONSTANTS FOR THE DATA GENERAL ECLIPSE S/200. DPPR1500C DPPR1510C NOTE - IT MAY BE APPROPRIATE TO INCLUDE THE FOLLOWING CARD - DPPR1520C STATIC DMACH(3) DPPR1530C DPPR1540C DATA MINMAG/20K,3*0/,MAXMAG/77'77K,3*177777K/ DPPR1550C DATA MCHEPS/32020K,3*0/ DPPR1560C DPPR1570C MACHINE CONSTANTS FOR THE HARRIS 220. DPPR1580C DPPR1590C DATA MCHEPS(1),MCHEPS(2) / '20000000, '00000334 / DPPR1600C DATA MINMAG(1),MINMAG(2) / '20000000, '00000201 / DPPR1610C DATA MAXMAG(1),MAXMAG(2) / '37777777, '37777577 / DPPR1620C DPPR1630C MACHINE CONSTANTS FOR THE CRAY-1. DPPR1640C DPPR1650C DATA MCHEPS(1) / 0376424000000000000000B / DPPR1660C DATA MCHEPS(2) / 0000000COOOO000000OOOB / DPPR1670C DPPR1680C DATA MINMAG(1) / 020003000000000000000B / DPPR1690C DATA MINMAG(2) / 000000000000000000000O B / DPPR1700C DPPR1710C DATA MAXMAG(1) / 0577777777777777777777B / DPPR1720C DATA MAXMAG(2) / 0000007777777777777776B / DPPR1730C DPPR1740C MACHINE CONSTANTS FOR THE PRIME 400. DPPR1750C DPPR1760C DATA MCHEPS(1),MCHEPS(2) / :10000000000, :00000000123 / DPPR1770C DATA MINMAG(1),MINMAG(2) / :10000000000, :00000100000 / DPPR1780C DATA MAXMAG(1),MAXMAG(2) / :17777777777, :37777677776 / DPPR1790C DPPR1800
22
DPMPAR = DMACH(I) DPPR1R10RETURN DPPR1820
C DPPR1830C LAST CARD OF FUNCTION DPMPAR. DPPR1840C DPPR1850
END DPPR1860
23
A PPE N D I X B
Test Driver Listings
24
25
C DPPD0010C DPPDO020C THIS PROGRAM CHECKS THE CONSTANTS OF MACHINE PRECISION AND DPPDO030C SMALLEST AND LARGEST MACHINE REPRESENTABLE NUMBERS SPECIFIED IN DPPDO040C FUNCTION DPMPAR, AGAINST THE CORRESPONDING HARDWARE-DETERMINED DPPDO050C MACHINE CONSTANTS OBTAINED BY DMCHAR, A SUBROUTINE DUE TO DPPDO060C W. J. CODY. DPPDO070C DPPDO080C DATA STATEMENTS IN DPMPAR CORRESPONDING TO THE MACHINE USED MUST DPPDO090C BE ACTIVATED BY REMOVING C IN COLUMN 1. DPPDO100C DPPDO110C THE PRINTED OUTPUT CONSISTS OF THE MACHINE CONSTANTS OBTAINED BY DPPDO120C DMCHAR AND COMPARISONS OF THE DPMPAR CONSTANTS WITH THEIR DPPDO130C DMCHAR COUNTERPARTS. DESCRIPTIONS OF THE MACHINE CONSTANTS ARE DPPDO140C GIVEN IN THE PROLOGUE COMMENTS OF DMCHAR. DPPDO350C DPPD0160C SUBPROGRAMS CALLED DPPDO170C DPPDO180C MINPACK-SUPPLIED ... DMCHAR,DPMPAR DPPDO190C DPPD0200C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. DPPD0210C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE DPPD0220C DPPD0230C DPPDO240
INTEGER IBETA,IEXP, IRND, IT,MACHEP,MAXEXP,MINEXP,NEGEP,NGRD, DPPD0250* NWRITE DPPD0260DOUBLE PRECISION DWARF,EPS,EPSMCH,EPSNEG,GIANT,XMAX,XMIN DPPD0270DOUBLE PRECISION RERR(3) DPPD0280DOUBLE PRECISION DPMPAR DPPD0290
C DPPD0300C LOGICAI OUTPUT UNIT IS ASSUMED TO BE NUMBER 6. DPPD0310C DPPD0320
DATA NWRITE /6/ DPPD0330C DPPD0340C DETERMINE THE MACHINE CONSTANTS DYNAMICALLY FROM DMCHAR. DPPDO350C DPPD0360
CALL DMCHAR(IBETA, IT,IRND,NGRD,MACHEP,NEGEP,IEXP,MINEXP,MAXEXP, DPPT00370* EPS,EPSNEG,XMIN,XMAX) DPPI)0380
C DPPD0390C COMPARE THE DPMPAR CONSTANTS WITH THEIR DMCHAR COUNTERPARTS AND DPPD0400C STORE THE RELATIVE DIFFERENCES IN RERR. DPPI)0410C DPPD0420
EPSMCH = DPMPAR(1) DPPD0430DWARF = DPMPAR(2) DPPD0440GIANT = DPMPAR(3) DPPD0450RERR(1) = (EPSMCH - EPS)/EPSMCH DPPD04tORERR(2) = (DWARF - XMIN)/DWARF DPPD0470RERR(3) = (XMAX - GIANT)/GIANT DPPD0480
C DPPD0490C WRITE THE DMCHAR CONSTANTS. DPPDO500C DPPDO510
WRITE (NWRITE,10) DPPDO520* IBETA,IT,IRND,NGRD,MACHEP,NEGEP,IEXP,MINEXP,MAXEXF,EPS, DPPD0'30* EPSNEG,XMIN,XMAX DPPDO540
C DPPDO550C WRITE THE DPMPAR CONSTANTS AND THE RELATIVE DIFFERENCES. DPPDO5 OC DPPDO570
WRITE (NWRITE,20) EPSMCH,RERR(1),DWARF,RERR(2),GIANT,RERR(3) DPPDO580STOP DPPDO590
10 FORMAT (17H1DMCHAR CONSTANTS // 8H IBETA s, 16 // 8H IT =, DPPD0600* 16 // 8H IRND =, 16 // 8H NGRD r, 16 // 9H MACHEP *, DPPD0610
26
* 16 // 8H NEGEP =, 16 // 7H IEXP =, 16 // 9H 'IINEXP =, DPPD0620* 16 // 9H MAXEXP =, 16 // 6H EPS =, D15.7 // 9H EPSNEG , DPPD0630* D15.7 // 7H XMIN =, D15.7 // 7H XMAX =, D15.7) DPPD0640
20 FORMAT ( /// 42H DPMPAR CONSTANTS AND RELATIVE DIFFERENCES // DPPD0650* 9H EPSMCH =, D15.7 / 1OH RERR(1) ==, D15.7 // DPPD0660
8H DWARF =, D15.7 / 10H RERR(2) =, D15.7 / 8H GIANT , DPPD0670* D15.7 / 10H RERR(3) =, D15.7) DPPD0680
C DPPD0690C LAST CARD OF DRIVER. DPPD0700C DPPD0710
END DPPD072O
27
C ***** HYBDO010C HYBDO020C THIS PROGRAM TESTS CODES FOR THE SOLUTION OF N NONLINEAR HYBDO030C EQUATIONS IN N VARIABLES. IT CONSISTS OF A DRIVER AND AN HYBDO040C INTERFACE SUBROUTINE FCN. THE DRIVER READS IN DATA, CALLS THE HYBDO050C NONLINEAR EQUATION SOLVER, AND FINALLY PRINTS OUT INFORMATION HYBDO060C ON THE PERFORMANCE OF THE SOLVER. THIS IS ONLY A SAMPLE DRIVER, HYBDO070C MANY OTHER DRIVERS ARE POSSIBLE. THE INTERFACE SUBROUTINE FCN HYBDO080C IS NECESSARY TO TAKE INTO ACCOUNT THE FORMS OF CALLING HYBDO090C SEQUENCES USED BY THE FUNCTION SUBROUTINES IN THE VARIOUS HYBDO100C NONLINEAR EQUATION SOLVERS. HYBDO110C HYBDO120C SUBPROGRAMS CALLED HYBD0130C HYBDO140C USER-SUPPLIED....... FCN HYBDO150C HYBDO160C MINPACK-SUPPLIED ... DPMPAR,ENORM,HYBRD1, INITPT,VECFCN HYBDO170C HYBDO180C FORTRAN-SUPPLIED ... DSQRT HYBDO190C HYBD0200C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. HYBD0210C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE HYBD0220C HYBDO230C * *HYBD0240
INTEGER I,IC,INFO,K,LWA,N,NFEV,NPROB,NREAD,NTRIES,NWRITE HYBD0250INTEGER NA(60),NF(60),NP(60),NX(60) ;YBD0260DOUBLE PRECISION FACTOR,FNORM1,FNORM2,ONE,TEN,TOL HYBDO270DOUBLE PRECISION FNM(60),FVEC(40),WA(2660),X(40) HYBD0280DOUBLE PRECISION DPHPAR,ENORM HYBD0290EXTERNAL FCN HYBD0300COMMON /REFNUM/ NPROB,NFEV HYBD0310
C HYBD0320C LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5. HYBD0330C LOGICAL OUTPUT UNIT IS ASSUMED TO BE NUMBER 6. HYBD0340C tiYBD03>0
DATA NREAD,NWRITE /5,6/ 1YBD0360C HYBD0370
DATA ONE,TEN /1.ODO,1.OD1/ HYBD0380TOL = DSQRT(DPMPAR(1)) HYBD0390LWA = 2660 HYBD0400IC = 0 HYBDO410
10 CONTINUE HYBD0420READ (NREAD,50) NPROB,N,NTRIES HYBDO430IF (NPROB .LE. 0) GO TO 30 HYBD0440FACTOR = ONE HYBD0450DO 20 K = 1, NTRIES HYBD0460
IC = IC + 1 HYBD0470CALL INITPT(N,X,NPROB,FACTOR) HYBD0480CALL VECFCN(N,X,FVEC,NPROB) HYBD0490FNORM1 = ENORM(N,FVEC) HYBDOS00WRITE (NWRITE,60) NPROB,N HYBDO510NFEV = 0 HYBD0520CALL HYBRD1(FCN,N,X,FVEC,TOL,INFO,WA,LWA) HYBDO530FNORM2 = ENORM(N,FVEC) HYBDO540NP(IC) NPROB HYBD0550NA(IC) = N HYDD0560NF(IC) = NFEV HYBD0570NX(IC) = INFO HYBDOJ80FNM(IC) = FNORM2 HYBDO590WRITE (NWRITE,70) FNORM1,FNORM2,NFEV,INFO,(X(I), I = 1, N) HYBDO600FACTOR = TEN*FACTOR HYBDOe 10
20 CONTINUEGO TO 10
30 CONTINUEWRITE (NWRITE,80) ICWRITE (NWRITE,90)DO 40 I = 1, IC
WRITE (NWRITE,100) NP(I),NA(I),NF(I),NX(I),FNM(I)40 CONTINUE
STOP50 FORMAT60 FORMAT70 FORMAT
*
*
80 FORMAT90 FORMAT
100 FORMAT
(315)( //// 5X, 8H PROBLEM, I5, 5X, 10H DIMENSION, I5, 5X //)(5X, 33H INITIAL L2 NORM OF THE RESIDUALS, D15.7 // 5X,33H FINAL L2 NORM OF THE RESIDUALS , D15.7 // 5X,33H NUMBER OF FUNCTION EVALUATIONS , I10 // 5X,15H EXIT PARAMETER, 18X, I10 // 5X,27H FINAL APPROXIMATE SOLUTION // (5X, 5D15.7))(12H1SUMMARY OF , 13, 16H CALLS TO HYBRD1 /)(39H NPROB N NFEV INFO FINAL L2 NORM /)(I4, 16, 17, 16, 1X, D15.7)
CC LAST CARD OF DRIVER.C
ENDSUBROUTINE FCN(N,X,FVEC,IFLAG)INTEGER N,IFLAGDOUBLE PRECISION X(N),FVEC(N)
CCC THE CALLING SEQUENCE OF FCN SHOULD BE IDENTICAL TO THEC CALLING SEQUENCE OF THE FUNCTION SUBROUTINE IN THE NONLINEARC EQUATION SOLVER. FCN SHOULD ONLY CALL THE TESTING FUNCTIONC SUBROUTINE VECFCN WITH THE APPROPRIATE VALUE OF PROBLEMC NUMBER (NPROB).CC SUBPROGRAMS CALLEDCC MINPACK-SUPPLIED ... VECFCNCC ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980.C BURTCN S. GAREOW, KENNETH E. HILLSTROM, JORGE J. MORECC
INTEGER NPROB,NFEVCOMMON /REFNUM/ NPROB,NFEVCALL VECFCN(N,X,FVEC,NPROB)NFEV = NFEV + 1RETURN
CC LAST CARD OF INTERFACE SUBROUTINE FCN.C
END
28
HYBD0620HYBD0630HYBD0640HYBD0650HYBD0660HYBD0670HYBD0680HYBD0690HYBD0700HYBD0710HYBD0720HYBD0730HYBD0740HYBD0750HYBD0760HYBD0770HYBD0780HYBD0790HYBD0800HYBD0810HYBDO820HYBD0830HYBD0840HYBD0850HYBD0860HYBD0870HYBD0880HYBD0890HYBD0900HYBD0910HYBD0920HYBDO930HYBD0940HYBD0950HYBD0960HYBD0970HYBD0980HYBD0990HYBD1000HYBD1010HYBD1020HYBD1030HYBD1040HYBD1050HYBD1060HYBD1070HYBD1080HYBD1090HYBD1100HYBD1110HYBD1120
29
C ********* HYJD0010C HYJD0020C THIS PROGRAM TESTS CODES FOR THE SOLUTION OF N NONLINEAR HYJD0030C EQUATIONS IN N VARIABLES. IT CONSISTS OF A DRIVER AND AN HYJD0040C INTERFACE SUBROUTINE FCN. THE DRIVER READS IN DATA, CALLS THE HYJD0050C NONLINEAR EQUATION SOLVER, AND FINALLY PRINTS OUT INFORMATION HYJD0060C ON THE PERFORMANCE OF THE SOLVER. THIS IS ONLY A SAMPLE DRIVER, HYJD0070C MANY OTHER DRIVERS ARE POSSIBLE. THE INTERFACE SUBROUTINE FCN HYJD')080C IS NECESSARY TO TAKE INTO ACCOUNT THE FORMS OF CALLING HYJD0090C SEQUENCES USED BY THE FUNCTION AND JACOBIAN SBROUTINES IN HYJDO100C THE VARIOUS NONLINEAR EQUATION SOLVERS. HYJDO110C IIYJD0120C SUBPROGRAMS CALLED HYJD0130C HYJI)0140C USER-SUPPLIED....... FCN HYJD0150C HYJDOI60C MINPACK-SUPPLIED ... DPMPAR,ENORM,HYBRJ1,INITPT,VECFCN HYJDO170C HYJD0180C FORTRAN-SUPPLIED ... DSQRT HYJD0190C HYJD0200C ARGONNE NATiONAL LABORATORY. MINPACK PROJECT. MARCH 1980. HYJDO210C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE HYJD0220C HYJD0230C HYJD0240
INTEGER I,IC,INFO,K,LDFJAC,LWA,N,NFEV,NJEV,NPROB,NREAI),NTRIES, HYJD02501 NWRITE HYJD0260INTEGER NA(60),NF(60),NJ(60),NP(60),NX(60) HYJD0270DOUBLE PRECISION FACTOR,FNORM1,FNORM2,ONETEN,TOL HYJD0280DOUBLE PRECISION FNM(60),FJAC(40,40),FVEC(40),WA(1060),X(40) HYJD0290DOUBLE PRECISION DPMPAR,ENORM HYJD0300EXTERNAL FCN HYJD0310COMMON /REFNUM/ NPROB,NFEV,NJEV HYJD0320
C HYJD0330C LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5. HYJD0340C LOGICAL OUTPUT UNIT IS ASSUMED TO BE NUMBER 6. HYJD0350C IIYJD0360
1ATA NREAD,NWRITE /5,6/ HYJD0370C HYJD0380
DATA ONE,TEN /1.ODO,1.OD1/ HYJD0390TOL = DSQRT(DPMPAR(1)) HYJD0400LDFJAC = 40 HYJD0410LWA = 1060 HYJD0420IC = 0 HYJD0430
10 CONTINUE HYJD0440READ (NREAD,50) NPROB,N,NTRIES HYJDO450IF (NPROB .LE. 0) GO TO 30 HYJDO460FACTOR = ONE IIYJD0470DO 20 K = 1, NTRIES HYJDO480
IC = IC + 1 HYJD0490CALL INITPT(N,X,NPROB,FACTOR) HYJD0500CALL VECFCN(N,X,FVEC,NPROB) HYJD0510FNORM1 = ENORM(N,FVEC) HYJD0520WRITE (NWRITE,60) NPROB,N HYJD0530NFEV = 0 HYJD0540NJEV = 0 HYJD0550CALL HYBRJ1(FCN,N,X,FVEC,FJAC,LDFJAC,TOL,INFO,WA,LWA) HYJD0560FNORM2 = ENORM(N,FVEC) HYJD0570NP(IC) = NPROB HYJD0580NA(IC) = N HYJD0590NF(IC) = NFEV HYJD0600NJ(IC) = NJEV HYJD0610
30
NX(IC) = INFO HYJD0620FNM(IC) = FNORM2 HYJD0630WRITE (NWRITE,70) HYJD0640
1 FNORM1,FNORM2,NFEV,NJEV,INFO,(X(I), I = 1, N) HYJD0650FACTOR = TEN*FACTOR HYJD0660
20 CONTINUE HYJD0670GO TO 10 HYJD0680
30 CONTINUE HYJD0690WRITE (NWRITE,80) IC HYJD0700WRITE (NWRITE,90) HYJD0710DO 40 I = 1, IC HYJD0720
WRITE (NWRITE,100) NP(I),NA(I),NF(I),NJ(I),NX(I),FNM(I) HYJD073040 CONTINUE HYJD0740
STOP HYJD075050 FORMAT (315) HYJD076060 FORMAT ( //// 5X, 8H PROBLEM, 15, 5X, 10H DIMENSION, 15, 5X //) HYJD077070 FORMAT (5X, 33H INITIAL L2 NORM OF THE RESIDUALS, D15.7 // 5X, HYJD07801 3311 FINAL L2 NORM OF THE RESIDUALS , D15.7 // 5X, HYJD07902 33H NUMBER OF FUNCTI(I EVALUATIONS , 110 // 5X, HYJD08003 3311 NUMBER OF JACOBIAN EVALUATIONS , I10 // 5X, HYjD081O4 1511 EXIT PARAMETER, 18X, 110 // 5X, IYJD08205 2711 FINAL APPROXIMATE SOLUTION // (5X, 5D15.7)) HYJD0830
80 FCAMAT (12H1SUMMARY OF , 13, 16H CALLS TO HYBRJ1 /) HYJD084090 FORMAT (4611 NPROB N NFEV NJEV INFO FINAL L2 NORM /) HYJD0850100 FORMAT (14, 16, 217, 16, 1X, D15.7) HYJD0860
C HYJD0870C LAST CARD OF DRIVER. HYJD0880C HYJD0890
END HYJD0900SUBROUTINE FCN(N,X,FVEC,FJAC,LDFJAC,IFLAG) HYJD0910INTEGER N,LDFJACIFLAG HYJD0920DOUBLE PRECISION X(N),FVEC(N),FJAC(LDFJAC,N) HYJD0930
C ********** HYJD0940C HYJD0950C THE CALLING SEQUENCE OF FCN SHOULD BE IDENTICAL TO THE HYJD0960C CALLING SEQUENCE OF THE FUNCTION SUBROUTINE IN THE NONLINEAR HYJD0970C EQUATION SOLVER. FCN SHOULD ONLY CALL THE TESTING FUNCTION HYJD0980C AND JACOBIAN SUBROUTINES VECFCN AND VECJAC WITH THE HYJD0990C APPROPRIATE VALUE OF PROBLEM NUMBER (NPROB). HYJD1000C HYJD1010C SUBPROGRAMS CALLED HYJD1020C HYJD1030C MINPACK-SUPPLIED ... VECFCN,VECJAC HYJD1040C HYJD1050C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. HYJD1060C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE HYJD1070C HYJD1080C HYJD 1090
INTEGER NPROB,NFEV,NJEV HYJD1100COMMON /REFNUM/ NPROB,NFEV,NJEV HYJD1110IF (IFLAG .EQ. 1) CALL VECFCN(N,X,FVEC,NPROB) HYJD1120IF (IFLAG .EQ. 2) CALL VECJAC(N,X,FJAC,LDFJAC,NPROB) HYJD1130IF (IFLAG .EQ. 1) NFEV = NFEV + 1 HYJD1140IF (IFLAG .EQ. 2) NJEV = NJEV + 1 HYJD1150RETURN HYJD1160
C HYJD1170C LAST CARD OF INTERFACE SUBROUTINE FCN. HYJD1180C HYJD1190
END HYJD1200
31
C ****s*.:**** LMDD0010C LMDD0020C THIS PROGRAM TESTS CODES FOR THE LEAST-SQUARES SOLUTION OF LMDD0030C M NONLINEAR EQUATIONS IN N VARIABLES. IT CONSISTS OF A DRIVER LMDD0040C AND AN INTERFACE SUBROUTINE FCN. THE DRIVER READS IN DATA, LMDD0050C CALLS THE NONLINEAR LEAST-SQUARES SOLVER, AND FINALLY PRINTS LMDD0060C OUT INFORMATION ON THE PERFORMANCE OF THE SOLVER. THIS IS LMDD0070C ONLY A SAMPLE DRIVER, MANY OTHER DRIVERS ARE POSSIBLE. THE LMDD0080C INTERFACE SUBROUTINE FCN IS NECESSARY TO TAKE INTO ACCOUNT THE LMDD0090C FORMS OF CALLING SEQUENCES USED BY THE FUNCTION AND JACOBIAN LMDD0100C SUBROUTINES IN THE VARIOUS NONLINEAR LEAST-SQUARES SOLVERS. LMDD0110C LMDD0120C SUBPROGRAMS CALLED LMDD0130C LMDD0140C USER-SUPPLIED....... FCN LMDDO150C LMDD0160C MINPACK-SUPPLIED ... DPMPAR,ENORM,INITPT,LMDER1,SSQFCN LMDD0170C LMDD0180C FORTRAN-SUPPLIED ... DSQRT LMDD0190C LMDD0200C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. LMDD0210C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE LMDD0220C LMI)D0230C LMDD0240
INTEGER I ,IC,INFO,K,LDFJAC,LWA,M,N,NFEV,NJEV,NPROB,NREAD,NTRIES, LMDD0250* NWRITE LMDD0260INTEGER IWA(40),MA(60),NA(60),NF(60),NJ(bO),NP(60),? :(60) LMDD0270DOUBLE PRECISION FACTOR,FNORM1,FNORM2,ONE,TEN,TOL LMDI)0280DOUBLE PRECISION FJAC(65,40),FNM(60),FVEC(65),WA(265),X(40) LMDD0290DOUBLE PRECISION DPMPAR,ENORM LMDD0300EXTERNAL FCN LMDD0310COMMON /REFNUM/ NPROB,NFEV,NJEV LMDD0320
C LMDD0330C LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5. LMDD0340C LOGICAL OUTPUT UNIT IS ASSUMED TO BE NUMBER 6. LMDD0350C LMDD0360
DATA NREAD,NWRITE /5,6/ LMDD0370C LM0I)I)O380
DATA ONE,TEN /1.ODO,1.OD1/ LMDD0390TOL = DSQRT(DPMPAR(1)) LMDD0400LDFJAC = 65 LMDD0410LWA = 265 LNDD0420IC = 0 LMDD0430
10 CONTINUE LMDD0440READ (NREAD,50) NPROB,N,M,NTRIES LMLD0450IF (NPROB .LE. 0) GO TO 30 LMDD0460FACTOR = ONE LMDD0470DO 20 K = 1, NTRIES LMDD0480
IC = IC + 1 LMDD0490CALL INITPT(N,X,NPROB,FACTOR) LMDD0500CALL SSQFCN(M,N,X,FVEC,NPROB) LMDDO510FNORM1 = ENORM(M,FVEC) LNDD0520WRITE (NWRITE,60) NPROB,N,M LMDD0530NFEV = 0 LMDD040NJEV = 0 L.MDDOSSOCALL LMDER1(FCN,M,N,X,FVEC,FJAC,LDFJAC,TOL,INFO,IWA,WA, LMDDC560
* LWA) LMDD0570CALL SSQFCN(M,N,X,FVEC,NPROB) LMDD0580FNNRM2 * ENORM(M,FVEC) LMDD0590NPIC) * NPROB LMDD0600NA(IC) = N LDD0610
MA(IC) = MNF(IC) = NFEVNJ(IC) = NJEVNX(IC) = INFOFNM(IC) = FNOR 2WRITE (NWRITE,70)
* FNORM1,FNORM2,NFEV,NJEV,INFO,(X(I), I = 1, N)FACTOR = TEN*FACTOR
20 CONTINUEGO TO 10
30 CONTINUEWRITE (NWRITE,80) ICWRITE (NWRITE,90)DO 40 I = 1, IC
WRITE (NWRITE,100) NP(I),NA(I),MA(I),NF(I),NJ(I),NX(I),FNM(I)40 CONTINUE
STOP50 FORMAT60 FORMAT
*
70 FORMAT*
*
*
*
'
80 FORMAT90 FORMAT
100 FORMAT
(415)
( f/// 5X, 8H PROBLEM, I, 5X, 11H DIMENSIONS, 215, 5X //)
(5X, 33H INITIAL L2 NORM OF THE RESIDUALS, D15.7 // 5X,33H FINAL L2 NORM OF THE RESIDUALS , D15.7 // 5X,3311 NUMBER OF FUNCTION EVALUATIONS , 110 // 5X,33H1 NUMBER OF JACOBIAN EVALUATIONS , 110 // 5X,15H EXIT PARAMETER, 18X, 110 // 5X,27H FINAL APPROXIMATE SOLUTION // (5X, 5D15.7))
(12H1SUMMARY OF , 13, 16H CALLS TO LMDER1 /)(49H NPROB N P NFEV NJEV INFO FINAL L2 NORM /)(315, 316, 1X, D15.7)
CC LAST CARD OF DRIVER.C
ENDSUBROUTINE FCN(M,N,X,FVEC,FJAC,LDFJAC,IFLAG)INTEGER M,N,LDFJAC, FLAGDOUBLE PRECISION X(N),FVEC(M),FJAC(LDFJAC,N)
C **********CC THE CALLING SEQUENCE OF FCN SHOULD BE IDENTICAL TO THEC CALLING SEQUENCE OF THE FUNCTION SUBROUTINE IN THE NONLINEARC LEAST-SQUARES SOLVER. FCN SHOULD ONLY CALL THE TESTINGC FUNCTION AND JACOBIAN SUBROUTINES SSQFCN AND SSQJAC WITHC THE APPROPRIATE VALUE OF PROBLEM NUMBER (NPROB).CC SUBiROGRAMS CALLEDCC MINPACK-SUPPLIED ... SSQFCN,SSQJACCC ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980.C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORECC **********
I NTEGER NPROB,NFEV , NJEVCOMMON /REFNUM/ NPROB,NFEV,NJEVIF (IFLAG .EQ. 1) CALL SSQFCN(M,N,X,FVEC,NPROB)IF (IFLAG .EQ. 2) CALL SSQJAC(M,N,X,FJAC,LDFJAC,NPROB)IF (IFLAG .EQ. 1) NFEV = NFEV + 1IF (IFLAG .EQ. 2) NJEV a NJEV + 1RETURN
CC LAST CARD OF INTERFACE SUBROUTINE FCN.
32
LMDD0620LMDD0630LMDD0640LMDD0650LMDD0660LMDD0670LMDD068OLMDD0690LMDD0700LMDD0710LMDD0720LMIDDO730LMDD0740LMUDO750LNDDO760LNDDO770LDDO780LMDD0790LMDDO800LMDDO810LMDDO82OLMDD0830LNDD0840LMDDO850LMDD0860LMDD0870L1DD0880L"1DD0890LMDD0900LMDD0910L!1DD0920LMDD0930LMDD0940IMDD0950LMDD0960LMDD0970LMDD098OLMDD0990LMDD1000L9DD1010L1DD1020LMDD1030L9PD1040LMDD1050LMDD1060L'IDD 1070LMDD 1080LMDD1090LMDD1100L'1DD1110LMDD1120LMDD1130LMDD1140L1DD 1150L'IDD1160LMDD1170LMDD1180L9DD1190LNDD1200LIDD1210LMDD1220
INMDD 1230LMDD1240
CEND
33
34
C ********** LMSDO010C LMSDOO20C THIS PROGRAM TESTS CODES FOR THE LEAST-SQUARES SOLUTION OF LMSDO030C M NONLINEAR EQUATIONS IN N VARIABLES. IT CONSISTS OF A DRIVER LMSDO040C AND AN INTERFACE SUBROUTINE FCN. THE DRIVER READS IN DATA, LMSDO050C CALLS THE NONLINEAR LEAST-SQUARES SOLVER, AND FINALLY PRINTS LMSDO060C OUT INFORMATION ON THE PERFORMANCE OF THE SOLVER. THIS IS LMSDO070C ONLY A SAMPLE DRIVER, MANY OTHER DRIVERS ARE POSSIBLE. THE LMSD0080C INTERFACE SUBROUTINE FCN IS NECESSARY TO TAKE INTO ACCOUNT THE LMSDO090C FORMS OF CALLING SEQUENCES USED BY THE FUNCTION AND JACOBIAN LMSD0100C SUBROUTINES IN "HE VARIOUS NONLINEAR LEAST-SQUARES SOLVERS. LMSDO110C LMSDO120C SUBPROGRAMS CALLED LMSDO130C LMSD0140C USER-SUPPLIED....... FCN LMSDO150C LMSDO160C MINPACK-SUPPLIED ... DPMPAR,ENORM, INITPT,LMSTR1,SSQFCN LMSDO170C LMSDO180C FORTRAN-SUPPLIED ... DSQRT LMSDO190C LMSD0200C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. LMSDO210C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE LMSD0220C LMSDO2 30C ********* LMSD0240
INTEGER I, IC, INFO,K,LDFJAC,LWA,M,N FEV,NJEV,NPROB,NREAD,NTRIES, LMSD0250NWRITE LMSD0260
INTEGER IWA(40),MA(60),NA(60),NF(60),NJ(60),NP(60),NX(60) LMSD0270DOUBLE PRECISION FACTOR,FNORM1,FNORM2,ONE,TENTOL LMSD0280DOUBLE PRECISION FJAC(40,40),FNM(60),FVEC(65),WA(265),X(40) LMSD0290DOUBLE PRECISION DPMPAR,ENORM LMSD0300EXTERNAL FCN LMSD0310COMMON /REFNUM/ NPROB,NFEV,NJEV LMSD0320
C LMSDO330C LOGICAL INPUT UNIT IS ASSUMED TO BE NU'IBER 5. LMSDO340C LOGICAL OUTPUT UNIT IS ASSUMED TO BE NUMBER b. LMSD0350C LMSD0360
DATA NREAD,NWRITE /5,6/ LMSD0370C LMSD0380
DATA ONETEN /1.ODO,1.ODI/ LMSDO390TOL = DSQRT(DPMPAR(I)) LSDO400LDFJAC = 40 L1SD0410LWA = 265 LNSD0420IC = 0 LMSD0430
10 CONTINUE LMSD0440READ (NREAD,50) NPROB,N,M,NTRIES LMSD0450IF (NPROB .LE. 0) GO TO 30 LMSD0460FACTOR = ONE LMSD0470DO 20 K = 1, NTRIES LMSDO480
IC = IC + 1 LMSDO490CALL INITPT(N,X,NPROB,FACTOR) LMSD0500CALL SSQFCN(M,N,X,FVEC,NPROB) LMSD0510FNORM1 -ENORd(M,FVEC) LMSDO520WRITE (NWRITE,60) NPROB,N,M L1SD0530NFEV = 0 LMSDO540NJEV : 0 LMSDO550CALL LMSTR1(FCN,M,N,X,FVEC,FJAC.LDFJAC.TOLINFO,IWAWA, LMSD0560
* LWA) LMSDO570CALL SSQFCN(M,N,X,FVEC,NPROB) LMSDO580FNORM2 a ENORM(MFVEC) LNSDO590NP(IC) s NPROB LMISD0600
NA(IC) = N LISD0610
35
MA(IC) = M LMSD0620NF(IC) = NFEV LMSD0630NJ(IC) = NJEV LMSD0640NX(IC) = INFO LMSD0650FNM(IC) = FNORM2 LMSD0660WRITE (NWRITE,70) LMSDO670
* FNORM1,FNORM2,NFEV,NJEV,INFO,(X(I), I = 1, N) LMSD0680FACTOR = TEN*FACTOR LMSD0690
20 CONTINUE LMSD0700GO TO 10 LMSD0710
30 CONTINUE LMSD0720WRITE (NWRITE,80) IC LMSDO730WRITE (NWRITE,90) LMSD0740DO 40 I = 1, IC LMSD0750
WRITE (NWRITE,100) NP(I),NA(I),MA(I),NF(I),NJ(I),NX(I),FNM(I) LMSDO76040 CONTINUE LMSD0770
STOP LMSD078050 FORMAT (415) LMSD079060 FORMAT ( /// 5X, 8i PROBLEM, 15, 5X, 11H DIMENSIONS, 215, 5X // LMSDO800
* ) LMSDO81070 FORMAT (5X, 33H INITIAL L2 NORM OF THE RESIDUALS, D15.7 // 5X, LMSD0820
* 33H FINAL L2 NORM OF THE RESIDUALS , D15.7 // 5X, LMSD0830* 33H NUMBER OF FUNCTION EVALUATIONS , I10 // 5X, LMSDO840* 33H NUMBER OF JACOBIAN EVALUATIONS , 110 // 5X, LMSD0850* 15H EXIT PARAMETER, 18X, I10 // 5X, LMSD0860* 27H FINAL APPROXIMATE SOLUTION // (5X, 5D15.7)) LMSD0870
80 FORMAT (12H1SUMMARY OF , 13, 16H CALLS TO LMSTR1 /) LMSDO88090 FORMAT (49H NPROb N M NFEV NJEV INFO FINAL L2 NORM /) LMSDO890
100 FORMAT (3IS, 316, 1X, D15.,) LMSD0900C LMSD0910C LAST CARD OF DRIVER. LMSD0920C LMSDO930
END LMSD0940SUBROUTINE FCN(M,N,X,FVEC,FJROW,IFLAG) LMSD0950INTEGER M,N,IFLAG LMSD0960DOUBLE PRECISION X(N),FVEC(M),FJROW(N) LMSD0970
C ********** LMSDO980C LMSD0990C THE CALLING SEQUENCE OF FCN SHOULD BE IDENTICAL TO THE LMSD1000C CALLING SEQUEr'CE OF THE FUNCTION SUBROUTINE IN THE NONLINEAR LMSDIO10C LEAST SQUARES SOLVER. IF IFLAG = 1, FCN SHOULD ONLY CALL THE LMSD1020C TESTING FUNCTION SUBROUTINE SSQFCN. IF IFLAG = I, I .GE. 2, LMSD1030C FCN SHOULD ONLY CALL SUBROUTINE SSQJAC TO CALCULATE THE LMSD1040C (I-1)-ST ROW OF THE JACOBIAN. (THE SSQJAC SUBROUTINE PROVIDED LMSD1O50C HERE FOR TESTING PURPOSES CALCULATES THE ENTIRE JACOBIAN LMSD1060C MATRIX AND IS THEREFORE CALLED ONLY WHEN IFLAG = 2.) EACH LSD1070C CALL TO SSQFCN OR SSQJAC SHOULD SPECIFY THE APPROPRIATE LMSD1080C VALUE OF PROBLEM NUMBER (NPROB). L1SD109CC LMSD1100C SUBPROGRAMS CALLED LMSD1110C LMSD1120C MINPACK-SUPPLIED ... SSQFCN,SSQJAC LMSD1130C LMSD1140C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. LMSD1150C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE LMSD1160C LMSD1170C LMSD1180
INTEGER NPROB,NFEV,NJEV,J L-SD1190DOUBLE PRECISION TEMP(65,40) LISD1200COMMON /REFNUM/ NPROB,NFEV,NJEV LMSD1210IF (IFLAG .EQ. 1) 'ALL SSQFCN(M,N,X,FVEC,NPROB) LMSD1220
IF (IFLAG .EQ. 2) CALL SSQJAC(M,N,X,TEMP,65,NPROB)IF (IFLAG .EQ. 1) NFEV = NFEV + 1IF (IFLAG .EQ. 2) NJEV = NJEV + 1IF (IFLAG .EQ. 1) GO TO 120DO 110 J = 1, N
FJROW(J) = TEMP(IFLAG-1,J)110 CONTINUE120 CONTINUE
RETURN
LAST CARD OF INTERFACE SUBROUTINE FCN.
END
36
CCC
LMSD1230LMSD1240LMSD1250LNSD1260LMSD1270LMSD1280LMSD 1290LMSD1300LMSD1310LMSD1320LMSP 1330LMSD1340LMSD1350
37
C ********** LMFDOO'0C LMFDO020C THIS PROGRAM TESTS CODES FOR THE LEAST-SQUARES SOLUTION OF LMFDO030C M NONLINEAR EQUATIONS IN N VARIABLES. IT CONSISTS OF A DRIVER LMFD04OC AND AN INTERFACE SUBROUTINE FCN. THE DRIVER READS IN DATA, LMFDO050C CALLS THE NONLINEAR LEAST-SQUARES SOLVER, AND FINALLY PRINTS LMFDO060C OUT INFORMATION ON THE PERFORMANCE OF THE SOl ER. THIS IS LMFDO070C ONLY A SAMPLE DRIVER, MANY OTHER DRIVERS ARE POSSIBLE. THE LMFDO080C INTERFACE SUBROUTINE FCN IS NECESSARY TO TAKE INTO ACCOUNT THE LMFDO090C FORMS OF CALLING SEQUENCES USED BY THE FUNCTION AND JACOBIAN LMFDO100C SUBROUTINES IN THE VARIOUS NONLINEAR LEAST-SQUARES SOLVERS. LMFDO110C LMFD0120C SUBPROGRAMS .ALLED LMFDO130C LMFDO140C USER-SUPPLIED....... FCN LMFDO150C LMFDO160C NINPACK-SUPPLIED ... DPMPAR,ENORM,INITPT,LMDIF1,SSQFCN LMFDO170C LMFDO180C FORTRAN-SUPPLIED ... DSQRT LMFD0190C LMFD0200C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. LMFDO210C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE LMFDO220C LMFDO230C LMFDO240
INTEGER I,IC,INFO,K,LWA,M,N,NFEV,NJEV,NPROB,NREAD,NTRIES,NWRITE LMFD0250INTEGER IWA(40),MA(60),NA(60),NF(60),NJ(60),NP(60),NX(60) LMFDO260DOUBLE PRECISION FACTOR,FNORM1,FNORM2,ONE,TEN,TOL LMFD0270DOUBLE PRECISION FNM(60),FVEC(65),WA(2865),X(40) LMFDO280DOUBLE PRECISION DPMPAR,ENORM LMFD0290EXTERNAL FCN LMFD0300COMMON /REFNUM/ NPROB,NFEV,NJEV LMFD0310
C LMFD0320C LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5. LMFD0330C LOGICAL OUTPUT UNIT IS ASSUMED TO BE NUMBER 6. LMFD0340C LMFD035(
DATA NREAD,NWRITE /5,6/ LMFD0360C LMFD0370
DATA ONE,TEN /1.ODO,1.OD1/ LMFD0380TOL = DSQRT(DPMPAR(1)) 1L2-P0390LWA = 2865 LMFDO400IC = 0 LMFD0410
10 CONTINUE LMFDO420READ (NREAD,50) NPROB,N,M,NTRIES LMFDO430IF (NPROB .LE. 0) GO TO 30 LMFD0440FACTOR = ONE LMFD0450DO 20 K - 1, NTPIES LMFD0460
IC = IC + 1 LMFDO470CALL INITPT(N,X,NPROB,FACTOR) LMFDO480CALL SSQFCN(M,N,X,FVEC,NPROB) i.MFD0490FNORMI = ENORM(M,FVEC) LMFD0500WRITE (NWRITE,60) NPROB,N,M LMFD0510NFEV = 0 LMFD0520NJEV = 0 LMFDOS30CALL LMDIF1(FCNM,N,X,FVEC,TOL,INFO,IWA,WA,LWA) LMFD0540CALL SSQFCN(M,N,X,FVEC,NPROB) LMFDOS50FNORM2 = ENORM(M,FVEC) LMFDGS60NP(IC) NPROB LMFDO570NA(IC) = N LMFDO580MA(IC) = H LFDOS90NF(IC) " NFEV LMFDO600NJEV " NJEV/N LMFDOb10
NJ(IC) = NJEVNX(IC) = INFOFNM(IC) = FNORM2WRITE (NWRITE,70)
* FNORM1,FNORM2,NFEV,NJEV,INFO,(X(I), I = 1, N)FACTOR = TEN*FACTOR
20 CONTINUEGO TO 10
30 CONTINUEWRITE (NWRITE,80) ICWRITE (NWRITE,9G)DO 40 I = 1, IC
WRITE (NWRITE,100) NP(I),NA(I),MA(I),NF(I),NJ(I),NX(I),FNM(I)40 CONTINUE
STOP50 FORMAT (415)60 FORMAT ( //// 5X, 8H PROBLEM, I5, 5X, 11H DIMENSIONS, 215, 5X //
* )
70 FORMAT (5X, 3311 INITIAL L2 NORM OF THE RESIDUALS, D15.7 // 5X,* 33H FINAL L2 NORM OF THE RESIDUALS , D15.7 // 5X,* 33H NUMBER OF FUNCTION EVALUATIONS , 110 // 5X,* 33H NUMBER OF JACOBIAN EVALUATIONS , 110 // 5X,* 154 EXIT PARAMETER, 18X, I10 // 5X,* 27H FINAL APPROXIMATE SOLUTION // (5X, 5D15.7))
80 FORMAT (12H1SUMMARY OF , 13, 16H CALLS TO LMDIF1 /)90 FORMAT (49H NPROB N M NFEV NJEV INFO FINAL L2 NORM /)100 FORMAT (315, 316, 1X, D15.7)
CC LAST CARD OF DRIVER.C
ENDSUBROUTINE FCN(M,N,X,FVEC, IFLAG)INTEGER M,N,IFLAGDOUBLE PRECISION X(N),FVEC(M)
C *****CC THE CALLING SEQUENCE GF FCN SHOULD BE IDENTICAL TO THEC CALLING SEQUENCE OF THE FUNCTION SUBROUTINE IN THE NONLINEARC LEAST-SQUARES SOLVER. FCN SHOULD ONLY CALL THE TESTINGC FUNCTION SUBROUTINE SSQFCN WITH THE APPROPRIATE VALUE OFC PROBLEM NUMBER (NPROB).CC SUBPROGRAMS CALLEDCC MINPACK-SUPPLIED ... SSQFCNCC ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980.C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORECC *******
INTEGER NPROB,NFEV,NJEVCOMMON /REFNUM/ NPROB,NFEV,NJEVCALL SSQFCN(M,N,X,' ".C,NPROB)IF (IFLAG .EQ. 1) NFEV a NFEV + 1IF (IFLAG .EQ. 2) NJEV s NJEV + 1RETURN
CC LAST CARD OF INTERFACE SUBROUTINE FCN.C
LMFD1210
38
LMFD0620LMFD0630LMFD0640LMFD0650LMFDO660LMFD0670LMFD0680LMFD0690LMFD0700LMFD0710LMFD0720LMFD0730LMFDO740LMFD0750LMFD0760LMFDO770LMFDO780LMFD0790LMFDO800LIFDO810LMUD0820LMFDO830LMFDO840LMFDO850LMFDO860LMFDO870LMFDO880LMFDO890LMFDO900LMFD0910LMFD0920LMFDO930LMFD0940LMFD0950LMFDO960LMFD0970LMFD0980L1FDO990LMFD1000LMFD1010LMFD1020LMFD1030LMFD1040LMFD1050LMFD1060LMFD1070LMFD1080ULFD1090LMFD1100LM- D1110LMFD1120LMFD1130LNFD1140LMFD1150LMFD1160LMFD1170LMFD1180LMFD1190LMFD1200
I
END
39
C ****CHKDO010C CHKDO020C THIS PROGRAM TESTS THE ABILITY OF CHKDER TO DETECT CHKDO030C INCONSISTENCIES BETWEEN FUNCTIONS AND THEIR FIRST DERIVATIVES. CHKDO040C FOURTEEN TEST FUNCTION VECTORS AND JACOBIANS ARE USED. ELEVEN OF CHKD005CC THE TESTS ARE FALSE(F), I.E. THERE ARE INCONSISTENCIES BETWEEN CHKDO060C THE FUNCTION VECTORS AND THE CORRESPONDING JACOBIANS. THREE OF CHKDO070C THE TESTS ARE TRUE(T), I.E. THERE ARE NO INCONSISTENCIES. THE CHKDO080C DRIVER READS IN DATA, CLsLLS CHKDER AND PRINTS OUT INFORMATION CHKDO090C REQUIRED BY AND RECEIVED FROM CHKDER. CHKDO100C CHKDO110C SUBPROGRAMS CALLED CIIKDO120C CHKDO130C MINPACK SUPPLIED ... CHKDER,ERRJAC,INITPT,VECFCN CHKDO140C CHKDO150C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. MARCH 1980. CHKDO160C BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE CHKDO170C CHKDO180C ********CHKDO190
INTEGER I,LDFJAC,LNP,MODE,N,NPROB,NREAD,NWRITE CHKDO200INTEGER NA(14),NP(14) CHKD0210LOGICAL A(14) CHKD0220DOUBLE PRECISION CP,ONE CHKD0230DOUBLE PRECISION DIFF(10),ERR(1O),ERRMAX(14),RRMIN(14), CHKD0240
* FJAC(10,10),FVEC1(1O),FVEC2(10),X1(10),X2(10) CHKD0250C CHKD0260C LOGICAL INPUT UNIT IS ASSUMED TO BE NUMBER 5. CHKDO270C LOGICAL OUTPUL UNIT IS ASSUMED TO BE NUMBER 6. CHKDO280C CHKD0290
DATA NIEAD,NWRITE /5,6/ CHKDO300C CHKD0310
DATA A(1),A(2),A(3),A(4),A(5),A(6),A(7),A(8),A(9),A(1O),A(11), CHKD0320* A(12),A(13),A(14) CHKD0330* /.FALSE.,.FALSE.,.FALSE.,.TRUE.,.FALSE.,.FALSE.,.FALSE., CHKDO340* .TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.TRUE.,.FALSE./ CHKDO3C
DATA CP,ONE /1.23D-1,1.ODO/ CP'DO360LDFJAC = 10 CHKD0370
10 CONTINUE CHKD0380READ (NREAD,60) NPROB,N CHKD0390IF (NPROB .LE. 0) GO TO 40 CHKDO400CALL INITPT(N,X1,NPROB,ONE) CHKD0410DO 20 I = 1, N CHKD0420
X1(I) = X1(I) + CP CHKD0430CP a -CP CHKD0440
20 CONTINUE CHKD0450'RITE (NWRITE,70) NPROB,N,A(NPROB) CHKD0460MODE = 1 CHKD0470CALL CHKDER(N,N,X1,FVEC1,FJAC,LDFJAC,X2,FVEC2,MODE,ERR) CHKD0480MODE s 2 CHKD0490CALL VECFCN(N,X1,FVECI,NPROB) CHKDO500CALL ERRJAC(N,X1,FJAC,LDFJAC,NPROB) CHKD0510CALL VECFCN(N,X2,FVEC2,NPROB) CHKD520CALL CHKDER(N,N,X1,FVEC1,FJAC,LDFJAC,X2,FVEC2,MODE,ERR) CHKD0530ERRMIN(NPROB) = ERR(1) CHKDO540ERRMAX(NPROB) = F.RR(1) CHKDO550DO 30 I a 1, N CHKDO560
DIMF(I) = FVEC2(I) - FVEC1(I) CHKDO0570IF (ERRMIN(NPROB) .GT. ERR(I)) ERRMIN(NPROB) = ERR(I) CHKDO580IF (ERRMAX(NPROB) .LT. ERR(I)) ERRMAX(NPROB) - ERR(I) CHKD0590
30 CONTINUE CHKDO600NP(NPROB) a NPROB CHKDOo10
40
LNP = NPROB CHKD0620NA(NPROB) = N CHKD0630WRITE (NWRITE,80) (FVEC1(I), I = 1, N) CHKD0640WRITE (NWRITE,90) (DIFF(I), I = 1, N) CHKD0650WRITE (NWRITE,100) (ERR(I), I = 1, N) CHKD0660GO TO 10 CHKD0670
40 CONTINUE CHKD0680WRITE (NWRITE,110) LNP CHKD0690WRITE (NWRITE,120) CHKD0700DO 50 I = 1, LNP CHKD0710
WRITE (NWRITE,130) NP(I),NA(I),A(I),ERRMIN(I),ERRMAX(I) CHKD072050 CONTINUE CHKD0730
STOP CHKDO 74060 FORMAT (2I5) CHKD075070 FORMAT ( /// 5X, 8H PROBLEM, 15, 5X, 15H WITH DIMENSION, 15, 2X, CHKD0760
5H IS , L1) CHKD077080 FORMAT ( // 5X, 25H FIRST FUNCTION VECTOR / (5X, 5D15.7)) CHKD078090 FORMAT ( // 5X, 27H FUNCTION DIFFERENCE VECTOR // (5X, 5D15.7)) CHKD0790100 FORMAT ( // 5X, 13H ERROR VECTOR // (5X, 5D15.7)) CHKD0800110 FORMAT (12H1SUMMARY OF , 13, 16H TESTS OF "HKDER /) CHKD0s1i120 FORMAT (46H NPROB N STATUS ERRMII ERRMAX /) CHKD08..130 FORMAT (14, 16, 6X, L1, 3X, 2D15.7) CHKD0830
C CHKD0840C LAST CARD OF DERIVATIVE CHECK TEST DRIVER. CHKD0850C CHKD0860
END CHKDO870
41
A P P E N D I X C
Test Output Summaries
42
43
DMCHAR CONSTANTS
BETA = 16
IT = 14
IRND = 0
NCRD = 1
aACHEP = -13
NEGEP = -14
IEXP = 7
MINEXP = -65
M AXEXP = 63
EFS = 0.22204460-15
aPSNEG = 0.13877790-16
XIIN = 0.53976050-78
XMAX = 0.7237006D+76
OPHPAR CONSTANTS AND R'_LATIVE DIFFERENCES
EI'SICH = 0.22204460-15RERR(1) = 0.0
DWORF ='.53976050-78RERR(2) = 0.0
GIANT = 0.7237006D+76RERR(3) = 0.0
44
SUMMARY OF 55 CALLS TO HYBRO1
NPROB N NFEV INFO FINAL
1 2 24 1 0.C1 2 9 1 0.341 2 9 1 0.02 4 107 4 0.16P2 4 114 4 0.26C2 4 125 4 0.11CJ 2 181 1 0.173 2 11 1 0.3744 4 94 1 0.39S4 4 233 1 0.334
S 4 505 0.17.5 3 27 1 0.275 3 32 1 0.22'5 3 40 1 0.16'6 6 96 1 0.336 6 171 1 0..166 9 124 '1 0.156 9 470 4 0.307 5 17 1 0.327 5 238 10.15
7 6 25 1 0.37!7 6 172 1 0.10'7 6 253 1 0.187 7 20 1 0.27
7 616 1 0.187 139 4 0.10
7 8 120 4 0.647 9 41 1 0.18r8 10 31 1 0.613 10 31 1 0.298 10 77 1 0.33
S 30 112 1 .7&'
9 10 16 1 0.259 10 19 1 0.179 10 52 1 0.41
10 1 7 1 0.2710 1 9 1 0.5510 1 16 1 0.010 10 16 1 0.5010 10 19 1 0.2110 10 39 1 0.3011 10 130 4 0.5211 10 84 1 0.5911 10 83 1 0.34
0 1 460 0.3_
13 10 21 1T6.1413 10 59 1 0.5113 10 42 1 0.9814 10 30 1 0.2014 10 45 1 0.7914 10 58 1 0.45
L L2 NORM
694470-14
80600D-32024970-33037890-32124930-G3444l50-07
939060-10417140-0831553 -9
534-75D-12508750-09234310-12167300-12
809590-12793'40-01526530-11
570520-0
294020-09246890-11425370-08094710-09063040+1440508D-01S 1?850-08956510-14546330-1416379D-13
V952 1 -1
165'D-14259570-127434'10-09755580-16511150-16
131840-14382510-12457010-14963'D-02150500-10274320-08
0429 10-0872540-105798CD-08536 12D-08264230-09
45
SUMMARY OF 55 CALLS TO HYBRJ1
NPROB N NFEV NJEV INFO FINAL L2 NORM
1 2 17 3 1 0.01 2 7 1 1 0.01 2 7 1 1 0.02 4 163 10 4 0.46346650-332 4 122 8 4 0.36781470-352 4 128 6 4 0.36793060-333 2 169 6 1 0.17126670-083 2 9 1 1 0.3744062D-074 4 86 2 1 0.393552'D-104 4 202 8 1 0.37713350-09
4 38 35 1 0.3t76459D-15 3 18 3 -1 0.275343-125 3 20 4 1 0.22509960-095 3 37 8 1 0.72027770-096 6 60 6 1 0.35125520-12
6 140 6 1 0.2629950-16 9 92 4t 1Y513497D-1T
6 9 274 12 4 0.3 84320-017 5 10 1 1 0.60463390--127 5 134 24 1 0.19366490-0
-7 13 2 1TT14 10-7 6 91 13 1 0.72196360-107 6 129 21 1 0.15009950-107 7 11 1 1 0.1935160-09
270 43 0.1713097Q-08777 7 64 11 4 .779+1
7 8 56 8 4 0.64405120-017 9 23 2 1 0.4208290-098 10 11 2 1 0.61956510-148 10 11 2 1 0.2946630-148 10 27 5 1 0.3262082)-138 30 22 3 1 0.4298D-1
9 10 9 1 1 0.17258220-129 10 42 1 1 0.41741720-09
10 1 6 1 1 0.27755580-1610 1 8 1 1 0.55511150-1610 1 15 1 1 0.13877790-1610 10 6 1 1 0.50058600-1410 10 9 1 1 0.21822280-1210 10 19 2 1 0.30397060-1411 10 60 7 4 0.52963920-0211 10 34 5 1 0.59165910-10
' 10 39 2 1 .0148 11 1 1 -8 93879D-07
13 10 49 1 1 0.5081991D-0813 10 22 2 1 0.9878839-1014 10 20 1 1 0.20579000-0814 10 25 2 1 0.7953613D-0814 10 38 2 1 0.45264300-09
r
I
I
I
i
"
I
F
f
r
D
46
SUMMARY OF 53 CALLS TO LDERI
NPROB N M NFEV NJEV INFO FINAL L2 NORM
1 5 10 3 21 5 50 3 22 5 10 3 22 5 50 3 23 5 10 3 23 5 50 3 24 2 2 22 164 2 2 8 54 2 2 6 45 3 3 11 85 3 3 20 155 3 3 19 166 4 4 62 596 4 4 68 646 4 4 75 687 2 2 14 87 2 2 19 127 2 2 24 178 3 15 6 58 3 15 37 368 3 15 14 139 4 11 18 169 4 11 78 70
10 3 16 400 34811 6 31 8 711 6 31 14 1311 6 31 15 1411 9 31 8 711 9 31 19 15
1 9 31 18 15
12 3 10 7 6'3 2 10 21 1214 4 20 255 2371. 4 20 53 4214 4 20 237 22115 1 8 1 115 1 8 29 2815 1 8 47 4615 8 8 39 2015 9 9 12 915 10 10 25 1216 10 10 14 1216 10 10 13 8
16 10 10
18 11 65 16 12
3 0.22360680+013 0.67032040+011 0.14638500+011 0.34826300+011 0.19097270+011 0.36917290+012 0.13947000-152 0.13877790-152 0.13977790-152 0.9935519D-162 0.10446770-182 0.18032670-284 0.45023130-334 0.18943940-344 0.4699954D-331 0.69985750+011 0.699&3750+011 0.699*5750+011 0.90635960-011 0.41747690+011 0.417476904011 0.17535340-011 0.320!,2190-01
5 0.20060490'031 0.47829590-011 0.47829590-011 0.47829590-012 0.11831150-021 0.11831150-021 0.11331150-023 4 2 7 3
10 4D-pf
1 0.11151780.021 0.29295430+031 0.29954304031 0.29295430+034 0.1&3623800011 0. 18E11 248D+011 0. 1 342480+011 0.59203240-012 0.23731031-151 0.80'47100-012 0.2831'0OO-142 0.59933520-14
1 0.20034400+00
Y
b
47
SUMMARY OF 53 CALLS TO L31R1
NPROB N M NFEV NJEV INFO FINAL L2 NORM
1 5 10 3 2 2 0.22360620+011 5 50 3 2 2 0.67032040+012 5 10 3 2 1 0.14633500+012 5 50 3 2 1 0.34826300+013 5 10 3 2 1 0.19037270+013 5 50 3 2 1 0.36917270+014 2 2 21 16 4 04 2 2 8 5 2 U.13877790-154 2 2 6 4 2 0.05 3 3 11 8 2 0.99365210-165 3 3 20 15 2 0.10446780-185 3 3 19 16 2 0.23540330-286 4 4 65 60 4 0.44331520-336 4 4 67 64 4 0.79451770-355 4 4 77 73 4 0.64184650-377 2 2 14 8 1 f.6923S750+017 2 2 19 12 1 0.697'750+017 2 2 24 17 1 0.c9;^87 -9a018 3 15 6 5 1 0.90635960-018 3 15 37 35 1 0.41747690+018 3 15 14 13 1 0.417769D4019 4 11 18 16 1 0.1751 '.D-019 4 11 78 70 1 0.32052190-01
9 4 11 4 .% 377 I fl.17 5 ': _ . 1-l0
16313131313131
102020208888910101010
65
4008141581919
2125453
2371
29473912251413
16
3447131471516
1223642
2211
2846209
12128
12
5 0.'997702D+031 0.4729:d-011 0.47L:95'-011 0.47 J2S;r-012 0.1133114-021 0.118311!10-022 0.1133110D-02
1 0.111517ID+021 0.29275431+031 0.29295430031 0.2929543D+034 0.1&S522D+01
1 0.18342430+011 0.183.2430+011 0.59303240-012 0.4204300 0-151 0.80647100-012 0.41706C0-142 0.14269850-14
1 0.20034400+00
3666999
2444111
1C111111111111
131414141515151515151616
18
89
101010
11
.r
... ..
. .
0 a
I
48
SUMMARY OF 53 CALLS TO LDIF1NPROB N M NFEV NJEV INFO FINAL L2 STORM
1 5 101 5 502 5 102 5 503 5 103 5 504 2 24 2 24 2 25 3 33 3 35 3 36 4 46 4 46 4 47 2 27 2 27 2 28 3 158 3 158 3 159 4 119 4 119 4 1110 3 1610 3 1611 6 3111 6 31
11 6 31
-19 311 1 31
12 3112 #-310
13 2 104 4 20
14 4 204 4 2
15 1 815 1 815 8 8
15 9 915 10 1016 10 1016 10 1016 10 10
1 8 0 30
18 11 65
334434
2287
122019
234232230141924636141877
232
491415
2323r
421
212
212
29473912257
13284
16
222222
165591516
192192193812175
35131669
1931W6
381314
16
12
197
197
284620
91258
26
12
1 0.22360680+011 0.67032040+011 0.146395004011 0.34326300+011 0.19097270+011 0.36917290+012 0.02 0.693889-1J-152 0.02 0.51656260-242 0.444779!D-172 0.1043223D-215 0.982373470-215 0.76547260-195 0.830930+D-191 0.699&8/50011 0.699387504011 0.69933750+011 0.90635960-011 0.41747690+011 0.4174769D4011 0.17535340-011 0.32052190 -015 0.30708940-03 0.93779450+014 0.62375990+051 0.510466291-01 0.472'9590-011 0.47329590-01
2 0.11831150-02 0.*2173-1 D-0
2 .217.;20 D-02 0.21732640-042 0.14220500-151 0.111517:D+025 0.292 ?5630+0)5 0.29543 +
1 0.13Zi2430).011 0.1'42480+011 0.59303240-012 0.19390120-151 0.8064710D-011 0.100000004012 0.14613910-14
,.1.10000 00401
1 0.20034400+00
mmmmmlw-...
. ...
.....
...
...
r....
r
SUMMARY OF 14 TESTS OF CHKDER
WPROB N STATUS ERRMIN
0.36441650-010.56784320-010.00.98018550+000.00.00.00.1000000 +
0.00.00.20279080-010.83444290+000.0
0.10000000+010.10000000+010.00.10000000+010. 10000000+010.1062543D+000.0
2.0 8D+0*
0.57618770-010.00.20279170-010.10000000+010.0
49
ERRMAX
123.1
6
7
1011121314
2424397
10101010101010
FFFTFFFTFFFF
TF
mmm