Previous: dtrevc Up: ../lapack-d.html Next: dtrrfs


dtrexc


 NAME
      DTREXC - reorder the real Schur factorization of a real
      matrix A = Q*T*Q**T, so that the diagonal block of T with
      row index IFST is moved to row ILST

 SYNOPSIS
      SUBROUTINE DTREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST,
                         WORK, INFO )

          CHARACTER      COMPQ

          INTEGER        IFST, ILST, INFO, LDQ, LDT, N

          DOUBLE         PRECISION Q( LDQ, * ), T( LDT, * ), WORK(
                         * )

 PURPOSE
      DTREXC reorders the real Schur factorization of a real
      matrix A = Q*T*Q**T, so that the diagonal block of T with
      row index IFST is moved to row ILST.

      The real Schur form T is reordered by an orthogonal similar-
      ity transformation Z**T*T*Z, and optionally the matrix Q of
      Schur vectors is updated by postmultiplying it with Z.

      T must be in Schur canonical form (as returned by DHSEQR),
      that is, block upper triangular with 1-by-1 and 2-by-2 diag-
      onal blocks; each 2-by-2 diagonal block has its diagonal
      elements equal and its off-diagonal elements of opposite
      sign.

 ARGUMENTS
      COMPQ   (input) CHARACTER*1
              = 'V':  update the matrix Q of Schur vectors;
              = 'N':  do not update Q.

      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 reordered upper
              quasi-triangular matrix, 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 COMPQ = 'V', the matrix Q of Schur

              vectors.  On exit, if COMPQ = 'V', Q has been post-
              multiplied by the orthogonal transformation matrix Z
              which reorders T.  If COMPQ = 'N', Q is not refer-
              enced.

      LDQ     (input) INTEGER
              The leading dimension of the array Q.  LDQ >=
              max(1,N).

      IFST    (input/output) INTEGER
              ILST    (input/output) INTEGER Specify the reorder-
              ing of the diagonal blocks of T.  The block with row
              index IFST is moved to row ILST, by a sequence of
              transpositions between adjacent blocks.  On exit, if
              IFST pointed on entry to the second row of a 2-by-2
              block, it is changed to point to the first row; ILST
              always points to the first row of the block in its
              final position (which may differ from its input
              value by +1 or -1).  1 <= IFST <= N; 1 <= ILST <= N.

      WORK    (workspace) DOUBLE PRECISION array, dimension (N)

      INFO    (output) INTEGER
              = 0:  successful exit
              < 0:  if INFO = -i, the i-th argument had an illegal
              value
              = 1:  two adjacent blocks were too close to swap
              (the problem is very ill-conditioned); T may have
              been partially reordered, and ILST points to the
              first row of the current position of the block being
              moved.