Developer Reference

Contents

?laqr6

Performs a single small-bulge multi-shift QR sweep collecting the transformations.

Syntax

void slaqr6
(
char*
job
,
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*
ldh
,
MKL_INT*
iloz
,
MKL_INT*
ihiz
,
float*
z
,
MKL_INT*
ldz
,
float*
v
,
MKL_INT*
ldv
,
float*
u
,
MKL_INT*
ldu
,
MKL_INT*
nv
,
float*
wv
,
MKL_INT*
ldwv
,
MKL_INT*
nh
,
float*
wh
,
MKL_INT*
ldwh
);
void dlaqr6
(
char*
job
,
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*
ldh
,
MKL_INT*
iloz
,
MKL_INT*
ihiz
,
double*
z
,
MKL_INT*
ldz
,
double*
v
,
MKL_INT*
ldv
,
double*
u
,
MKL_INT*
ldu
,
MKL_INT*
nv
,
double*
wv
,
MKL_INT*
ldwv
,
MKL_INT*
nh
,
double*
wh
,
MKL_INT*
ldwh
);
Include Files
  • mkl_scalapack.h
Description
This auxiliary
function
performs a single small-bulge multi-shift QR sweep, moving the chain of bulges from top to bottom in the submatrix
H
(
ktop
:
kbot
,
ktop
:
kbot
), collecting the transformations in the matrix
V
or
accumulating the transformations in the matrix
Z
(see below).
This is a modified version of
?laqr5
from LAPACK 3.1.
Input Parameters
job
Set the kind of job to do in
?laqr6
, as follows:
job
= 'I': Introduce and chase bulges in submatrix
job
= 'C': Chase bulges from top to bottom of submatrix
job
= 'O': Chase bulges off submatrix
wantt
wantt
is non-zero
if the quasi-triangular Schur factor is being computed.
wantt
is set to
zero
otherwise.
wantz
wantz
is non-zero
if the orthogonal Schur factor is being computed.
wantz
is set to
zero
otherwise.
kacc22
Specifies the computation mode of far-from-diagonal orthogonal updates.
= 0:
?laqr6
does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
= 1:
?laqr6
accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
= 2:
?laqr6
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
n
is the order of the Hessenberg matrix
H
upon which this
function
operates.
ktop
,
kbot
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
nshfts
gives the number of simultaneous shifts.
nshfts
must be positive and even.
sr
,
si
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
Array of size
ldh
*
n
On input
h
contains a Hessenberg matrix
H
.
ldh
ldh
is the leading dimension of
H
just as declared in the calling
function
.
ldh
max(1,
n
).
iloz
,
ihiz
Specify the rows of
the matrix
Z
to which transformations must be applied if
wantz
is non-zero
. 1
iloz
ihiz
n
z
Array of size
ldz
*
ktop
If
wantz
is non-zero
, then the QR sweep orthogonal similarity transformation is accumulated into the matrix
Z
(
iloz
:
ihiz
,
kbot
:
ktop
), stored in the array
z
, from the right.
If
wantz
equals zero
, then
z
is unreferenced.
ldz
ldz
is the leading dimension of
z
just as declared in the calling
function
.
ldz
n
.
v
(workspace) array of size
ldv
*
nshfts
/2
ldv
ldv
is the leading dimension of
v
as declared in the calling
function
.
ldv
3.
u
(workspace) array of size
ldu
* (3*
nshfts
-3)
ldu
ldu
is the leading dimension of
u
just as declared in the calling
function
.
ldu
3*
nshfts
-3.
nh
nh
is the number of columns in array
wh
available for workspace.
nh
1 is required for usage of this workspace, otherwise the updates of the far-from-diagonal elements will be updated without level 3 BLAS.
wh
(workspace) array of size
ldwh
*
nh
ldwh
Leading dimension of
wh
just as declared in the calling
function
.
ldwh
3*
nshfts
-3.
nv
nv
is the number of rows in
wv
available for workspace.
nv
1 is required for usage of this workspace, otherwise the updates of the far-from-diagonal elements will be updated without level 3 BLAS.
wv
(workspace) array of size
ldwv
* 3*
nshfts
ldwv
scalar
ldwv
is the leading dimension of
wv
as declared in the in the calling
function
.
ldwv
nv
.
OUTPUT Parameters
h
A multi-shift QR sweep with shifts
sr
[
j
]+
i
*
si
[
j
]
is applied to the isolated diagonal block in
matrix
rows and columns
ktop
through
kbot
.
z
If
wantz
is non-zero
, then the QR sweep orthogonal/unitary similarity transformation is accumulated into the matrix
Z
(
iloz
:
ihiz
,
kbot
:
ktop
) from the right.
If
wantz
equals zero
, then
z
is unreferenced.
Application Notes
Notes
Based on contributions by Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA Robert Granat, Department of Computing Science and HPC2N, Umea University, Sweden

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