Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

slaed0 (3p)

Name

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

Synopsis

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


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

INTEGER IWORK(*)

REAL D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


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


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

INTEGER*8 IWORK(*)

REAL D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


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


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

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

INTEGER, DIMENSION(:) :: IWORK

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


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


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

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

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

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


C INTERFACE
#include <sunperf.h>

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


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

Description

Oracle Solaris Studio Performance Library                           slaed0(3P)



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


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


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

       INTEGER IWORK(*)

       REAL D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


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


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

       INTEGER*8 IWORK(*)

       REAL D(*), E(*), Q(LDQ,*), QSTORE(LDQS,*), WORK(*)


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


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

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

       INTEGER, DIMENSION(:) :: IWORK

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


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


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

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

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

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


   C INTERFACE
       #include <sunperf.h>

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


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


PURPOSE
       slaed0  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 REAL array, dimension (N)
                 On entry, the main diagonal of the tridiagonal matrix.
                 On exit, its eigenvalues.


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


       Q (input/output)
                 Q is REAL 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 REAL 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 REAL 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                        slaed0(3P)