SRC/cggrqf.f(3)
π
SRC/cggrqf.f β the cggrqf manual page, bestie edition π
okay so this is the man page for SRC/cggrqf.f, straight out of the LAPACK library functions manual. yes it's Fortran, no we're not scared of it π
β¨ SYNOPSIS β¨
πΈ Functions/Subroutines
subroutine cggrqf (m, p, n, a, lda, taua, b, ldb, taub, work, lwork,
info)
CGGRQF β that's the vibe, that's the name π¦
π Function/Subroutine Documentation π
subroutine cggrqf (integer m, integer p, integer n, complex, dimension( lda,
* ) a, integer lda, complex, dimension( * ) taua, complex, dimension(
ldb, * ) b, integer ldb, complex, dimension( * ) taub, complex,
dimension( * ) work, integer lwork, integer info)
CGGRQF π«Ά
π Purpose:
okay so what does it DO. CGGRQF computes a generalized RQ factorization of an M-by-N matrix A and a P-by-N matrix B:
A = R*Q, B = Z*T*Q,
where Q is an N-by-N unitary matrix, Z is a P-by-P unitary matrix, and R and T assume one of the forms:
if M <= N, R = ( 0 R12 ) M, or if M > N, R = ( R11 ) M-N,
N-M M ( R21 ) N
N
where R12 or R21 is upper triangular, and
if P >= N, T = ( T11 ) N , or if P < N, T = ( T11 T12 ) P,
( 0 ) P-N P N-P
N
where T11 is upper triangular. slay π
and like, in particular π if B is square and nonsingular, the GRQ factorization of A and B implicitly gives the RQ factorization of A*inv(B):
A*inv(B) = (R*inv(T))*Z**H
where inv(B) denotes the inverse of the matrix B, and Z**H denotes the conjugate transpose of the matrix Z. no cap, that's the whole point π§
π Parameters
MβMisINTEGER. the number of rows of the matrixA.M >= 0. periodt.PβPisINTEGER. the number of rows of the matrixB.P >= 0.NβNisINTEGER. the number of columns of the matricesAandB.N >= 0.AβAisCOMPLEXarray, dimension(LDA,N). On entry, the M-by-N matrixA. On exit, ifM <= N, the upper triangle of the subarrayA(1:M,N-M+1:N)contains the M-by-M upper triangular matrixR; ifM > N, the elements on and above the(M-N)-th subdiagonal contain the M-by-N upper trapezoidal matrixR; the remaining elements, with the arrayTAUA, represent the unitary matrixQas a product of elementary reflectors (see Further Details). π₯LDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,M).TAUAβTAUAisCOMPLEXarray, dimension(min(M,N)). the scalar factors of the elementary reflectors which represent the unitary matrixQ(see Further Details). β¨BβBisCOMPLEXarray, dimension(LDB,N). On entry, the P-by-N matrixB. On exit, the elements on and above the diagonal of the array contain themin(P,N)-by-N upper trapezoidal matrixT(Tis upper triangular ifP >= N); the elements below the diagonal, with the arrayTAUB, represent the unitary matrixZas a product of elementary reflectors (see Further Details).LDBβLDBisINTEGER. the leading dimension of the arrayB.LDB >= max(1,P).TAUBβTAUBisCOMPLEXarray, dimension(min(P,N)). the scalar factors of the elementary reflectors which represent the unitary matrixZ(see Further Details). πWORKβWORKisCOMPLEXarray, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK.LWORKβLWORKisINTEGER. the dimension of the arrayWORK.LWORK >= max(1,N,M,P). For optimum performanceLWORK >= max(N,M,P)*max(NB1,NB2,NB3), whereNB1is the optimal blocksize for the RQ factorization of an M-by-N matrix,NB2is the optimal blocksize for the QR factorization of a P-by-N matrix, andNB3is the optimal blocksize for a call ofCUNMRQ.
π¨ bestie listen: 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. so don't come crying toXERBLAabout it, she's not gonna help π
INFOβINFOisINTEGER.= 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(m,n).
each H(i) has the form
H(i) = I - taua * v * v**H
where taua is a complex scalar, and v is a complex vector with v(n-k+i+1:n) = 0 and v(n-k+i) = 1; v(1:n-k+i-1) is stored on exit in A(m-k+i,1:n-k+i-1), and taua in TAUA(i). β¨
- To form
Qexplicitly, use LAPACK subroutineCUNGRQ. - To use
Qto update another matrix, use LAPACK subroutineCUNMRQ.
the matrix Z is represented as a product of elementary reflectors:
Z = H(1) H(2) . . . H(k), where k = min(p,n).
each H(i) has the form
H(i) = I - taub * v * v**H
where taub is a complex scalar, and v is a complex vector with v(1:i-1) = 0 and v(i) = 1; v(i+1:p) is stored on exit in B(i+1:p,i), and taub in TAUB(i). π§
- To form
Zexplicitly, use LAPACK subroutineCUNGQR. - To use
Zto update another matrix, use LAPACK subroutineCUNMQR.
β Definition
Definition at line 212 of file cggrqf.f. iykyk π«Ά
π Author
Generated automatically by Doxygen for LAPACK from the source code. not me being auto-generated and still serving looks π
okay that's the whole page bestie, go forth and factorize your generalized RQ like the main character you are π
LAPACK β Version 3.12.0 β SRC/cggrqf.f(3) πππΈ
π¦ 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