SGELS(3F) SGELS(3F)
SGELS  solve overdetermined or underdetermined real linear systems
involving an MbyN matrix A, or its transpose, using a QR or LQ
factorization of A
SUBROUTINE SGELS( TRANS, M, N, NRHS, A, LDA, B, LDB, WORK, LWORK, INFO )
CHARACTER TRANS
INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
REAL A( LDA, * ), B( LDB, * ), WORK( LWORK )
SGELS solves overdetermined or underdetermined real linear systems
involving an MbyN matrix A, or its transpose, using a QR or LQ
factorization of A. It is assumed that A has full rank.
The following options are provided:
1. If TRANS = 'N' and m >= n: find the least squares solution of
an overdetermined system, i.e., solve the least squares problem
minimize  B  A*X .
2. If TRANS = 'N' and m < n: find the minimum norm solution of
an underdetermined system A * X = B.
3. If TRANS = 'T' and m >= n: find the minimum norm solution of
an undetermined system A**T * X = B.
4. If TRANS = 'T' and m < n: find the least squares solution of
an overdetermined system, i.e., solve the least squares problem
minimize  B  A**T * X .
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 MbyNRHS right
hand side matrix B and the NbyNRHS solution matrix X.
TRANS (input) CHARACTER
= 'N': the linear system involves A;
= 'T': the linear system involves A**T.
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.
Page 1
SGELS(3F) SGELS(3F)
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 MbyN matrix A. On exit, if M >= N, A is
overwritten by details of its QR factorization as returned by
SGEQRF; if M < N, A is overwritten by details of its LQ
factorization as returned by SGELQF.
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 matrix B of right hand side vectors, stored
columnwise; B is MbyNRHS if TRANS = 'N', or NbyNRHS if TRANS
= 'T'. On exit, B is overwritten by the solution vectors, stored
columnwise: if TRANS = 'N' and m >= n, rows 1 to n of B contain
the least squares solution vectors; the residual sum of squares
for the solution in each column is given by the sum of squares of
elements N+1 to M in that column; if TRANS = 'N' and m < n, rows
1 to N of B contain the minimum norm solution vectors; if TRANS =
'T' and m >= n, rows 1 to M of B contain the minimum norm
solution vectors; if TRANS = 'T' and m < n, rows 1 to M of B
contain the least squares solution vectors; the residual sum of
squares for the solution in each column is given by the sum of
squares of elements M+1 to N in that column.
LDB (input) INTEGER
The leading dimension of the array B. LDB >= MAX(1,M,N).
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 >= min(M,N) +
MAX(1,M,N,NRHS). For optimal performance, LWORK >= min(M,N) +
MAX(1,M,N,NRHS) * NB where NB is the optimum block size.
INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = i, the ith argument had an illegal value
SGELS(3F) SGELS(3F)
SGELS  solve overdetermined or underdetermined real linear systems
involving an MbyN matrix A, or its transpose, using a QR or LQ
factorization of A
SUBROUTINE SGELS( TRANS, M, N, NRHS, A, LDA, B, LDB, WORK, LWORK, INFO )
CHARACTER TRANS
INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS
REAL A( LDA, * ), B( LDB, * ), WORK( LWORK )
SGELS solves overdetermined or underdetermined real linear systems
involving an MbyN matrix A, or its transpose, using a QR or LQ
factorization of A. It is assumed that A has full rank.
The following options are provided:
1. If TRANS = 'N' and m >= n: find the least squares solution of
an overdetermined system, i.e., solve the least squares problem
minimize  B  A*X .
2. If TRANS = 'N' and m < n: find the minimum norm solution of
an underdetermined system A * X = B.
3. If TRANS = 'T' and m >= n: find the minimum norm solution of
an undetermined system A**T * X = B.
4. If TRANS = 'T' and m < n: find the least squares solution of
an overdetermined system, i.e., solve the least squares problem
minimize  B  A**T * X .
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 MbyNRHS right
hand side matrix B and the NbyNRHS solution matrix X.
TRANS (input) CHARACTER
= 'N': the linear system involves A;
= 'T': the linear system involves A**T.
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.
Page 1
SGELS(3F) SGELS(3F)
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 MbyN matrix A. On exit, if M >= N, A is
overwritten by details of its QR factorization as returned by
SGEQRF; if M < N, A is overwritten by details of its LQ
factorization as returned by SGELQF.
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 matrix B of right hand side vectors, stored
columnwise; B is MbyNRHS if TRANS = 'N', or NbyNRHS if TRANS
= 'T'. On exit, B is overwritten by the solution vectors, stored
columnwise: if TRANS = 'N' and m >= n, rows 1 to n of B contain
the least squares solution vectors; the residual sum of squares
for the solution in each column is given by the sum of squares of
elements N+1 to M in that column; if TRANS = 'N' and m < n, rows
1 to N of B contain the minimum norm solution vectors; if TRANS =
'T' and m >= n, rows 1 to M of B contain the minimum norm
solution vectors; if TRANS = 'T' and m < n, rows 1 to M of B
contain the least squares solution vectors; the residual sum of
squares for the solution in each column is given by the sum of
squares of elements M+1 to N in that column.
LDB (input) INTEGER
The leading dimension of the array B. LDB >= MAX(1,M,N).
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 >= min(M,N) +
MAX(1,M,N,NRHS). For optimal performance, LWORK >= min(M,N) +
MAX(1,M,N,NRHS) * NB where NB is the optimum block size.
INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = i, the ith argument had an illegal value
PPPPaaaaggggeeee 2222 [ Back ]
