Developer Reference for Intel® oneAPI Math Kernel Library for C
?larfb
Applies a block reflector or its transpose/conjugate-transpose to a general rectangular matrix.
Syntax
lapack_int LAPACKE_slarfb(int matrix_layout, char side, char trans, char direct,
char storev, lapack_int m, lapack_int n, lapack_int k,
const float *v, lapack_int ldv, const float *t, lapack_int ldt,
float *c, lapack_int ldc);
lapack_int LAPACKE_dlarfb(int matrix_layout, char side, char trans, char direct,
char storev, lapack_int m, lapack_int n, lapack_int k,
const double *v, lapack_int ldv, const double *t,
lapack_int ldt, double *c, lapack_int ldc);
lapack_int LAPACKE_clarfb(int matrix_layout, char side, char trans, char direct,
char storev, lapack_int m, lapack_int n, lapack_int k,
const lapack_complex_float *v, lapack_int ldv,
const lapack_complex_float *t, lapack_int ldt,
lapack_complex_float *c, lapack_int ldc);
lapack_int LAPACKE_zlarfb(int matrix_layout, char side, char trans, char direct,
char storev, lapack_int m, lapack_int n, lapack_int k,
const lapack_complex_double *v, lapack_int ldv,
const lapack_complex_double *t, lapack_int ldt,
lapack_complex_double *c, lapack_int ldc);
Include Files
mkl.h
Description
The real flavors of the routine ?larfb apply a real block reflector H or its transpose HT to a real m -by- n matrix C from either left or right.
The complex flavors of the routine ?larfb apply a complex block reflector H or its conjugate transpose HH to a complex m -by- n matrix C from either left or right.
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.
side
If side = 'L' : apply H or HT for real flavors and H or HH for complex flavors from the left. If side = 'R' : apply H or HT for real flavors and H or HH for complex flavors from the right.
trans
If trans = 'N' : apply H (No transpose). If trans = 'C' : apply HH (Conjugate transpose). If trans = 'T' : apply HT (Transpose).
direct
Indicates how H is formed from a product of elementary reflectors If direct = 'F' : H = H(1)*H(2)*. . . *H(k) (forward) If direct = 'B' : H = H(k)* . . . H(2)*H(1) (backward)
storev
Indicates how the vectors which define the elementary reflectors are stored: If storev = 'C' : Column-wise If storev = 'R' : Row-wise
m
The number of rows of the matrix C .
n
The number of columns of the matrix C .
k
The order of the matrix T (equal to the number of elementary reflectors whose product defines the block reflector).
- v
-
REAL for slarfb DOUBLE PRECISION for dlarfb COMPLEX for clarfb DOUBLE COMPLEX for zlarfb Array, DIMENSION ( ldv , k ) if storev = 'C' ( ldv , m ) if storev = 'R' and side = 'L' ( ldv , n ) if storev = 'R' and side = 'R' The matrix v . See Application Notes below.
- ldv
-
INTEGER . The leading dimension of the array v . If storev = 'C' and side = 'L' , ldv≥ max(1,m) ; if storev = 'C' and side = 'R' , ldv≥ max(1,n) ; if storev = 'R' , ldv≥k .
- v
-
The size limitations depend on values of parameters storev and side as described in the following table: The matrix v . See Application Notes below.
ldv
The leading dimension of the array v .It should satisfy the following conditions:
- t
-
REAL for slarfb DOUBLE PRECISION for dlarfb COMPLEX for clarfb DOUBLE COMPLEX for zlarfb
Array, size at least max(1, ldt * k ) .
Contains the triangular k -by- k matrix T in the representation of the block reflector.
ldt
The leading dimension of the array t .
ldt≥k .
- c
-
REAL for slarfb DOUBLE PRECISION for dlarfb COMPLEX for clarfb DOUBLE COMPLEX for zlarfb
Array, size at least max(1, ldc * n ) for column major layout and max(1, ldc * m ) for row major layout .
On entry, the m -by- n matrix C .
ldc
The leading dimension of the array c .
ldc≥ max(1,m) for column major layout and ldc≥ max(1,n) for row major layout .
- work
-
REAL for slarfb DOUBLE PRECISION for dlarfb COMPLEX for clarfb DOUBLE COMPLEX for zlarfb Workspace array, DIMENSION ( ldwork , k ).
- ldwork
-
INTEGER . The leading dimension of the array work . If side = 'L' , ldwork≥ max(1, n) ; if side = 'R' , ldwork≥ max(1, m) .
Output Parameters
- c
-
On exit, c is overwritten by the product of the following: H * C, or HT * C, or C * H, or C * HT for real flavors H * C, or HH * C, or C * H, or C * HH for complex flavors
Return Values
This function returns a value info .
If info = 0 , the execution is successful.
If info = -i , the i -th parameter had an illegal value.
If info = -1011 , memory allocation error occurred.
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.