SRC/strevc3.f(3)
hey bestie!! welcome to the SRC/strevc3.f(3) page from the Library Functions Manual π
β¨
π NAME π
SRC/strevc3.f β that's the name, short and iconic π
β¨ SYNOPSIS β¨
π Functions/Subroutines π
subroutine strevc3 (side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
mm, m, work, lwork, info)
STREVC3
π Function/Subroutine Documentation π
subroutine strevc3 (character side, character howmny, logical, dimension( *
) select, integer n, real, dimension( ldt, * ) t, integer ldt, real,
dimension( ldvl, * ) vl, integer ldvl, real, dimension( ldvr, * ) vr,
integer ldvr, integer mm, integer m, real, dimension( * ) work, integer
lwork, integer info)
STREVC3
π¦ Purpose: π¦
okay so STREVC3 computes some or all of the right and/or left eigenvectors of a real upper quasi-triangular matrix T. Matrices of this type are produced by the Schur factorization of a real general matrix: A = Q*T*Q**T, as computed by SHSEQR. no cap, that's the whole vibe of this routine πΈ
The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:
T*x = w*x, (y**T)*T = w*(y**T)
where y**T denotes the transpose of the vector y. The eigenvalues are not input to this routine, but are read directly from the diagonal blocks of T. iykyk π₯
This routine returns the matrices X and/or Y of right and left eigenvectors of T, or the products Q*X and/or Q*Y, where Q is an input matrix. If Q is the orthogonal factor that reduces a matrix A to Schur form T, then Q*X and Q*Y are the matrices of right and left eigenvectors of A. literally the whole Schur pipeline, bestie π
This uses a Level 3 BLAS version of the back transformation. periodt β¨
πΈ Parameters πΈ
SIDEβSIDE is CHARACTER*1. it picks which eigenvectors get computed:= 'R': compute right eigenvectors only;= 'L': compute left eigenvectors only;= 'B': compute both right and left eigenvectors.
HOWMNYβHOWMNY is CHARACTER*1. this is the "how many / which ones" switch:= 'A': compute all right and/or left eigenvectors;= 'B': compute all right and/or left eigenvectors, backtransformed by the matrices inVRand/orVL;= 'S': compute selected right and/or left eigenvectors, as indicated by the logical arraySELECT.
SELECTβSELECT is LOGICAL array, dimension (N). ifHOWMNY = 'S',SELECTspecifies the eigenvectors to be computed. Ifw(j)is a real eigenvalue, the corresponding real eigenvector is computed ifSELECT(j)is.TRUE.. Ifw(j)andw(j+1)are the real and imaginary parts of a complex eigenvalue, the corresponding complex eigenvector is computed if eitherSELECT(j)orSELECT(j+1)is.TRUE., and on exitSELECT(j)is set to.TRUE.andSELECT(j+1)is set to.FALSE.. Not referenced ifHOWMNY = 'A'or'B'. π«ΆNβN is INTEGER. the order of the matrixT.N >= 0.TβT is REAL array, dimension (LDT,N). the upper quasi-triangular matrixTin Schur canonical form.LDTβLDT is INTEGER. the leading dimension of the arrayT.LDT >= max(1,N).VLβVL is REAL array, dimension (LDVL,MM). on entry, ifSIDE = 'L'or'B'andHOWMNY = 'B',VLmust contain anN-by-NmatrixQ(usually the orthogonal matrixQof Schur vectors returned bySHSEQR). On exit, ifSIDE = 'L'or'B',VLcontains:- if
HOWMNY = 'A', the matrixYof left eigenvectors ofT; - if
HOWMNY = 'B', the matrixQ*Y; - if
HOWMNY = 'S', the left eigenvectors ofTspecified bySELECT, 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. Not referenced ifSIDE = 'R'. π
- if
LDVLβLDVL is INTEGER. the leading dimension of the arrayVL.LDVL >= 1, and ifSIDE = 'L'or'B',LDVL >= N.VRβVR is REAL array, dimension (LDVR,MM). on entry, ifSIDE = 'R'or'B'andHOWMNY = 'B',VRmust contain anN-by-NmatrixQ(usually the orthogonal matrixQof Schur vectors returned bySHSEQR). On exit, ifSIDE = 'R'or'B',VRcontains:- if
HOWMNY = 'A', the matrixXof right eigenvectors ofT; - if
HOWMNY = 'B', the matrixQ*X; - if
HOWMNY = 'S', the right eigenvectors ofTspecified bySELECT, 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. Not referenced ifSIDE = 'L'. π
- if
LDVRβLDVR is INTEGER. the leading dimension of the arrayVR.LDVR >= 1, and ifSIDE = 'R'or'B',LDVR >= N.MMβMM is INTEGER. the number of columns in the arraysVLand/orVR.MM >= M.MβM is INTEGER. the number of columns in the arraysVLand/orVRactually used to store the eigenvectors. IfHOWMNY = 'A'or'B',Mis set toN. Each selected real eigenvector occupies one column and each selected complex eigenvector occupies two columns.WORKβWORK is REAL array, dimension (MAX(1,LWORK)).LWORKβLWORK is INTEGER. the dimension of arrayWORK.LWORK >= max(1,3*N). For optimum performance,LWORK >= N + 2*N*NB, whereNBis the optimal blocksize. 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 algorithm used in this program is basically backward (forward) substitution, with scaling to make the the code robust against possible overflow. (yes, "the the" is in the source, bestie β we keep it π)
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 235 of file strevc3.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
okay that's the whole page, bestie!! LAPACK Version 3.12.0 and it's the SRC/strevc3.f(3) page β 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