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