SGGQRF(3)
π SGGQRF(3) β Library Functions Manual, but make it fashion π
okay so bestie, this is the Library Functions Manual page for SGGQRF, and it's literally about a generalized QR factorization. The source file it lives in is /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sggqrf.f β yes that whole path, no cap. π«Ά
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sggqrf.f
That's the file path this page is named after. Mwah. π
β¨ SYNOPSIS β¨
π Functions/Subroutines
subroutine SGGQRF (n, m, p, a, lda, taua, b, ldb, taub, work, lwork, info)
SGGQRF
π¦ Function/Subroutine Documentation π¦
π SGGQRF π
subroutine SGGQRF (integer n, integer m, integer p, real, dimension( lda, * ) a, integer lda, real, dimension( * ) taua, real, dimension( ldb, * ) b, integer ldb, real, dimension( * ) taub, real, dimension( * ) work, integer lwork, integer info)
SGGQRF
π Purpose π
SGGQRF computes a generalized QR factorization of an N-by-M matrix A and an N-by-P matrix B:
A = Q*R, B = Q*T*Z,
where Q is an N-by-N orthogonal matrix, Z is a P-by-P orthogonal matrix, and R and T assume one of the forms:
if N >= M, R = ( R11 ) M , or if N < M, R = ( R11 R12 ) N,
( 0 ) N-M N M-N
M
where R11 is upper triangular, and
if N <= P, T = ( 0 T12 ) N, or if N > P, T = ( T11 ) N-P,
P-N N ( T21 ) P
P
where T12 or T21 is upper triangular.
In particular, if B is square and nonsingular, the GQR factorization of A and B implicitly gives the QR factorization of inv(B)*A:
inv(B)*A = Z**T*(inv(T)*R)
where inv(B) denotes the inverse of the matrix B, and Z**T denotes the transpose of the matrix Z.
π Parameters π
NβN is INTEGER. The number of rows of the matrices A and B.N >= 0.MβM is INTEGER. The number of columns of the matrix A.M >= 0.PβP is INTEGER. The number of columns of the matrix B.P >= 0.AβA is REAL array, dimension (LDA,M). On entry, the N-by-M matrix A. On exit, the elements on and above the diagonal of the array contain the min(N,M)-by-M upper trapezoidal matrix R (R is upper triangular ifN >= M); the elements below the diagonal, with the array TAUA, represent the orthogonal matrix Q as a product of min(N,M) elementary reflectors (see Further Details).LDAβLDA is INTEGER. The leading dimension of the array A.LDA >= max(1,N).TAUAβTAUA is REAL array, dimension (min(N,M)). The scalar factors of the elementary reflectors which represent the orthogonal matrix Q (see Further Details).BβB is REAL array, dimension (LDB,P). On entry, the N-by-P matrix B. On exit, ifN <= P, the upper triangle of the subarrayB(1:N,P-N+1:P)contains the N-by-N upper triangular matrix T; ifN > P, the elements on and above the(N-P)-th subdiagonal contain the N-by-P upper trapezoidal matrix T; the remaining elements, with the array TAUB, represent the orthogonal matrix Z as a product of elementary reflectors (see Further Details).LDBβLDB is INTEGER. The leading dimension of the array B.LDB >= max(1,N).TAUBβTAUB is REAL array, dimension (min(N,P)). The scalar factors of the elementary reflectors which represent the orthogonal matrix Z (see Further Details).WORKβWORK is REAL array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORK is INTEGER. The dimension of the array WORK.LWORK >= max(1,N,M,P). For optimum performanceLWORK >= max(N,M,P)*max(NB1,NB2,NB3), where NB1 is the optimal blocksize for the QR factorization of an N-by-M matrix, NB2 is the optimal blocksize for the RQ factorization of an N-by-P matrix, and NB3 is the optimal blocksize for a call ofSORMQR. IfLWORK = -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 byXERBLA.INFOβINFO is INTEGER.= 0: successful exit.< 0: ifINFO = -i, the i-th argument had an illegal value.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details π
The matrix Q is represented as a product of elementary reflectors:
Q = H(1) H(2) . . . H(k), where k = min(n,m).
Each H(i) has the form:
H(i) = I - taua * v * v**T
where taua is a real scalar, and v is a real vector with v(1:i-1) = 0 and v(i) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), and taua in TAUA(i).
To form Q explicitly, use LAPACK subroutine SORGQR. To use Q to update another matrix, use LAPACK subroutine SORMQR.
The matrix Z is represented as a product of elementary reflectors:
Z = H(1) H(2) . . . H(k), where k = min(n,p).
Each H(i) has the form:
H(i) = I - taub * v * v**T
where taub is a real scalar, and v is a real vector with v(p-k+i+1:p) = 0 and v(p-k+i) = 1; v(1:p-k+i-1) is stored on exit in B(n-k+i,1:p-k+i-1), and taub in TAUB(i).
To form Z explicitly, use LAPACK subroutine SORGRQ. To use Z to update another matrix, use LAPACK subroutine SORMRQ.
Definition at line 213 of file sggqrf.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
okay that's the whole vibe check, bestie π β source/version: LAPACK Version 3.12.0; footer path: /home/abui...RC/sggqrf.f(3); date: not listed in this footer. Slay. π
π¦ 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