sgelss(3S)

SGELSS - compute the minimum norm solution to a real linear least squares problem

As shipped in IRIX 6.5.22. Added in IRIX 6.5.15.

NAME
     SGELSS - compute the minimum norm solution to a real linear least squares
     problem

SYNOPSIS
     SUBROUTINE SGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, WORK,
                        LWORK, INFO )

         INTEGER        INFO, LDA, LDB, LWORK, M, N, NRHS, RANK

         REAL           RCOND

         REAL           A( LDA, * ), B( LDB, * ), S( * ), WORK( * )

IMPLEMENTATION
     These routines are part of the SCSL Scientific Library and can be loaded
     using either the -lscs or the -lscs_mp option.  The -lscs_mp option
     directs the linker to use the multi-processor version of the library.

     When linking to SCSL with -lscs or -lscs_mp, the default integer size is
     4 bytes (32 bits). Another version of SCSL is available in which integers
     are 8 bytes (64 bits).  This version allows the user access to larger
     memory sizes and helps when porting legacy Cray codes.  It can be loaded
     by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
     only one of the two versions; 4-byte integer and 8-byte integer library
     calls cannot be mixed.

PURPOSE
     SGELSS computes the minimum norm solution to a real linear least squares
     problem: Minimize 2-norm(| b - A*x |).

     using the singular value decomposition (SVD) of A. A is an M-by-N matrix
     which may be rank-deficient.

     Several right hand side vectors b and solution vectors x can be handled
     in a single call; they are stored as the columns of the M-by-NRHS right
     hand side matrix B and the N-by-NRHS solution matrix X.

     The effective rank of A is determined by treating as zero those singular
     values which are less than RCOND times the largest singular value.


ARGUMENTS
     M       (input) INTEGER
             The number of rows of the matrix A. M >= 0.

     N       (input) INTEGER
             The number of columns of the matrix A. N >= 0.

     NRHS    (input) INTEGER
             The number of right hand sides, i.e., the number of columns of
             the matrices B and X. NRHS >= 0.
     A       (input/output) REAL array, dimension (LDA,N)
             On entry, the M-by-N matrix A.  On exit, the first min(m,n) rows
             of A are overwritten with its right singular vectors, stored
             rowwise.

     LDA     (input) INTEGER
             The leading dimension of the array A.  LDA >= max(1,M).

     B       (input/output) REAL array, dimension (LDB,NRHS)
             On entry, the M-by-NRHS right hand side matrix B.  On exit, B is
             overwritten by the N-by-NRHS solution matrix X.  If m >= n and
             RANK = n, the residual sum-of-squares for the solution in the i-
             th column is given by the sum of squares of elements n+1:m in
             that column.

     LDB     (input) INTEGER
             The leading dimension of the array B. LDB >= max(1,max(M,N)).

     S       (output) REAL array, dimension (min(M,N))
             The singular values of A in decreasing order.  The condition
             number of A in the 2-norm = S(1)/S(min(m,n)).

     RCOND   (input) REAL
             RCOND is used to determine the effective rank of A.  Singular
             values S(i) <= RCOND*S(1) are treated as zero.  If RCOND < 0,
             machine precision is used instead.

     RANK    (output) INTEGER
             The effective rank of A, i.e., the number of singular values
             which are greater than RCOND*S(1).

     WORK    (workspace/output) REAL array, dimension (LWORK)
             On exit, if INFO = 0, WORK(1) returns the optimal LWORK.

     LWORK   (input) INTEGER
             The dimension of the array WORK. LWORK >= 1, and also:  LWORK >=
             3*min(M,N) + max( 2*min(M,N), max(M,N), NRHS ) For good
             performance, LWORK should generally be larger.

             If LWORK = -1, then a workspace query is assumed; the routine
             only calculates the optimal size of the WORK array, returns this
             value as the first entry of the WORK array, and no error message
             related to LWORK is issued by XERBLA.

     INFO    (output) INTEGER
             = 0:  successful exit
             < 0:  if INFO = -i, the i-th argument had an illegal value.
             > 0:  the algorithm for computing the SVD failed to converge; if
             INFO = i, i off-diagonal elements of an intermediate bidiagonal
             form did not converge to zero.

SEE ALSO
     INTRO_LAPACK(3S), INTRO_SCSL(3S)

     This man page is available only online.