Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

p?stedc

Computes all eigenvalues and eigenvectors of a symmetric tridiagonal matrix in parallel.

Syntax

void psstedc (const char* compz, const MKL_INT* n, float* d, float* e, float* q, const MKL_INT* iq, const MKL_INT* jq, const MKL_INT* descq, float* work, MKL_INT* lwork, MKL_INT* iwork, const MKL_INT* liwork, MKL_INT* info);

void pdstedc (const char* compz, const MKL_INT* n, double* d, double* e, double* q, const MKL_INT* iq, const MKL_INT* jq, const MKL_INT* descq, double* work, MKL_INT* lwork, MKL_INT* iwork, const MKL_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

= '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)

The order of the tridiagonal matrix T. n >= 0.

d

(global)

Array, size (n)

On entry, the diagonal elements of the tridiagonal matrix.

e

(global)

Array, size (n-1).

On entry, the subdiagonal elements of the tridiagonal matrix.

iq

(global)

Q's global row index, which points to the beginning of the submatrix which is to be operated on.

jq

(global)

Q's global column index, which points to the beginning of the submatrix which is to be operated on.

descq

(global and local)

Array of size dlen_.

The array descriptor for the distributed matrix Q.

work

(local)

Array, size (lwork)

lwork

(local)

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)

Array, size (liwork)

liwork

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)

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[0] returns the workspace needed.

iwork

On exit, if liwork > 0, iwork[0] returns the optimal liwork.

info

(global)

= 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).