Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

?tgex2

Swaps adjacent diagonal blocks in an upper (quasi) triangular matrix pair by an orthogonal/unitary equivalence transformation.

Syntax

call stgex2
(
wantq
,
wantz
,
n
,
a
,
lda
,
b
,
ldb
,
q
,
ldq
,
z
,
ldz
,
j1
,
n1
,
n2
,
work
,
lwork
,
info
)
call dtgex2
(
wantq
,
wantz
,
n
,
a
,
lda
,
b
,
ldb
,
q
,
ldq
,
z
,
ldz
,
j1
,
n1
,
n2
,
work
,
lwork
,
info
)
call ctgex2
(
wantq
,
wantz
,
n
,
a
,
lda
,
b
,
ldb
,
q
,
ldq
,
z
,
ldz
,
j1
,
info
)
call ztgex2
(
wantq
,
wantz
,
n
,
a
,
lda
,
b
,
ldb
,
q
,
ldq
,
z
,
ldz
,
j1
,
info
)
Include Files
  • mkl.fi
Description
The real routines
stgex2
/
dtgex2
swap adjacent diagonal blocks (
A
11,
B
11) and (
A
22,
B
22) of size 1-by-1 or 2-by-2 in an upper (quasi) triangular matrix pair (
A
,
B
) by an orthogonal equivalence transformation. (
A
,
B
) must be in generalized real Schur canonical form (as returned by
sgges
/
dgges
), that is,
A
is block upper triangular with 1-by-1 and 2-by-2 diagonal blocks.
B
is upper triangular.
The complex routines
ctgex2
/
ztgex2
swap adjacent diagonal 1-by-1 blocks (
A
11,
B
11) and (
A
22,
B
22) in an upper triangular matrix pair (
A
,
B
) by an unitary equivalence transformation.
(
A
,
B
) must be in generalized Schur canonical form, that is,
A
and
B
are both upper triangular.
All routines optionally update the matrices
Q
and
Z
of generalized Schur vectors:
For real flavors,
Q
(in)*
A
(in)*
Z
(in)
T
=
Q
(out)*
A
(out)*
Z
(out)
T
Q
(in)*
B
(in)*
Z
(in)
T
=
Q
(out)*
B
(out)*
Z
(out)
T
.
For complex flavors,
Q
(in)*
A
(in)*
Z
(in)
H
=
Q
(out)*
A
(out)*
Z
(out)
H