# ?laed9

Used by sstedc/dstedc. Finds the roots of the secular equation and updates the eigenvectors. Used when the original matrix is dense.

## Syntax

call slaed9( k, kstart, kstop, n, d, q, ldq, rho, dlamda, w, s, lds, info )

call dlaed9( k, kstart, kstop, n, d, q, ldq, rho, dlamda, w, s, lds, info )

## Description

This routine finds the roots of the secular equation, as defined by the values in d, z, and rho, between kstart and kstop. It makes the appropriate calls to slaed4/dlaed4 and then stores the new matrix of eigenvectors for use in calculating the next level of z vectors.

## Input Parameters

k

  INTEGER. The number of terms in the rational function to be solved by slaed4/dlaed4 (`k ≥ 0`).

kstart, kstop

  INTEGER. The updated eigenvalues lambda(i),

  `kstart ≤ i ≤ kstop` are to be computed.

  `1 ≤ kstart ≤ kstop ≤ k`.

n

  INTEGER. The number of rows and columns in the Q matrix. `n ≥ k` (deflation may result in `n > k`).

q

  REAL for slaed9

  DOUBLE PRECISION for dlaed9.

  Workspace array, dimension (ldq, *).

  The second dimension of q must be at least `max(1, n)`.

ldq

  INTEGER. The first dimension of the array q; `ldq ≥ max(1, n)`.

rho

  REAL for slaed9

  DOUBLE PRECISION for dlaed9

  The value of the parameter in the rank one update equation. `rho ≥ 0` required.

dlamda, w

  REAL for slaed9

  DOUBLE PRECISION for dlaed9

  Arrays, dimension (k) each. The first k elements of the array dlamda(*) contain the old roots of the deflated updating problem. These are the poles of the secular equation.

  The first k elements of the array w(*) contain the components of the deflation-adjusted updating vector.

lds

  INTEGER. The first dimension of the output array s; `lds ≥ max(1, k)`.

## Output Parameters

d

  REAL for slaed9

  DOUBLE PRECISION for dlaed9

  Array, dimension (n). Elements in d(i) are not referenced for `1 ≤ i < kstart` or `kstop < i ≤ n`.

s

  REAL for slaed9

  DOUBLE PRECISION for dlaed9.

  Array, dimension (lds, *) .

  The second dimension of s must be at least `max(1, k)`. Will contain the eigenvectors of the repaired matrix which will be stored for subsequent z vector calculation and multiplied by the previously accumulated eigenvectors to update the system.

dlamda

  On exit, the value is modified to make sure all `dlamda(i) - dlamda(j)` can be computed with high relative accuracy, barring overflow and underflow.

w

  Destroyed on exit.

info

  INTEGER.

  If `info = 0`, the execution is successful.

  If `info = -i`, the i-th parameter had an illegal value. If `info = 1`, the eigenvalue did not converge.

Parent topic: Auxiliary Routines