1CHBEVD(1) LAPACK driver routine (version 3.2) CHBEVD(1)
2
3
4
6 CHBEVD - computes all the eigenvalues and, optionally, eigenvectors of
7 a complex Hermitian band matrix A
8
10 SUBROUTINE CHBEVD( 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 REAL RWORK( * ), W( * )
20
21 COMPLEX AB( LDAB, * ), WORK( * ), Z( LDZ, * )
22
24 CHBEVD 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 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
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 KD (input) INTEGER
47 The number of superdiagonals of the matrix A if UPLO = 'U', or
48 the number of subdiagonals if UPLO = 'L'. KD >= 0.
49
50 AB (input/output) COMPLEX array, dimension (LDAB, N)
51 On entry, the upper or lower triangle of the Hermitian band
52 matrix A, stored in the first KD+1 rows of the array. The j-th
53 column of A is stored in the j-th column of the array AB as
54 follows: if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-
55 kd)<=i<=j; if UPLO = 'L', AB(1+i-j,j) = A(i,j) for
56 j<=i<=min(n,j+kd). On exit, AB is overwritten by values gener‐
57 ated during the reduction to tridiagonal form. If UPLO = 'U',
58 the first superdiagonal and the diagonal of the tridiagonal
59 matrix T are returned in rows KD and KD+1 of AB, and if UPLO =
60 'L', the diagonal and first subdiagonal of T are returned in
61 the first two rows of AB.
62
63 LDAB (input) INTEGER
64 The leading dimension of the array AB. LDAB >= KD + 1.
65
66 W (output) REAL array, dimension (N)
67 If INFO = 0, the eigenvalues in ascending order.
68
69 Z (output) COMPLEX array, dimension (LDZ, N)
70 If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
71 eigenvectors of the matrix A, with the i-th column of Z holding
72 the eigenvector associated with W(i). If JOBZ = 'N', then Z is
73 not referenced.
74
75 LDZ (input) INTEGER
76 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
77 'V', LDZ >= max(1,N).
78
79 WORK (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
80 On exit, if INFO = 0, WORK(1) returns the 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 > 1, LWORK must
85 be at least N. If JOBZ = 'V' and N > 1, LWORK must be at least
86 2*N**2. If LWORK = -1, then a workspace query is assumed; the
87 routine only calculates the optimal sizes of the WORK, RWORK
88 and IWORK arrays, returns these values as the first entries of
89 the WORK, RWORK and IWORK arrays, and no error message related
90 to LWORK or LRWORK or LIWORK is issued by XERBLA.
91
92 RWORK (workspace/output) REAL array,
93 dimension (LRWORK) On exit, if INFO = 0, RWORK(1) returns the
94 optimal LRWORK.
95
96 LRWORK (input) INTEGER
97 The dimension of array RWORK. If N <= 1, LRWORK
98 must be at least 1. If JOBZ = 'N' and N > 1, LRWORK must be at
99 least N. If JOBZ = 'V' and N > 1, LRWORK must be at least 1 +
100 5*N + 2*N**2. If LRWORK = -1, then a workspace query is
101 assumed; the routine only calculates the optimal sizes of the
102 WORK, RWORK and IWORK arrays, returns these values as the first
103 entries of the WORK, RWORK and IWORK arrays, and no error mes‐
104 sage related to LWORK or LRWORK or LIWORK is issued by XERBLA.
105
106 IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
107 On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
108
109 LIWORK (input) INTEGER
110 The dimension of array IWORK. If JOBZ = 'N' or N <= 1, LIWORK
111 must be at least 1. If JOBZ = 'V' and N > 1, LIWORK must be at
112 least 3 + 5*N . If LIWORK = -1, then a workspace query is
113 assumed; the routine only calculates the optimal sizes of the
114 WORK, RWORK and IWORK arrays, returns these values as the first
115 entries of the WORK, RWORK and IWORK arrays, and no error mes‐
116 sage related to LWORK or LRWORK or LIWORK is issued by XERBLA.
117
118 INFO (output) INTEGER
119 = 0: successful exit.
120 < 0: if INFO = -i, the i-th argument had an illegal value.
121 > 0: if INFO = i, the algorithm failed to converge; i off-
122 diagonal elements of an intermediate tridiagonal form did not
123 converge to zero.
124
125
126
127 LAPACK driver routine (version 3.N2o)vember 2008 CHBEVD(1)