Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

dlaed0 (3p)

Name

dlaed0 - compute all eigenvalues and corresponding eigenvectors of an unreduced symmetric tridiagonal matrix using the divide and conquer method. Used by dstedc

Synopsis

SUBROUTINE  DLAED0(ICOMPQ,  QSIZ,  N, D, E, Q, LDQ, QSTORE, LDQS, WORK,
IWORK, INFO)


INTEGER ICOMPQ, INFO, LDQ, LDQS, N, QSIZ

INTEGER IWORK(*)

DOUBLE PRECISION D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


SUBROUTINE DLAED0_64(ICOMPQ, QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, WORK,
IWORK, INFO)


INTEGER*8 ICOMPQ, INFO, LDQ, LDQS, N, QSIZ

INTEGER*8 IWORK(*)

DOUBLE PRECISION D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


F95 INTERFACE
SUBROUTINE  LAED0(ICOMPQ,  QSIZ,  N,  D, E, Q, LDQ, QSTORE, LDQS, WORK,
IWORK, INFO)


INTEGER :: ICOMPQ, QSIZ, N, LDQ, LDQS, INFO

INTEGER, DIMENSION(:) :: IWORK

REAL(8), DIMENSION(:,:) :: Q, QSTORE

REAL(8), DIMENSION(:) :: D, E, WORK


SUBROUTINE LAED0_64(ICOMPQ, QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS,  WORK,
IWORK, INFO)


INTEGER(8) :: ICOMPQ, QSIZ, N, LDQ, LDQS, INFO

INTEGER(8), DIMENSION(:) :: IWORK

REAL(8), DIMENSION(:,:) :: Q, QSTORE

REAL(8), DIMENSION(:) :: D, E, WORK


C INTERFACE
#include <sunperf.h>

void  dlaed0 (int icompq, int qsiz, int n, double *d, double *e, double
*q, int ldq, double *qstore, int ldqs, int *info);


void dlaed0_64 (long icompq, long qsiz, long n, double *d,  double  *e,
double *q, long ldq, double *qstore, long ldqs, long *info);

Description

Oracle Solaris Studio Performance Library                           dlaed0(3P)



NAME
       dlaed0  -  compute all eigenvalues and corresponding eigenvectors of an
       unreduced symmetric tridiagonal matrix using  the  divide  and  conquer
       method. Used by dstedc


SYNOPSIS
       SUBROUTINE  DLAED0(ICOMPQ,  QSIZ,  N, D, E, Q, LDQ, QSTORE, LDQS, WORK,
                 IWORK, INFO)


       INTEGER ICOMPQ, INFO, LDQ, LDQS, N, QSIZ

       INTEGER IWORK(*)

       DOUBLE PRECISION D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


       SUBROUTINE DLAED0_64(ICOMPQ, QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, WORK,
                 IWORK, INFO)


       INTEGER*8 ICOMPQ, INFO, LDQ, LDQS, N, QSIZ

       INTEGER*8 IWORK(*)

       DOUBLE PRECISION D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


   F95 INTERFACE
       SUBROUTINE  LAED0(ICOMPQ,  QSIZ,  N,  D, E, Q, LDQ, QSTORE, LDQS, WORK,
                 IWORK, INFO)


       INTEGER :: ICOMPQ, QSIZ, N, LDQ, LDQS, INFO

       INTEGER, DIMENSION(:) :: IWORK

       REAL(8), DIMENSION(:,:) :: Q, QSTORE

       REAL(8), DIMENSION(:) :: D, E, WORK


       SUBROUTINE LAED0_64(ICOMPQ, QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS,  WORK,
                 IWORK, INFO)


       INTEGER(8) :: ICOMPQ, QSIZ, N, LDQ, LDQS, INFO

       INTEGER(8), DIMENSION(:) :: IWORK

       REAL(8), DIMENSION(:,:) :: Q, QSTORE

       REAL(8), DIMENSION(:) :: D, E, WORK


   C INTERFACE
       #include <sunperf.h>

       void  dlaed0 (int icompq, int qsiz, int n, double *d, double *e, double
                 *q, int ldq, double *qstore, int ldqs, int *info);


       void dlaed0_64 (long icompq, long qsiz, long n, double *d,  double  *e,
                 double *q, long ldq, double *qstore, long ldqs, long *info);


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


ARGUMENTS
       ICOMPQ (input)
                 ICOMPQ is INTEGER
                 = 0:  Compute eigenvalues only.
                 = 1:  Compute eigenvectors of original dense symmetric matrix
                 also.  On  entry,  Q  contains  the orthogonal matrix used to
                 reduce the original matrix to tridiagonal form.
                 = 2:  Compute eigenvalues  and  eigenvectors  of  tridiagonal
                 matrix.


       QSIZ (input)
                 QSIZ is INTEGER
                 The  dimension  of  the  orthogonal 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 main diagonal of the tridiagonal matrix.
                 On exit, its eigenvalues.


       E (input)
                 E is DOUBLE PRECISION array, dimension (N-1)
                 The off-diagonal elements of the tridiagonal matrix.
                 On exit, E has been destroyed.


       Q (input/output)
                 Q is DOUBLE PRECISION array, dimension (LDQ, N)
                 On entry, Q must contain an N-by-N orthogonal matrix.
                 If ICOMPQ = 0    Q is not referenced.
                 If ICOMPQ = 1    On entry, Q is a subset of  the  columns  of
                 the  orthogonal  matrix  used  to  reduce  the full matrix to
                 tridiagonal form corresponding to  the  subset  of  the  full
                 matrix which is being decomposed at this time.
                 If ICOMPQ = 2    On entry, Q will be the identity matrix.
                 On  exit,  Q  contains  the  eigenvectors  of the tridiagonal
                 matrix.


       LDQ (input)
                 LDQ is INTEGER
                 The leading dimension of the array  Q.  If  eigenvectors  are
                 desired, then LDQ >= max(1,N). In any case, LDQ >= 1.


       QSTORE (output)
                 QSTORE is DOUBLE PRECISION array, dimension (LDQS, N)
                 Referenced  only  when ICOMPQ = 1. 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. If ICOMPQ = 1,
                 then  LDQS >= max(1,N).  In any case,  LDQS >= 1.


       WORK (output)
                 WORK is DOUBLE PRECISION array,
                 If ICOMPQ = 0 or 1, the dimension of WORK must be at least
                    1 + 3*N + 2*N*lg N + 3*N**2
                    ( lg( N ) = smallest integer k
                                such that 2^k >= N )
                 If ICOMPQ = 2, the dimension of WORK must be at least
                 4*N + N**2.


       IWORK (output)
                 IWORK is INTEGER array.
                 If ICOMPQ = 0 or 1, 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 )
                 If ICOMPQ = 2, the dimension of IWORK must be at least
                 3 + 5*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                        dlaed0(3P)