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)