1ZHBEVD(1)             LAPACK driver routine (version 3.2)            ZHBEVD(1)
2
3
4

NAME

6       ZHBEVD  - computes all the eigenvalues and, optionally, eigenvectors of
7       a complex Hermitian band matrix A
8

SYNOPSIS

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

PURPOSE

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       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

ARGUMENTS

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*16 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) DOUBLE PRECISION array, dimension (N)
67               If INFO = 0, the eigenvalues in ascending order.
68
69       Z       (output) COMPLEX*16 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*16 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) DOUBLE PRECISION 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                       ZHBEVD(1)
Impressum