Previous: slaev2 Up: ../lapack-s.html Next: slag2

slaexc

NAME
SLAEXC - swap adjacent diagonal blocks T11 and T22 of order
1 or 2 in an upper quasi-triangular matrix T by an orthogo-
nal similarity transformation

SYNOPSIS
SUBROUTINE SLAEXC( WANTQ, N, T, LDT, Q, LDQ, J1, N1, N2,
WORK, INFO )

LOGICAL        WANTQ

INTEGER        INFO, J1, LDQ, LDT, N, N1, N2

REAL           Q( LDQ, * ), T( LDT, * ), WORK( * )

PURPOSE
SLAEXC swaps adjacent diagonal blocks T11 and T22 of order 1
or 2 in an upper quasi-triangular matrix T by an orthogonal
similarity transformation.

T must be in Schur canonical form, that is, block upper tri-
angular with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2
diagonal block has its diagonal elements 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) REAL 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) REAL 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; and
if WANTQ is .TRUE., LDQ >= N.

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) REAL 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.