1SSPEVD(1)             LAPACK driver routine (version 3.1)            SSPEVD(1)
2
3
4

NAME

6       SSPEVD  -  all  the eigenvalues and, optionally, eigenvectors of a real
7       symmetric matrix A in packed storage
8

SYNOPSIS

10       SUBROUTINE SSPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ,  WORK,  LWORK,  IWORK,
11                          LIWORK, INFO )
12
13           CHARACTER      JOBZ, UPLO
14
15           INTEGER        INFO, LDZ, LIWORK, LWORK, N
16
17           INTEGER        IWORK( * )
18
19           REAL           AP( * ), W( * ), WORK( * ), Z( LDZ, * )
20

PURPOSE

22       SSPEVD  computes all the eigenvalues and, optionally, eigenvectors of a
23       real symmetric matrix A in packed storage. If eigenvectors are desired,
24       it uses a divide and conquer algorithm.
25
26       The  divide  and  conquer  algorithm  makes very mild assumptions about
27       floating point arithmetic. It will work on machines with a guard  digit
28       in add/subtract, or on those binary machines without guard digits which
29       subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It  could
30       conceivably  fail on hexadecimal or decimal machines without guard dig‐
31       its, but we know of none.
32
33

ARGUMENTS

35       JOBZ    (input) CHARACTER*1
36               = 'N':  Compute eigenvalues only;
37               = 'V':  Compute eigenvalues and eigenvectors.
38
39       UPLO    (input) CHARACTER*1
40               = 'U':  Upper triangle of A is stored;
41               = 'L':  Lower triangle of A is stored.
42
43       N       (input) INTEGER
44               The order of the matrix A.  N >= 0.
45
46       AP      (input/output) REAL array, dimension (N*(N+1)/2)
47               On entry, the upper or lower triangle of the  symmetric  matrix
48               A,  packed  columnwise in a linear array.  The j-th column of A
49               is stored in the array AP as follows: if UPLO  =  'U',  AP(i  +
50               (j-1)*j/2)  =  A(i,j)  for  1<=i<=j;  if  UPLO  =  'L',  AP(i +
51               (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
52
53               On exit, AP is  overwritten  by  values  generated  during  the
54               reduction to tridiagonal form.  If UPLO = 'U', the diagonal and
55               first superdiagonal of the tridiagonal matrix T  overwrite  the
56               corresponding  elements  of  A, and if UPLO = 'L', the diagonal
57               and first subdiagonal of T overwrite the corresponding elements
58               of A.
59
60       W       (output) REAL array, dimension (N)
61               If INFO = 0, the eigenvalues in ascending order.
62
63       Z       (output) REAL array, dimension (LDZ, N)
64               If  JOBZ  =  'V',  then if INFO = 0, Z contains the orthonormal
65               eigenvectors of the matrix A, with the i-th column of Z holding
66               the eigenvector associated with W(i).  If JOBZ = 'N', then Z is
67               not referenced.
68
69       LDZ     (input) INTEGER
70               The leading dimension of the array Z.  LDZ >= 1, and if JOBZ  =
71               'V', LDZ >= max(1,N).
72
73       WORK    (workspace/output) REAL array, dimension (MAX(1,LWORK))
74               On exit, if INFO = 0, WORK(1) returns the required LWORK.
75
76       LWORK   (input) INTEGER
77               The    dimension   of   the   array   WORK.    If   N   <=   1,
78               LWORK must be at least 1.  If JOBZ = 'N' and N > 1, LWORK  must
79               be  at  least  2*N.   If JOBZ = 'V' and N > 1, LWORK must be at
80               least 1 + 6*N + N**2.
81
82               If LWORK = -1, then a workspace query is assumed;  the  routine
83               only  calculates  the  required  sizes  of  the  WORK and IWORK
84               arrays, returns these values as the first entries of  the  WORK
85               and  IWORK  arrays,  and  no  error message related to LWORK or
86               LIWORK is issued by XERBLA.
87
88       IWORK   (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
89               On exit, if INFO = 0, IWORK(1) returns the required LIWORK.
90
91       LIWORK  (input) INTEGER
92               The dimension of the array IWORK.  If JOBZ  = 'N' or  N  <=  1,
93               LIWORK  must  be  at least 1.  If JOBZ  = 'V' and N > 1, LIWORK
94               must be at least 3 + 5*N.
95
96               If LIWORK = -1, then a workspace query is assumed; the  routine
97               only  calculates  the  required  sizes  of  the  WORK and IWORK
98               arrays, returns these values as the first entries of  the  WORK
99               and  IWORK  arrays,  and  no  error message related to LWORK or
100               LIWORK is issued by XERBLA.
101
102       INFO    (output) INTEGER
103               = 0:  successful exit
104               < 0:  if INFO = -i, the i-th argument had an illegal value.
105               > 0:  if INFO = i, the algorithm failed  to  converge;  i  off-
106               diagonal  elements  of an intermediate tridiagonal form did not
107               converge to zero.
108
109
110
111 LAPACK driver routine (version 3.N1o)vember 2006                       SSPEVD(1)
Impressum