SRC/zgghrd.f(3)
π
SRC/zgghrd.f(3) β Library Functions Manual π
πΈ NAME πΈ
SRC/zgghrd.f β that's the whole page, bestie. Straight out of the Library Functions Manual, and it's all about the ZGGHRD routine. Let's get into it π
β¨ SYNOPSIS β¨
π§ Functions/Subroutines π§
subroutine zgghrd (compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, z,
ldz, info)
ZGGHRD
π Function/Subroutine Documentation π
π«Ά subroutine zgghrd π«Ά
subroutine zgghrd (character compq, character compz, integer n, integer ilo,
integer ihi, complex*16, dimension( lda, * ) a, integer lda, complex*16,
dimension( ldb, * ) b, integer ldb, complex*16, dimension( ldq, * ) q,
integer ldq, complex*16, dimension( ldz, * ) z, integer ldz, integer
info)
ZGGHRD
β¨ Purpose β¨
Okay so ZGGHRD reduces a pair of complex matrices (A,B) to generalized upper Hessenberg form using unitary transformations, where A is a general matrix and B is upper triangular. The generalized eigenvalue problem is
A*x = lambda*B*x
and B is typically made upper triangular by computing its QR factorization and moving the unitary matrix Q to the left side of the equation.
This subroutine simultaneously reduces A to a Hessenberg matrix H:
Q**H*A*Z = H
and transforms B to another upper triangular matrix T:
Q**H*B*Z = T
in order to reduce the problem to its standard form
H*y = lambda*T*y
where y = Z**H*x.
The unitary matrices Q and Z are determined as products of Givens rotations. They may either be formed explicitly, or they may be postmultiplied into input matrices Q1 and Z1, so that
Q1 * A * Z1**H = (Q1*Q) * H * (Z1*Z)**H
Q1 * B * Z1**H = (Q1*Q) * T * (Z1*Z)**H
If Q1 is the unitary matrix from the QR factorization of B in the original equation A*x = lambda*B*x, then ZGGHRD reduces the original problem to generalized Hessenberg form.
π Parameters π
COMPQβCOMPQisCHARACTER*1:'N': do not computeQ;'I':Qis initialized to the unit matrix, and the unitary matrixQis returned;'V':Qmust contain a unitary matrixQ1on entry, and the productQ1*Qis returned.
COMPZβCOMPZisCHARACTER*1:'N': do not computeZ;'I':Zis initialized to the unit matrix, and the unitary matrixZis returned;'V':Zmust contain a unitary matrixZ1on entry, and the productZ1*Zis returned.
NβNisINTEGER. The order of the matricesAandB.N >= 0.ILOβILOisINTEGER.IHIβIHIisINTEGER.
ILO and IHI mark the rows and columns of A which are to be reduced. It is assumed that A is already upper triangular in rows and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally set by a previous call to ZGGBAL; otherwise they should be set to 1 and N respectively. 1 <= ILO <= IHI <= N, if N > 0; ILO=1 and IHI=0, if N=0.
AβAisCOMPLEX*16array, dimension(LDA, N). On entry, theN-by-Ngeneral matrix to be reduced. On exit, the upper triangle and the first subdiagonal ofAare overwritten with the upper Hessenberg matrixH, and the rest is set to zero.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).BβBisCOMPLEX*16array, dimension(LDB, N). On entry, theN-by-Nupper triangular matrixB. On exit, the upper triangular matrixT = Q**H B Z. The elements below the diagonal are set to zero.LDBβLDBisINTEGER. The leading dimension of the arrayB.LDB >= max(1,N).QβQisCOMPLEX*16array, dimension(LDQ, N). On entry, ifCOMPQ = 'V', the unitary matrixQ1, typically from the QR factorization ofB. On exit, ifCOMPQ='I', the unitary matrixQ, and ifCOMPQ = 'V', the productQ1*Q. Not referenced ifCOMPQ='N'.LDQβLDQisINTEGER. The leading dimension of the arrayQ.LDQ >= NifCOMPQ='V'or'I';LDQ >= 1otherwise.ZβZisCOMPLEX*16array, dimension(LDZ, N). On entry, ifCOMPZ = 'V', the unitary matrixZ1. On exit, ifCOMPZ='I', the unitary matrixZ, and ifCOMPZ = 'V', the productZ1*Z. Not referenced ifCOMPZ='N'.LDZβLDZisINTEGER. The leading dimension of the arrayZ.LDZ >= NifCOMPZ='V'or'I';LDZ >= 1otherwise.INFOβINFOisINTEGER:= 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 π
This routine reduces A to Hessenberg and B to triangular form by an unblocked reduction, as described in Matrix_Computations_, by Golub and van Loan (Johns Hopkins Press).
Definition at line 202 of file zgghrd.f.
π Author (Doxygen's bit) π
Generated automatically by Doxygen for LAPACK from the source code.
That's the whole page, bestie π Sign-off: LAPACK β Version 3.12.0 β tagged SRC/zgghrd.f(3). That's the footer's source/version slot exactly, and there's no extra date shown on this one. Bye! π«Άβ¨
π¦ 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