ESMF_DLAED4 Subroutine

subroutine ESMF_DLAED4(N, I, D, Z, DELTA, RHO, DLAM, INFO)

\brief \b ESMF_DLAED4 used by sstedc. Finds a single root of the secular equation. \htmlonly Download ESMF_DLAED4 + dependencies [TGZ] [ZIP] [TXT] \endhtmlonly \par Purpose:

\verbatim

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

       D(i) < D(j)  for  i < j

and that RHO > 0. This is arranged by the calling routine, and is 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. \endverbatim \param[in] N \verbatim N is INTEGER The length of all arrays. \endverbatim

\param[in] I \verbatim I is INTEGER The index of the eigenvalue to be computed. 1 <= I <= N. \endverbatim

\param[in] D \verbatim D is DOUBLE PRECISION array, dimension (N) The original eigenvalues. It is assumed that they are in order, D(I) < D(J) for I < J. \endverbatim

\param[in] Z \verbatim Z is DOUBLE PRECISION array, dimension (N) The components of the updating vector. \endverbatim

\param[out] DELTA \verbatim DELTA is 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 ESMF_DLAED5 for detail. The vector DELTA contains the information necessary to construct the eigenvectors by ESMF_DLAED3 and ESMF_DLAED9. \endverbatim

\param[in] RHO \verbatim RHO is DOUBLE PRECISION The scalar in the symmetric updating formula. \endverbatim

\param[out] DLAM \verbatim DLAM is DOUBLE PRECISION The computed lambda_I, the I-th updated eigenvalue. \endverbatim

\param[out] INFO \verbatim INFO is INTEGER = 0: successful exit > 0: if INFO = 1, the updating process failed. \endverbatim \par Internal Parameters:

\verbatim 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. \endverbatim \author Univ. of Tennessee \author Univ. of California Berkeley \author Univ. of Colorado Denver \author NAG Ltd. \date December 2016 \ingroup auxOTHERcomputational \par Contributors:

Ren-Cang Li, Computer Science Division, University of California
at Berkeley, USA

Arguments

Type IntentOptional Attributes Name
integer :: N
integer :: I
double precision :: D(*)
double precision :: Z(*)
double precision :: DELTA(*)
double precision :: RHO
double precision :: DLAM
integer :: INFO