laqz1#

Functions

void slaqz1(
    const f32* restrict A,
    const INT           lda,
    const f32* restrict B,
    const INT           ldb,
    const f32           sr1,
    const f32           sr2,
    const f32           si,
    const f32           beta1,
    const f32           beta2,
          f32* restrict v
);
void slaqz1(const f32 *restrict A, const INT lda, const f32 *restrict B, const INT ldb, const f32 sr1, const f32 sr2, const f32 si, const f32 beta1, const f32 beta2, f32 *restrict v)#

Given a 3-by-3 matrix pencil (A,B), SLAQZ1 sets v to a scalar multiple of the first column of the product.

K = (A - (beta2*sr2 - i*si)*B)*B^(-1)*(beta1*A - (sr1 + i*si)*B)*B^(-1).
It is assumed that either sr1 = sr2 or si = 0.

This is useful for starting double implicit shift bulges in the QZ algorithm.

Parameters

in
A

3x3 matrix A.

in
lda

Leading dimension of A.

in
B

3x3 matrix B.

in
ldb

Leading dimension of B.

in
sr1

First shift real part.

in
sr2

Second shift real part.

in
si

Shift imaginary part.

in
beta1

First shift beta.

in
beta2

Second shift beta.

out
v

Output vector of length 3.

Functions

void dlaqz1(
    const f64* restrict A,
    const INT           lda,
    const f64* restrict B,
    const INT           ldb,
    const f64           sr1,
    const f64           sr2,
    const f64           si,
    const f64           beta1,
    const f64           beta2,
          f64* restrict v
);
void dlaqz1(const f64 *restrict A, const INT lda, const f64 *restrict B, const INT ldb, const f64 sr1, const f64 sr2, const f64 si, const f64 beta1, const f64 beta2, f64 *restrict v)#

Given a 3-by-3 matrix pencil (A,B), DLAQZ1 sets v to a scalar multiple of the first column of the product.

K = (A - (beta2*sr2 - i*si)*B)*B^(-1)*(beta1*A - (sr1 + i*si)*B)*B^(-1).
It is assumed that either sr1 = sr2 or si = 0.

This is useful for starting f64 implicit shift bulges in the QZ algorithm.

Parameters

in
A

3x3 matrix A.

in
lda

Leading dimension of A.

in
B

3x3 matrix B.

in
ldb

Leading dimension of B.

in
sr1

First shift real part.

in
sr2

Second shift real part.

in
si

Shift imaginary part.

in
beta1

First shift beta.

in
beta2

Second shift beta.

out
v

Output vector of length 3.

Functions

void claqz1(
    const INT  ilq,
    const INT  ilz,
    const INT  k,
    const INT  istartm,
    const INT  istopm,
    const INT  ihi,
          c64* A,
    const INT  lda,
          c64* B,
    const INT  ldb,
    const INT  nq,
    const INT  qstart,
          c64* Q,
    const INT  ldq,
    const INT  nz,
    const INT  zstart,
          c64* Z,
    const INT  ldz
);
void claqz1(const INT ilq, const INT ilz, const INT k, const INT istartm, const INT istopm, const INT ihi, c64 *A, const INT lda, c64 *B, const INT ldb, const INT nq, const INT qstart, c64 *Q, const INT ldq, const INT nz, const INT zstart, c64 *Z, const INT ldz)#

CLAQZ1 chases a 1x1 shift bulge in a matrix pencil down a single position.

Parameters

in
ilq

Determines whether or not to update the matrix Q.

in
ilz

Determines whether or not to update the matrix Z.

in
k

Index indicating the position of the bulge. On entry, the bulge is located in (A(k+1,k),B(k+1,k)). On exit, the bulge is located in (A(k+2,k+1),B(k+2,k+1)).

in
istartm

Updates to (A,B) are restricted to (istartm:k+2,k:istopm).

in
istopm

See istartm.

in
ihi

Index of the last row/column in the active block.

inout
A

Complex array, dimension (lda, n).

in
lda

The leading dimension of A.

inout
B

Complex array, dimension (ldb, n).

in
ldb

The leading dimension of B.

in
nq

The order of the matrix Q.

in
qstart

Start index of the matrix Q.

inout
Q

Complex array, dimension (ldq, nq).

in
ldq

The leading dimension of Q.

in
nz

The order of the matrix Z.

in
zstart

Start index of the matrix Z.

inout
Z

Complex array, dimension (ldz, nz).

in
ldz

The leading dimension of Z.

Functions

void zlaqz1(
    const INT   ilq,
    const INT   ilz,
    const INT   k,
    const INT   istartm,
    const INT   istopm,
    const INT   ihi,
          c128* A,
    const INT   lda,
          c128* B,
    const INT   ldb,
    const INT   nq,
    const INT   qstart,
          c128* Q,
    const INT   ldq,
    const INT   nz,
    const INT   zstart,
          c128* Z,
    const INT   ldz
);
void zlaqz1(const INT ilq, const INT ilz, const INT k, const INT istartm, const INT istopm, const INT ihi, c128 *A, const INT lda, c128 *B, const INT ldb, const INT nq, const INT qstart, c128 *Q, const INT ldq, const INT nz, const INT zstart, c128 *Z, const INT ldz)#

ZLAQZ1 chases a 1x1 shift bulge in a matrix pencil down a single position.

Parameters

in
ilq

Determines whether or not to update the matrix Q.

in
ilz

Determines whether or not to update the matrix Z.

in
k

Index indicating the position of the bulge. On entry, the bulge is located in (A(k+1,k),B(k+1,k)). On exit, the bulge is located in (A(k+2,k+1),B(k+2,k+1)).

in
istartm

Updates to (A,B) are restricted to (istartm:k+2,k:istopm).

in
istopm

See istartm.

in
ihi

Index of the last row/column in the active block.

inout
A

Complex array, dimension (lda, n).

in
lda

The leading dimension of A.

inout
B

Complex array, dimension (ldb, n).

in
ldb

The leading dimension of B.

in
nq

The order of the matrix Q.

in
qstart

Start index of the matrix Q.

inout
Q

Complex array, dimension (ldq, nq).

in
ldq

The leading dimension of Q.

in
nz

The order of the matrix Z.

in
zstart

Start index of the matrix Z.

inout
Z

Complex array, dimension (ldz, nz).

in
ldz

The leading dimension of Z.