Developer Reference

Contents

p?laqr5

Performs a single small-bulge multi-shift QR sweep.

Syntax

void pslaqr5
(
MKL_INT*
wantt
,
MKL_INT*
wantz
,
MKL_INT*
kacc22
,
MKL_INT*
n
,
MKL_INT*
ktop
,
MKL_INT*
kbot
,
MKL_INT*
nshfts
,
float*
sr
,
float*
si
,
float*
h
,
MKL_INT*
desch
,
MKL_INT*
iloz
,
MKL_INT*
ihiz
,
float*
z
,
MKL_INT*
descz
,
float*
work
,
MKL_INT*
lwork
,
MKL_INT*
iwork
,
MKL_INT*
liwork
);
void pdlaqr5
(
MKL_INT*
wantt
,
MKL_INT*
wantz
,
MKL_INT*
kacc22
,
MKL_INT*
n
,
MKL_INT*
ktop
,
MKL_INT*
kbot
,
MKL_INT*
nshfts
,
double*
sr
,
double*
si
,
double*
h
,
MKL_INT*
desch
,
MKL_INT*
iloz
,
MKL_INT*
ihiz
,
double*
z
,
MKL_INT*
descz
,
double*
work
,
MKL_INT*
lwork
,
MKL_INT*
iwork
,
MKL_INT*
liwork
);
Include Files
  • mkl_scalapack.h
Description
This auxiliary
function
called by
p?laqr0
performs a single small-bulge multi-shift QR sweep by chasing separated groups of bulges along the main block diagonal of a Hessenberg matrix
H
.
Input Parameters
wantt
(global) scalar
wantt
is non-zero
if the quasi-triangular Schur factor is being computed.
wantt
is set to
zero
otherwise.
wantz
(global) scalar
wantz
is non-zero
if the orthogonal Schur factor is being computed.
wantz
is set to
zero
otherwise.
kacc22
(global)
Value 0, 1, or 2. Specifies the computation mode of far-from-diagonal orthogonal updates.
= 0:
p?laqr5
does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
= 1:
p?laqr5
accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
= 2:
p?laqr5
accumulates reflections, uses matrix-matrix multiply to update the far-from-diagonal matrix entries, and takes advantage of 2-by-2 block structure during matrix multiplies.
n
(global) scalar
The order of the Hessenberg matrix
H
and, if
wantz
is non-zero
, the order of the orthogonal matrix
Z
.
ktop
,
kbot
(global) scalar
These are the first and last rows and columns of an isolated diagonal block upon which the QR sweep is to be applied. It is assumed without a check that either
ktop
= 1 or
H
(
ktop
,
ktop
-1) = 0 and either
kbot
=
n
or
H
(
kbot
+1,
kbot
) = 0.
nshfts
(global) scalar
nshfts
gives the number of simultaneous shifts.
nshfts
must be positive and even.
sr
,
si
(global) Array of size
nshfts
sr
contains the real parts and
si
contains the imaginary parts of the
nshfts
shifts of origin that define the multi-shift QR sweep.
h
(local) Array of size
lld_h
*
LOC
c
(
n
)
On input
h
contains a Hessenberg matrix
H
.
desch
(global and local)
array of size
dlen_
.
The array descriptor for the distributed matrix
H
.
iloz
,
ihiz
(global)
Specify the rows of the matrix
Z
to which transformations must be applied if
wantz
is non-zero
. 1
iloz
ihiz
n
z
(local) array of size
lld_z
*
LOC
c
(
n
)
If
wantz
is non-zero
, then the QR Sweep orthogonal similarity transformation is accumulated into the matrix
Z
(
iloz
:
ihiz
,
kbot
:
ktop
) from the right. If
wantz
equals zero
, then
z
is unreferenced.
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 size of the
work
array (
lwork
1).
If
lwork
=-1, then a workspace query is assumed.
iwork
(local workspace) array of size
liwork
liwork
(local)
The size of the
iwork
array (
liwork
1).
If
liwork
=-1, then a workspace query is assumed.
Output Parameters
h
A multi-shift QR sweep with shifts
sr
(
j
)+
i
*
si
(
j
) is applied to the isolated diagonal block in rows and columns
ktop
through
kbot
of the matrix
H
.
z
If
wantz
is non-zero
,
z
is updated with transformations applied only to the submatrix
Z
(
iloz
:
ihiz
,
kbot
:
ktop
).
work
[0]
On exit, if
info
= 0,
work
[0]
returns the optimal
lwork
.
iwork
[0]
On exit, if
info
= 0,
iwork
[0]
returns the optimal
liwork
.

Product and Performance Information

1

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