Visible to Intel only — GUID: GUID-7F27908B-084D-4439-A5AA-117180223825
Visible to Intel only — GUID: GUID-7F27908B-084D-4439-A5AA-117180223825
p?syevd
Computes all eigenvalues and eigenvectors of a real symmetric matrix by using a divide and conquer algorithm.
Syntax
call pssyevd(jobz, uplo, n, a, ia, ja, desca, w, z, iz, jz, descz, work, lwork, iwork, liwork, info)
call pdsyevd(jobz, uplo, n, a, ia, ja, desca, w, z, iz, jz, descz, work, lwork, iwork, liwork, info)
Include Files
Description
The p?syevd routine computes all eigenvalues and eigenvectors of a real symmetric matrix A by using a divide and conquer algorithm.
Input Parameters
np = the number of rows local to a given process.
nq = the number of columns local to a given process.
- jobz
-
(global) CHARACTER*1. Must be 'N' or 'V'.
Specifies whether it is necessary to compute the eigenvectors:
If jobz = 'N', then only eigenvalues are computed (not yet implemented).
If jobz = 'V', then eigenvalues and eigenvectors are computed.
- uplo
-
(global) CHARACTER*1. Must be 'U' or 'L'.
Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored:
If uplo = 'U', a stores the upper triangular part of A.
If uplo = 'L', a stores the lower triangular part of A.
- n
-
(global) INTEGER. The number of rows and columns of the matrix A(n≥ 0).
- a
-
(local).
REAL for pssyevd
DOUBLE PRECISION for pdsyevd.
Block cyclic array of global size (n, n) and local size (lld_a, LOCc(ja+n-1)). On entry, the symmetric matrix A.
If uplo = 'U', only the upper triangular part of A is used to define the elements of the symmetric matrix.
If uplo = 'L', only the lower triangular part of A is used to define the elements of the symmetric matrix.
- ia, ja
-
(global) INTEGER. The row and column indices in the global matrix A indicating the first row and the first column of the submatrix A, respectively.
- desca
-
(global and local) INTEGER array of size dlen_. The array descriptor for the distributed matrix A. If desca(ctxt_) is incorrect, p?syevd cannot guarantee correct error reporting.
- iz, jz
-
(global) INTEGER. The row and column indices in the global matrix Z indicating the first row and the first column of the submatrix Z, respectively.
- descz
-
(global and local) INTEGER array of size dlen_. The array descriptor for the distributed matrix Z. descz(ctxt_) must equal desca(ctxt_).
- work
-
(local).
REAL for pssyevd
DOUBLE PRECISION for pdsyevd.
Array of size lwork.
- lwork
-
(local) INTEGER. The size of the array work.
If eigenvalues are requested:
lwork≥ max( 1+6*n + 2*np*nq, trilwmin) + 2*n
with trilwmin = 3*n + max( nb*( np + 1), 3*nb )
np = numroc( n, nb, myrow, iarow, NPROW)
nq = numroc( n, nb, mycol, iacol, NPCOL)
If lwork = -1, then lwork is global input and a workspace query is assumed; the routine only calculates the size required for optimal performance for all work arrays. The required workspace is returned as the first element of the corresponding work arrays, and no error message is issued by pxerbla.
- iwork
-
(local) INTEGER. Workspace array of size liwork.
- liwork
-
(local) INTEGER , size of iwork.
liwork = 7*n + 8*npcol + 2.
Output Parameters
- a
-
On exit, the lower triangle (if uplo = 'L'), or the upper triangle (if uplo = 'U') of A, including the diagonal, is overwritten.
- w
-
(global).
REAL for pssyevd
DOUBLE PRECISION for pdsyevd.
Array of size n. If info = 0, w contains the eigenvalues in the ascending order.
- z
-
(local).
REAL for pssyevd
DOUBLE PRECISION for pdsyevd.
Array, global size (n, n), local size (lld_z, LOCc(jz+n-1)).
The z parameter contains the orthonormal eigenvectors of the matrix A.
- work(1)
-
On exit, returns adequate workspace to allow optimal performance.
- iwork(1)
-
(local).
On exit, if liwork > 0, iwork(1) returns the optimal liwork.
- info
-
(global) INTEGER.
If info = 0, the execution is successful.
If info < 0:
If the i-th argument is an array and the j-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.
If info> 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).
NOTE:mod(x,y) is the integer remainder of x/y.