Contents

?lamsh

Sends multiple shifts through a small (single node) matrix to maximize the number of bulges that can be sent through.

Syntax

void
slamsh
(
float
*
s
,
const
MKL_INT
*
lds
,
MKL_INT
*
nbulge
,
const
MKL_INT
*
jblk
,
float
*
h
,
const
MKL_INT
*
ldh
,
const
MKL_INT
*
n
,
const
float
*
ulp
);
void
dlamsh
(
double
*
s
,
const
MKL_INT
*
lds
,
MKL_INT
*
nbulge
,
const
MKL_INT
*
jblk
,
double
*
h
,
const
MKL_INT
*
ldh
,
const
MKL_INT
*
n
,
const
double
*
ulp
);
void
clamsh
(
MKL_Complex8
*
s
,
const
MKL_INT
*
lds
,
MKL_INT
*
nbulge
,
const
MKL_INT
*
jblk
,
MKL_Complex8
*
h
,
const
MKL_INT
*
ldh
,
const
MKL_INT
*
n
,
const
float
*
ulp
);
void
zlamsh
(
MKL_Complex16
*
s
,
const
MKL_INT
*
lds
,
MKL_INT
*
nbulge
,
const
MKL_INT
*
jblk
,
MKL_Complex16
*
h
,
const
MKL_INT
*
ldh
,
const
MKL_INT
*
n
,
const
double
*
ulp
);
Include Files
  • mkl_scalapack.h
Description
The
?lamsh
function
sends multiple shifts through a small (single node) matrix to see how small consecutive subdiagonal elements are modified by subsequent shifts in an effort to maximize the number of bulges that can be sent through. The
function
should only be called when there are multiple shifts/bulges
(
nbulge
>
1)
and the first shift is starting in the middle of an unreduced Hessenberg matrix because of two or more small consecutive subdiagonal elements.
Input Parameters
s
(local)
Array of size
lds
*2*
jblk
.
On entry, the matrix of shifts. Only the 2x2 diagonal of
s
is referenced. It is assumed that
s
has
jblk
double shifts (size 2).
lds
(local)
On entry, the leading dimension of
S
; unchanged on exit.
1<
nbulge
jblk
lds
/2
.
nbulge
(local)
On entry, the number of bulges to send through
h
(
>
1)
.
nbulge
should be less than the maximum determined
(
jblk
). 1<
nbulge
jblk
lds
/2
.
jblk
(local)
On entry, the number of double shifts determined for
S
; unchanged on exit.
h
(local)
Array of size
ldh
*
n
.
On entry, the local matrix to apply the shifts on.
h
should be aligned so that the starting row is 2.
ldh
(local)
On entry, the leading dimension of
H
; unchanged on exit.
n
(local)
On entry, the size of
H
. If all the bulges are expected to go through,
n
should be at least
4
nbulge
+2
. Otherwise,
nbulge
may be reduced by this
function
.
ulp
(local)
On entry, machine precision. Unchanged on exit.
Output Parameters
s
On exit, the data is rearranged in the best order for applying.
nbulge
On exit, the maximum number of bulges that can be sent through.
h
On exit, the data is destroyed.

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