1SSTEVD(1) LAPACK driver routine (version 3.1) SSTEVD(1)
2
3
4
6 SSTEVD - all eigenvalues and, optionally, eigenvectors of a real sym‐
7 metric tridiagonal matrix
8
10 SUBROUTINE SSTEVD( 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 REAL D( * ), E( * ), WORK( * ), Z( LDZ, * )
20
22 SSTEVD 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
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 N (input) INTEGER
40 The order of the matrix. N >= 0.
41
42 D (input/output) REAL array, dimension (N)
43 On entry, the n diagonal elements of the tridiagonal matrix A.
44 On exit, if INFO = 0, the eigenvalues in ascending order.
45
46 E (input/output) REAL array, dimension (N-1)
47 On entry, the (n-1) subdiagonal elements of the tridiagonal
48 matrix A, stored in elements 1 to N-1 of E. On exit, the con‐
49 tents of E are destroyed.
50
51 Z (output) REAL array, dimension (LDZ, N)
52 If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
53 eigenvectors of the matrix A, with the i-th column of Z holding
54 the eigenvector associated with D(i). If JOBZ = 'N', then Z is
55 not referenced.
56
57 LDZ (input) INTEGER
58 The leading dimension of the array Z. LDZ >= 1, and if JOBZ =
59 'V', LDZ >= max(1,N).
60
61 WORK (workspace/output) REAL array,
62 dimension (LWORK) On exit, if INFO = 0, WORK(1) returns the
63 optimal LWORK.
64
65 LWORK (input) INTEGER
66 The dimension of the array WORK. If JOBZ = 'N' or N <= 1 then
67 LWORK must be at least 1. If JOBZ = 'V' and N > 1 then LWORK
68 must be at least ( 1 + 4*N + N**2 ).
69
70 If LWORK = -1, then a workspace query is assumed; the routine
71 only calculates the optimal sizes of the WORK and IWORK arrays,
72 returns these values as the first entries of the WORK and IWORK
73 arrays, and no error message related to LWORK or LIWORK is
74 issued by XERBLA.
75
76 IWORK (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
77 On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
78
79 LIWORK (input) INTEGER
80 The dimension of the array IWORK. If JOBZ = 'N' or N <= 1
81 then LIWORK must be at least 1. If JOBZ = 'V' and N > 1 then
82 LIWORK must be at least 3+5*N.
83
84 If LIWORK = -1, then a workspace query is assumed; the routine
85 only calculates the optimal sizes of the WORK and IWORK arrays,
86 returns these values as the first entries of the WORK and IWORK
87 arrays, and no error message related to LWORK or LIWORK is
88 issued by XERBLA.
89
90 INFO (output) INTEGER
91 = 0: successful exit
92 < 0: if INFO = -i, the i-th argument had an illegal value
93 > 0: if INFO = i, the algorithm failed to converge; i off-
94 diagonal elements of E did not converge to zero.
95
96
97
98 LAPACK driver routine (version 3.N1o)vember 2006 SSTEVD(1)