Developer Reference for Intel® oneAPI Math Kernel Library for C
p?laqr2
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 pslaqr2(MKL_INT *wantt, MKL_INT *wantz, MKL_INT *n, MKL_INT *ktop, MKL_INT *kbot,
MKL_INT *nw, float *a, MKL_INT *desca, MKL_INT *iloz, MKL_INT *ihiz,
float *z, MKL_INT *descz, MKL_INT *ns, MKL_INT *nd, float *sr, float *si,
float *t, MKL_INT *ldt, float *v, MKL_INT *ldv, float *wr, float *wi,
float *work, MKL_INT *lwork);
void pdlaqr2(MKL_INT *wantt, MKL_INT *wantz, MKL_INT *n, MKL_INT *ktop, MKL_INT *kbot,
MKL_INT *nw, double *a, MKL_INT *desca, MKL_INT *iloz, MKL_INT *ihiz,
double *z, MKL_INT *descz, MKL_INT *ns, MKL_INT *nd, double *sr, double *si,
double *t, MKL_INT *ldt, double *v, MKL_INT *ldv, double *wr, double *wi,
double *work, MKL_INT *lwork);
Include Files
mkl_scalapack.h
Description
p?laqr2 accepts as input an upper Hessenberg matrix A and performs an orthogonal similarity transformation designed to detect and deflate fully converged eigenvalues from a trailing principal submatrix. On output A is overwritten by a new Hessenberg matrix that is a perturbation of an orthogonal similarity transformation of A . It is to be hoped that the final version of A has many zero subdiagonal entries.
This routine function handles small deflation windows which is affordable by one processor. Normally, it is called by p?laqr1 (Sets a scalar multiple of the first column of the product of a 2-by-2 or 3-by-3 matrix and specified shifts.) . All the inputs are assumed to be valid without checking.
Product and Performance Information Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex . Notice revision #20201201
Input Parameters
- wantt
-
(global ) LOGICAL
If .TRUE. wantt is non-zero , then the Hessenberg matrix A 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 A 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 A and (if wantz is non-zero ) the order of the orthogonal matrix Z .
- ktop , kbot
-
(global ) INTEGER
It is assumed without a check that either kbot = n or A ( kbot +1, kbot )=0. kbot and ktop together determine an isolated block along the diagonal of the Hessenberg matrix. However, A ( ktop , ktop -1)=0 is not essentially necessary if wantt is non-zero .
- nw
-
(global ) INTEGER Deflation window size. 1 ≤ nw ≤ ( kbot - ktop +1). Normally nw ≥ 3 if p?laqr2 is called by p?laqr1 .
- a
-
REAL for pslaqr2 DOUBLE PRECISION for pdlaqr2
(local ) array of size lld_a * LOCc ( n )
The initial n -by- n section of a stores the Hessenberg matrix undergoing aggressive early deflation.
desca
(global and local) array of size dlen_ .
The array descriptor for the distributed matrix A .
- iloz , ihiz
-
(global ) INTEGER
Specify the rows of z the matrix Z to which transformations must be applied if wantz is non-zero . 1 ≤ iloz ≤ ihiz ≤ n .
- z
-
REAL for pslaqr2 DOUBLE PRECISION for pdlaqr2
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 Zz ( iloz : ihiz ,
kbot : ktop ) , stored in z , 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 .
- t
-
REAL for pslaqr2 DOUBLE PRECISION for pdlaqr2
(local workspace) array of size ldt * nw .
- ldt
-
(local ) INTEGER The leading dimension of the array t . ldt ≥ nw .
- v
-
REAL for pslaqr2 DOUBLE PRECISION for pdlaqr2
(local workspace) array of size ldv * nw .
- ldv
-
(local ) INTEGER The leading dimension of the array v . ldv ≥ nw .
- wr , wi
-
REAL for pslaqr2 DOUBLE PRECISION for pdlaqr2 (local workspace) array of size kbot .
- work
-
REAL for pslaqr2 DOUBLE PRECISION for pdlaqr2 (local workspace) array of size lwork .
- lwork
-
(local ) INTEGER work ( lwork ) is a local array and lwork is assumed big enough so that lwork ≥ nw * nw .
OUTPUT Parameters
- a
-
On output a has been transformed by an orthogonal similarity transformation, perturbed, and returned to Hessenberg form that (it is to be hoped) has some zero subdiagonal entries.
z
- 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 pslaqr2 DOUBLE PRECISION for pdlaqr2 (global ) array of size kbot
On output, 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.
On processor #0, 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. On other processors, these entries are set to zero.