zlaed0 - is used by sstedc. Compute all eigenvalues and corresponding eigenvectors of an unreduced symmetric tridiagonal matrix using the divide and conquer method
SUBROUTINE ZLAED0( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER INFO, LDQ, LDQS, N, QSIZ INTEGER IWORK(*) DOUBLE PRECISION D(*),E(*), RWORK(*) DOUBLE COMPLEX Q(LDQ,*), QSTORE(LDQS,*) SUBROUTINE ZLAED0_64( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER*8 INFO, LDQ, LDQS, N, QSIZ INTEGER*8 IWORK(*) DOUBLE PRECISION D(*),E(*), RWORK(*) DOUBLE COMPLEX Q(LDQ,*), QSTORE(LDQS,*) F95 INTERFACE SUBROUTINE LAED0( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER :: QSIZ, N, LDQ, LDQS, INFO INTEGER, DIMENSION(:) :: IWORK COMPLEX(8), DIMENSION(:,:) :: Q, QSTORE REAL(8), DIMENSION(:) :: D, E, RWORK SUBROUTINE LAED0_64( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER(8) :: QSIZ, N, LDQ, LDQS, INFO INTEGER(8), DIMENSION(:) :: IWORK COMPLEX(8), DIMENSION(:,:) :: Q, QSTORE REAL(8), DIMENSION(:) :: D, E, RWORK C INTERFACE #include <sunperf.h> void zlaed0 (int qsiz, int n, double *d, double *e, doublecomplex *q, int ldq, doublecomplex *qstore, int ldqs, int *info); void zlaed0_64 (long qsiz, long n, double *d, double *e, doublecomplex *q, long ldq, doublecomplex *qstore, long ldqs, long *info);
Oracle Solaris Studio Performance Library zlaed0(3P) NAME zlaed0 - is used by sstedc. Compute all eigenvalues and corresponding eigenvectors of an unreduced symmetric tridiagonal matrix using the divide and conquer method SYNOPSIS SUBROUTINE ZLAED0( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER INFO, LDQ, LDQS, N, QSIZ INTEGER IWORK(*) DOUBLE PRECISION D(*),E(*), RWORK(*) DOUBLE COMPLEX Q(LDQ,*), QSTORE(LDQS,*) SUBROUTINE ZLAED0_64( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER*8 INFO, LDQ, LDQS, N, QSIZ INTEGER*8 IWORK(*) DOUBLE PRECISION D(*),E(*), RWORK(*) DOUBLE COMPLEX Q(LDQ,*), QSTORE(LDQS,*) F95 INTERFACE SUBROUTINE LAED0( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER :: QSIZ, N, LDQ, LDQS, INFO INTEGER, DIMENSION(:) :: IWORK COMPLEX(8), DIMENSION(:,:) :: Q, QSTORE REAL(8), DIMENSION(:) :: D, E, RWORK SUBROUTINE LAED0_64( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK, IWORK, INFO ) INTEGER(8) :: QSIZ, N, LDQ, LDQS, INFO INTEGER(8), DIMENSION(:) :: IWORK COMPLEX(8), DIMENSION(:,:) :: Q, QSTORE REAL(8), DIMENSION(:) :: D, E, RWORK C INTERFACE #include <sunperf.h> void zlaed0 (int qsiz, int n, double *d, double *e, doublecomplex *q, int ldq, doublecomplex *qstore, int ldqs, int *info); void zlaed0_64 (long qsiz, long n, double *d, double *e, doublecomplex *q, long ldq, doublecomplex *qstore, long ldqs, long *info); PURPOSE Using the divide and conquer method, zlaed0 computes all eigenvalues of a symmetric tridiagonal matrix which is one diagonal block of those from reducing a dense or band Hermitian matrix and corresponding eigen- vectors of the dense or band matrix. ARGUMENTS QSIZ (input) QSIZ is INTEGER The dimension of the unitary matrix used to reduce the full matrix to tridiagonal form. QSIZ >= N if ICOMPQ = 1. N (input) N is INTEGER The dimension of the symmetric tridiagonal matrix. N >= 0. D (input/output) D is DOUBLE PRECISION array, dimension (N) On entry, the diagonal elements of the tridiagonal matrix. On exit, the eigenvalues in ascending order. E (input/output) E is DOUBLE PRECISION array, dimension (N-1) On entry, the off-diagonal elements of the tridiagonal matrix. On exit, E has been destroyed. Q (input/output) Q is COMPLEX*16 array, dimension (LDQ,N) On entry, Q must contain an QSIZ x N matrix whose columns unitarily orthonormal. It is a part of the unitary matrix that reduces the full dense Hermitian matrix to a (reducible) symmetric tridiagonal matrix. LDQ (input) LDQ is INTEGER The leading dimension of the array Q. LDQ >= max(1,N). IWORK (output) IWORK is INTEGER array, the dimension of IWORK must be at least 6 + 6*N + 5*N*lg N ( lg( N ) = smallest integer k such that 2^k >= N ) RWORK (output) RWORK is DOUBLE PRECISION array, dimension (1 + 3*N + 2*N*lg N + 3*N**2) ( lg( N ) = smallest integer k such that 2^k >= N ) QSTORE (output) QSTORE is COMPLEX*16 array, dimension (LDQS, N) Used to store parts of the eigenvector matrix when the updating matrix multiplies take place. LDQS (input) LDQS is INTEGER The leading dimension of the array QSTORE. LDQS >= max(1,N). INFO (output) INFO is INTEGER = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value. > 0: The algorithm failed to compute an eigenvalue while working on the submatrix lying in rows and columns INFO/(N+1) through mod(INFO,N+1). 7 Nov 2015 zlaed0(3P)