dlssud.f
SUBROUTINE DLSSUD (A, X, B, N, M, NRDA, U, NRDU, IFLAG, MLSO,
+ IRANK, ISCALE, Q, DIAG, KPIVOT, S, DIV, TD, ISFLG, SCALES)
C***BEGIN PROLOGUE DLSSUD
....
....
Warning: this routine is not intended to be user-callable.
....
....
C***SUBSIDIARY
C***PURPOSE Subsidiary to DBVSUP and DSUDS
C***LIBRARY SLATEC
C***TYPE DOUBLE PRECISION (LSSUDS-S, DLSSUD-D)
C***AUTHOR Watts, H. A., (SNLA)
C***DESCRIPTION
C
C DLSSUD solves the underdetermined system of equations A Z = B,
C where A is N by M and N .LE. M. In particular, if rank A equals
C IRA, a vector X and a matrix U are determined such that X is the
C UNIQUE solution of smallest length, satisfying A X = B, and the
C columns of U form an orthonormal basis for the null space of A,
C satisfying A U = 0 . Then all solutions Z are given by
C Z = X + C(1)*U(1) + ..... + C(M-IRA)*U(M-IRA)
C where U(J) represents the J-th column of U and the C(J) are
C arbitrary constants.
C If the system of equations are not compatible, only the least
C squares solution of minimal length is computed.
C
C *********************************************************************
C INPUT
C *********************************************************************
C
C A -- Contains the matrix of N equations in M unknowns, A remains
C unchanged, must be dimensioned NRDA by M.
C X -- Solution array of length at least M.
C B -- Given constant vector of length N, B remains unchanged.
C N -- Number of equations, N greater or equal to 1.
C M -- Number of unknowns, M greater or equal to N.
C NRDA -- Row dimension of A, NRDA greater or equal to N.
C U -- Matrix used for solution, must be dimensioned NRDU by
C (M - rank of A).
C (storage for U may be ignored when only the minimal length
C solution X is desired)
C NRDU -- Row dimension of U, NRDU greater or equal to M.
C (if only the minimal length solution is wanted,
C NRDU=0 is acceptable)
C IFLAG -- Status indicator
C =0 for the first call (and for each new problem defined by
C a new matrix A) when the matrix data is treated as exact
C =-K for the first call (and for each new problem defined by
C a new matrix A) when the matrix data is assumed to be
C accurate to about K digits.
C =1 for subsequent calls whenever the matrix A has already
C been decomposed (problems with new vectors B but
C same matrix A can be handled efficiently).
C MLSO -- =0 if only the minimal length solution is wanted.
C =1 if the complete solution is wanted, includes the
C linear space defined by the matrix U.
C IRANK -- Variable used for the rank of A, set by the code.
C ISCALE -- Scaling indicator
C =-1 if the matrix A is to be pre-scaled by
C columns when appropriate.
C If the scaling indicator is not equal to -1
C no scaling will be attempted.
C For most problems scaling will probably not be necessary.
C Q -- Matrix used for the transformation, must be dimensioned
C NRDA by M.
C DIAG,KPIVOT,S, -- Arrays of length at least N used for internal
C DIV,TD,SCALES storage (except for SCALES which is M).
C ISFLG -- Storage for an internal variable.
C
C *********************************************************************
C OUTPUT
C *********************************************************************
C
C IFLAG -- Status indicator
C =1 if solution was obtained.
C =2 if improper input is detected.
C =3 if rank of matrix is less than N.
C To continue, simply reset IFLAG=1 and call DLSSUD again.
C =4 if the system of equations appears to be inconsistent.
C However, the least squares solution of minimal length
C was obtained.
C X -- Minimal length least squares solution of A Z = B
C IRANK -- Numerically determined rank of A, must not be altered
C on succeeding calls with input values of IFLAG=1.
C U -- Matrix whose M-IRANK columns are mutually orthogonal unit
C vectors which span the null space of A. This is to be ignored
C when MLSO was set to zero or IFLAG=4 on output.
C Q -- Contains the strictly upper triangular part of the reduced
C matrix and transformation information.
C DIAG -- Contains the diagonal elements of the triangular reduced
C matrix.
C KPIVOT -- Contains the pivotal information. The row interchanges
C performed on the original matrix are recorded here.
C S -- Contains the solution of the lower triangular system.
C DIV,TD -- Contains transformation information for rank
C deficient problems.
C SCALES -- Contains the column scaling parameters.
C
C *********************************************************************
C
C***SEE ALSO DBVSUP, DSUDS
C***REFERENCES H. A. Watts, Solving linear least squares problems
C using SODS/SUDS/CODS, Sandia Report SAND77-0683,
C Sandia Laboratories, 1977.
C***ROUTINES CALLED D1MACH, DDOT, DOHTRL, DORTHR, J4SAVE, XERMAX,
C XERMSG, XGETF, XSETF
C***REVISION HISTORY (YYMMDD)
C 750601 DATE WRITTEN
C 890531 Changed all specific intrinsics to generic. (WRB)
C 891214 Prologue converted to Version 4.0 format. (BAB)
C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
C 900328 Added TYPE section. (WRB)
C 910408 Updated the AUTHOR and REFERENCES sections. (WRB)
C 920501 Reformatted the REFERENCES section. (WRB)
C***END PROLOGUE DLSSUD