---
name: "dlaexc.f"
section: "3"
platform: "linux"
package: "lapack-doc"
version: "3.12.1-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/dlaexc.f"
---

# dlaexc.f(3)

## NAME

SRC/dlaexc.f

## SYNOPSIS

### Functions/Subroutines

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.

## Function/Subroutine 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**.

## Author

Generated automatically by Doxygen for LAPACK from the source code.
