trevc#
Functions
-
void strevc(const char *side, const char *howmny, INT *select, const INT n, const f32 *T, const INT ldt, f32 *VL, const INT ldvl, f32 *VR, const INT ldvr, const INT mm, INT *m, f32 *work, INT *info)#
STREVC 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.
The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:
T*x = w*x, (y**H)*T = w*(y**H)
where y**H denotes the conjugate transpose of y. The eigenvalues are not input to this routine, but are read directly from the diagonal blocks of T.
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.
Parameters
inside‘R’: compute right eigenvectors only; ‘L’: compute left eigenvectors only; ‘B’: compute both right and left eigenvectors.
inhowmny‘A’: compute all right and/or left eigenvectors; ‘B’: compute all, backtransformed by VR and/or VL; ‘S’: compute selected eigenvectors (as indicated by select).
inoutselectInteger array, dimension (n). If howmny = ‘S’, select specifies which eigenvectors to compute. Nonzero = selected. For complex pairs, if either is selected, both are computed.
innThe order of the matrix T. n >= 0.
inTDouble precision array, dimension (ldt, n). The upper quasi-triangular matrix T in Schur canonical form.
inldtThe leading dimension of T. ldt >= max(1, n).
inoutVLDouble precision array, dimension (ldvl, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the left eigenvectors.
inldvlThe leading dimension of VL. ldvl >= 1, and if side = ‘L’ or ‘B’, ldvl >= n.
inoutVRDouble precision array, dimension (ldvr, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the right eigenvectors.
inldvrThe leading dimension of VR. ldvr >= 1, and if side = ‘R’ or ‘B’, ldvr >= n.
inmmThe number of columns in VL and/or VR. mm >= m.
outmThe number of columns actually used to store eigenvectors.
outworkDouble precision array, dimension (3*n).
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value.
void strevc(
const char* side,
const char* howmny,
INT* select,
const INT n,
const f32* T,
const INT ldt,
f32* VL,
const INT ldvl,
f32* VR,
const INT ldvr,
const INT mm,
INT* m,
f32* work,
INT* info
);
Functions
-
void dtrevc(const char *side, const char *howmny, INT *select, const INT n, const f64 *T, const INT ldt, f64 *VL, const INT ldvl, f64 *VR, const INT ldvr, const INT mm, INT *m, f64 *work, INT *info)#
DTREVC 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 DHSEQR.
The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:
T*x = w*x, (y**H)*T = w*(y**H)
where y**H denotes the conjugate transpose of y. The eigenvalues are not input to this routine, but are read directly from the diagonal blocks of T.
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.
Parameters
inside‘R’: compute right eigenvectors only; ‘L’: compute left eigenvectors only; ‘B’: compute both right and left eigenvectors.
inhowmny‘A’: compute all right and/or left eigenvectors; ‘B’: compute all, backtransformed by VR and/or VL; ‘S’: compute selected eigenvectors (as indicated by select).
inoutselectInteger array, dimension (n). If howmny = ‘S’, select specifies which eigenvectors to compute. Nonzero = selected. For complex pairs, if either is selected, both are computed.
innThe order of the matrix T. n >= 0.
inTDouble precision array, dimension (ldt, n). The upper quasi-triangular matrix T in Schur canonical form.
inldtThe leading dimension of T. ldt >= max(1, n).
inoutVLDouble precision array, dimension (ldvl, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the left eigenvectors.
inldvlThe leading dimension of VL. ldvl >= 1, and if side = ‘L’ or ‘B’, ldvl >= n.
inoutVRDouble precision array, dimension (ldvr, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the right eigenvectors.
inldvrThe leading dimension of VR. ldvr >= 1, and if side = ‘R’ or ‘B’, ldvr >= n.
inmmThe number of columns in VL and/or VR. mm >= m.
outmThe number of columns actually used to store eigenvectors.
outworkDouble precision array, dimension (3*n).
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value.
void dtrevc(
const char* side,
const char* howmny,
INT* select,
const INT n,
const f64* T,
const INT ldt,
f64* VL,
const INT ldvl,
f64* VR,
const INT ldvr,
const INT mm,
INT* m,
f64* work,
INT* info
);
Functions
-
void ctrevc(const char *side, const char *howmny, INT *select, const INT n, c64 *T, const INT ldt, c64 *VL, const INT ldvl, c64 *VR, const INT ldvr, const INT mm, INT *m, c64 *work, f32 *rwork, INT *info)#
CTREVC computes some or all of the right and/or left eigenvectors of a complex upper triangular matrix T.
Matrices of this type are produced by the Schur factorization of a complex general matrix: A = Q*T*Q**H, as computed by CHSEQR.
The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:
T*x = w*x, (y**H)*T = w*(y**H)
where y**H denotes the conjugate transpose of the vector y. The eigenvalues are not input to this routine, but are read directly from the diagonal of T.
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 unitary 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.
Parameters
inside‘R’: compute right eigenvectors only; ‘L’: compute left eigenvectors only; ‘B’: compute both right and left eigenvectors.
inhowmny‘A’: compute all right and/or left eigenvectors; ‘B’: compute all, backtransformed by VR and/or VL; ‘S’: compute selected eigenvectors (as indicated by select).
inselectInteger array, dimension (n). If howmny = ‘S’, select specifies which eigenvectors to compute. Nonzero = selected. Not referenced if howmny = ‘A’ or ‘B’.
innThe order of the matrix T. n >= 0.
inoutTSingle complex array, dimension (ldt, n). The upper triangular matrix T. T is modified, but restored on exit.
inldtThe leading dimension of T. ldt >= max(1, n).
inoutVLSingle complex array, dimension (ldvl, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the left eigenvectors. Not referenced if side = ‘R’.
inldvlThe leading dimension of VL. ldvl >= 1, and if side = ‘L’ or ‘B’, ldvl >= n.
inoutVRSingle complex array, dimension (ldvr, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the right eigenvectors. Not referenced if side = ‘L’.
inldvrThe leading dimension of VR. ldvr >= 1, and if side = ‘R’ or ‘B’, ldvr >= n.
inmmThe number of columns in VL and/or VR. mm >= m.
outmThe number of columns actually used to store eigenvectors.
outworkSingle complex array, dimension (2*n).
outrworkSingle precision array, dimension (n).
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value.
void ctrevc(
const char* side,
const char* howmny,
INT* select,
const INT n,
c64* T,
const INT ldt,
c64* VL,
const INT ldvl,
c64* VR,
const INT ldvr,
const INT mm,
INT* m,
c64* work,
f32* rwork,
INT* info
);
Functions
-
void ztrevc(const char *side, const char *howmny, INT *select, const INT n, c128 *T, const INT ldt, c128 *VL, const INT ldvl, c128 *VR, const INT ldvr, const INT mm, INT *m, c128 *work, f64 *rwork, INT *info)#
ZTREVC computes some or all of the right and/or left eigenvectors of a complex upper triangular matrix T.
Matrices of this type are produced by the Schur factorization of a complex general matrix: A = Q*T*Q**H, as computed by ZHSEQR.
The right eigenvector x and the left eigenvector y of T corresponding to an eigenvalue w are defined by:
T*x = w*x, (y**H)*T = w*(y**H)
where y**H denotes the conjugate transpose of the vector y. The eigenvalues are not input to this routine, but are read directly from the diagonal of T.
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 unitary 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.
Parameters
inside‘R’: compute right eigenvectors only; ‘L’: compute left eigenvectors only; ‘B’: compute both right and left eigenvectors.
inhowmny‘A’: compute all right and/or left eigenvectors; ‘B’: compute all, backtransformed by VR and/or VL; ‘S’: compute selected eigenvectors (as indicated by select).
inselectInteger array, dimension (n). If howmny = ‘S’, select specifies which eigenvectors to compute. Nonzero = selected. Not referenced if howmny = ‘A’ or ‘B’.
innThe order of the matrix T. n >= 0.
inoutTDouble complex array, dimension (ldt, n). The upper triangular matrix T. T is modified, but restored on exit.
inldtThe leading dimension of T. ldt >= max(1, n).
inoutVLDouble complex array, dimension (ldvl, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the left eigenvectors. Not referenced if side = ‘R’.
inldvlThe leading dimension of VL. ldvl >= 1, and if side = ‘L’ or ‘B’, ldvl >= n.
inoutVRDouble complex array, dimension (ldvr, mm). On entry, if howmny = ‘B’, must contain an n-by-n matrix Q. On exit, contains the right eigenvectors. Not referenced if side = ‘L’.
inldvrThe leading dimension of VR. ldvr >= 1, and if side = ‘R’ or ‘B’, ldvr >= n.
inmmThe number of columns in VL and/or VR. mm >= m.
outmThe number of columns actually used to store eigenvectors.
outworkDouble complex array, dimension (2*n).
outrworkDouble precision array, dimension (n).
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value.
void ztrevc(
const char* side,
const char* howmny,
INT* select,
const INT n,
c128* T,
const INT ldt,
c128* VL,
const INT ldvl,
c128* VR,
const INT ldvr,
const INT mm,
INT* m,
c128* work,
f64* rwork,
INT* info
);