Developer Reference for Intel® oneAPI Math Kernel Library for C
p?stedc
Computes all eigenvalues and eigenvectors of a symmetric tridiagonal matrix in parallel.
Syntax
void psstedc ( constchar*compz , constMKL_INT*n , float*d , float*e , float*q , constMKL_INT*iq , constMKL_INT*jq , constMKL_INT*descq , float*work , MKL_INT*lwork , MKL_INT*iwork , constMKL_INT*liwork , MKL_INT*info );
void pdstedc ( constchar*compz , constMKL_INT*n , double*d , double*e , double*q , constMKL_INT*iq , constMKL_INT*jq , constMKL_INT*descq , double*work , MKL_INT*lwork , MKL_INT*iwork , constMKL_INT*liwork , MKL_INT*info );
Include Files
mkl_scalapack.h
Description
p?stedc computes all eigenvalues and eigenvectors of a symmetric tridiagonal matrix in parallel, using the divide and conquer algorithm.
Input Parameters
- compz
-
CHARACTER*1. = ‘N’: Compute eigenvalues only. (NOT IMPLEMENTED YET) = ‘I’: Compute eigenvectors of tridiagonal matrix also. = ‘V’: Compute eigenvectors of original dense symmetric matrix also. On entry, Z contains the orthogonal matrix used to reduce the original matrix to tridiagonal form. (NOT IMPLEMENTED YET)
- n
-
(global) INTEGER. The order of the tridiagonal matrix T . n >= 0.
- d
-
(global) REAL for psstedc DOUBLE PRECISION for pdstedc Array, size ( n ) On entry, the diagonal elements of the tridiagonal matrix.
- e
-
(global) REAL for psstedc DOUBLE PRECISION for pdstedc Array, size ( n -1). On entry, the subdiagonal elements of the tridiagonal matrix.
- iq
-
(global) INTEGER. Q ‘s global row index, which points to the beginning of the submatrix which is to be operated on.
- jq
-
(global) INTEGER. Q ‘s global column index, which points to the beginning of the submatrix which is to be operated on.
- descq
-
(global and local) INTEGER. Array of size dlen_ . The array descriptor for the distributed matrix Q .
- work
-
(local) REAL for psstedc DOUBLE PRECISION for pdstedc Array, size ( lwork )
- lwork
-
(local) INTEGER. The size of the array work . lwork = 6* n + 2*NP*NQ NP = numroc ( n , NB, MYROW, DESCQ( rsrc_ ), NPROW ) NQ = numroc ( n , NB, MYCOL, DESCQ( csrc_ ), NPCOL ) numroc is a ScaLAPACK tool function. If lwork = -1, the lwork is global input and a workspace query is assumed; the routine only calculates the minimum size for the work array. The required workspace is returned as the first element of work and no error message is issued by pxerbla .
- iwork
-
(local) INTEGER. Array, size ( liwork )
- liwork
-
INTEGER. The size of the array iwork . liwork = 2 + 7* n + 8*NPCOL
Output Parameters
- d
-
On exit, if info = 0, the eigenvalues in descending order.
- q
-
(local) REAL for psstedc DOUBLE PRECISION for pdstedc Array, local size ( lld_q , LOCc( jq + n -1)) q contains the orthonormal eigenvectors of the symmetric tridiagonal matrix. On output, q is distributed across the P processes in block cyclic format.
- work
-
On output, work(1)[0] returns the workspace needed.
- iwork
-
On exit, if liwork > 0, iwork(1)[0] returns the optimal liwork .
- info
-
(global) INTEGER. = 0: successful exit. < 0: If the i -th argument is an array and the j -th entry had an illegal value, then info = -( i *100+ j ), if the i -th argument is a scalar and had an illegal value, then info = - i . > 0: The algorithm failed to compute the info /( n +1)-th eigenvalue while working on the submatrix lying in global rows and columns mod( info , n +1).