SRC/shsein.f(3)
β¨ NAME β¨
okay so bestie, this is the SRC/shsein.f page from the Library Functions Manual β yes, the SRC/shsein.f(3) one β and it's all about the SHSEIN subroutine. No cap, it's a LAPACK icon. π
π¦ SYNOPSIS π¦
π Functions/Subroutines π
subroutine shsein (side, eigsrc, initv, select, n, h, ldh, wr, wi, vl,
ldvl, vr, ldvr, mm, m, work, ifaill, ifailr, info)
SHSEIN β that's the function/subroutine, bestie. β¨
π Function/Subroutine Documentation π
π«Ά subroutine shsein ... SHSEIN π«Ά
subroutine shsein (character side, character eigsrc, character initv,
logical, dimension( * ) select, integer n, real, dimension( ldh, * ) h,
integer ldh, real, dimension( * ) wr, real, dimension( * ) wi, real,
dimension( ldvl, * ) vl, integer ldvl, real, dimension( ldvr, * ) vr,
integer ldvr, integer mm, integer m, real, dimension( * ) work, integer,
dimension( * ) ifaill, integer, dimension( * ) ifailr, integer info)
SHSEIN
π Purpose π
SHSEIN uses inverse iteration to find specified right and/or left eigenvectors of a real upper Hessenberg matrix H. That's the whole vibe. π
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. iykyk.
πΈ Parameters πΈ
SIDEβSIDEisCHARACTER*1, and it does exactly what it says:= 'R': compute right eigenvectors only;= 'L': compute left eigenvectors only;= 'B': compute both right and left eigenvectors.
EIGSRCβEIGSRCisCHARACTER*1and specifies the source of eigenvalues supplied in(WR,WI):= 'Q': the eigenvalues were found usingSHSEQR; 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 allowsSHSEINto perform inverse iteration on just one diagonal block.= 'N': no assumptions are made on the correspondence between eigenvalues and diagonal blocks. In this case,SHSEINmust always perform inverse iteration using the whole matrixH.
INITVβINITVisCHARACTER*1:= 'N': no initial vectors are supplied;= 'U': user-supplied initial vectors are stored in the arraysVLand/orVR.
SELECTβSELECTisLOGICAL array, dimension (N). It specifies the eigenvectors to be computed. To select the real eigenvector corresponding to a real eigenvalueWR(j),SELECT(j)must be set to.TRUE.. To select the complex eigenvector corresponding to a complex eigenvalue(WR(j),WI(j)), with complex conjugate(WR(j+1),WI(j+1)), eitherSELECT(j)orSELECT(j+1)or both must be set to.TRUE.; then on exitSELECT(j)is.TRUE.andSELECT(j+1)is.FALSE..NβNisINTEGER, the order of the matrixH.N >= 0.HβHisREAL array, dimension (LDH,N), the upper Hessenberg matrixH. If aNaNis detected inH, the routine will return withINFO=-6. not the NaN jumpscare, bestie πLDHβLDHisINTEGER, the leading dimension of the arrayH.LDH >= max(1,N).WRβWRisREAL array, dimension (N).WIβWIisREAL array, dimension (N). On entry, the real and imaginary parts of the eigenvalues ofH; a complex conjugate pair of eigenvalues must be stored in consecutive elements ofWRandWI. On exit,WRmay have been altered since close eigenvalues are perturbed slightly in searching for independent eigenvectors.VLβVLisREAL 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(s) 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. A complex eigenvector corresponding to a complex eigenvalue is stored in two consecutive columns, the first holding the real part and the second the imaginary part. IfSIDE = 'R',VLis not referenced.LDVLβLDVLisINTEGER, the leading dimension of the arrayVL.LDVL >= max(1,N)ifSIDE = 'L'or'B';LDVL >= 1otherwise.VRβVRisREAL 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(s) 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. A complex eigenvector corresponding to a complex eigenvalue is stored in two consecutive columns, the first holding the real part and the second the imaginary part. IfSIDE = 'L',VRis not referenced.LDVRβLDVRisINTEGER, the leading dimension of the arrayVR.LDVR >= max(1,N)ifSIDE = 'R'or'B';LDVR >= 1otherwise.MMβMMisINTEGER, the number of columns in the arraysVLand/orVR.MM >= M.MβMisINTEGER, the number of columns in the arraysVLand/orVRrequired to store the eigenvectors; each selected real eigenvector occupies one column and each selected complex eigenvector occupies two columns.WORKβWORKisREAL array, dimension ((N+2)*N).IFAILLβIFAILLisINTEGER array, dimension (MM). IfSIDE = 'L'or'B',IFAILL(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. If the i-th and(i+1)thcolumns ofVLhold a complex eigenvector, thenIFAILL(i)andIFAILL(i+1)are set to the same value. IfSIDE = 'R',IFAILLis not referenced.IFAILRβIFAILRisINTEGER 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. If the i-th and(i+1)thcolumns ofVRhold a complex eigenvector, thenIFAILR(i)andIFAILR(i+1)are set to the same value. IfSIDE = 'L',IFAILRis not referenced.INFOβINFOisINTEGER:= 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 260 of file shsein.f π
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
mwah π that's the whole page, bestie! It's from LAPACK Version 3.12.0 and lives at SRC/shsein.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