SUBROUTINE DTGEXC( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, * IFST, ILST, WORK, LWORK, INFO) INTEGER N, LDA, LDB, LDQ, LDZ, IFST, ILST, LWORK, INFO LOGICAL WANTQ, WANTZ DOUBLE PRECISION A(LDA,*), B(LDB,*), Q(LDQ,*), Z(LDZ,*), WORK(*) SUBROUTINE DTGEXC_64( WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, * LDZ, IFST, ILST, WORK, LWORK, INFO) INTEGER*8 N, LDA, LDB, LDQ, LDZ, IFST, ILST, LWORK, INFO LOGICAL*8 WANTQ, WANTZ DOUBLE PRECISION A(LDA,*), B(LDB,*), Q(LDQ,*), Z(LDZ,*), WORK(*)
SUBROUTINE TGEXC( WANTQ, WANTZ, N, A, [LDA], B, [LDB], Q, [LDQ], Z, * [LDZ], IFST, ILST, [WORK], [LWORK], [INFO]) INTEGER :: N, LDA, LDB, LDQ, LDZ, IFST, ILST, LWORK, INFO LOGICAL :: WANTQ, WANTZ REAL(8), DIMENSION(:) :: WORK REAL(8), DIMENSION(:,:) :: A, B, Q, Z SUBROUTINE TGEXC_64( WANTQ, WANTZ, N, A, [LDA], B, [LDB], Q, [LDQ], * Z, [LDZ], IFST, ILST, [WORK], [LWORK], [INFO]) INTEGER(8) :: N, LDA, LDB, LDQ, LDZ, IFST, ILST, LWORK, INFO LOGICAL(8) :: WANTQ, WANTZ REAL(8), DIMENSION(:) :: WORK REAL(8), DIMENSION(:,:) :: A, B, Q, Z
void dtgexc(logical wantq, logical wantz, int n, double *a, int lda, double *b, int ldb, double *q, int ldq, double *z, int ldz, int *ifst, int *ilst, int *info);
void dtgexc_64(logical wantq, logical wantz, long n, double *a, long lda, double *b, long ldb, double *q, long ldq, double *z, long ldz, long *ifst, long *ilst, long *info);
so that the diagonal block of (A, B) with row index IFST is moved to row ILST.
(A, B) must be in generalized real Schur canonical form (as returned by SGGES), i.e. A is block upper triangular with 1-by-1 and 2-by-2 diagonal blocks. B is upper triangular.
Optionally, the matrices Q and Z of generalized Schur vectors are updated.
Q(in) * A(in) * Z(in)' = Q(out) * A(out) * Z(out)' Q(in) * B(in) * Z(in)' = Q(out) * B(out) * Z(out)'
.FALSE.: do not update Q.
.FALSE.: do not update Z.
If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA.