SRC/cgels.f(3)
Bestie, this is SRC/cgels.f(3) from the Library Functions Manual β welcome to the LAPACK corner of the group chat. The whole page is about cgels.f, a Fortran subroutine with main-character energy: it solves overdetermined or underdetermined complex linear systems for GE matrices. π
πΈ NAME πΈ
SRC/cgels.f β that's the name. Short, iconic, and ready to solve.
β¨ SYNOPSIS β¨
π§ Functions/Subroutines π§
subroutine cgels (trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info)
CGELS solves overdetermined or underdetermined systems for GE
matrices
π«Ά Function/Subroutine Documentation π«Ά
subroutine cgels (character trans, integer m, integer n, integer nrhs,
complex, dimension( lda, * ) a, integer lda, complex, dimension( ldb, *
) b, integer ldb, complex, dimension( * ) work, integer lwork, integer
info)
CGELS solves overdetermined or underdetermined systems for GE matrices β that's the whole mood, and honestly it ate. π
π Purpose π
Okay so CGELS solves overdetermined or underdetermined complex linear systems involving an M-by-N matrix A, or its conjugate-transpose, using a QR or LQ factorization of A. It's giving "linear algebra but make it efficient." β¨
Important caveat, bestie:Ais assumed to have full rank, and the protection against rank-deficient matrices is, like, rudimentary. This subroutine only detects exact rank-deficiency β that's when a diagonal element of the triangular factor ofAis exactly zero.
It is conceivable for one (or more) of the diagonal elements of the triangular factor of A to be subnormally tiny numbers without this subroutine signalling an error. The solutions computed for those almost-rank-deficient matrices may be less accurate due to a loss of numerical precision. No cap, that's the warning. π
The following options are provided:
- If
TRANS = 'N'andm >= n: find the least squares solution of an overdetermined system, i.e., solve the least squares problem
minimize || B - A*X ||.
- If
TRANS = 'N'andm < n: find the minimum norm solution of an underdetermined systemA * X = B. - If
TRANS = 'C'andm >= n: find the minimum norm solution of an underdetermined systemA**H * X = B. - If
TRANS = 'C'andm < n: find the least squares solution of an overdetermined system, i.e., solve the least squares problem
minimize || B - A**H * 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 M-by-NRHS right hand side matrix B and the N-by-NRHS solution matrix X. Slay, batch processing. π¦
π Parameters π
TRANS
TRANS is CHARACTER*1.
= 'N': the linear system involvesA;= 'C': the linear system involvesA**H.
M
M is INTEGER. The number of rows of the matrix A. M >= 0.
N
N is INTEGER. The number of columns of the matrix A. N >= 0.
NRHS
NRHS is INTEGER. The number of right hand sides, i.e., the number of columns of the matrices B and X. NRHS >= 0.
A
A is COMPLEX array, dimension (LDA,N). On entry, the M-by-N matrix A.
- if
M >= N,Ais overwritten by details of its QR factorization as returned byCGEQRF; - if
M < N,Ais overwritten by details of its LQ factorization as returned byCGELQF.
LDA
LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M).
B
B is COMPLEX array, dimension (LDB,NRHS). On entry, the matrix B of right hand side vectors, stored columnwise; B is M-by-NRHS if TRANS = 'N', or N-by-NRHS if TRANS = 'C'.
On exit, if INFO = 0, B is overwritten by the solution vectors, stored columnwise:
- if
TRANS = 'N'andm >= n, rows1tonofBcontain the least squares solution vectors; the residual sum of squares for the solution in each column is given by the sum of squares of the modulus of elementsN+1toMin that column; - if
TRANS = 'N'andm < n, rows1toNofBcontain the minimum norm solution vectors; - if
TRANS = 'C'andm >= n, rows1toMofBcontain the minimum norm solution vectors; - if
TRANS = 'C'andm < n, rows1toMofBcontain the least squares solution vectors; the residual sum of squares for the solution in each column is given by the sum of squares of the modulus of elementsM+1toNin that column.
LDB
LDB is INTEGER. The leading dimension of the array B. LDB >= MAX(1,M,N).
WORK
WORK is COMPLEX array, dimension (MAX(1,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. Iconic little workspace receipt. π§Ύ
LWORK
LWORK is INTEGER. The dimension of the array WORK. LWORK >= max( 1, MN + max( MN, NRHS ) ). For optimal performance, LWORK >= max( 1, MN + max( MN, NRHS )*NB ). where MN = min(M,N) and NB is the optimum block size.
Workspace query moment: ifLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA.
INFO
INFO is INTEGER.
= 0: successful exit< 0: ifINFO = -i, thei-th argument had an illegal value> 0: ifINFO = i, thei-th diagonal element of the triangular factor ofAis exactly zero, so thatAdoes not have full rank; the least squares solution could not be computed.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 190 of file cgels.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
That's the whole page, bestie β every parameter, every caveat, every little workspace detail. Cute sign-off and footer receipt: LAPACK Version 3.12.0, file SRC/cgels.f(3). Date: not shown in the original footer, so no invented date, no cap. Auto-generated by Doxygen for LAPACK, now fully translated into group-chat energy. π
β¨π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms