1CSTEGR(1)         LAPACK computational routine (version 3.2)         CSTEGR(1)
2
3
4

NAME

6       CSTEGR - computes selected eigenvalues and, optionally, eigenvectors of
7       a real symmetric tridiagonal matrix T
8

SYNOPSIS

10       SUBROUTINE CSTEGR( JOBZ, RANGE, N, D, E, VL, VU, IL, IU, ABSTOL, M,  W,
11                          Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, LIWORK, INFO )
12
13           IMPLICIT       NONE
14
15           CHARACTER      JOBZ, RANGE
16
17           INTEGER        IL, INFO, IU, LDZ, LIWORK, LWORK, M, N
18
19           REAL           ABSTOL, VL, VU
20
21           INTEGER        ISUPPZ( * ), IWORK( * )
22
23           REAL           D( * ), E( * ), W( * ), WORK( * )
24
25           COMPLEX        Z( LDZ, * )
26

PURPOSE

28       CSTEGR computes selected eigenvalues and, optionally, eigenvectors of a
29       real symmetric tridiagonal matrix T. Any such unreduced  matrix  has  a
30       well  defined  set  of  pairwise different real eigenvalues, the corre‐
31       sponding real eigenvectors are pairwise orthogonal.
32       The spectrum may be computed either completely or partially by specify‐
33       ing  either  an  interval  (VL,VU]  or a range of indices IL:IU for the
34       desired eigenvalues.
35       CSTEGR is a compatability wrapper around the improved  CSTEMR  routine.
36       See SSTEMR for further details.
37       One  important  change  is that the ABSTOL parameter no longer provides
38       any benefit and hence is no longer used.
39       Note : CSTEGR and CSTEMR work only on machines  which  follow  IEEE-754
40       floating-point standard in their handling of infinities and NaNs.  Nor‐
41       mal execution may create these exceptiona values and  hence  may  abort
42       due  to a floating point exception in environments which do not conform
43       to the IEEE-754 standard.
44

ARGUMENTS

46       JOBZ    (input) CHARACTER*1
47               = 'N':  Compute eigenvalues only;
48               = 'V':  Compute eigenvalues and eigenvectors.
49
50       RANGE   (input) CHARACTER*1
51               = 'A': all eigenvalues will be found.
52               = 'V': all eigenvalues in the half-open interval  (VL,VU]  will
53               be  found.   = 'I': the IL-th through IU-th eigenvalues will be
54               found.
55
56       N       (input) INTEGER
57               The order of the matrix.  N >= 0.
58
59       D       (input/output) REAL array, dimension (N)
60               On entry, the N diagonal elements of the tridiagonal matrix  T.
61               On exit, D is overwritten.
62
63       E       (input/output) REAL array, dimension (N)
64               On  entry,  the  (N-1)  subdiagonal elements of the tridiagonal
65               matrix T in elements 1 to N-1 of E. E(N) need  not  be  set  on
66               input,  but  is  used  internally  as workspace.  On exit, E is
67               overwritten.
68
69       VL      (input) REAL
70               VU      (input) REAL If RANGE='V', the lower and  upper  bounds
71               of  the  interval to be searched for eigenvalues. VL < VU.  Not
72               referenced if RANGE = 'A' or 'I'.
73
74       IL      (input) INTEGER
75               IU      (input) INTEGER If RANGE='I', the indices (in ascending
76               order)  of the smallest and largest eigenvalues to be returned.
77               1 <= IL <= IU <= N, if N > 0.  Not referenced if RANGE = 'A' or
78               'V'.
79
80       ABSTOL  (input) REAL
81               Unused.   Was  the  absolute  error tolerance for the eigenval‐
82               ues/eigenvectors in previous versions.
83
84       M       (output) INTEGER
85               The total number of eigenvalues found.  0 <= M <= N.  If  RANGE
86               = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
87
88       W       (output) REAL array, dimension (N)
89               The  first  M  elements  contain  the  selected  eigenvalues in
90               ascending order.
91
92       Z       (output) COMPLEX array, dimension (LDZ, max(1,M) )
93               If JOBZ = 'V', and if INFO = 0, then the first M columns  of  Z
94               contain  the  orthonormal  eigenvectors  of the matrix T corre‐
95               sponding to the selected eigenvalues, with the i-th column of Z
96               holding  the  eigenvector associated with W(i).  If JOBZ = 'N',
97               then Z is not referenced.  Note: the user must ensure  that  at
98               least  max(1,M) columns are supplied in the array Z; if RANGE =
99               'V', the exact value of M is not known in advance and an  upper
100               bound must be used.  Supplying N columns is always safe.
101
102       LDZ     (input) INTEGER
103               The  leading dimension of the array Z.  LDZ >= 1, and if JOBZ =
104               'V', then LDZ >= max(1,N).
105
106       ISUPPZ  (output) INTEGER ARRAY, dimension ( 2*max(1,M) )
107               The support of the eigenvectors in Z, i.e., the  indices  indi‐
108               cating the nonzero elements in Z. The i-th computed eigenvector
109               is nonzero only in elements ISUPPZ( 2*i-1 ) through ISUPPZ( 2*i
110               ).  This  is  relevant  in  the  case when the matrix is split.
111               ISUPPZ is only accessed when JOBZ is 'V' and N > 0.
112
113       WORK    (workspace/output) REAL array, dimension (LWORK)
114               On exit, if INFO = 0, WORK(1) returns the optimal (and minimal)
115               LWORK.
116
117       LWORK   (input) INTEGER
118               The dimension of the array WORK. LWORK >= max(1,18*N) if JOBZ =
119               'V', and LWORK >= max(1,12*N) if JOBZ = 'N'.  If  LWORK  =  -1,
120               then  a workspace query is assumed; the routine only calculates
121               the optimal size of the WORK array, returns this value  as  the
122               first  entry of the WORK array, and no error message related to
123               LWORK is issued by XERBLA.
124
125       IWORK   (workspace/output) INTEGER array, dimension (LIWORK)
126               On exit, if INFO = 0, IWORK(1) returns the optimal LIWORK.
127
128       LIWORK  (input) INTEGER
129               The dimension of the array IWORK.  LIWORK >= max(1,10*N) if the
130               eigenvectors  are desired, and LIWORK >= max(1,8*N) if only the
131               eigenvalues are to  be  computed.   If  LIWORK  =  -1,  then  a
132               workspace  query  is  assumed;  the routine only calculates the
133               optimal size of the IWORK array,  returns  this  value  as  the
134               first entry of the IWORK array, and no error message related to
135               LIWORK is issued by XERBLA.
136
137       INFO    (output) INTEGER
138               On exit, INFO = 0:  successful exit
139               < 0:  if INFO = -i, the i-th argument had an illegal value
140               > 0:  if INFO = 1X, internal error in SLARRE,  if  INFO  =  2X,
141               internal  error  in CLARRV.  Here, the digit X = ABS( IINFO ) <
142               10, where IINFO is the nonzero error code returned by SLARRE or
143               CLARRV, respectively.
144

FURTHER DETAILS

146       Based on contributions by
147          Inderjit Dhillon, IBM Almaden, USA
148          Osni Marques, LBNL/NERSC, USA
149          Christof Voemel, LBNL/NERSC, USA
150
151
152
153 LAPACK computational routine (verNsoivoenmb3e.r2)2008                       CSTEGR(1)
Impressum