Developer Reference for Intel® oneAPI Math Kernel Library for C
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 subroutine 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 ) LOGICAL
If .TRUE. 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 .FALSE. wantt equals zero , then only enough of H is updated to preserve the eigenvalues.
- wantz
-
(global ) LOGICAL
If .TRUE. 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 .FALSE. wantz equals zero , then z is not referenced.
- n
-
(global ) INTEGER
The order of the matrix H and (if wantz is non-zero ), the order of the orthogonal matrix Z .
- ktop
-
(global ) INTEGER 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 ) INTEGER 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 ) INTEGER Deflation window size. 1 ≤ nw ≤ ( kbot - ktop +1).
- h
-
REAL for pslaqr3 DOUBLE PRECISION for pdlaqr3
(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 ) INTEGER
Specify the rows of the matrix Z to which transformations must be applied if wantz is non-zero . 1 ≤ iloz ≤ ihiz ≤ n .
- z
-
REAL for pslaqr3 DOUBLE PRECISION for pdlaqr3
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
-
REAL for pslaqr3 DOUBLE PRECISION for pdlaqr3
(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
-
INTEGER scalar The number of columns of t . nh ≥ nw .
- t
-
REAL for pslaqr3 DOUBLE PRECISION for pdlaqr3
(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 ) INTEGER The number of rows of work array wv available for workspace. nv ≥ nw .
wv
(global workspace) REAL 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) REAL array of size lwork .
- lwork
-
(local ) INTEGER The size of the work array work ( lwork ≥ 1). 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 GUID-F3536B0B-2FA0-40B4-AF9B-51A182827F73.xml . Neither h nor z are accessed.
- iwork
-
(local workspace) INTEGER array of size liwork
- liwork
-
(local ) INTEGER The length of the workspace array iwork ( liwork ≥ 1). 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 ) INTEGER
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 ) INTEGER
The number of converged eigenvalues uncovered by this function .
- sr , si
-
REAL for pslaqr3 DOUBLE PRECISION for pdlaqr3
(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 (1) [0]
On exit, if info = 0, work [0] returns the optimal lwork
iwork (1) [0]
On exit, if info = 0, iwork [0] returns the optimal liwork