tgsen Interface

public interface tgsen

TGSEN reorders the generalized Schur decomposition of a complex matrix pair (A, B) (in terms of an unitary equivalence trans- formation Q**H * (A, B) * Z), so that a selected cluster of eigenvalues appears in the leading diagonal blocks of the pair (A,B). The leading columns of Q and Z form unitary bases of the corresponding left and right eigenspaces (deflating subspaces). (A, B) must be in generalized Schur canonical form, that is, A and B are both upper triangular. TGSEN also computes the generalized eigenvalues w(j)= ALPHA(j) / BETA(j) of the reordered matrix pair (A, B). Optionally, the routine computes estimates of reciprocal condition numbers for eigenvalues and eigenspaces. These are Difu[(A11,B11), (A22,B22)] and Difl[(A11,B11), (A22,B22)], i.e. the separation(s) between the matrix pairs (A11, B11) and (A22,B22) that correspond to the selected cluster and the eigenvalues outside the cluster, resp., and norms of "projections" onto left and right eigenspaces w.r.t. the selected cluster in the (1,1)-block.


Subroutines

public pure subroutine ctgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, alpha, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, iwork, liwork, info)

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: ijob
logical(kind=lk), intent(in) :: wantq
logical(kind=lk), intent(in) :: wantz
logical(kind=lk), intent(in) :: select(*)
integer(kind=ilp), intent(in) :: n
complex(kind=sp), intent(inout) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
complex(kind=sp), intent(inout) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb
complex(kind=sp), intent(out) :: alpha(*)
complex(kind=sp), intent(out) :: beta(*)
complex(kind=sp), intent(inout) :: q(ldq,*)
integer(kind=ilp), intent(in) :: ldq
complex(kind=sp), intent(inout) :: z(ldz,*)
integer(kind=ilp), intent(in) :: ldz
integer(kind=ilp), intent(out) :: m
real(kind=sp), intent(out) :: pl
real(kind=sp), intent(out) :: pr
real(kind=sp), intent(out) :: dif(*)
complex(kind=sp), intent(out) :: work(*)
integer(kind=ilp), intent(in) :: lwork
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(in) :: liwork
integer(kind=ilp), intent(out) :: info

public pure subroutine dtgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, alphar, alphai, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, iwork, liwork, info)

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: ijob
logical(kind=lk), intent(in) :: wantq
logical(kind=lk), intent(in) :: wantz
logical(kind=lk), intent(in) :: select(*)
integer(kind=ilp), intent(in) :: n
real(kind=dp), intent(inout) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=dp), intent(inout) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb
real(kind=dp), intent(out) :: alphar(*)
real(kind=dp), intent(out) :: alphai(*)
real(kind=dp), intent(out) :: beta(*)
real(kind=dp), intent(inout) :: q(ldq,*)
integer(kind=ilp), intent(in) :: ldq
real(kind=dp), intent(inout) :: z(ldz,*)
integer(kind=ilp), intent(in) :: ldz
integer(kind=ilp), intent(out) :: m
real(kind=dp), intent(out) :: pl
real(kind=dp), intent(out) :: pr
real(kind=dp), intent(out) :: dif(*)
real(kind=dp), intent(out) :: work(*)
integer(kind=ilp), intent(in) :: lwork
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(in) :: liwork
integer(kind=ilp), intent(out) :: info

public pure subroutine stgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, alphar, alphai, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, iwork, liwork, info)

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: ijob
logical(kind=lk), intent(in) :: wantq
logical(kind=lk), intent(in) :: wantz
logical(kind=lk), intent(in) :: select(*)
integer(kind=ilp), intent(in) :: n
real(kind=sp), intent(inout) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
real(kind=sp), intent(inout) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb
real(kind=sp), intent(out) :: alphar(*)
real(kind=sp), intent(out) :: alphai(*)
real(kind=sp), intent(out) :: beta(*)
real(kind=sp), intent(inout) :: q(ldq,*)
integer(kind=ilp), intent(in) :: ldq
real(kind=sp), intent(inout) :: z(ldz,*)
integer(kind=ilp), intent(in) :: ldz
integer(kind=ilp), intent(out) :: m
real(kind=sp), intent(out) :: pl
real(kind=sp), intent(out) :: pr
real(kind=sp), intent(out) :: dif(*)
real(kind=sp), intent(out) :: work(*)
integer(kind=ilp), intent(in) :: lwork
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(in) :: liwork
integer(kind=ilp), intent(out) :: info

public pure subroutine ztgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, alpha, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, iwork, liwork, info)

Arguments

Type IntentOptional Attributes Name
integer(kind=ilp), intent(in) :: ijob
logical(kind=lk), intent(in) :: wantq
logical(kind=lk), intent(in) :: wantz
logical(kind=lk), intent(in) :: select(*)
integer(kind=ilp), intent(in) :: n
complex(kind=dp), intent(inout) :: a(lda,*)
integer(kind=ilp), intent(in) :: lda
complex(kind=dp), intent(inout) :: b(ldb,*)
integer(kind=ilp), intent(in) :: ldb
complex(kind=dp), intent(out) :: alpha(*)
complex(kind=dp), intent(out) :: beta(*)
complex(kind=dp), intent(inout) :: q(ldq,*)
integer(kind=ilp), intent(in) :: ldq
complex(kind=dp), intent(inout) :: z(ldz,*)
integer(kind=ilp), intent(in) :: ldz
integer(kind=ilp), intent(out) :: m
real(kind=dp), intent(out) :: pl
real(kind=dp), intent(out) :: pr
real(kind=dp), intent(out) :: dif(*)
complex(kind=dp), intent(out) :: work(*)
integer(kind=ilp), intent(in) :: lwork
integer(kind=ilp), intent(out) :: iwork(*)
integer(kind=ilp), intent(in) :: liwork
integer(kind=ilp), intent(out) :: info

Module Procedures

public interface stdlib_ctgsen()

Arguments

None

public interface stdlib_dtgsen()

Arguments

None

public interface stdlib_stgsen()

Arguments

None

public interface stdlib_ztgsen()

Arguments

None