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

NAME

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

FURTHER DETAILS

130       Based on contributions by
131          Jeff Rutter, Computer Science Division, University of California
132          at Berkeley, USA
133
134
135
136 LAPACK routine (version 3.2)    November 2008                       SLAED7(1)
Impressum