1DSTEVD(1) LAPACK driver routine (version 3.2) DSTEVD(1)
2
3
4
6 DSTEVD - computes all eigenvalues and, optionally, eigenvectors of a
7 real symmetric tridiagonal matrix
8
10 SUBROUTINE DSTEVD( JOBZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, LIWORK,
11 INFO )
12
13 CHARACTER JOBZ
14
15 INTEGER INFO, LDZ, LIWORK, LWORK, N
16
17 INTEGER IWORK( * )
18
19 DOUBLE PRECISION D( * ), E( * ), WORK( * ), Z( LDZ, * )
20
22 DSTEVD computes all eigenvalues and, optionally, eigenvectors of a real
23 symmetric tridiagonal matrix. If eigenvectors are desired, it uses a
24 divide and conquer algorithm.
25 The divide and conquer algorithm makes very mild assumptions about
26 floating point arithmetic. It will work on machines with a guard digit
27 in add/subtract, or on those binary machines without guard digits which
28 subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could
29 conceivably fail on hexadecimal or decimal machines without guard dig‐
30 its, but we know of none.
31
33 JOBZ (input) CHARACTER*1
34 = 'N': Compute eigenvalues only;
35 = 'V': Compute eigenvalues and eigenvectors.
36
37 N (input) INTEGER
38 The order of the matrix. N >= 0.
39
40 D (input/output) DOUBLE PRECISION array, dimension (N)
41 On entry, the n diagonal elements of the tridiagonal matrix A.
42 On exit, if INFO = 0, the eigenvalues in ascending order.
43
44 E (input/output) DOUBLE PRECISION array, dimension (N-1)
45 On entry, the (n-1) subdiagonal elements of the tridiagonal
46 matrix A, stored in elements 1 to N-1 of E. On exit, the con‐
47 tents of E are destroyed.
48
49 Z (output) DOUBLE PRECISION array, dimension (LDZ, N)
50 If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
51 eigenvectors of the matrix A, with the i-th column of Z holding
52 the eigenvector associated with D(i). If JOBZ = 'N', then Z is
53 not referenced.
54
55 LDZ (input) INTEGER
56 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
57 'V', LDZ >= max(1,N).
58
59 WORK (workspace/output) DOUBLE PRECISION array,
60 dimension (LWORK) On exit, if INFO = 0, WORK(1) returns the
61 optimal LWORK.
62
63 LWORK (input) INTEGER
64 The dimension of the array WORK. If JOBZ = 'N' or N <= 1 then
65 LWORK must be at least 1. If JOBZ = 'V' and N > 1 then LWORK
66 must be at least ( 1 + 4*N + N**2 ). If LWORK = -1, then a
67 workspace query is assumed; the routine only calculates the
68 optimal sizes of the WORK and IWORK arrays, returns these val‐
69 ues as the first entries of the WORK and IWORK arrays, and no
70 error message related to LWORK or LIWORK is issued by XERBLA.
71
72 IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
73 On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
74
75 LIWORK (input) INTEGER
76 The dimension of the array IWORK. If JOBZ = 'N' or N <= 1
77 then LIWORK must be at least 1. If JOBZ = 'V' and N > 1 then
78 LIWORK must be at least 3+5*N. If LIWORK = -1, then a
79 workspace query is assumed; the routine only calculates the
80 optimal sizes of the WORK and IWORK arrays, returns these val‐
81 ues as the first entries of the WORK and IWORK arrays, and no
82 error message related to LWORK or LIWORK is issued by XERBLA.
83
84 INFO (output) INTEGER
85 = 0: successful exit
86 < 0: if INFO = -i, the i-th argument had an illegal value
87 > 0: if INFO = i, the algorithm failed to converge; i off-
88 diagonal elements of E did not converge to zero.
89
90
91
92 LAPACK driver routine (version 3.N2o)vember 2008 DSTEVD(1)