MB03QY - SLICOT Library Routine Documentation

## MB03QY

### Transformation to the Schur canonical form of a selected 2-by-2 diagonal block of an upper quasi-triangular matrix

[Specification] [Arguments] [Method] [References] [Comments] [Example]

Purpose

      To compute the eigenvalues of a selected 2-by-2 diagonal block
      of an upper quasi-triangular matrix, to reduce the selected block
      to the standard form and to split the block in the case of real
      eigenvalues by constructing an orthogonal transformation UT.
      This transformation is applied to A (by similarity) and to
      another matrix U from the right.

Specification

          SUBROUTINE MB03QY( N, L, A, LDA, U, LDU, E1, E2, INFO )
    C     .. Scalar Arguments ..
          INTEGER          INFO, L, LDA, LDU, N
          DOUBLE PRECISION E1, E2
    C     .. Array Arguments ..
          DOUBLE PRECISION A(LDA,*), U(LDU,*)

Arguments

Input/Output Parameters

      N       (input) INTEGER
              The order of the matrices A and UT.  N >= 2.

      L       (input) INTEGER
              Specifies the position of the block.  1 <= L < N.

      A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
              On entry, the leading N-by-N part of this array must
              contain the upper quasi-triangular matrix A whose
              selected 2-by-2 diagonal block is to be processed.
              On exit, the leading N-by-N part of this array contains
              the upper quasi-triangular matrix A after its selected
              block has been splitt and/or put in the LAPACK standard
              form.

      LDA     INTEGER
              The leading dimension of array A.  LDA >= N.

      U       (input/output) DOUBLE PRECISION array, dimension (LDU,N)
              On entry, the leading N-by-N part of this array must
              contain a transformation matrix U.
              On exit, the leading N-by-N part of this array contains
              U*UT, where UT is the transformation matrix used to
              split and/or standardize the selected block.

      LDU     INTEGER
              The leading dimension of array U.  LDU >= N.

      E1, E2  (output) DOUBLE PRECISION
              E1 and E2 contain either the real eigenvalues or the real
              and positive imaginary parts, respectively, of the complex
              eigenvalues of the selected 2-by-2 diagonal block of A.

Error Indicator

      INFO    INTEGER
              = 0:  successful exit;
              < 0:  if INFO = -i, the i-th argument had an illegal
                    value.

Method

      Let A1 = ( A(L,L)    A(L,L+1)   )
               ( A(L+1,L)  A(L+1,L+1) )
      be the specified 2-by-2 diagonal block of matrix A.
      If the eigenvalues of A1 are complex, then they are computed and
      stored in E1 and E2, where the real part is stored in E1 and the
      positive imaginary part in E2. The 2-by-2 block is reduced if
      necessary to the standard form, such that A(L,L) = A(L+1,L+1), and
      A(L,L+1) and A(L+1,L) have oposite signs. If the eigenvalues are
      real, the 2-by-2 block is reduced to an upper triangular form such
      that ABS(A(L,L)) >= ABS(A(L+1,L+1)).
      In both cases, an orthogonal rotation U1' is constructed such that
      U1'*A1*U1 has the appropriate form. Let UT be an extension of U1
      to an N-by-N orthogonal matrix, using identity submatrices. Then A
      is replaced by UT'*A*UT and the contents of array U is U * UT.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index