1SSBEVD(1) LAPACK driver routine (version 3.1) SSBEVD(1)
2
3
4
6 SSBEVD - all the eigenvalues and, optionally, eigenvectors of a real
7 symmetric band matrix A
8
10 SUBROUTINE SSBEVD( 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 REAL AB( LDAB, * ), W( * ), WORK( * ), Z( LDZ, * )
20
22 SSBEVD computes all the eigenvalues and, optionally, eigenvectors of a
23 real symmetric band matrix A. If eigenvectors are desired, it uses a
24 divide and conquer algorithm.
25
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
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) REAL array, dimension (LDAB, N)
51 On entry, the upper or lower triangle of the symmetric 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).
57
58 On exit, AB is overwritten by values generated during the
59 reduction to tridiagonal form. If UPLO = 'U', the first super‐
60 diagonal and the diagonal of the tridiagonal matrix T are
61 returned in rows KD and KD+1 of AB, and if UPLO = 'L', the
62 diagonal and first subdiagonal of T are returned in the first
63 two rows of AB.
64
65 LDAB (input) INTEGER
66 The leading dimension of the array AB. LDAB >= KD + 1.
67
68 W (output) REAL array, dimension (N)
69 If INFO = 0, the eigenvalues in ascending order.
70
71 Z (output) REAL array, dimension (LDZ, N)
72 If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
73 eigenvectors of the matrix A, with the i-th column of Z holding
74 the eigenvector associated with W(i). If JOBZ = 'N', then Z is
75 not referenced.
76
77 LDZ (input) INTEGER
78 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
79 'V', LDZ >= max(1,N).
80
81 WORK (workspace/output) REAL array,
82 dimension (LWORK) On exit, if INFO = 0, WORK(1) returns the
83 optimal LWORK.
84
85 LWORK (input) INTEGER
86 The dimension of the array WORK. IF N <= 1,
87 LWORK must be at least 1. If JOBZ = 'N' and N > 2, LWORK must
88 be at least 2*N. If JOBZ = 'V' and N > 2, LWORK must be at
89 least ( 1 + 5*N + 2*N**2 ).
90
91 If LWORK = -1, then a workspace query is assumed; the routine
92 only calculates the optimal sizes of the WORK and IWORK arrays,
93 returns these values as the first entries of the WORK and IWORK
94 arrays, and no error message related to LWORK or LIWORK is
95 issued by XERBLA.
96
97 IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
98 On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
99
100 LIWORK (input) INTEGER
101 The dimension of the array LIWORK. If JOBZ = 'N' or N <= 1,
102 LIWORK must be at least 1. If JOBZ = 'V' and N > 2, LIWORK
103 must be at least 3 + 5*N.
104
105 If LIWORK = -1, then a workspace query is assumed; the routine
106 only calculates the optimal sizes of the WORK and IWORK arrays,
107 returns these values as the first entries of the WORK and IWORK
108 arrays, and no error message related to LWORK or LIWORK is
109 issued by XERBLA.
110
111 INFO (output) INTEGER
112 = 0: successful exit
113 < 0: if INFO = -i, the i-th argument had an illegal value
114 > 0: if INFO = i, the algorithm failed to converge; i off-
115 diagonal elements of an intermediate tridiagonal form did not
116 converge to zero.
117
118
119
120 LAPACK driver routine (version 3.N1o)vember 2006 SSBEVD(1)