Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?larzb
Applies a block reflector or its transpose/conjugate-transpose to a general matrix.
Syntax
call slarzb ( side , trans , direct , storev , m , n , k , l , v , ldv , t , ldt , c , ldc , work , ldwork )
call dlarzb ( side , trans , direct , storev , m , n , k , l , v , ldv , t , ldt , c , ldc , work , ldwork )
call clarzb ( side , trans , direct , storev , m , n , k , l , v , ldv , t , ldt , c , ldc , work , ldwork )
call zlarzb ( side , trans , direct , storev , m , n , k , l , v , ldv , t , ldt , c , ldc , work , ldwork )
Include Files
mkl.fi
Description
slarzb dlarzb clarzb zlarzb
The routine applies a real/complex block reflector H or its transpose H:code:`T` (or the conjugate transpose H:code:`H` for complex flavors) to a real/complex distributed m -by- n matrix C from the left or the right. Currently, only storev = 'R' and direct = 'B' are supported.
Input Parameters
- side
-
CHARACTER*1 . If side = 'L' : apply H or H:code:`T` / H:code:`H` from the left If side = 'R' : apply H or H:code:`T` / H:code:`H` from the right
- trans
-
CHARACTER*1 . If trans = 'N' : apply H (No transpose) If trans='C' : apply H:code:`H` (conjugate transpose) If trans='T' : apply H:code:`T` (transpose transpose)
- direct
-
CHARACTER*1 . Indicates how H is formed from a product of elementary reflectors = ‘F’ : H = H(1)*H(2)*...*H(k) (forward, not supported) = ‘B’ : H = H(k)*...*H(2)*H(1) (backward)
- storev
-
CHARACTER*1 . Indicates how the vectors which define the elementary reflectors are stored: = ‘C’ : Column-wise (not supported) = ‘R’ : Row-wise.
- m
-
INTEGER . The number of rows of the matrix C .
- n
-
INTEGER . The number of columns of the matrix C .
- k
-
INTEGER . The order of the matrix T (equal to the number of elementary reflectors whose product defines the block reflector).
- l
-
INTEGER . The number of columns of the matrix V containing the meaningful part of the Householder reflectors. If side = 'L' , m≥l≥ 0 , if side = 'R' , n≥l≥ 0 .
- v
-
REAL for slarzb DOUBLE PRECISION for dlarzb COMPLEX for clarzb DOUBLE COMPLEX for zlarzb Array, DIMENSION ( ldv , nv ). If storev = 'C' , nv = k ; if storev = 'R' , nv = l .
- ldv
-
INTEGER . The leading dimension of the array v . If storev = 'C' , ldv≥l ; if storev = 'R' , ldv≥k .
- t
-
REAL for slarzb DOUBLE PRECISION for dlarzb COMPLEX for clarzb DOUBLE COMPLEX for zlarzb Array, DIMENSION ( ldt , k ). The triangular k -by- k matrix T in the representation of the block reflector.
- ldt
-
INTEGER . The leading dimension of the array t . ldt≥k .
- c
-
REAL for slarzb DOUBLE PRECISION for dlarzb COMPLEX for clarzb DOUBLE COMPLEX for zlarzb Array, DIMENSION ( ldc , n ). On entry, the m -by- n matrix C .
- ldc
-
INTEGER . The leading dimension of the array c . ldc≥ max(1,m) .
- work
-
REAL for slarzb DOUBLE PRECISION for dlarzb COMPLEX for clarzb DOUBLE COMPLEX for zlarzb 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 H * C, or H:code:`T` / H:code:`H` * C, or C * H, or C * H:code:`T` / H:code:`H` .