DLAEXC - swap adjacent diagonal blocks T11 and T22 of
order 1 or 2 in an upper quasi-triangular matrix T by an
orthogonal similarity transformation
SYNOPSIS
SUBROUTINE DLAEXC( WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2,
WORK, INFO )
LOGICAL WANTQ
INTEGER INFO, J1, LDQ, LDT, N, N1, N2
DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ),
WORK( * )
PURPOSE
DLAEXC swaps adjacent diagonal blocks T11 and T22 of order
1 or 2 in an upper quasi-triangular matrix T by an orthog
onal similarity transformation. T must be in Schur canon
ical form, that is, block upper triangular with 1-by-1 and
2-by-2 diagonal blocks; each 2-by-2 diagonal block has its
diagonal elemnts equal and its off-diagonal elements of
opposite sign.
ARGUMENTS
WANTQ (input) LOGICAL
= .TRUE. : accumulate the transformation in the
matrix Q;
= .FALSE.: do not accumulate the transformation.
N (input) INTEGER
The order of the matrix T. N >= 0.
T (input/output) DOUBLE PRECISION array, dimension
(LDT,N)
On entry, the upper quasi-triangular matrix T, in
Schur canonical form. On exit, the updated matrix
T, again in Schur canonical form.
LDT (input) INTEGER
The leading dimension of the array T. LDT >=
max(1,N).
Q (input/output) DOUBLE PRECISION array, dimension
(LDQ,N)
On entry, if WANTQ is .TRUE., the orthogonal
matrix Q. On exit, if WANTQ is .TRUE., the
updated matrix Q. If WANTQ is .FALSE., Q is not
referenced.
LDQ (input) INTEGER
The leading dimension of the array Q. LDQ >= 1;
J1 (input) INTEGER
The index of the first row of the first block T11.
N1 (input) INTEGER
The order of the first block T11. N1 = 0, 1 or 2.
N2 (input) INTEGER
The order of the second block T22. N2 = 0, 1 or 2.
WORK (workspace) DOUBLE PRECISION array, dimension (N)
INFO (output) INTEGER
= 0: successful exit
= 1: the transformed matrix T would be too far
from Schur form; the blocks are not swapped and T
and Q are unchanged.
Man(1) output converted with
man2html