 
      SUBROUTINE DNL2S1(N, P, X, CALCR, CALCJ, IV, LIV, LV, V,
     1                 UIPARM, URPARM, UFPARM)
C
C
C  ***  PARAMETERS  ***
C
      INTEGER N, P, LIV, LV
C/6
      INTEGER IV(LIV), UIPARM(1)
      DOUBLE PRECISION X(P), V(LV), URPARM(1)
C/7
C     INTEGER IV(LIV), UIPARM(*)
C     DOUBLE PRECISION X(P), V(LV), URPARM(*)
C/
      EXTERNAL CALCR, CALCJ, UFPARM
C
C  ***  DISCUSSION  ***
C
C        LIV GIVES THE LENGTH OF IV.  IT MUST BE AT LEAST 80+P.  IF NOT,
C     THEN DNL2S1 RETURNS WITH IV(1) = 15.  WHEN DNL2S1 RETURNS, THE
C     MINIMUM ACCEPTABLE VALUE OF LIV IS STORED IN IV(LASTIV) = IV(44),
C     (PROVIDED THAT LIV .GE. 44).
C
C        LV GIVES THE LENGTH OF V.  THERE ARE TWO POSSIBLE RANGES FOR
C     LV.  IN WHAT FOLLOWS, THEY ARE EXPRESSED IN TERMS OF LV0...
C     LV0 = 105 + P*(N + 2*P + 17) + N + RDLEN(IV(RDREQ)),  WHERE
C     RDLEN(0) = 0, RDLEN(1) = RDLEN(2) = N, AND RDLEN(3) = 2*N.
C
C        IF LV IS AT LEAST LV0 + N, THEN AN OLD COPY OF R IS SAVED TO
C     AVOID HAVING TO RECOMPUTE IT UNDER CERTAIN CONDITIONS.
C     IF LV IS SMALLER THAN LV0, THEN DNL2S1 RETURNS WITH IV(1) = 16.
C     WHEN DNL2S1 RETURNS, THE MINIMUM ACCEPTABLE VALUE OF LV IS STORED
C     IN IV(LASTV) = IV(45) (PROVIDED LV .GE. 45).
C
C        RETURN CODES AND CONVERGENCE TOLERANCES ARE THE SAME AS FOR
C     NL2SOL, WITH SOME SMALL EXTENSIONS... IV(1) = 15 MEANS LIV WAS
C     TOO SMALL.   IV(1) = 16 MEANS LV WAS TOO SMALL.
C
C        THERE ARE TWO NEW V INPUT COMPONENTS...  V(LMAXS) = V(36) AND
C     V(SCTOL) = V(37) SERVE WHERE V(LMAX0) AND V(RFCTOL) FORMERLY DID
C     IN THE SINGULAR CONVERGENCE TEST -- SEE THE NL2SOL DOCUMENTATION.
C
C  ***  DEFAULT VALUES  ***
C
C        DEFAULT VALUES ARE PROVIDED BY SUBROUTINE DDEFLT, RATHER THAN
C     DFAULT.  THE CALLING SEQUENCE IS...
C             CALL DDEFLT(1, IV, LIV, LV, V)
C     THE FIRST PARAMETER IS AN INTEGER 1.  IF LIV AND LV ARE LARGE
C     ENOUGH FOR DDEFLT, THEN DDEFLT SETS IV(1) TO 12.  OTHERWISE IT
C     SETS IV(1) TO 15 OR 16.  CALLING DNL2S1 WITH IV(1) = 0 CAUSES ALL
C     DEFAULT VALUES TO BE USED FOR THE INPUT COMPONENTS OF IV AND V.
C        IF YOU FIRST CALL DDEFLT, THEN SET IV(1) TO 13 AND CALL DNL2S1,
C     THEN STORAGE ALLOCATION ONLY WILL BE PERFORMED.  IN PARTICULAR,
C     IV(D) = IV(27), IV(J) = IV(70), AND IV(R) = IV(61) WILL BE SET
C     TO THE FIRST SUBSCRIPT IN V OF THE SCALE VECTOR, THE JACOBIAN
C     MATRIX, AND THE RESIDUAL VECTOR RESPECTIVELY, PROVIDED LIV AND LV
C     ARE LARGE ENOUGH.  IF SO, THEN DNL2S1 RETURNS WITH IV(1) = 14.
C     WHEN CALLED WITH IV(1) = 14, DNL2S1 ASSUMES THAT STORAGE HAS
C     BEEN ALLOCATED, AND IT BEGINS THE MINIMIZATION ALGORITHM.
C
C  ***  SCALE VECTOR  ***
C
C        ONE DIFFERENCE WITH NL2SOL IS THAT THE SCALE VECTOR D IS
C     STORED IN V, STARTING AT A DIFFERENT SUBSCRIPT.  THE STARTING
C     SUBSCRIPT VALUE IS STILL STORED IN IV(D) = IV(27).  THE
C     DISCUSSION OF DEFAULT VALUES ABOVE TELLS HOW TO HAVE IV(D) SET
C     BEFORE THE ALGORITHM IS STARTED.
C
C  ***  REGRESSION DIAGNOSTICS  ***
C
C        IF IV(RDREQ) SO DICTATES, THEN ESTIMATES ARE COMPUTED OF THE
C     INFLUENCE EACH RESIDUAL COMPONENT HAS ON THE FINAL PARAMETER
C     ESTIMATE X.  THE GENERAL IDEA IS THAT ONE MAY WISH TO EXAMINE
C     RESIDUAL COMPONENTS (AND THE DATA BEHIND THEM) FOR WHICH THE
C     INFLUENCE ESTIMATE IS SIGNIFICANTLY LARGER THAN MOST OF THE OTHER
C     INFLUENCE ESTIMATES.  TWO SLIGHTLY DIFFERING SUCH ESTIMATES,
C     HEREAFTER CALLED REGRESSION DIAGNOSTICS, MAY BE COMPUTED...
C     IF IV(RDREQ) = 1, THEN FOR I = 1(1)N,
C                    SQRT( G(I)**T * H(I)**-1 * G(I) )
C     IS COMPUTED AND STORED IN V, STARTING AT V(IV(REGD)), WHERE
C     RDREQ = 57 AND REGD = 67.  HERE G(I) STANDS FOR THE GRADIENT
C     RESULTING WHEN THE I-TH OBSERVATION IS DELETED AND H(I) STANDS
C     FOR AN APPROXIMATION TO THE CORRESPONDING HESSIAN AT X, THE SOLU-
C     TION CORRESPONDING TO ALL OBSERVATIONS.  (THIS APPROXIMATION IS
C     OBTAINED BY SUBTRACTING THE FIRST-ORDER CONTRIBUTION OF THE I-TH
C     OBSERVATION TO THE HESSIAN FROM A FINITE-DIFFERENCE HESSIAN
C     APPROXIMATION.)  IF IV(RDREQ) = 2 AND H, THE FINITE-DIFFERENCE
C     HESSIAN, IS POSITIVE DEFINITE, THEN FOR I = 1(1)N,
C            SQRT( G(I)**T * H(I)**-1 * H * H(I)**-1 * G(I) )
C     IS STORED IN V, AGAIN STARTING AT V(IV(REGD)).  (IF H IS
C     INDEFINITE, THEN IV(REGD) IS SET TO -1.  IF H(I) IS INDEFINITE,
C     THEN -1 IS RETURNED AS THE DIAGNOSTIC FOR OBSERVATION I.  IF NO
C     DIAGNOSTICS ARE COMPUTED, PERHAPS BECAUSE OF A FAILURE TO
C     CONVERGE, THEN IV(REGD) = 0 IS RETURNED.)
C        IF IV(RDREQ) = 3, THEN BOTH SETS OF DIAGNOSTICS ARE COMPUTED.
C     THOSE FOR IV(RDREQ) = 1 ARE STORED AS DESCRIBED ABOVE, AND THOSE
C     FOR IV(RDREQ) ARE STORED IMMEDIATELY THEREAFTER, I.E., IN V,
C     STARTING AT V(IV(REGD)+N).
C        PRINTING OF THE REGRESSION DIAGNOSTICS IS CONTROLLED BY
C     IV(COVPRT) = IV(14)...  IF IV(COVPRT) = 3, THEN BOTH THE
C     COVARIANCE MATRIX AND THE REGRESSION DIAGNOSTICS ARE PRINTED.
C     IV(COVPRT) = 2 CAUSES ONLY THE REGRESSION DIAGNOSTICS TO BE
C     PRINTED, IV(COVPRT) = 1 CAUSES ONLY THE COVARIANCE MATRIX TO BE
C     PRINTED, AND IV(COVPRT) = 0 CAUSES NEITHER TO BE PRINTED.
C
C        RDREQ = 57 AND REGD = 67.
C
C  ***  GENERAL  ***
C
C     CODED BY DAVID M. GAY.
 
 
