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.