Contents

# p?lahqr

Computes the Schur decomposition and/or eigenvalues of a matrix already in Hessenberg form.

## Syntax

Include Files
• mkl_scalapack.h
Description
This is an auxiliary
function
used to find the Schur decomposition and/or eigenvalues of a matrix already in Hessenberg form from columns
ilo
and
ihi
.
These restrictions apply to the use of
p?lahqr
:
• The code requires the distributed block size to be square and at least 6.
• The code requires A and Z to be distributed identically and have identical contexts.
• The matrix A must be in upper Hessenberg form. If elements below the subdiagonal are non-zero, the resulting transformations can be nonsimilar.
• All eigenvalues are distributed to all the nodes.
Input Parameters
wantt
(global)
If
wantt
0
, the full Schur form
T
is required;
If
wantt
=
0
, only eigenvalues are required.
wantz
(global)
If
wantz
0
, the matrix of Schur vectors
Z
is required;
If
wantz
=
0
, Schur vectors are not required.
n
(global) The order of the Hessenberg matrix
A
(and
z
if
wantz
is non-zero
).
n
≥0
.
ilo
,
ihi
(global)
It is assumed that
A
is already upper quasi-triangular in rows and columns
ihi
+1:
n
, and that
A
(
ilo
,
ilo
-1) = 0 (unless
ilo
= 1
).
p?lahqr
works primarily with the Hessenberg submatrix in rows and columns
ilo
to
ihi
, but applies transformations to all of
H
if
wantt
is
non-zero
.
1≤
ilo
≤max(1,
ihi
);
ihi
n
.
a
(global)
Array, of size
lld_a
*
LOCc
(
n
)
. On entry, the upper Hessenberg matrix
A
.
desca
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
A
.
iloz
,
ihiz
(global) 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
(global )
Array. If
wantz
is
non-zero
, on entry
z
must contain the current matrix
Z
of transformations accumulated by
pdhseqr
. If
wantz
is
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 with size
lwork
.
lwork
(local) The size of
work
.
lwork
is assumed big enough so that
lwork
≥3*
n
+
max
(2*
max
(
lld_z
,
lld_a
) + 2*
LOCq
(
n
), 7*
ceil
(
n
/
hbl
)/
lcm
(
NPROW
,
NPCOL
)))
.
If
lwork
= -1
, then
work

gets set to the above number and the code returns immediately.
iwork
(global and local) array of size
ilwork
. Not referenced and can be NULL pointer.
ilwork
(local) This holds some of the
iblk
integer arrays. Not referenced and can be NULL pointer.
Output Parameters
a
On exit, if
wantt
is
non-zero
,
A
is upper quasi-triangular in rows and columns
ilo
:
ihi
, with any 2-by-2 or larger diagonal blocks not yet in standard form. If
wantt
is
zero
, the contents of
A
are unspecified on exit.
work

On exit
work

contains the minimum value of
lwork
required for optimum performance.
wr
,
wi
(global replicated output)
Arrays of size
n
each. 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
zero
, the eigenvalues are stored in the same order as on the diagonal of the Schur form returned in
A
.
A
may be returned with larger diagonal blocks until the next release.
w
(global replicated output)
Array of size
n
. The computed eigenvalues
ilo
to
ihi
are stored in the corresponding elements of
w
. If two eigenvalues are computed as a complex conjugate pair, they are stored in consecutive elements of
w
, say the
i
-th and (
i
+1)-th, with
w
[
i
-1]
> 0 and
w
[
i
]
< 0. If
wantt
is
zero
, the eigenvalues are stored in the same order as on the diagonal of the Schur form returned in
A
.
A
may be returned with larger diagonal blocks until the next release.
z
On exit
z
has been updated; transformations are applied only to the submatrix
Z
(
iloz
:
ihiz
,
ilo
:
ihi
)
.
info
(global)
= 0
: the execution is successful.
< 0
: the parameter number -
info
is incorrect or inconsistent
> 0
:
p?lahqr
failed to compute all the eigenvalues
ilo
to
ihi
in a total of
30*(
ihi
-
ilo
+1)
iterations; if
info
=
i
, elements
i
+1:
ihi
of
wr
and
wi
contain the eigenvalues that have been successfully computed.

#### 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