1DSBEVD(1) LAPACK driver routine (version 3.1) DSBEVD(1)
2
3
4
6 DSBEVD - all the eigenvalues and, optionally, eigenvectors of a real
7 symmetric band matrix A
8
10 SUBROUTINE DSBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK,
11 IWORK, LIWORK, INFO )
12
13 CHARACTER JOBZ, UPLO
14
15 INTEGER INFO, KD, LDAB, LDZ, LIWORK, LWORK, N
16
17 INTEGER IWORK( * )
18
19 DOUBLE PRECISION AB( LDAB, * ), W( * ), WORK( * ), Z( LDZ,
20 * )
21
23 DSBEVD computes all the eigenvalues and, optionally, eigenvectors of a
24 real symmetric band matrix A. If eigenvectors are desired, it uses a
25 divide and conquer algorithm.
26
27 The divide and conquer algorithm makes very mild assumptions about
28 floating point arithmetic. It will work on machines with a guard digit
29 in add/subtract, or on those binary machines without guard digits which
30 subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could
31 conceivably fail on hexadecimal or decimal machines without guard dig‐
32 its, but we know of none.
33
34
36 JOBZ (input) CHARACTER*1
37 = 'N': Compute eigenvalues only;
38 = 'V': Compute eigenvalues and eigenvectors.
39
40 UPLO (input) CHARACTER*1
41 = 'U': Upper triangle of A is stored;
42 = 'L': Lower triangle of A is stored.
43
44 N (input) INTEGER
45 The order of the matrix A. N >= 0.
46
47 KD (input) INTEGER
48 The number of superdiagonals of the matrix A if UPLO = 'U', or
49 the number of subdiagonals if UPLO = 'L'. KD >= 0.
50
51 AB (input/output) DOUBLE PRECISION array, dimension (LDAB, N)
52 On entry, the upper or lower triangle of the symmetric band
53 matrix A, stored in the first KD+1 rows of the array. The j-th
54 column of A is stored in the j-th column of the array AB as
55 follows: if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-
56 kd)<=i<=j; if UPLO = 'L', AB(1+i-j,j) = A(i,j) for
57 j<=i<=min(n,j+kd).
58
59 On exit, AB is overwritten by values generated during the
60 reduction to tridiagonal form. If UPLO = 'U', the first super‐
61 diagonal and the diagonal of the tridiagonal matrix T are
62 returned in rows KD and KD+1 of AB, and if UPLO = 'L', the
63 diagonal and first subdiagonal of T are returned in the first
64 two rows of AB.
65
66 LDAB (input) INTEGER
67 The leading dimension of the array AB. LDAB >= KD + 1.
68
69 W (output) DOUBLE PRECISION array, dimension (N)
70 If INFO = 0, the eigenvalues in ascending order.
71
72 Z (output) DOUBLE PRECISION array, dimension (LDZ, N)
73 If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
74 eigenvectors of the matrix A, with the i-th column of Z holding
75 the eigenvector associated with W(i). If JOBZ = 'N', then Z is
76 not referenced.
77
78 LDZ (input) INTEGER
79 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
80 'V', LDZ >= max(1,N).
81
82 WORK (workspace/output) DOUBLE PRECISION array,
83 dimension (LWORK) On exit, if INFO = 0, WORK(1) returns the
84 optimal LWORK.
85
86 LWORK (input) INTEGER
87 The dimension of the array WORK. IF N <= 1,
88 LWORK must be at least 1. If JOBZ = 'N' and N > 2, LWORK must
89 be at least 2*N. If JOBZ = 'V' and N > 2, LWORK must be at
90 least ( 1 + 5*N + 2*N**2 ).
91
92 If LWORK = -1, then a workspace query is assumed; the routine
93 only calculates the optimal sizes of the WORK and IWORK arrays,
94 returns these values as the first entries of the WORK and IWORK
95 arrays, and no error message related to LWORK or LIWORK is
96 issued by XERBLA.
97
98 IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
99 On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
100
101 LIWORK (input) INTEGER
102 The dimension of the array LIWORK. If JOBZ = 'N' or N <= 1,
103 LIWORK must be at least 1. If JOBZ = 'V' and N > 2, LIWORK
104 must be at least 3 + 5*N.
105
106 If LIWORK = -1, then a workspace query is assumed; the routine
107 only calculates the optimal sizes of the WORK and IWORK arrays,
108 returns these values as the first entries of the WORK and IWORK
109 arrays, and no error message related to LWORK or LIWORK is
110 issued by XERBLA.
111
112 INFO (output) INTEGER
113 = 0: successful exit
114 < 0: if INFO = -i, the i-th argument had an illegal value
115 > 0: if INFO = i, the algorithm failed to converge; i off-
116 diagonal elements of an intermediate tridiagonal form did not
117 converge to zero.
118
119
120
121 LAPACK driver routine (version 3.N1o)vember 2006 DSBEVD(1)