Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
p?stedc
Computes all eigenvalues and eigenvectors of a symmetric tridiagonal matrix in parallel.
Syntax
call psstedc(compz, n, d, e, q, iq, jq, descq, work, lwork, iwork, liwork, info)
call pdstedc(compz, n, d, e, q, iq, jq, descq, work, lwork, iwork, liwork, info)
Include Files
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).