laqr4#
Functions
-
void slaqr4(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, f32 *H, const INT ldh, f32 *wr, f32 *wi, const INT iloz, const INT ihiz, f32 *Z, const INT ldz, f32 *work, const INT lwork, INT *info)#
SLAQR4 implements one level of recursion for SLAQR0.
It is a complete implementation of the small bulge multi-shift QR algorithm. It may be called by SLAQR0 and, for large enough deflation window size, it may be called by SLAQR3. This subroutine is identical to SLAQR0 except that it calls SLAQR2 instead of SLAQR3.
SLAQR4 computes the eigenvalues of a Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z^T, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors.
Optionally Z may be postmultiplied into an input orthogonal matrix Q so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the orthogonal matrix Q: A = Q*H*Q^T = (QZ)*T*(QZ)^T.
Parameters
inwanttIf nonzero, the full Schur form T is required. If zero, only eigenvalues are required.
inwantzIf nonzero, the matrix of Schur vectors Z is required. If zero, Schur vectors are not required.
innThe order of the matrix H. n >= 0.
iniloFirst index of isolated block (0-based).
inihiLast index of isolated block (0-based). It is assumed that H is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1.
inoutHDouble precision array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info = 0 and wantt is nonzero, then H contains the upper quasi-triangular matrix T from the Schur decomposition (the Schur form).
inldhLeading dimension of H. ldh >= max(1, n).
outwrDouble precision array, dimension (n). Real parts of the computed eigenvalues.
outwiDouble precision array, dimension (n). Imaginary parts of the computed eigenvalues.
inilozFirst row of Z to update (0-based).
inihizLast row of Z to update (0-based).
inoutZDouble precision array, dimension (ldz, n). If wantz is nonzero, Z is updated with the orthogonal Schur factor.
inldzLeading dimension of Z. ldz >= 1; if wantz, ldz >= ihiz+1.
outworkDouble precision array, dimension (lwork).
inlworkDimension of work array. lwork >= max(1, n). If lwork = -1, workspace query is assumed.
outinfo= 0: successful exit
> 0: if info = i, SLAQR4 failed to compute all of the eigenvalues. Elements ilo:info contain those eigenvalues which have been successfully computed.
void slaqr4(
const INT wantt,
const INT wantz,
const INT n,
const INT ilo,
const INT ihi,
f32* H,
const INT ldh,
f32* wr,
f32* wi,
const INT iloz,
const INT ihiz,
f32* Z,
const INT ldz,
f32* work,
const INT lwork,
INT* info
);
Functions
-
void dlaqr4(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, f64 *H, const INT ldh, f64 *wr, f64 *wi, const INT iloz, const INT ihiz, f64 *Z, const INT ldz, f64 *work, const INT lwork, INT *info)#
DLAQR4 implements one level of recursion for DLAQR0.
It is a complete implementation of the small bulge multi-shift QR algorithm. It may be called by DLAQR0 and, for large enough deflation window size, it may be called by DLAQR3. This subroutine is identical to DLAQR0 except that it calls DLAQR2 instead of DLAQR3.
DLAQR4 computes the eigenvalues of a Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z^T, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors.
Optionally Z may be postmultiplied into an input orthogonal matrix Q so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the orthogonal matrix Q: A = Q*H*Q^T = (QZ)*T*(QZ)^T.
Parameters
inwanttIf nonzero, the full Schur form T is required. If zero, only eigenvalues are required.
inwantzIf nonzero, the matrix of Schur vectors Z is required. If zero, Schur vectors are not required.
innThe order of the matrix H. n >= 0.
iniloFirst index of isolated block (0-based).
inihiLast index of isolated block (0-based). It is assumed that H is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1.
inoutHDouble precision array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info = 0 and wantt is nonzero, then H contains the upper quasi-triangular matrix T from the Schur decomposition (the Schur form).
inldhLeading dimension of H. ldh >= max(1, n).
outwrDouble precision array, dimension (n). Real parts of the computed eigenvalues.
outwiDouble precision array, dimension (n). Imaginary parts of the computed eigenvalues.
inilozFirst row of Z to update (0-based).
inihizLast row of Z to update (0-based).
inoutZDouble precision array, dimension (ldz, n). If wantz is nonzero, Z is updated with the orthogonal Schur factor.
inldzLeading dimension of Z. ldz >= 1; if wantz, ldz >= ihiz+1.
outworkDouble precision array, dimension (lwork).
inlworkDimension of work array. lwork >= max(1, n). If lwork = -1, workspace query is assumed.
outinfo= 0: successful exit
> 0: if info = i, DLAQR4 failed to compute all of the eigenvalues. Elements ilo:info contain those eigenvalues which have been successfully computed.
void dlaqr4(
const INT wantt,
const INT wantz,
const INT n,
const INT ilo,
const INT ihi,
f64* H,
const INT ldh,
f64* wr,
f64* wi,
const INT iloz,
const INT ihiz,
f64* Z,
const INT ldz,
f64* work,
const INT lwork,
INT* info
);
Functions
-
void claqr4(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, c64 *H, const INT ldh, c64 *W, const INT iloz, const INT ihiz, c64 *Z, const INT ldz, c64 *work, const INT lwork, INT *info)#
CLAQR4 implements one level of recursion for CLAQR0.
It is a complete implementation of the small bulge multi-shift QR algorithm. It is identical to CLAQR0 except that it calls CLAQR2 instead of CLAQR3.
Parameters
inwanttIf nonzero, the full Schur form T is required.
inwantzIf nonzero, the matrix of Schur vectors Z is required.
innThe order of the matrix H. n >= 0.
iniloFirst index of isolated block (0-based).
inihiLast index of isolated block (0-based).
inoutHComplex array, dimension (ldh, n).
inldhLeading dimension of H. ldh >= max(1, n).
outWComplex array, dimension (n). The computed eigenvalues.
inilozFirst row of Z to update (0-based).
inihizLast row of Z to update (0-based).
inoutZComplex array, dimension (ldz, n).
inldzLeading dimension of Z.
outworkComplex array, dimension (lwork).
inlworkDimension of work array. If lwork = -1, workspace query is assumed.
outinfo= 0: successful exit. > 0: if info = i (1-based), CLAQR4 failed to compute all eigenvalues.
void claqr4(
const INT wantt,
const INT wantz,
const INT n,
const INT ilo,
const INT ihi,
c64* H,
const INT ldh,
c64* W,
const INT iloz,
const INT ihiz,
c64* Z,
const INT ldz,
c64* work,
const INT lwork,
INT* info
);
Functions
-
void zlaqr4(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, c128 *H, const INT ldh, c128 *W, const INT iloz, const INT ihiz, c128 *Z, const INT ldz, c128 *work, const INT lwork, INT *info)#
ZLAQR4 implements one level of recursion for ZLAQR0.
It is a complete implementation of the small bulge multi-shift QR algorithm. It is identical to ZLAQR0 except that it calls ZLAQR2 instead of ZLAQR3.
Parameters
inwanttIf nonzero, the full Schur form T is required.
inwantzIf nonzero, the matrix of Schur vectors Z is required.
innThe order of the matrix H. n >= 0.
iniloFirst index of isolated block (0-based).
inihiLast index of isolated block (0-based).
inoutHComplex array, dimension (ldh, n).
inldhLeading dimension of H. ldh >= max(1, n).
outWComplex array, dimension (n). The computed eigenvalues.
inilozFirst row of Z to update (0-based).
inihizLast row of Z to update (0-based).
inoutZComplex array, dimension (ldz, n).
inldzLeading dimension of Z.
outworkComplex array, dimension (lwork).
inlworkDimension of work array. If lwork = -1, workspace query is assumed.
outinfo= 0: successful exit. > 0: if info = i (1-based), ZLAQR4 failed to compute all eigenvalues.
void zlaqr4(
const INT wantt,
const INT wantz,
const INT n,
const INT ilo,
const INT ihi,
c128* H,
const INT ldh,
c128* W,
const INT iloz,
const INT ihiz,
c128* Z,
const INT ldz,
c128* work,
const INT lwork,
INT* info
);