# ?lasd4

Computes the square root of the i-th updated eigenvalue of a positive symmetric rank-one modification to a positive diagonal matrix. Used by ?bdsdc.

## Syntax

call slasd4( n, i, d, z, delta, rho, sigma, work, info )

call dlasd4( n, i, d, z, delta, rho, sigma, work, info )

## Description

This routine 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*ZT`,

where the Euclidean norm of Z is equal to 1.The method consists of approximating the rational functions in the secular equation by simpler interpolating rational functions.

## Input Parameters

n

  INTEGER. The length of all arrays.

i

  INTEGER.

  The index of the eigenvalue to be computed. `1 ≤ i ≤ n`.

d

  REAL for slasd4

  DOUBLE PRECISION for dlasd4

  Array, DIMENSION (n).

  The original eigenvalues. They must be in order, `0 ≤ d(i) < d(j)` for `i < j`.

z

  REAL for slasd4

  DOUBLE PRECISION for dlasd4

  Array, DIMENSION (n).

  The components of the updating vector.

rho

  REAL for slasd4

  DOUBLE PRECISION for dlasd4

  The scalar in the symmetric updating formula.

work

  REAL for slasd4

  DOUBLE PRECISION for dlasd4

  Workspace array, DIMENSION (n ).

  If `n ≠ 1`, work contains (`d(j) + sigma_i`) in its j-th component.

  If `n = 1`, then `work( 1 ) = 1`.

## Output Parameters

delta

  REAL for slasd4

  DOUBLE PRECISION for dlasd4

  Array, DIMENSION (n).

  If `n ≠ 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.

sigma

  REAL for slasd4

  DOUBLE PRECISION for dlasd4

  The computed sigma_i, the i-th updated eigenvalue.

info

  INTEGER.

  = 0: successful exit

  > 0: If `info = 1`, the updating process failed.

Parent topic: Auxiliary Routines