SRC/cggqrf.f(3)
π SRC/cggqrf.f(3) π
okay bestie, welcome to SRC/cggqrf.f(3) from the Library Functions Manual β this is the CGGQRF page, and itβs giving big LAPACK linear-algebra main character energy β¨
β¨ NAME β¨
SRC/cggqrf.f β literally the source file, no cap π«Ά
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine cggqrf (n, m, p, a, lda, taua, b, ldb, taub, work, lwork,
info)
CGGQRF
π Function/Subroutine Documentation π
π subroutine cggqrf π
subroutine cggqrf (integer n, integer m, integer p, 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)
CGGQRF
πΈ Purpose πΈ
CGGQRF 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 unitary matrix, Z is a P-by-P unitary 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**H * (inv(T)*R)
where inv(B) denotes the inverse of the matrix B, and Z' denotes the conjugate transpose of matrix Z.
π Parameters π
NβN is INTEGER. The number of rows of the matricesAandB.N >= 0.MβM is INTEGER. The number of columns of the matrixA.M >= 0.PβP is INTEGER. The number of columns of the matrixB.P >= 0.AβA is COMPLEX array, dimension (LDA,M). On entry, the N-by-M matrixA. On exit, the elements on and above the diagonal of the array contain the min(N,M)-by-M upper trapezoidal matrixR(Ris upper triangular ifN >= M); the elements below the diagonal, with the arrayTAUA, represent the unitary matrixQas a product of min(N,M) elementary reflectors (see Further Details).LDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,N).TAUAβTAUA is COMPLEX array, dimension (min(N,M)). The scalar factors of the elementary reflectors which represent the unitary matrixQ(see Further Details).BβB is COMPLEX array, dimension (LDB,P). On entry, the N-by-P matrixB. On exit, ifN <= P, the upper triangle of the subarrayB(1:N,P-N+1:P)contains the N-by-N upper triangular matrixT; ifN > P, the elements on and above the (N-P)-th subdiagonal contain the N-by-P upper trapezoidal matrixT; the remaining elements, with the arrayTAUB, represent the unitary matrixZas a product of elementary reflectors (see Further Details).LDBβLDB is INTEGER. The leading dimension of the arrayB.LDB >= max(1,N).TAUBβTAUB is COMPLEX array, dimension (min(N,P)). The scalar factors of the elementary reflectors which represent the unitary matrixZ(see Further Details).WORKβWORK is COMPLEX 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,N,M,P). For optimum performanceLWORK >= max(N,M,P)*max(NB1,NB2,NB3), whereNB1is the optimal blocksize for the QR factorization of an N-by-M matrix,NB2is the optimal blocksize for the RQ factorization of an N-by-P matrix, andNB3is the optimal blocksize for a call ofCUNMQR. 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, 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**H
where taua is a complex scalar, and v is a complex 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 CUNGQR.
To use Q to update another matrix, use LAPACK subroutine CUNMQR.
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**H
where taub is a complex scalar, and v is a complex 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 CUNGRQ.
To use Z to update another matrix, use LAPACK subroutine CUNMRQ.
Definition at line 213 of file cggqrf.f.
π€ Author π€
Generated automatically by Doxygen for LAPACK from the source code.
k bye bestie π this little page comes from LAPACK Version 3.12.0, file SRC/cggqrf.f(3) β slay, stay unitary, and donβt forget the workspace query β¨π¦
π¦ 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