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_intLAPACKE_slarfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , constfloat*v , lapack_intldv , constfloat*t , lapack_intldt , float*c , lapack_intldc );
lapack_intLAPACKE_dlarfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , constdouble*v , lapack_intldv , constdouble*t , lapack_intldt , double*c , lapack_intldc );
lapack_intLAPACKE_clarfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , constlapack_complex_float*v , lapack_intldv , constlapack_complex_float*t , lapack_intldt , lapack_complex_float*c , lapack_intldc );
lapack_intLAPACKE_zlarfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , constlapack_complex_double*v , lapack_intldv , constlapack_complex_double*t , lapack_intldt , lapack_complex_double*c , lapack_intldc );
Include Files
mkl.h
Description
The real flavors of the routine ?larfb apply a real block reflector H or its transpose H:code:`T` 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 H:code:`H` 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 H:code:`T` for real flavors and H or H:code:`H` for complex flavors from the left. If side = 'R' : apply H or H:code:`T` for real flavors and H or H:code:`H` for complex flavors from the right.
trans
If trans = 'N' : apply H (No transpose). If trans = 'C' : apply H:code:`H` (Conjugate transpose). If trans = 'T' : apply H:code:`T` (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 H:code:`T` * C, or C * H, or C * H:code:`T` for real flavors H * C, or H:code:`H` * C, or C * H, or C * H:code:`H` 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.