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

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