dogleg.f
SUBROUTINE DOGLEG (N, R, LR, DIAG, QTB, DELTA, X, WA1, WA2)
C***BEGIN PROLOGUE DOGLEG
....
....
Warning: this routine is not intended to be user-callable.
....
....
C***SUBSIDIARY
C***PURPOSE Subsidiary to SNSQ and SNSQE
C***LIBRARY SLATEC
C***TYPE SINGLE PRECISION (DOGLEG-S, DDOGLG-D)
C***AUTHOR (UNKNOWN)
C***DESCRIPTION
C
C Given an M by N matrix A, an N by N nonsingular DIAGONAL
C matrix D, an M-vector B, and a positive number DELTA, the
C problem is to determine the convex combination X of the
C Gauss-Newton and scaled gradient directions that minimizes
C (A*X - B) in the least squares sense, subject to the
C restriction that the Euclidean norm of D*X be at most DELTA.
C
C This subroutine completes the solution of the problem
C if it is provided with the necessary information from the
C QR factorization of A. That is, if A = Q*R, where Q has
C orthogonal columns and R is an upper triangular matrix,
C then DOGLEG expects the full upper triangle of R and
C the first N components of (Q TRANSPOSE)*B.
C
C The subroutine statement is
C
C SUBROUTINE DOGLEG(N,R,LR,DIAG,QTB,DELTA,X,WA1,WA2)
C
C where
C
C N is a positive integer input variable set to the order of R.
C
C R is an input array of length LR which must contain the upper
C triangular matrix R stored by rows.
C
C LR is a positive integer input variable not less than
C (N*(N+1))/2.
C
C DIAG is an input array of length N which must contain the
C diagonal elements of the matrix D.
C
C QTB is an input array of length N which must contain the first
C N elements of the vector (Q TRANSPOSE)*B.
C
C DELTA is a positive input variable which specifies an upper
C bound on the Euclidean norm of D*X.
C
C X is an output array of length N which contains the desired
C convex combination of the Gauss-Newton direction and the
C scaled gradient direction.
C
C WA1 and WA2 are work arrays of length N.
C
C***SEE ALSO SNSQ, SNSQE
C***ROUTINES CALLED ENORM, R1MACH
C***REVISION HISTORY (YYMMDD)
C 800301 DATE WRITTEN
C 890531 Changed all specific intrinsics to generic. (WRB)
C 890831 Modified array declarations. (WRB)
C 891214 Prologue converted to Version 4.0 format. (BAB)
C 900326 Removed duplicate information from DESCRIPTION section.
C (WRB)
C 900328 Added TYPE section. (WRB)
C***END PROLOGUE DOGLEG