Visible to Intel only — GUID: GUID-496E5BE2-2984-40AA-A2C1-DF1E25A7D275
Visible to Intel only — GUID: GUID-496E5BE2-2984-40AA-A2C1-DF1E25A7D275
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 )
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) returns the workspace needed. |
iwork |
On exit, if liwork > 0, iwork(1) 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). |