ZGELSS  -  compute  the minimum norm solution to a complex
       linear least squares problem


SYNOPSIS

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

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

           DOUBLE         PRECISION RCOND

           DOUBLE         PRECISION RWORK( * ), S( * )

           COMPLEX*16     A( LDA, * ), B( LDB, * ), WORK( * )


PURPOSE

       ZGELSS computes the minimum norm  solution  to  a  complex
       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) COMPLEX*16 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).

               (LDB,NRHS)
               On entry, the M-by-NRHS right hand side matrix  B.
               On  exit,  B is overwritten by the N-by-NRHS solu­
               tion matrix X.  If m >= n and RANK = n, the resid­
               ual  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,M,N).

       S       (output) DOUBLE PRECISION 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) DOUBLE PRECISION
               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  sin­
               gular values which are greater than RCOND*S(1).

       WORK    (workspace/output) COMPLEX*16 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 >=   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.

       RWORK     (workspace)   DOUBLE   PRECISION    array,
               dimension (5*min(M,N))

       INFO    (output) INTEGER
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille­
               gal value.
               >  0:   the algorithm for computing the SVD failed

               of  an  intermediate  bidiagonal form did not con­
               verge to zero.


Man(1) output converted with man2html