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