Developer Reference for Intel® oneAPI Math Kernel Library for C
?tpmqrt
Applies a real or complex orthogonal matrix obtained from a “triangular-pentagonal” complex block reflector to a general real or complex matrix, which consists of two blocks.
Syntax
lapack_intLAPACKE_stpmqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intl , lapack_intnb , constfloat*v , lapack_intldv , constfloat*t , lapack_intldt , float*a , lapack_intlda , float*b , lapack_intldb );
lapack_intLAPACKE_dtpmqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intl , lapack_intnb , constdouble*v , lapack_intldv , constdouble*t , lapack_intldt , double*a , lapack_intlda , double*b , lapack_intldb );
lapack_intLAPACKE_ctpmqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intl , lapack_intnb , 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_ztpmqrt ( intmatrix_layout , charside , chartrans , lapack_intm , lapack_intn , lapack_intk , lapack_intl , lapack_intnb , 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
stpmqrt dtpmqrt ctpmqrt ztpmqrt
The columns of the pentagonal matrix V contain the elementary reflectors H (1), H (2), …, H ( k ); V is composed of a rectangular block V1 and a trapezoidal block V2 :
The size of the trapezoidal block V2 is determined by the parameter l , where 0 ≤ l ≤ k . V2 is upper trapezoidal, consisting of the first l rows of a k -by- k upper triangular matrix.
If l = k , V2 is upper triangular;
If l =0, there is no trapezoidal block, so V = V1 is rectangular.
If side = ‘L’:
where A is k -by- n , B is m -by- n and V is m -by- k .
If side = ‘R’:
where A is m -by- k , B is m -by- n and V is n -by- k .
The real/complex orthogonal matrix Q is formed from V and T .
If trans =’N’ and side =’L’, c contains Q * C on exit.
If trans =’T’ and side =’L’, C contains QT * C on exit.
If trans =’C’ and side =’L’, C contains QH * C on exit.
If trans =’N’ and side =’R’, C contains C * Q on exit.
If trans =’T’ and side =’R’, C contains C * QT on exit.
If trans =’C’ and side =’R’, C contains C * QH on exit.
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 Q , QT , or QH from the left. ='R' : apply Q , QT , or QH from the right.
- trans
-
CHARACTER*1 ='N' , no transpose, apply Q . ='T' , transpose, apply QT . ='C' , transpose, apply QH .
m
The number of rows in the matrix B , (m ≥ 0) .
n
The number of columns in the matrix B , (n ≥ 0) .
k
The number of elementary reflectors whose product defines the matrix Q , (k ≥ 0) .
l
The order of the trapezoidal part of V ( k ≥ l ≥ 0).
nb
The block size used for the storage of t , k ≥ nb ≥ 1. This must be the same value of nb used to generate t in tpqrt .
- v
-
REAL for stpmqrt DOUBLE PRECISION for dtpmqrt COMPLEX for ctpmqrt COMPLEX*16 for ztpmqrt .
Size ldv * k for column major layout; ldv * m for row major layout and side = ‘L’, ldv * n for row major layout and side = ‘R’.
The i th column must contain the vector which defines the elementary reflector H ( i ), for i = 1,2, ..., k , as returned by tpqrt in array argument b .
ldv
The leading dimension of the array v .
If side = ‘L’, ldv must be at least max(1, m ) for column major layout and max(1, k for row major layout ;
If side = ‘R’, ldv must be at least max(1, n ) for column major layout and max(1, k for row major layout .
- t
-
REAL for stpmqrt DOUBLE PRECISION for dtpmqrt COMPLEX for ctpmqrt COMPLEX*16 for ztpmqrt .
Array, size ldt * k for column major layout and ldt * nb for row major layout .
The upper triangular factors of the block reflectors as returned by tpqrt
ldt
The leading dimension of the array t . ldt must be at least nb for column major layout and max(1, k for row major layout .
- a
-
REAL for stpmqrt DOUBLE PRECISION for dtpmqrt COMPLEX for ctpmqrt COMPLEX*16 for ztpmqrt .
If side = ‘L’, size lda * n for column major layout and lda * k for row major layout . .
If side = ‘R’, size lda * k for column major layout and lda * m for row major layout . .
The k -by- n or m -by- k matrix A .
lda
The leading dimension of the array a .
If side = ‘L’, lda must be at least max(1, k ) for column major layout and max(1, n for row major layout .
If side = ‘R’, lda must be at least max(1, m ) for column major layout and max(1, k for row major layout .
- b
-
REAL for stpmqrt DOUBLE PRECISION for dtpmqrt COMPLEX for ctpmqrt COMPLEX*16 for ztpmqrt .
Size ldb * n for column major layout and ldb * m for row major layout .
The m -by- n matrix B .
ldb
The leading dimension of the array b . ldb must be at least max(1, m ) for column major layout and max(1, n for row major layout .
- work
-
REAL for stpmqrt DOUBLE PRECISION for dtpmqrt COMPLEX for ctpmqrt COMPLEX*16 for ztpmqrt . Workspace array. If side = ‘L’ DIMENSION n * nb . If side = ‘R’ DIMENSION m * nb .
Output Parameters
- a
-
Overwritten by the corresponding block of the product Q * C , C * Q , QT * C , C * QT , QH * C , or C * QH .
- b
-
Overwritten by the corresponding block of the product Q * C , C * Q , QT * C , C * QT , QH * C , or C * QH .
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.