SRC/sggqrf.f(3)
π
SRC/sggqrf.f(3) β Library Functions Manual π
okay bestie, this is the manual page for SRC/sggqrf.f(3), from the Library Functions Manual. Itβs a LAPACK routine page, and it is lowkey highkey iconic. π«Άβ¨
π NAME π
SRC/sggqrf.f
π¦ SYNOPSIS π¦
π Functions/Subroutines π
subroutine sggqrf (n, m, p, a, lda, taua, b, ldb, taub, work, lwork, info)βSGGQRF
β¨ Function/Subroutine Documentation β¨
okay so hereβs the full typed-out signature, bestie β no cap, this is the exact shape:
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 β the main character. π
π 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, and itβs the number of rows of the matricesAandB. Constraint:N >= 0. π«ΆMβM is INTEGER; itβs the number of columns of the matrixA. Constraint:M >= 0. β¨PβP is INTEGER; itβs the number of columns of the matrixB. Constraint:P >= 0. πAβA is REAL array, dimension (LDA,M). On entry, itβs theN-by-MmatrixA. On exit, the elements on and above the diagonal of the array contain themin(N,M)-by-Mupper trapezoidal matrixR(Ris upper triangular ifN >= M); the elements below the diagonal, with the arrayTAUA, represent the orthogonal matrixQas a product ofmin(N,M)elementary reflectors (see Further Details). π¦LDAβLDA is INTEGER; itβs the leading dimension of the arrayA. Constraint:LDA >= max(1,N). πΈTAUAβTAUA is REAL array, dimension (min(N,M)); these are the scalar factors of the elementary reflectors which represent the orthogonal matrixQ(see Further Details). πBβB is REAL array, dimension (LDB,P). On entry, itβs theN-by-PmatrixB. On exit, ifN <= P, the upper triangle of the subarrayB(1:N,P-N+1:P)contains theN-by-Nupper triangular matrixT; ifN > P, the elements on and above the(N-P)-th subdiagonal contain theN-by-Pupper trapezoidal matrixT; the remaining elements, with the arrayTAUB, represent the orthogonal matrixZas a product of elementary reflectors (see Further Details). πLDBβLDB is INTEGER; itβs the leading dimension of the arrayB. Constraint:LDB >= max(1,N). πTAUBβTAUB is REAL array, dimension (min(N,P)); these are the scalar factors of the elementary reflectors which represent the orthogonal matrixZ(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; itβs the dimension of the arrayWORK. Constraint:LWORK >= max(1,N,M,P). For optimum performanceLWORK >= max(N,M,P)*max(NB1,NB2,NB3), whereNB1is the optimal blocksize for the QR factorization of anN-by-Mmatrix,NB2is the optimal blocksize for the RQ factorization of anN-by-Pmatrix, andNB3is the optimal blocksize for a call ofSORMQR. 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. π
π 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 bestie, thatβs the whole page π brought to you by LAPACK Version 3.12.0 and the source SRC/sggqrf.f(3). Slay. β¨π
π¦ 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