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

NAME

6       ZLAED7  -  computes  the updated eigensystem of a diagonal matrix after
7       modification 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         T = Q(in) ( D(in) + RHO * Z*Z' ) Q'(in) = Q(out) * D(out) * Q'(out)
33         where Z = Q'u, u is a vector of length N with ones in the
34         CUTPNT and CUTPNT + 1 th elements and zeros elsewhere.
35          The eigenvectors of the original matrix are stored in Q, and the
36          eigenvalues are in D.  The algorithm consists of three stages:
37             The first stage consists of deflating the size of the problem
38             when there are multiple eigenvalues or if there is a zero in
39             the Z vector.  For each such occurence the dimension of the
40             secular equation problem is reduced by one.  This stage is
41             performed by the routine DLAED2.
42             The second stage consists of calculating the updated
43             eigenvalues. This is done by finding the roots of the secular
44             equation via the routine DLAED4 (as called by SLAED3).
45             This routine also calculates the eigenvectors of the current
46             problem.
47             The final stage consists of computing the updated eigenvectors
48             directly using the updated eigenvalues.  The eigenvectors for
49             the current problem are multiplied with the eigenvectors from
50             the overall problem.
51

ARGUMENTS

53       N      (input) INTEGER
54              The dimension of the symmetric  tridiagonal  matrix.   N  >=  0.
55              CUTPNT  (input) INTEGER Contains the location of the last eigen‐
56              value in the leading sub-matrix.  min(1,N) <= CUTPNT <= N.
57
58       QSIZ   (input) INTEGER
59              The dimension of the unitary matrix  used  to  reduce  the  full
60              matrix to tridiagonal form.  QSIZ >= N.
61
62       TLVLS  (input) INTEGER
63              The  total  number  of  merging levels in the overall divide and
64              conquer tree.  CURLVL (input) INTEGER The current level  in  the
65              overall  merge  routine,  0  <= curlvl <= tlvls.  CURPBM (input)
66              INTEGER The current problem in the current level in the  overall
67              merge routine (counting from upper left to lower right).
68
69       D      (input/output) DOUBLE PRECISION array, dimension (N)
70              On  entry,  the  eigenvalues of the rank-1-perturbed matrix.  On
71              exit, the eigenvalues of the repaired matrix.
72
73       Q      (input/output) COMPLEX*16 array, dimension (LDQ,N)
74              On entry, the eigenvectors of the rank-1-perturbed  matrix.   On
75              exit, the eigenvectors of the repaired tridiagonal matrix.
76
77       LDQ    (input) INTEGER
78              The leading dimension of the array Q.  LDQ >= max(1,N).
79
80       RHO    (input) DOUBLE PRECISION
81              Contains the subdiagonal element used to create the rank-1 modi‐
82              fication.
83
84       INDXQ  (output) INTEGER array, dimension (N)
85              This contains the permutation which will  reintegrate  the  sub‐
86              problem just solved back into sorted order, ie. D( INDXQ( I = 1,
87              N ) ) will be in ascending order.
88
89       IWORK  (workspace) INTEGER array, dimension (4*N)
90
91       RWORK  (workspace) DOUBLE PRECISION array,
92              dimension (3*N+2*QSIZ*N)
93
94       WORK   (workspace) COMPLEX*16 array, dimension (QSIZ*N)
95              QSTORE (input/output) DOUBLE PRECISION array, dimension (N**2+1)
96              Stores eigenvectors of submatrices encountered during divide and
97              conquer, packed together. QPTR points to beginning of the subma‐
98              trices.
99
100       QPTR   (input/output) INTEGER array, dimension (N+2)
101              List  of  indices pointing to beginning of submatrices stored in
102              QSTORE. The submatrices are numbered starting at the bottom left
103              of the divide and conquer tree, from left to right and bottom to
104              top.  PRMPTR (input) INTEGER array, dimension (N lg N)  Contains
105              a list of pointers which indicate where in PERM a level's permu‐
106              tation is stored.  PRMPTR(i+1) - PRMPTR(i) indicates the size of
107              the  permutation  and  also  the  size of the full, non-deflated
108              problem.
109
110       PERM   (input) INTEGER array, dimension (N lg N)
111              Contains the permutations (from deflation  and  sorting)  to  be
112              applied  to  each  eigenblock.   GIVPTR  (input)  INTEGER array,
113              dimension (N lg N) Contains a list of  pointers  which  indicate
114              where   in   GIVCOL  a  level's  Givens  rotations  are  stored.
115              GIVPTR(i+1) - GIVPTR(i) indicates the  number  of  Givens  rota‐
116              tions.  GIVCOL (input) INTEGER array, dimension (2, N lg N) Each
117              pair of numbers indicates a pair of columns to take place  in  a
118              Givens  rotation.  GIVNUM (input) DOUBLE PRECISION array, dimen‐
119              sion (2, N lg N) Each number indicates the S value to be used in
120              the corresponding Givens rotation.
121
122       INFO   (output) INTEGER
123              = 0:  successful exit.
124              < 0:  if INFO = -i, the i-th argument had an illegal value.
125              > 0:  if INFO = 1, an eigenvalue did not converge
126
127
128
129 LAPACK routine (version 3.2)    November 2008                       ZLAED7(1)
Impressum