/home/abui.../strevc3.f(3)
๐ NAME ๐
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/strevc3.f
Okay so this is the Library Functions Manual page for that file, bestie โ and the star of the show is STREVC3. ๐
โจ SYNOPSIS โจ
๐ง Functions/Subroutines ๐ง
subroutine STREVC3 (side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
mm, m, work, lwork, info)
STREVC3 โ iconic name, no notes. โจ
๐ฆ 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 โ yes queen. ๐
๐ 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. Slay. ๐
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 โ theyโre read directly from the diagonal blocks of T. The way that works is lowkey iconic. ๐
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. No cap.
This uses a Level 3 BLAS version of the back transformation. Glow-up confirmed. โจ
๐ธ Parameters ๐ธ
SIDEโ isCHARACTER*1.= 'R': compute right eigenvectors only;= 'L': compute left eigenvectors only;= 'B': compute both right and left eigenvectors. ๐HOWMNYโ isCHARACTER*1.= '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โ isLOGICAL 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โ isINTEGER. The order of the matrixT.N >= 0. ๐ซถTโ isREAL array, dimension (LDT,N). The upper quasi-triangular matrixTin Schur canonical form. ๐LDTโ isINTEGER. The leading dimension of the arrayT.LDT >= max(1,N). ๐ธVLโ isREAL 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โ isINTEGER. The leading dimension of the arrayVL.LDVL >= 1, and ifSIDE = 'L'or'B',LDVL >= N. ๐ฆVRโ isREAL 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โ isINTEGER. The leading dimension of the arrayVR.LDVR >= 1, and ifSIDE = 'R'or'B',LDVR >= N. ๐ฆMMโ isINTEGER. The number of columns in the arraysVLand/orVR.MM >= M. โจMโ isINTEGER. 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โ isREAL array, dimension (MAX(1,LWORK)). ๐ซถLWORKโ isINTEGER. 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โ isINTEGER.= 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.
Academic royalty, honestly. ๐
โจ Further Details โจ
The algorithm used in this program is basically backward (forward) substitution, with scaling to make the code robust against possible overflow. Safety first, bestie.
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|. Math girlie behavior. ๐งฎโจ
๐ Definition at line 235 of file strevc3.f. ๐
๐ Author โ generated note ๐
Generated automatically by Doxygen for LAPACK from the source code.
๐ And thatโs the whole page, bestie! Source/version energy: LAPACK, Version 3.12.0, and the source path /home/abui.../strevc3.f(3). Bye, mwah! ๐
๐ฆ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 ยท BSD-3-Clause
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms