trevc3#
Functions
-
void strevc3(const char *side, const char *howmny, INT *select, const INT n, f32 *T, const INT ldt, f32 *VL, const INT ldvl, f32 *VR, const INT ldvr, const INT mm, INT *m, f32 *work, const INT lwork, INT *info)#
STREVC3 computes some or all of the right and/or left eigenvectors of a real upper quasi-triangular matrix T.
This uses a Level 3 BLAS version of the back transformation.
Parameters
inside‘R’: right eigenvectors only ‘L’: left eigenvectors only ‘B’: both right and left eigenvectors
inhowmny‘A’: compute all eigenvectors ‘B’: compute all eigenvectors, backtransformed ‘S’: compute selected eigenvectors
inoutselectLogical array, dimension (n). If howmny=’S’, specifies which eigenvectors to compute.
innOrder of matrix T. n >= 0.
inTUpper quasi-triangular matrix T, dimension (ldt, n).
inldtLeading dimension of T. ldt >= max(1, n).
inoutVLLeft eigenvectors, dimension (ldvl, mm).
inldvlLeading dimension of VL.
inoutVRRight eigenvectors, dimension (ldvr, mm).
inldvrLeading dimension of VR.
inmmNumber of columns in VL and/or VR.
outmNumber of columns actually used.
outworkWorkspace, dimension (max(1, lwork)).
inlworkDimension of work. lwork >= max(1, 3*n). For optimum performance, lwork >= n + 2*n*nb. If lwork = -1, workspace query.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
void strevc3(
const char* side,
const char* howmny,
INT* select,
const INT n,
f32* T,
const INT ldt,
f32* VL,
const INT ldvl,
f32* VR,
const INT ldvr,
const INT mm,
INT* m,
f32* work,
const INT lwork,
INT* info
);
Functions
-
void dtrevc3(const char *side, const char *howmny, INT *select, const INT n, f64 *T, const INT ldt, f64 *VL, const INT ldvl, f64 *VR, const INT ldvr, const INT mm, INT *m, f64 *work, const INT lwork, INT *info)#
DTREVC3 computes some or all of the right and/or left eigenvectors of a real upper quasi-triangular matrix T.
This uses a Level 3 BLAS version of the back transformation.
Parameters
inside‘R’: right eigenvectors only ‘L’: left eigenvectors only ‘B’: both right and left eigenvectors
inhowmny‘A’: compute all eigenvectors ‘B’: compute all eigenvectors, backtransformed ‘S’: compute selected eigenvectors
inoutselectLogical array, dimension (n). If howmny=’S’, specifies which eigenvectors to compute.
innOrder of matrix T. n >= 0.
inTUpper quasi-triangular matrix T, dimension (ldt, n).
inldtLeading dimension of T. ldt >= max(1, n).
inoutVLLeft eigenvectors, dimension (ldvl, mm).
inldvlLeading dimension of VL.
inoutVRRight eigenvectors, dimension (ldvr, mm).
inldvrLeading dimension of VR.
inmmNumber of columns in VL and/or VR.
outmNumber of columns actually used.
outworkWorkspace, dimension (max(1, lwork)).
inlworkDimension of work. lwork >= max(1, 3*n). For optimum performance, lwork >= n + 2*n*nb. If lwork = -1, workspace query.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
void dtrevc3(
const char* side,
const char* howmny,
INT* select,
const INT n,
f64* T,
const INT ldt,
f64* VL,
const INT ldvl,
f64* VR,
const INT ldvr,
const INT mm,
INT* m,
f64* work,
const INT lwork,
INT* info
);
Functions
-
void ctrevc3(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, const INT lwork, f32 *rwork, const INT lrwork, INT *info)#
CTREVC3 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.
This uses a Level 3 BLAS version of the back transformation.
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. 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 (max(1, lwork)).
inlworkDimension of work. lwork >= max(1, 2*n). For optimum performance, lwork >= n + 2*n*nb. If lwork = -1, workspace query.
outrworkSingle precision array, dimension (max(1, lrwork)).
inlrworkDimension of rwork. lrwork >= max(1, n). If lrwork = -1, workspace query.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value.
void ctrevc3(
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,
const INT lwork,
f32* rwork,
const INT lrwork,
INT* info
);
Functions
-
void ztrevc3(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, const INT lwork, f64 *rwork, const INT lrwork, INT *info)#
ZTREVC3 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.
This uses a Level 3 BLAS version of the back transformation.
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. 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 (max(1, lwork)).
inlworkDimension of work. lwork >= max(1, 2*n). For optimum performance, lwork >= n + 2*n*nb. If lwork = -1, workspace query.
outrworkDouble precision array, dimension (max(1, lrwork)).
inlrworkDimension of rwork. lrwork >= max(1, n). If lrwork = -1, workspace query.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value.
void ztrevc3(
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,
const INT lwork,
f64* rwork,
const INT lrwork,
INT* info
);