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

NAME

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

SYNOPSIS

10       SUBROUTINE ZLAED7( N, CUTPNT, QSIZ, TLVLS, CURLVL, CURPBM, D,  Q,  LDQ,
11                          RHO, INDXQ, QSTORE, QPTR, PRMPTR, PERM, GIVPTR, GIV‐
12                          COL, GIVNUM, WORK, RWORK, IWORK, INFO )
13
14           INTEGER        CURLVL, CURPBM, CUTPNT, INFO, LDQ, N, QSIZ, TLVLS
15
16           DOUBLE         PRECISION RHO
17
18           INTEGER        GIVCOL( 2, * ), GIVPTR( * ), INDXQ( * ), IWORK( * ),
19                          PERM( * ), PRMPTR( * ), QPTR( * )
20
21           DOUBLE         PRECISION  D(  *  ),  GIVNUM(  2,  * ), QSTORE( * ),
22                          RWORK( * )
23
24           COMPLEX*16     Q( LDQ, * ), WORK( * )
25

PURPOSE

27       ZLAED7 computes the updated eigensystem of a diagonal matrix after mod‐
28       ification by a rank-one symmetric matrix. This routine is used only for
29       the eigenproblem which requires all eigenvalues and  optionally  eigen‐
30       vectors  of a dense or banded Hermitian matrix that has been reduced to
31       tridiagonal form.
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 DLAED2.
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 DLAED4 (as called by SLAED3).
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       N      (input) INTEGER
61              The dimension of the symmetric tridiagonal matrix.  N >= 0.
62
63              CUTPNT (input) INTEGER Contains the location of the last  eigen‐
64              value in the leading sub-matrix.  min(1,N) <= CUTPNT <= N.
65
66       QSIZ   (input) INTEGER
67              The  dimension  of  the  unitary  matrix used to reduce the full
68              matrix to tridiagonal form.  QSIZ >= N.
69
70       TLVLS  (input) INTEGER
71              The total number of merging levels in  the  overall  divide  and
72              conquer tree.
73
74              CURLVL  (input)  INTEGER  The current level in the overall merge
75              routine, 0 <= curlvl <= tlvls.
76
77              CURPBM (input) INTEGER The current problem in the current  level
78              in  the overall merge routine (counting from upper left to lower
79              right).
80
81       D      (input/output) DOUBLE PRECISION array, dimension (N)
82              On entry, the eigenvalues of the  rank-1-perturbed  matrix.   On
83              exit, the eigenvalues of the repaired matrix.
84
85       Q      (input/output) COMPLEX*16 array, dimension (LDQ,N)
86              On  entry,  the eigenvectors of the rank-1-perturbed matrix.  On
87              exit, the eigenvectors of the repaired tridiagonal matrix.
88
89       LDQ    (input) INTEGER
90              The leading dimension of the array Q.  LDQ >= max(1,N).
91
92       RHO    (input) DOUBLE PRECISION
93              Contains the subdiagonal element used to create the rank-1 modi‐
94              fication.
95
96       INDXQ  (output) INTEGER array, dimension (N)
97              This  contains  the  permutation which will reintegrate the sub‐
98              problem just solved back into sorted order, ie. D( INDXQ( I = 1,
99              N ) ) will be in ascending order.
100
101       IWORK  (workspace) INTEGER array, dimension (4*N)
102
103       RWORK  (workspace) DOUBLE PRECISION array,
104              dimension (3*N+2*QSIZ*N)
105
106       WORK   (workspace) COMPLEX*16 array, dimension (QSIZ*N)
107
108              QSTORE (input/output) DOUBLE PRECISION array, dimension (N**2+1)
109              Stores eigenvectors of submatrices encountered during divide and
110              conquer, packed together. QPTR points to beginning of the subma‐
111              trices.
112
113       QPTR   (input/output) INTEGER array, dimension (N+2)
114              List of indices pointing to beginning of submatrices  stored  in
115              QSTORE. The submatrices are numbered starting at the bottom left
116              of the divide and conquer tree, from left to right and bottom to
117              top.
118
119              PRMPTR (input) INTEGER array, dimension (N lg N) Contains a list
120              of pointers which indicate where in PERM a  level's  permutation
121              is  stored.   PRMPTR(i+1)  - PRMPTR(i) indicates the size of the
122              permutation and also the size of the full, non-deflated problem.
123
124       PERM   (input) INTEGER array, dimension (N lg N)
125              Contains the permutations (from deflation  and  sorting)  to  be
126              applied to each eigenblock.
127
128              GIVPTR (input) INTEGER array, dimension (N lg N) Contains a list
129              of pointers which indicate where  in  GIVCOL  a  level's  Givens
130              rotations  are  stored.   GIVPTR(i+1)  - GIVPTR(i) indicates the
131              number of Givens rotations.
132
133              GIVCOL (input) INTEGER array, dimension (2, N lg N) Each pair of
134              numbers  indicates  a  pair of columns to take place in a Givens
135              rotation.
136
137              GIVNUM (input) DOUBLE PRECISION array, dimension  (2,  N  lg  N)
138              Each  number indicates the S value to be used in the correspond‐
139              ing Givens rotation.
140
141       INFO   (output) INTEGER
142              = 0:  successful exit.
143              < 0:  if INFO = -i, the i-th argument had an illegal value.
144              > 0:  if INFO = 1, an eigenvalue did not converge
145
146
147
148 LAPACK routine (version 3.1)    November 2006                       ZLAED7(1)
Impressum