DGGLSE(3)
π DGGLSE β the one where LAPACK solves your constrained least squares problem π
okay bestie, so this page is for dgglse.f, and the manual name is basically just that: dgglse.f(3), living under /home/abui...RC/dgglse.f(3). yes it's a Fortran file. yes it's iconic. let's get into it β¨
πΈ SYNOPSIS πΈ
Functions/Subroutines π
subroutine DGGLSE (m, n, p, a, lda, b, ldb, c, d, x, work, lwork, info)
DGGLSE solves overdetermined or underdetermined systems for OTHER matrices. (yes, "OTHER" in all caps, that's literally what it says, and honestly? mystery. intrigue. iykyk π )
β Function/Subroutine Documentation β
subroutine DGGLSE (integer m, integer n, integer p, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( ldb, * ) b, integer ldb, double precision, dimension( * ) c, double precision, dimension( * ) d, double precision, dimension( * ) x, double precision, dimension( * ) work, integer lwork, integer info)
DGGLSE solves overdetermined or underdetermined systems for OTHER matrices β that's the whole vibe, and it ate π₯
π¦ Purpose π¦
so like, hear me out. DGGLSE solves the linear equality-constrained least squares (LSE) problem:
minimize || c - A*x ||_2 subject to B*x = d
where A is an M-by-N matrix, B is a P-by-N matrix, c is a given M-vector, and d is a given P-vector. And the rules of the house are: it is assumed that
P <= N <= M+P
and
rank(B) = P and rank( (A) ) = N.
( (B) )
these conditions ensure that the LSE problem has a unique solution β no cap, that's the whole point. you get one answer, singular, main character energy π
and how do we get it? using a generalized RQ factorization of the matrices (B, A) given by
B = (0 R)*Q, A = Z*T*Q.
slay. literally a factorization moment β¨
π Parameters π
MβM is INTEGER. The number of rows of the matrixA.M >= 0. π«ΆNβN is INTEGER. The number of columns of the matricesAandB.N >= 0. πΈPβP is INTEGER. The number of rows of the matrixB.0 <= P <= N <= M+P. (yes bestie, that sandwich of inequalities is load-bearing, do NOT mess with it π)AβA is DOUBLE PRECISION array, dimension (LDA,N). On entry, the M-by-N matrixA. On exit, the elements on and above the diagonal of the array contain themin(M,N)-by-N upper trapezoidal matrixT. (it becomes a whole new matrix, growth era π±)LDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,M).BβB is DOUBLE PRECISION array, dimension (LDB,N). On entry, the P-by-N matrixB. On exit, the upper triangle of the subarrayB(1:P,N-P+1:N)contains the P-by-P upper triangular matrixR. πLDBβLDB is INTEGER. The leading dimension of the arrayB.LDB >= max(1,P).CβC is DOUBLE PRECISION array, dimension (M). On entry,Ccontains the right hand side vector for the least squares part of the LSE problem. On exit, the residual sum of squares for the solution is given by the sum of squares of elementsN-P+1toMof vectorC. (so it tells you how wrong you were, affectionately π)DβD is DOUBLE PRECISION array, dimension (P). On entry,Dcontains the right hand side vector for the constrained equation. On exit,Dis destroyed. π yes, destroyed, that's the actual word in the manual, she did not survive and that's just how it is.XβX is DOUBLE PRECISION array, dimension (N). On exit,Xis the solution of the LSE problem. the moment we've all been waiting for πWORKβWORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORK is INTEGER. The dimension of the arrayWORK.LWORK >= max(1,M+N+P). For optimum performanceLWORK >= P+min(M,N)+max(M,N)*NB, whereNBis an upper bound for the optimal blocksizes forDGEQRF,SGERQF,DORMQRandSORMRQ.
okay so also: 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. (honestly a queen move β ask for the size without committing, we love a low-stakes vibe check π§)
INFOβINFO is INTEGER, and here's the whole tea:= 0: successful exit. π< 0: ifINFO = -i, the i-th argument had an illegal value. (you fed it something cursed, it's telling you which one π)= 1: the upper triangular factorRassociated withBin the generalized RQ factorization of the pair(B, A)is singular, so thatrank(B) < P; the least squares solution could not be computed. π= 2: the(N-P)by(N-P)part of the upper trapezoidal factorTassociated withAin the generalized RQ factorization of the pair(B, A)is singular, so that
rank( (A) ) < N; the least squares solution could not
( (B) )
be computed.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
(the whole squad showed up for this one π«Ά)
π Where it lives
Definition at line 178 of file dgglse.f. β¨
Author (the other one, the meta one): Generated automatically by Doxygen for LAPACK from the source code. not a human, just a very diligent little robot π§
anyway bestie, that's the whole page. this manual page came to you from LAPACK, Version 3.12.0, dated /home/abui...RC/dgglse.f(3) β mwah, drink water, go solve some constrained least squares ππΈπ
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms