Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 7/13/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

p?laqr3

Performs the orthogonal/unitary similarity transformation of a Hessenberg matrix to detect and deflate fully converged eigenvalues from a trailing principal submatrix (aggressive early deflation).

Syntax

void pslaqr3(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* n, MKL_INT* ktop, MKL_INT* kbot, MKL_INT* nw, float* h, MKL_INT* desch, MKL_INT* iloz, MKL_INT* ihiz, float* z, MKL_INT* descz, MKL_INT* ns, MKL_INT* nd, float* sr, float* si, float* v, MKL_INT* descv, MKL_INT* nh, float* t, MKL_INT* desct, MKL_INT* nv, float* wv, MKL_INT* descw, float* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork, MKL_INT* reclevel);

void pdlaqr3(MKL_INT* wantt, MKL_INT* wantz, MKL_INT* n, MKL_INT* ktop, MKL_INT* kbot, MKL_INT* nw, double* h, MKL_INT* desch, MKL_INT* iloz, MKL_INT* ihiz, double* z, MKL_INT* descz, MKL_INT* ns, MKL_INT* nd, double* sr, double* si, double* v, MKL_INT* descv, MKL_INT* nh, double* t, MKL_INT* desct, MKL_INT* nv, double* wv, MKL_INT* descw, double* work, MKL_INT* lwork, MKL_INT* iwork, MKL_INT* liwork, MKL_INT* reclevel);

Include Files

  • mkl_scalapack.h

Description

This function accepts as input an upper Hessenberg matrix H and performs an orthogonal similarity transformation designed to detect and deflate fully converged eigenvalues from a trailing principal submatrix. On output H is overwritten by a new Hessenberg matrix that is a perturbation of an orthogonal similarity transformation of H. It is to be hoped that the final version of H has many zero subdiagonal entries.

Input Parameters

wantt

(global )

If wantt is non-zero, then the Hessenberg matrix H is fully updated so that the quasi-triangular Schur factor may be computed (in cooperation with the calling function).

If wantt equals zero, then only enough of H is updated to preserve the eigenvalues.

wantz

(global )

If wantz is non-zero, then the orthogonal matrix Z is updated so that the orthogonal Schur factor may be computed (in cooperation with the calling function).

If wantz equals zero, then z is not referenced.

n

(global )

The order of the matrix H and (if wantz is non-zero), the order of the orthogonal matrix Z.

ktop

(global )

It is assumed that either ktop = 1 or H (ktop,ktop-1)=0. kbot and ktop together determine an isolated block along the diagonal of the Hessenberg matrix.

kbot

(global )

It is assumed without a check that either kbot = n or H (kbot+1,kbot)=0. kbot and ktop together determine an isolated block along the diagonal of the Hessenberg matrix.

nw

(global )

Deflation window size. 1 nw (kbot-ktop+1).

h

(local ) array of size lld_h * LOCc(n)

The initial n-by-n section of H stores the Hessenberg matrix undergoing aggressive early deflation.

desch

(global and local) array of size dlen_.

The array descriptor for the distributed matrix H.

iloz, ihiz

(global )

Specify the rows of the matrix Z to which transformations must be applied if wantz is non-zero. 1 ilozihizn.

z

Array of size lld_z * LOCc(n)

If wantz is non-zero, then on output, the orthogonal similarity transformation mentioned above has been accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right.

If wantz is zero, then z is unreferenced.

descz

(global and local) array of size dlen_.

The array descriptor for the distributed matrix Z.

v

(global workspace) array of size lld_v * LOCcnw)

An nw-by-nw distributed work array.

descv

(global and local) array of size dlen_.

The array descriptor for the distributed matrix V.

nh

The number of columns of t. nhnw.

t

(global workspace) array of size lld_t * LOCc(nh)

desct

(global and local) array of size dlen_.

The array descriptor for the distributed matrix T.

nv

(global )

The number of rows of work array wv available for workspace. nvnw.

wv

(global workspace) array of size lld_w *LOCc(nw)

descw

(global and local) array of size dlen_.

The array descriptor for the distributed matrix wv.

work

(local workspace) array of size lwork.

lwork

(local )

The size of the work array work (lwork1). lwork = 2*nw suffices, but greater efficiency may result from larger values of lwork.

If lwork = -1, then a workspace query is assumed; p?laqr3 only estimates the optimal workspace size for the given values of n, nw, ktop and kbot. The estimate is returned in work[0]. No error message related to lwork is issued by xerbla. Neither h nor z are accessed.

iwork

(local workspace) array of size liwork

liwork

(local )

The length of the workspace array iwork (liwork1).

If liwork=-1, then a workspace query is assumed.

OUTPUT Parameters

h

On output h has been transformed by an orthogonal similarity transformation, perturbed, and the returned to Hessenberg form that (it is to be hoped) has some zero subdiagonal entries.

z

IF wantz is non-zero, then on output, the orthogonal similarity transformation mentioned above has been accumulated into the matrix Z(iloz:ihiz,kbot:ktop) from the right.

If wantz is zero, then z is unreferenced.

ns

(global )

The number of unconverged (that is, approximate) eigenvalues returned in sr and si that may be used as shifts by the calling function.

nd

(global )

The number of converged eigenvalues uncovered by this function.

sr, si

(global ) array of size kbot. The real and imaginary parts of approximate eigenvalues that may be used for shifts are stored in sr[kbot-nd-ns] through sr[kbot-nd-1] and si[kbot-nd-ns] through si[kbot-nd-1], respectively. The real and imaginary parts of converged eigenvalues are stored in sr[kbot-nd] through sr[kbot-1] and si[kbot-nd] through si[kbot-1], respectively.

work[0]

On exit, if info = 0, work[0] returns the optimal lwork

iwork[0]

On exit, if info = 0, iwork[0] returns the optimal liwork

See Also