Developer Reference for Intel® oneAPI Math Kernel Library for C
?upgtr
Generates the complex unitary matrix Q determined by ?hptrd .
Syntax
lapack_intLAPACKE_cupgtr ( intmatrix_layout , charuplo , lapack_intn , constlapack_complex_float*ap , constlapack_complex_float*tau , lapack_complex_float*q , lapack_intldq );
lapack_intLAPACKE_zupgtr ( intmatrix_layout , charuplo , lapack_intn , constlapack_complex_double*ap , constlapack_complex_double*tau , lapack_complex_double*q , lapack_intldq );
Include Files
mkl.h
Description
cupgtr zupgtr upgtr
The routine explicitly generates the n -by- n unitary matrix Q 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 .
Input Parameters
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
uplo
Must be ‘U’ or ‘L’ . Use the same uplo as supplied to ?hptrd .
n
The order of the matrix Q ( n≥ 0 ).
- ap , tau
-
COMPLEX for cupgtr DOUBLE COMPLEX for zupgtr . Arrays ap and tau , as returned by ?hptrd . The dimension of ap must be at least max(1, n(n+1)/2). The dimension of tau must be at least max(1, n -1).
ldq
The leading dimension of the output array q ;
at least max(1, n ).
- work
-
COMPLEX for cupgtr DOUBLE COMPLEX for zupgtr . Workspace array, size at least max(1, n -1).
Output Parameters
- q
-
COMPLEX for cupgtr DOUBLE COMPLEX for zupgtr .
Array, size (size max(1, ldq * n )) .
Contains the computed matrix Q . The second dimension of q must be at least max(1, n ).
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 matrix \(Q\) differs from an exactly orthogonal matrix by a matrix \(E\) such that \(||E||_{2} = O(\varepsilon)\) , where \(\varepsilon\) is the machine precision.
The approximate number of floating-point operations is (16/3)n3 .
The real counterpart of this routine is opgtr .