Developer Reference for Intel® oneAPI Math Kernel Library for C
?tprfb
Applies a real or complex “triangular-pentagonal” blocked reflector to a real or complex matrix, which is composed of two blocks.
Syntax
lapack_intLAPACKE_stprfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , lapack_intl , constfloat*v , lapack_intldv , constfloat*t , lapack_intldt , float*a , lapack_intlda , float*b , lapack_intldb );
lapack_intLAPACKE_dtprfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , lapack_intl , constdouble*v , lapack_intldv , constdouble*t , lapack_intldt , double*a , lapack_intlda , double*b , lapack_intldb );
lapack_intLAPACKE_ctprfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , lapack_intl , constlapack_complex_float*v , lapack_intldv , constlapack_complex_float*t , lapack_intldt , lapack_complex_float*a , lapack_intlda , lapack_complex_float*b , lapack_intldb );
lapack_intLAPACKE_ztprfb ( intmatrix_layout , charside , chartrans , chardirect , charstorev , lapack_intm , lapack_intn , lapack_intk , lapack_intl , constlapack_complex_double*v , lapack_intldv , constlapack_complex_double*t , lapack_intldt , lapack_complex_double*a , lapack_intlda , lapack_complex_double*b , lapack_intldb );
Include Files
mkl.h
Description
stprfb dtprfb ctprfb ztprfb tprfb
The ?tprfb routine applies a real or complex “triangular-pentagonal” block reflector H , HT , or HH from either the left or the right to a real or complex matrix C , which is composed of two blocks A and B .
The block B is m -by- n . If side = ‘R’, A is m -by- k , and if side = ‘L’, A is of size k -by- n .
The pentagonal matrix V is composed of a rectangular block V1 and a trapezoidal block V2 . The size of the trapezoidal block is determined by the parameter l , where 0≤ l ≤ k . if l = k , the V2 block of V is triangular; if l =0, there is no trapezoidal block, thus V = V1 is rectangular.
direct =’F’ |
direct =’B’ |
|
storev =’C’ |
![]() V2 is upper trapezoidal (first l rows of k -by- k upper triangular) |
![]() V2 is lower trapezoidal (last l rows of k -by- k lower triangular matrix) |
storev =’R’ |
![]() V2 is lower trapezoidal (first l columns of k -by- k lower triangular matrix) |
![]() V2 is upper trapezoidal (last l columns of k -by- k upper triangular matrix) |
side =’L’ |
side =’R’ |
|
storev =’C’ |
V is m -by- kV2 is l -by- k |
V is n -by- kV2 is l -by- k |
storev =’R’ |
V is k -by- mV2 is k -by- l |
V is k -by- nV2 is k -by- l |
Input Parameters
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
- side
-
CHARACTER*1 . * = ‘L’: apply H , HT , or HH from the left, * = ‘R’: apply H , HT , or HH from the right.
- trans
-
CHARACTER*1 . * = ‘N’: apply H (no transpose), * = ‘T’: apply HT (transpose), * = ‘C’: apply HH (conjugate transpose).
- direct
-
CHARACTER*1 . Indicates how H is formed from a product of elementary reflectors: * = ‘F’: H = H (1) H (2) … H ( k ) (Forward), * = ‘B’: H = H ( k ) … H (2) H (1) (Backward).
- storev
-
CHARACTER*1. Indicates how the vectors that define the elementary reflectors are stored: * = ‘C’: Columns, * = ‘R’: Rows.
m
INTEGER . The total number of rows in the matrix B ( m ≥ 0).
n
INTEGER . The number of columns in B ( n ≥ 0).
k
INTEGER . The order of the matrix T , which is the number of elementary reflectors whose product defines the block reflector. ( k ≥ 0)
l
INTEGER . The order of the trapezoidal part of V . ( k ≥ l ≥ 0).
- v
-
REAL for stprfb DOUBLE PRECISION for dtprfb COMPLEX for ctprfb COMPLEX*16 for ztprfb .
DIMENSION ( ldv , k ) if storev = ‘C’,
DIMENSION ( ldv , m ) if storev = ‘R’ and side = ‘L’,
DIMENSION ( ldv , n ) if storev = ‘R’ and side = ‘R’.
The pentagonal matrix V , which contains the elementary reflectors H (1), H (2), …, H ( k ).
- v
-
An array containing the pentagonal matrix V (the elementary reflectors H(1), H(2), …, H(k) . The size limitations depend on values of parameters storev and side as described in the following table
- ldv
-
INTEGER . The leading dimension of the array v . * If storev = ‘C’ and side = ‘L’, at least max(1, m ). * If storev = ‘C’ and side = ‘R’, at least max(1, n ). * If storev = ‘R’ , at least k .
- ldv
-
The leading dimension of the array v .It should satisfy the following conditions:
- t
-
REAL for stprfb DOUBLE PRECISION for dtprfb COMPLEX for ctprfb COMPLEX*16 for ztprfb .
Array size max(1, 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 ).
- a
-
REAL for stprfb DOUBLE PRECISION for dtprfb COMPLEX for ctprfb COMPLEX*16 for ztprfb .
DIMENSION ( lda , n ) if side = ‘L’,
DIMENSION ( lda , k ) if side = ‘R’.
The k -by- n or m -by- k matrix A .
- lda
-
INTEGER . The leading dimension of the array a . * If side = ‘L’, at least max(1, k ). * If side = ‘R’, at least max(1, m ).
- a
-
size should satisfy the following conditions: * k if side = ‘R’. * k -by- n or m -by- k matrix A .
- lda
-
The leading dimension of the array a should satisfy the following conditions:
- b
-
REAL for stprfb DOUBLE PRECISION for dtprfb COMPLEX for ctprfb COMPLEX*16 for ztprfb .
Array size at least max(1, ldb * n ) for column major layout and max(1, ldb * m ) for row major layout , the m -by- n matrix B .
ldb
The leading dimension of the array b ( ldb ≥ max(1, m ) for column major layout and ldb ≥ max(1, n ) for row major layout ).
- work
-
REAL for stprfb DOUBLE PRECISION for dtprfb COMPLEX for ctprfb COMPLEX*16 for ztprfb .
Workspace array: * DIMENSION ( ldwork , n ) if side = ‘L’, * DIMENSION ( ldwork , k ) if side = ‘R’.
- ldwork
-
INTEGER . The leading dimension of the array work . * If side = ‘L’, at least k . * If side = ‘R’, at least m .
Output Parameters
- a
-
Contains the corresponding block of H * C , HT * C , HH * C , C * H , C * HT , or C * HH .
- b
-
Contains the corresponding block of H * C , HT * C , HH * C , C * H , C * HT , or C * HH .
Return Values
This function returns a value info.
If info = 0 , the execution is successful.
If info < 0 , the i -th parameter had an illegal value.
If info = -1011 , memory allocation error occurred.



