Loading...
Searching...
No Matches

## dlaexc()

subroutine dlaexc | ( | logical | wantq,
|  | integer | n,
|  | double precision, dimension( ldt, * ) | t,
|  | integer | ldt,
|  | double precision, dimension( ldq, * ) | q,
|  | integer | ldq,
|  | integer | j1,
|  | integer | n1,
|  | integer | n2,
|  | double precision, dimension( * ) | work,
|  | integer | info )

DLAEXC swaps adjacent diagonal blocks of a real upper quasi-triangular matrix in Schur canonical form, by an orthogonal similarity transformation.

Download DLAEXC + dependencies [TGZ] [ZIP] [TXT]

Purpose:

      !>
      !> DLAEXC 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 triangular
      !> 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.
      !>

Parameters

  [in]

  WANTQ

      !>          WANTQ is LOGICAL
      !>          = .TRUE. : accumulate the transformation in the matrix Q;
      !>          = .FALSE.: do not accumulate the transformation.
      !>

  [in]

  N

      !>          N is INTEGER
      !>          The order of the matrix T. N >= 0.
      !>

  [in,out]

  T

      !>          T is DOUBLE PRECISION 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.
      !>

  [in]

  LDT

      !>          LDT is INTEGER
      !>          The leading dimension of the array T. LDT >= max(1,N).
      !>

  [in,out]

  Q

      !>          Q is DOUBLE PRECISION 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.
      !>

  [in]

  LDQ

      !>          LDQ is INTEGER
      !>          The leading dimension of the array Q.
      !>          LDQ >= 1; and if WANTQ is .TRUE., LDQ >= N.
      !>

  [in]

  J1

      !>          J1 is INTEGER
      !>          The index of the first row of the first block T11.
      !>

  [in]

  N1

      !>          N1 is INTEGER
      !>          The order of the first block T11. N1 = 0, 1 or 2.
      !>

  [in]

  N2

      !>          N2 is INTEGER
      !>          The order of the second block T22. N2 = 0, 1 or 2.
      !>

  [out]

  WORK

      !>          WORK is DOUBLE PRECISION array, dimension (N)
      !>

  [out]

  INFO

      !>          INFO is 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.
      !>

Author
  Univ. of Tennessee
  Univ. of California Berkeley
  Univ. of Colorado Denver
  NAG Ltd.