laexc#

Functions

void slaexc(
    const INT  wantq,
    const INT  n,
          f32* T,
    const INT  ldt,
          f32* Q,
    const INT  ldq,
    const INT  j1,
    const INT  n1,
    const INT  n2,
          f32* work,
          INT* info
);
void slaexc(const INT wantq, const INT n, f32 *T, const INT ldt, f32 *Q, const INT ldq, const INT j1, const INT n1, const INT n2, f32 *work, INT *info)#

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

in
wantq

If nonzero, accumulate the transformation in Q.

in
n

The order of the matrix T. n >= 0.

inout
T

On entry, the upper quasi-triangular matrix T, in Schur canonical form. On exit, the updated matrix T. Dimension (ldt, n).

in
ldt

The leading dimension of T. ldt >= max(1, n).

inout
Q

On entry, if wantq is nonzero, the orthogonal matrix Q. On exit, if wantq is nonzero, the updated Q. Not referenced if wantq is zero. Dimension (ldq, n).

in
ldq

The leading dimension of Q. ldq >= 1, and if wantq is nonzero, ldq >= n.

in
j1

The index of the first row of the first block T11. (0-based indexing)

in
n1

The order of the first block T11. n1 = 0, 1 or 2.

in
n2

The order of the second block T22. n2 = 0, 1 or 2.

out
work

Workspace array, dimension (n).

out
info

  • = 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.

Functions

void dlaexc(
    const INT  wantq,
    const INT  n,
          f64* T,
    const INT  ldt,
          f64* Q,
    const INT  ldq,
    const INT  j1,
    const INT  n1,
    const INT  n2,
          f64* work,
          INT* info
);
void dlaexc(const INT wantq, const INT n, f64 *T, const INT ldt, f64 *Q, const INT ldq, const INT j1, const INT n1, const INT n2, f64 *work, INT *info)#

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

If nonzero, accumulate the transformation in Q.

in
n

The order of the matrix T. n >= 0.

inout
T

On entry, the upper quasi-triangular matrix T, in Schur canonical form. On exit, the updated matrix T. Dimension (ldt, n).

in
ldt

The leading dimension of T. ldt >= max(1, n).

inout
Q

On entry, if wantq is nonzero, the orthogonal matrix Q. On exit, if wantq is nonzero, the updated Q. Not referenced if wantq is zero. Dimension (ldq, n).

in
ldq

The leading dimension of Q. ldq >= 1, and if wantq is nonzero, ldq >= n.

in
j1

The index of the first row of the first block T11. (0-based indexing)

in
n1

The order of the first block T11. n1 = 0, 1 or 2.

in
n2

The order of the second block T22. n2 = 0, 1 or 2.

out
work

Workspace array, dimension (n).

out
info

  • = 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.