DLAED4(3f)

NAME
DLAED4 - compute the I-th updated eigenvalue of a symmetric rank-one modification to a diagonal matrix whose elements are given in the array d, and that D(i) < D(j) for i < j and that RHO > 0

SYNOPSIS

SUBROUTINE DLAED4(
    N, I, D, Z, DELTA, RHO, DLAM, INFO )

INTEGER
    I, INFO, N

DOUBLE
    PRECISION DLAM, RHO

DOUBLE
    PRECISION D( * ), DELTA( * ), Z( * )

PURPOSE
This subroutine computes the I-th updated eigenvalue of a symmetric rank-one modification to a diagonal matrix whose elements are given in the array d, and that no loss in generality. The rank-one modified system is thus
           diag( D ) + RHO * Z * Z_transpose.
where we assume the Euclidean norm of Z is 1.
The method consists of approximating the rational functions in the secular equation by simpler interpolating rational functions.

ARGUMENTS

N      (input) INTEGER
    The length of all arrays.

I      (input) INTEGER
    The index of the eigenvalue to be computed. 1 <= I <= N.

D      (input) DOUBLE PRECISION array, dimension (N)
    The original eigenvalues. It is assumed that they are in order, D(I) < D(J) for I < J.

Z      (input) DOUBLE PRECISION array, dimension (N)
    The components of the updating vector.

DELTA  (output) DOUBLE PRECISION array, dimension (N)
    If N .GT. 2, DELTA contains (D(j) - lambda_I) in its j-th component. If N = 1, then DELTA(1) = 1. If N = 2, see DLAED5 for detail. The vector DELTA contains the information necessary to construct the eigenvectors by DLAED3 and DLAED9.

RHO    (input) DOUBLE PRECISION
    The scalar in the symmetric updating formula.

DLAM   (output) DOUBLE PRECISION
    The computed lambda_I, the I-th updated eigenvalue.

INFO   (output) INTEGER
    = 0: successful exit
    > 0: if INFO = 1, the updating process failed.

PARAMETERS
Logical variable ORGATI (origin-at-i?) is used for distinguishing whether D(i) or D(i+1) is treated as the origin. ORGATI = .true. origin at i ORGATI = .false. origin at i+1 Logical variable SWTCH3 (switch-for-3-poles?) is for noting if we are working with THREE poles! MAXIT is the maximum number of iterations allowed for each eigenvalue. Further Details =============== Based on contributions by Ren-Cang Li, Computer Science Division, University of California at Berkeley, USA