## Developer Reference

• 0.10
• 10/21/2020
• Public Content
Contents

# p?laqr0

Computes the eigenvalues of a Hessenberg matrix and optionally returns the matrices from the Schur decomposition.

## Syntax

Include Files
• mkl_scalapack.h
Description
p?laqr0
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
function
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
.
Input Parameters
wantt
(global )
Non-zero
: the full Schur form
T
is required;
Zero
: only eigenvalues are required.
wantz
(global )
Non-zero
: the matrix of Schur vectors
Z
is required;
Zero
: Schur vectors are not required.
n
(global )
The order of the Hessenberg matrix
H
(and
Z
if
wantz
is non-zero
).
n
0.
ilo
,
ihi
(global )
It is assumed that the matrix
H
is already upper triangular in rows and columns
1:
ilo
-1 and
ihi
+1:
n
.
ilo
and
ihi
are normally set by a previous call to
p?gebal
, and then passed to
p?gehrd
when the matrix output by
ihi
is reduced to Hessenberg form. Otherwise
ilo
and
ihi
should be set to 1 and
n
, respectively. If
n
> 0, then 1
ilo
ihi
n
.
If
n
= 0, then
ilo
= 1 and
ihi
= 0.
h
(global ) array of size
lld_h
*
LOC
c
(
n
)
The upper Hessenberg matrix
H
.
desch
(global and local )
Array of size
dlen_
.
The array descriptor for the distributed matrix
H
.
iloz
,
ihiz
Specify the rows of the matrix
Z
to which transformations must be applied if
wantz
is
non-zero
, 1
iloz
ilo
;
ihi
ihiz
n
.
z
Array of size
lld_z
*
LOC
c
(
n
)
.
If
wantz
is
non-zero
, contains the matrix
Z
.
If
wantz
equals zero
,
z
is not referenced.
descz
(global and local ) array of size
dlen_
.
The array descriptor for the distributed matrix
Z
.
work
(local workspace) array of size
lwork
lwork
(local )
The length of the workspace array
work
.
iwork
(local workspace) array of size
liwork
liwork
(local )
The length of the workspace array
iwork
.
reclevel
(local )
Level of recursion.
reclevel
= 0 must hold on entry.
OUTPUT Parameters
h
On exit, if
wantt
is
non-zero
, the matrix
H
is upper quasi-triangular in rows and columns
ilo
:
ihi
, with 1-by-1 and 2-by-2 blocks on the main diagonal. The 2-by-2 diagonal blocks (corresponding to complex conjugate pairs of eigenvalues) are returned in standard form, with
H
(
i
,
i
) =
H
(
i
+1,
i
+1) and
H
(
i
+1,
i
)*
H
(
i
,
i
+1) < 0. If
info
= 0 and
wantt
equals zero
, the contents of
h
are unspecified on exit.
wr
,
wi
The real and imaginary parts, respectively, of the computed eigenvalues
ilo
to
ihi
are stored in the corresponding elements of
wr
and
wi
. If two eigenvalues are computed as a complex conjugate pair, they are stored in consecutive elements of
wr
and
wi
, say the
i
-th and (
i
+1)th, with
wi
[
i
-1]
> 0 and
wi
[
i
]
< 0. If
wantt
is
non-zero
, the eigenvalues are stored in the same order as on the diagonal of the Schur form returned in
h
.
z
Updated matrix with transformations applied only to the submatrix
Z
(
ilo
:
ihi
,
ilo
:
ihi
).
If COMPZ = 'I', on exit, if
info
= 0,
z
contains the orthogonal matrix
Z
of the Schur vectors of
H
.
If
wantz
is
non-zero
, then
Z
(
ilo
:
ihi
,
iloz
:
ihi
z) is replaced by
Z
(
ilo
:
ihi
,
iloz
:
ihiz
)*
U
, when
U
is the orthogonal/unitary Schur factor of
H
(
ilo
:
ihi
,
ilo
:
ihi
).
If
wantz
equals zero
, then
z
is not defined.
work

On exit, if
info
= 0,
work

returns the optimal
lwork
.
iwork

On exit, if
info
= 0,
iwork

returns the optimal
liwork
.
info
> 0: if
info
=
i
, then the
function
failed to compute all the eigenvalues. Elements
0:
ilo
-2 and
i
:
n
-1
of
wr
and
wi
contain those eigenvalues which have been successfully computed.
> 0: if
wantt
equals zero
, then the remaining unconverged eigenvalues are the eigenvalues of the upper Hessenberg matrix rows and columns
ilo
through
ihi
of the final output value of
H
.
> 0: if
wantt
is
non-zero
, then (initial value of
H
)*
U
=
U
*(final value of
H
), where
U
is an orthogonal/unitary matrix. The final value of
H
is upper Hessenberg and quasi-triangular/triangular in rows and columns
info
+1 through
ihi
.
> 0: if
wantz
is
non-zero
, then (final value of
Z
(
ilo
:
ihi
,
iloz
:
ihiz
))=(initial value of
Z
(
ilo
:
ihi
,
iloz
:
ihiz
))*
U
, where
U
is the orthogonal/unitary matrix in the previous expression (regardless of the value of
wantt
).
> 0: if
wantz
equals zero
, then
z
is not accessed.

#### Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804