Developer Reference for Intel® oneAPI Math Kernel Library for C
?upmtr
Multiplies a complex matrix by the unitary matrix Q determined by ?hptrd .
Syntax
lapack_intLAPACKE_cupmtr ( intmatrix_layout , charside , charuplo , chartrans , lapack_intm , lapack_intn , constlapack_complex_float*ap , constlapack_complex_float*tau , lapack_complex_float*c , lapack_intldc );
lapack_intLAPACKE_zupmtr ( intmatrix_layout , charside , charuplo , chartrans , lapack_intm , lapack_intn , constlapack_complex_double*ap , constlapack_complex_double*tau , lapack_complex_double*c , lapack_intldc );
Include Files
mkl.h
Description
cupmtr zupmtr upmtr
The routine multiplies a complex matrix C by Q or Q:code:`H` , where Q is the unitary matrix formed by hptrd when reducing a packed complex Hermitian matrix A to tridiagonal form: A = Q*T*Q:code:`H` . Use this routine after a call to ?hptrd .
Depending on the parameters side and trans , the routine can form one of the matrix products Q*C , Q:code:`H`*C , C*Q , or C*Q:code:`H` (overwriting the result on C ).
Input Parameters
In the descriptions below, r denotes the order of Q :
If side = 'L' , r = m ; if side = 'R' , r = n .
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
side
Must be either ‘L’ or ‘R’ .
If side = 'L' , Q or Q:code:`H` is applied to C from the left. If side = 'R' , Q or Q:code:`H` is applied to C from the right.
uplo
Must be ‘U’ or ‘L’ .
Use the same uplo as supplied to ?hptrd .
trans
Must be either ‘N’ or ‘T’ .
If trans = 'N' , the routine multiplies C by Q . If trans = 'T' , the routine multiplies C by Q:code:`H` .
m
The number of rows in the matrix C ( m≥ 0 ).
n
The number of columns in C ( n≥ 0 ).
- ap , tau , c ,
-
COMPLEX for cupmtr DOUBLE COMPLEX for zupmtr . ap and tau are the arrays returned by ?hptrd . The size of ap must be at least max(1, r(r+1)/2). The size of tau must be at least max(1, r -1).
c (size max(1, ldc * n ) for column major layout and max(1, ldc * m ) for row major layout) contains the matrix C .
The second dimension of c must be at least max(1, n ) work (* ) is a workspace array. The dimension of work must be at least max(1, n ) if side = 'L' ; max(1, m ) if side = 'R' .
ldc
The leading dimension of c ; ldc≥ max(1, m) for column major layout and ldc ≥ max(1, n ) for row major layout .
Output Parameters
- c
-
Overwritten by the product Q*C , Q:code:`H`*C , C*Q , or C*Q:code:`H` (as specified by side and trans ).
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.
LAPACK 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.
Application Notes
The computed product differs from the exact product by a matrix \(E\) such that \(||E||_{2} = O(\varepsilon) ||C||_{2}\) , where \(\varepsilon\) is the machine precision.
The total number of floating-point operations is approximately \(8 m^{2} n\) if side = 'L' or \(8 n^{2} m\) if side = 'R' .
The real counterpart of this routine is opmtr .