---
name: "strexc"
section: "3lapack"
platform: "linux"
package: "liblapack-doc"
version: "3.2.1-8"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/strexc/3lapack"
---

# strexc(3lapack)

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

## NAME

STREXC - 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

## SYNOPSIS

- SUBROUTINE STREXC(

  COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK, INFO )

- CHARACTER

  COMPQ

- INTEGER

  IFST, ILST, INFO, LDQ, LDT, N

- REAL

  Q( LDQ, \* ), T( LDT, \* ), WORK( \* )

## PURPOSE

STREXC 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 similarity 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 SHSEQR), 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.\

## 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) REAL array, dimension (LDT,N)

  On entry, the upper quasi-triangular matrix T, in Schur 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) REAL array, dimension (LDQ,N)

  On entry, if COMPQ = 'V', the matrix Q of Schur vectors. On exit, if COMPQ = 'V', Q has been postmultiplied by the orthogonal transformation matrix Z which reorders T. If COMPQ = 'N', Q is not referenced.

- LDQ (input) INTEGER

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

- IFST (input/output) INTEGER

  ILST    (input/output) INTEGER Specify the reordering 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) REAL 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.
