BDLAEXC(3)    ScaLAPACK routine of NEC Numeric Library Collection   BDLAEXC(3)



NAME
       BDLAEXC - swaps adjacent diagonal blocks T11 and T22 of order 1 or 2 in
       an upper quasi-triangular matrix T by an orthogonal  similarity  trans-
       formation

SYNOPSIS
       SUBROUTINE BDLAEXC( N, T, LDT, J1, N1, N2, ITRAF, DTRAF, WORK, INFO )

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

           INTEGER         ITRAF( * )

           DOUBLE          PRECISION DTRAF( * ), T( LDT, * ), WORK( * )

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

       In contrast to the LAPACK routine DLAEXC, the orthogonal transformation
       matrix Q is not explicitly constructed but  represented  by  paramaters
       contained in the arrays ITRAF and DTRAF, see the description of BDTREXC
       for more details.

       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
       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 canoni-
               cal 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).

       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.

       ITRAF   (output) INTEGER array, length k, where
               k = 1, if N1+N2 = 2;
               k = 2, if N1+N2 = 3;
               k = 4, if N1+N2 = 4.
               List of parameters for representing the  transformation  matrix
               Q, see BDTREXC.

       DTRAF   (output) DOUBLE PRECISION array, length k, where
               k =  2, if N1+N2 = 2;
               k =  5, if N1+N2 = 3;
               k = 10, if N1+N2 = 4.
               List  of  parameters for representing the transformation matrix
               Q, see BDTREXC.

       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.



ScaLAPACK routine               31 October 2017                     BDLAEXC(3)