SLAEXC(3)                  MathKeisan LAPACK routine                 SLAEXC(3)



NAME
       SLAEXC  -  adjacent  diagonal  blocks T11 and T22 of order 1 or 2 in an
       upper quasi-triangular matrix T by an orthogonal similarity transforma-
       tion

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 transforma-
       tion.

       T must be in Schur canonical 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) REAL array, dimension (LDT,N)
               On entry, the upper quasi-triangular matrix T, in Schur canoni-
               cal form.  On exit, the updated matrix T, again in Schur canon-
               ical 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.



 LAPACK auxiliary routine (versionNo3v.e1m)ber 2006                       SLAEXC(3)