Loading...
Searching...
No Matches

## dlasd4()

subroutine dlasd4 | ( | integer | n,
|  | integer | i,
|  | double precision, dimension( * ) | d,
|  | double precision, dimension( * ) | z,
|  | double precision, dimension( * ) | delta,
|  | double precision | rho,
|  | double precision | sigma,
|  | double precision, dimension( * ) | work,
|  | integer | info )

DLASD4 computes the square root of the i-th updated eigenvalue of a positive symmetric rank-one modification to a positive diagonal matrix. Used by dbdsdc.

Download DLASD4 + dependencies [TGZ] [ZIP] [TXT]

Purpose:

      !>
      !> This subroutine computes the square root of the I-th updated
      !> eigenvalue of a positive symmetric rank-one modification to
      !> a positive diagonal matrix whose entries are given as the squares
      !> of the corresponding entries in the array d, and that
      !>
      !>        0 <= 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 ) * 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.
      !>

Parameters

  [in]

  N

      !>          N is INTEGER
      !>         The length of all arrays.
      !>

  [in]

  I

      !>          I is INTEGER
      !>         The index of the eigenvalue to be computed.  1 <= I <= N.
      !>

  [in]

  D

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

  [in]

  Z

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

  [out]

  DELTA

      !>          DELTA is DOUBLE PRECISION array, dimension ( N )
      !>         If N .ne. 1, DELTA contains (D(j) - sigma_I) in its  j-th
      !>         component.  If N = 1, then DELTA(1) = 1.  The vector DELTA
      !>         contains the information necessary to construct the
      !>         (singular) eigenvectors.
      !>

  [in]

  RHO

      !>          RHO is DOUBLE PRECISION
      !>         The scalar in the symmetric updating formula.
      !>

  [out]

  SIGMA

      !>          SIGMA is DOUBLE PRECISION
      !>         The computed sigma_I, the I-th updated eigenvalue.
      !>

  [out]

  WORK

      !>          WORK is DOUBLE PRECISION array, dimension ( N )
      !>         If N .ne. 1, WORK contains (D(j) + sigma_I) in its  j-th
      !>         component.  If N = 1, then WORK( 1 ) = 1.
      !>

  [out]

  INFO

      !>          INFO is INTEGER
      !>         = 0:  successful exit
      !>         > 0:  if INFO = 1, the updating process failed.
      !>

Internal 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.
      !>

Author
  Univ. of Tennessee
  Univ. of California Berkeley
  Univ. of Colorado Denver
  NAG Ltd.

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