Previous: cgels Up: ../lapack-c.html Next: cgelsx

# cgelss

```
NAME
CGELSS - compute the minimum norm solution to a complex
linear least squares problem

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

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

REAL           RCOND

REAL           RWORK( * ), S( * )

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

PURPOSE
CGELSS 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 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) COMPLEX 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,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

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

WORK    (workspace/output) COMPLEX 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*N+MAX(NRHS,M) if M >= N, LWORK >=
2*M+MAX(NRHS,N) if M < N.  For good performance,
LWORK should generally be larger.

RWORK   (workspace) REAL array, dimension
(max(5*min(M,N)-4,1))

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.
```