1DSPEVD(1) LAPACK driver routine (version 3.1) DSPEVD(1)
2
3
4
6 DSPEVD - all the eigenvalues and, optionally, eigenvectors of a real
7 symmetric matrix A in packed storage
8
10 SUBROUTINE DSPEVD( 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 DOUBLE PRECISION AP( * ), W( * ), WORK( * ), Z( LDZ, * )
20
22 DSPEVD 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
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) DOUBLE PRECISION 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) DOUBLE PRECISION array, dimension (N)
61 If INFO = 0, the eigenvalues in ascending order.
62
63 Z (output) DOUBLE PRECISION 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) DOUBLE PRECISION array,
74 dimension (LWORK) On exit, if INFO = 0, WORK(1) returns the
75 required LWORK.
76
77 LWORK (input) INTEGER
78 The dimension of the array WORK. If N <= 1,
79 LWORK must be at least 1. If JOBZ = 'N' and N > 1, LWORK must
80 be at least 2*N. If JOBZ = 'V' and N > 1, LWORK must be at
81 least 1 + 6*N + N**2.
82
83 If LWORK = -1, then a workspace query is assumed; the routine
84 only calculates the required sizes of the WORK and IWORK
85 arrays, returns these values as the first entries of the WORK
86 and IWORK arrays, and no error message related to LWORK or
87 LIWORK is issued by XERBLA.
88
89 IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
90 On exit, if INFO = 0, IWORK(1) returns the required LIWORK.
91
92 LIWORK (input) INTEGER
93 The dimension of the array IWORK. If JOBZ = 'N' or N <= 1,
94 LIWORK must be at least 1. If JOBZ = 'V' and N > 1, LIWORK
95 must be at least 3 + 5*N.
96
97 If LIWORK = -1, then a workspace query is assumed; the routine
98 only calculates the required sizes of the WORK and IWORK
99 arrays, returns these values as the first entries of the WORK
100 and IWORK arrays, and no error message related to LWORK or
101 LIWORK is issued by XERBLA.
102
103 INFO (output) INTEGER
104 = 0: successful exit
105 < 0: if INFO = -i, the i-th argument had an illegal value.
106 > 0: if INFO = i, the algorithm failed to converge; i off-
107 diagonal elements of an intermediate tridiagonal form did not
108 converge to zero.
109
110
111
112 LAPACK driver routine (version 3.N1o)vember 2006 DSPEVD(1)