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

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.