PDLAED0(3)    ScaLAPACK routine of NEC Numeric Library Collection   PDLAED0(3)



NAME
       PDLAED0  -  compute all eigenvalues and corresponding eigenvectors of a
       symmetric tridiagonal matrix using the divide and conquer method

SYNOPSIS
       SUBROUTINE PDLAED0( N, D, E, Q, IQ, JQ, DESCQ, WORK, IWORK, INFO )

           INTEGER         INFO, IQ, JQ, N

           INTEGER         DESCQ( * ), IWORK( * )

           DOUBLE          PRECISION D( * ), E( * ), Q( * ), WORK( * )

PURPOSE
       PDLAED0 computes all eigenvalues and corresponding  eigenvectors  of  a
       symmetric tridiagonal matrix using the divide and conquer method.


ARGUMENTS
       N       (global input) INTEGER
               The order of the tridiagonal matrix T.  N >= 0.

       D       (global input/output) DOUBLE PRECISION array, dimension (N)
               On  entry, the diagonal elements of the tridiagonal matrix.  On
               exit, if INFO = 0, the eigenvalues in descending order.

       E       (global input/output) DOUBLE PRECISION array, dimension (N-1)
               On entry, the subdiagonal elements of the  tridiagonal  matrix.
               On exit, E has been destroyed.

       Q       (local output) DOUBLE PRECISION array,
               global dimension (N, N), local dimension ( 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.

       IQ      (global input) INTEGER
               Q's global row index, which points to the beginning of the sub-
               matrix which is to be operated on.

       JQ      (global input) INTEGER
               Q's  global  column index, which points to the beginning of the
               submatrix which is to be operated on.

       DESCQ   (global and local input) INTEGER array of dimension DLEN_.
               The array descriptor for the distributed matrix Z.

       WORK    (local workspace ) DOUBLE PRECISION array, dimension (LWORK)
               LWORK = 6*N + 2*NP*NQ, with NP = NUMROC( N, MB_Q, MYROW, IQROW,
               NPROW  )  NQ  =  NUMROC( N, NB_Q, MYCOL, IQCOL, NPCOL ) IQROW =
               INDXG2P( IQ, NB_Q, MYROW, RSRC_Q, NPROW ) IQCOL = INDXG2P(  JQ,
               MB_Q, MYCOL, CSRC_Q, NPCOL )

       IWORK   (local workspace/output) INTEGER array, dimension (LIWORK)
               LIWORK = 2 + 7*N + 8*NPCOL

       INFO    (global output) INTEGER
               = 0:  successful exit
               <  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.  > 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).



ScaLAPACK routine               31 October 2017                     PDLAED0(3)