Developer Reference

Contents

?larft

Forms the triangular factor
T
of a block reflector
H
=
I
-
V
*
T
*
V
**
H
.

Syntax

lapack_int
LAPACKE_slarft
(
int
matrix_layout
,
char
direct
,
char
storev
,
lapack_int
n
,
lapack_int
k
,
const
float
*
v
,
lapack_int
ldv
,
const
float
*
tau
,
float
*
t
,
lapack_int
ldt
);
lapack_int
LAPACKE_dlarft
(
int
matrix_layout
,
char
direct
,
char
storev
,
lapack_int
n
,
lapack_int
k
,
const
double
*
v
,
lapack_int
ldv
,
const
double
*
tau
,
double
*
t
,
lapack_int
ldt
);
lapack_int
LAPACKE_clarft
(
int
matrix_layout
,
char
direct
,
char
storev
,
lapack_int
n
,
lapack_int
k
,
const
lapack_complex_float
*
v
,
lapack_int
ldv
,
const
lapack_complex_float
*
tau
,
lapack_complex_float
*
t
,
lapack_int
ldt
);
lapack_int
LAPACKE_zlarft
(
int
matrix_layout
,
char
direct
,
char
storev
,
lapack_int
n
,
lapack_int
k
,
const
lapack_complex_double
*
v
,
lapack_int
ldv
,
const
lapack_complex_double
*
tau
,
lapack_complex_double
*
t
,
lapack_int
ldt
);
Include Files
  • mkl.h
Description
The routine
?larft
forms the triangular factor
T
of a real/complex block reflector
H
of order
n
, which is defined as a product of
k
elementary reflectors.
If
direct
=
'F'
,
H
=
H
(1)*
H
(2)* . . .*
H
(
k
)
and
T
is upper triangular;
If
direct
=
'B'
,
H
=
H
(
k
)*. . .*
H
(2)*
H
(1)
and
T
is lower triangular.
If
storev
=
'C'
, the vector which defines the elementary reflector H(
i
) is stored in the
i
-th column of the array
v
, and
H
=
I
-
V
*
T
*
V
T
(for real flavors) or
H
=
I
-
V
*
T
*
V
H
(for complex flavors) .
If
storev
=
'R'
, the vector which defines the elementary reflector H(
i
) is stored in the
i
-th row of the array
v
, and
H
=
I
-
V
T
*
T
*
V
(for real flavors) or
H
=
I
-
V
H
*
T
*
V
(for complex flavors).
Input Parameters
A
<datatype>
placeholder, if present, is used for the C interface data types in the C interface section above. See C Interface Conventions for the C interface principal conventions and type definitions.
direct
Specifies the order in which the elementary reflectors are multiplied to form the block reflector:
=
'F'
:
H
=
H
(1)*
H
(2)*. . . *
H
(
k
)
(forward)
=
'B'
:
H
=
H
(
k
)*. . .*
H
(2)*
H
(1)
(backward)
storev
Specifies how the vectors which define the elementary reflectors are stored
(see also
Application Notes
below)
:
=
'C'
: column-wise
=
'R'
: row-wise.
The order of the block reflector
H
.
n
0
.
k
The order of the triangular factor
T
(equal to the number of elementary reflectors).
k
1
.
v
The size limitations depend on values of parameters
storev
and
side
as described in the following table:
storev
=
C
storev
=
R
Column major
max(1,
ldv
*
k
)
max(1,
ldv
*
n
)
Row major
max(1,
ldv
*
n
)
max(1,
ldv
*
k
)
The matrix
v
.
See
Application Notes
below.
ldv
The leading dimension of the array
v
.
If
storev
=
'C'
,
ldv
max(1,
n
)
for column major and
ldv
max(1,
k
)
for row major;
if
storev
=
'R'
,
ldv
k
for column major and
ldv
max(1,
n
)
for row major
.
tau
Array, size (
k
).
tau
[
i
-1]
must contain the scalar factor of the elementary reflector
H
(
i
).
ldt
The leading dimension of the output array
t
.
ldt
k
.
Output Parameters
t
Array, size
ldt
*
k
. The
k
-by-
k
triangular factor
T
of the block reflector. If
direct
=
'F'
,
T
is upper triangular; if
direct
=
'B'
,
T
is lower triangular. The rest of the array is not used.
v
The matrix
V
.
Application Notes
The shape of the matrix
V
and the storage of the vectors which define the
H
(
i
) is best illustrated by the following example with
n
= 5
and
k
= 3
. The elements equal to 1 are not stored; the corresponding array elements are modified but restored on exit. The rest of the array is not used.
Equation
Equation

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