SRC/zhsein.f(3)
β¨ SRC/zhsein.f β Library Functions Manual β¨
π NAME π
SRC/zhsein.f
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine zhsein (side, eigsrc, initv, select, n, h, ldh, w, vl, ldvl,
vr, ldvr, mm, m, work, rwork, ifaill, ifailr, info)
ZHSEIN
ZHSEIN is the main character here, obviously. π
π¦ Function/Subroutine Documentation π¦
subroutine zhsein (character side, character eigsrc, character initv,
logical, dimension( * ) select, integer n, complex*16, dimension( ldh, *
) h, integer ldh, complex*16, dimension( * ) w, complex*16, dimension(
ldvl, * ) vl, integer ldvl, complex*16, dimension( ldvr, * ) vr, integer
ldvr, integer mm, integer m, complex*16, dimension( * ) work, double
precision, dimension( * ) rwork, integer, dimension( * ) ifaill,
integer, dimension( * ) ifailr, integer info)
ZHSEIN
π Purpose π
Okay so ZHSEIN uses inverse iteration to find specified right and/or left eigenvectors of a complex upper Hessenberg matrix H. Slay. β¨
The right eigenvector x and the left eigenvector y of the matrix H corresponding to an eigenvalue w are defined by:
H * x = w * x, y**h * H = w * y**h
where y**h denotes the conjugate transpose of the vector y. π
π Parameters π
SIDEβCHARACTER*1= 'R': compute right eigenvectors only;= 'L': compute left eigenvectors only;= 'B': compute both right and left eigenvectors.
EIGSRCβCHARACTER*1. Specifies the source of eigenvalues supplied inW:= 'Q': the eigenvalues were found usingZHSEQR; thus, ifHhas zero subdiagonal elements, and so is block-triangular, then the j-th eigenvalue can be assumed to be an eigenvalue of the block containing the j-th row/column. This property allowsZHSEINto perform inverse iteration on just one diagonal block.= 'N': no assumptions are made on the correspondence between eigenvalues and diagonal blocks. In this case,ZHSEINmust always perform inverse iteration using the whole matrixH.
INITVβCHARACTER*1= 'N': no initial vectors are supplied;= 'U': user-supplied initial vectors are stored in the arraysVLand/orVR.
SELECTβLOGICAL array, dimension (N). Specifies the eigenvectors to be computed. To select the eigenvector corresponding to the eigenvalueW(j),SELECT(j)must be set to.TRUE..NβINTEGER. The order of the matrixH.N >= 0.HβCOMPLEX*16 array, dimension (LDH,N). The upper Hessenberg matrixH. If aNaNis detected inH, the routine will return withINFO=-6.LDHβINTEGER. The leading dimension of the arrayH.LDH >= max(1,N).WβCOMPLEX*16 array, dimension (N). On entry, the eigenvalues ofH. On exit, the real parts ofWmay have been altered since close eigenvalues are perturbed slightly in searching for independent eigenvectors.VLβCOMPLEX*16 array, dimension (LDVL,MM). On entry, ifINITV = 'U'andSIDE = 'L'or'B',VLmust contain starting vectors for the inverse iteration for the left eigenvectors; the starting vector for each eigenvector must be in the same column in which the eigenvector will be stored. On exit, ifSIDE = 'L'or'B', the left eigenvectors specified bySELECTwill be stored consecutively in the columns ofVL, in the same order as their eigenvalues. IfSIDE = 'R',VLis not referenced.LDVLβINTEGER. The leading dimension of the arrayVL.LDVL >= max(1,N)ifSIDE = 'L'or'B';LDVL >= 1otherwise.VRβCOMPLEX*16 array, dimension (LDVR,MM). On entry, ifINITV = 'U'andSIDE = 'R'or'B',VRmust contain starting vectors for the inverse iteration for the right eigenvectors; the starting vector for each eigenvector must be in the same column in which the eigenvector will be stored. On exit, ifSIDE = 'R'or'B', the right eigenvectors specified bySELECTwill be stored consecutively in the columns ofVR, in the same order as their eigenvalues. IfSIDE = 'L',VRis not referenced.LDVRβINTEGER. The leading dimension of the arrayVR.LDVR >= max(1,N)ifSIDE = 'R'or'B';LDVR >= 1otherwise.MMβINTEGER. The number of columns in the arraysVLand/orVR.MM >= M.MβINTEGER. The number of columns in the arraysVLand/orVRrequired to store the eigenvectors (= the number of.TRUE.elements inSELECT).WORKβCOMPLEX*16 array, dimension (N*N).RWORKβDOUBLE PRECISION array, dimension (N).IFAILLβINTEGER array, dimension (MM). IfSIDE = 'L'or'B',IFAIL L? no bestie, it'sIFAIL L? okay deep breath: it'sIFAILL(i) = j > 0if the left eigenvector in the i-th column ofVL(corresponding to the eigenvaluew(j)) failed to converge;IFAILL(i) = 0if the eigenvector converged satisfactorily. IfSIDE = 'R',IFAILLis not referenced.IFAILRβINTEGER array, dimension (MM). IfSIDE = 'R'or'B',IFAILR(i) = j > 0if the right eigenvector in the i-th column ofVR(corresponding to the eigenvaluew(j)) failed to converge;IFAILR(i) = 0if the eigenvector converged satisfactorily. IfSIDE = 'L',IFAILRis not referenced.INFOβINTEGER= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value> 0: ifINFO = i,iis the number of eigenvectors which failed to converge; seeIFAILLandIFAILRfor further details.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details π₯
Each eigenvector is normalized so that the element of largest magnitude has magnitude 1; here the magnitude of a complex number (x,y) is taken to be |x|+|y|. π
Definition at line 242 of file zhsein.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
Sign-off bestie: it's LAPACK, Version 3.12.0, SRC/zhsein.f(3) β mwah! π
π
π¦ 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