1SLAED7(1)                LAPACK routine (version 3.1)                SLAED7(1)
2
3
4

NAME

6       SLAED7  -  the updated eigensystem of a diagonal matrix after modifica‐
7       tion by a rank-one symmetric matrix
8

SYNOPSIS

10       SUBROUTINE SLAED7( ICOMPQ, N, QSIZ, TLVLS, CURLVL, CURPBM, D,  Q,  LDQ,
11                          INDXQ,  RHO,  CUTPNT,  QSTORE,  QPTR,  PRMPTR, PERM,
12                          GIVPTR, GIVCOL, GIVNUM, WORK, IWORK, INFO )
13
14           INTEGER        CURLVL, CURPBM, CUTPNT, ICOMPQ, INFO, LDQ, N,  QSIZ,
15                          TLVLS
16
17           REAL           RHO
18
19           INTEGER        GIVCOL( 2, * ), GIVPTR( * ), INDXQ( * ), IWORK( * ),
20                          PERM( * ), PRMPTR( * ), QPTR( * )
21
22           REAL           D( * ), GIVNUM( 2, * ), Q( LDQ, * ),  QSTORE(  *  ),
23                          WORK( * )
24

PURPOSE

26       SLAED7 computes the updated eigensystem of a diagonal matrix after mod‐
27       ification by a rank-one symmetric matrix. This routine is used only for
28       the  eigenproblem  which requires all eigenvalues and optionally eigen‐
29       vectors of a dense symmetric matrix that has been reduced to  tridiago‐
30       nal  form.  SLAED1 handles the case in which all eigenvalues and eigen‐
31       vectors of a symmetric tridiagonal matrix are desired.
32
33         T = Q(in) ( D(in) + RHO * Z*Z' ) Q'(in) = Q(out) * D(out) * Q'(out)
34
35          where Z = Q'u, u is a vector of length N with ones in the
36          CUTPNT and CUTPNT + 1 th elements and zeros elsewhere.
37
38          The eigenvectors of the original matrix are stored in Q, and the
39          eigenvalues are in D.  The algorithm consists of three stages:
40
41             The first stage consists of deflating the size of the problem
42             when there are multiple eigenvalues or if there is a zero in
43             the Z vector.  For each such occurence the dimension of the
44             secular equation problem is reduced by one.  This stage is
45             performed by the routine SLAED8.
46
47             The second stage consists of calculating the updated
48             eigenvalues. This is done by finding the roots of the secular
49             equation via the routine SLAED4 (as called by SLAED9).
50             This routine also calculates the eigenvectors of the current
51             problem.
52
53             The final stage consists of computing the updated eigenvectors
54             directly using the updated eigenvalues.  The eigenvectors for
55             the current problem are multiplied with the eigenvectors from
56             the overall problem.
57
58

ARGUMENTS

60       ICOMPQ  (input) INTEGER
61               = 0:  Compute eigenvalues only.
62               = 1:  Compute eigenvectors of original dense  symmetric  matrix
63               also.   On  entry,  Q  contains  the  orthogonal matrix used to
64               reduce the original matrix to tridiagonal form.
65
66       N      (input) INTEGER
67              The dimension of the symmetric tridiagonal matrix.  N >= 0.
68
69       QSIZ   (input) INTEGER
70              The dimension of the orthogonal matrix used to reduce  the  full
71              matrix to tridiagonal form.  QSIZ >= N if ICOMPQ = 1.
72
73       TLVLS  (input) INTEGER
74              The  total  number  of  merging levels in the overall divide and
75              conquer tree.
76
77              CURLVL (input) INTEGER The current level in  the  overall  merge
78              routine, 0 <= CURLVL <= TLVLS.
79
80              CURPBM  (input) INTEGER The current problem in the current level
81              in the overall merge routine (counting from upper left to  lower
82              right).
83
84       D      (input/output) REAL array, dimension (N)
85              On  entry,  the  eigenvalues of the rank-1-perturbed matrix.  On
86              exit, the eigenvalues of the repaired matrix.
87
88       Q      (input/output) REAL array, dimension (LDQ, N)
89              On entry, the eigenvectors of the rank-1-perturbed  matrix.   On
90              exit, the eigenvectors of the repaired tridiagonal matrix.
91
92       LDQ    (input) INTEGER
93              The leading dimension of the array Q.  LDQ >= max(1,N).
94
95       INDXQ  (output) INTEGER array, dimension (N)
96              The  permutation  which  will  reintegrate  the  subproblem just
97              solved back into sorted order, i.e., D( INDXQ( I = 1, N ) ) will
98              be in ascending order.
99
100       RHO    (input) REAL
101              The subdiagonal element used to create the rank-1 modification.
102
103              CUTPNT  (input) INTEGER Contains the location of the last eigen‐
104              value in the leading sub-matrix.  min(1,N) <= CUTPNT <= N.
105
106              QSTORE (input/output)  REAL  array,  dimension  (N**2+1)  Stores
107              eigenvectors  of  submatrices encountered during divide and con‐
108              quer, packed together. QPTR points to beginning of the submatri‐
109              ces.
110
111       QPTR   (input/output) INTEGER array, dimension (N+2)
112              List  of  indices pointing to beginning of submatrices stored in
113              QSTORE. The submatrices are numbered starting at the bottom left
114              of the divide and conquer tree, from left to right and bottom to
115              top.
116
117              PRMPTR (input) INTEGER array, dimension (N lg N) Contains a list
118              of  pointers  which indicate where in PERM a level's permutation
119              is stored.  PRMPTR(i+1) - PRMPTR(i) indicates the  size  of  the
120              permutation and also the size of the full, non-deflated problem.
121
122       PERM   (input) INTEGER array, dimension (N lg N)
123              Contains  the  permutations  (from  deflation and sorting) to be
124              applied to each eigenblock.
125
126              GIVPTR (input) INTEGER array, dimension (N lg N) Contains a list
127              of  pointers  which  indicate  where  in GIVCOL a level's Givens
128              rotations are stored.  GIVPTR(i+1)  -  GIVPTR(i)  indicates  the
129              number of Givens rotations.
130
131              GIVCOL (input) INTEGER array, dimension (2, N lg N) Each pair of
132              numbers indicates a pair of columns to take place  in  a  Givens
133              rotation.
134
135              GIVNUM  (input)  REAL  array,  dimension (2, N lg N) Each number
136              indicates the S value to be used  in  the  corresponding  Givens
137              rotation.
138
139       WORK   (workspace) REAL array, dimension (3*N+QSIZ*N)
140
141       IWORK  (workspace) INTEGER array, dimension (4*N)
142
143       INFO   (output) INTEGER
144              = 0:  successful exit.
145              < 0:  if INFO = -i, the i-th argument had an illegal value.
146              > 0:  if INFO = 1, an eigenvalue did not converge
147

FURTHER DETAILS

149       Based on contributions by
150          Jeff Rutter, Computer Science Division, University of California
151          at Berkeley, USA
152
153
154
155
156 LAPACK routine (version 3.1)    November 2006                       SLAED7(1)
Impressum