# laexc - Man Page

laexc: reorder Schur form

## Synopsis

### Functions

subroutine **dlaexc** (wantq, n, t, ldt, q, ldq, j1, n1, n2, work, info)**DLAEXC** swaps adjacent diagonal blocks of a real upper quasi-triangular matrix in Schur canonical form, by an orthogonal similarity transformation.

subroutine **slaexc** (wantq, n, t, ldt, q, ldq, j1, n1, n2, work, info)**SLAEXC** swaps adjacent diagonal blocks of a real upper quasi-triangular matrix in Schur canonical form, by an orthogonal similarity transformation.

## Detailed Description

## Function Documentation

### 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.

**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***WANTQ*WANTQ is LOGICAL = .TRUE. : accumulate the transformation in the matrix Q; = .FALSE.: do not accumulate the transformation.

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

*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.

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

*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.

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

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

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

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

*WORK*WORK is DOUBLE PRECISION array, dimension (N)

*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.

Definition at line **136** of file **dlaexc.f**.

### subroutine slaexc (logical wantq, integer n, real, dimension( ldt, * ) t, integer ldt, real, dimension( ldq, * ) q, integer ldq, integer j1, integer n1, integer n2, real, dimension( * ) work, integer info)

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

**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 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***WANTQ*WANTQ is LOGICAL = .TRUE. : accumulate the transformation in the matrix Q; = .FALSE.: do not accumulate the transformation.

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

*T*T is 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*LDT is INTEGER The leading dimension of the array T. LDT >= max(1,N).

*Q*Q is 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*LDQ is INTEGER The leading dimension of the array Q. LDQ >= 1; and if WANTQ is .TRUE., LDQ >= N.

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

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

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

*WORK*WORK is REAL array, dimension (N)

*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.

Definition at line **136** of file **slaexc.f**.

## Author

Generated automatically by Doxygen for LAPACK from the source code.