# slaeda.f - Man Page

## Synopsis

### Functions/Subroutines

subroutine **slaeda** (**N**, TLVLS, CURLVL, CURPBM, PRMPTR, PERM, GIVPTR, GIVCOL, GIVNUM, Q, QPTR, Z, ZTEMP, INFO)**SLAEDA** used by sstedc. Computes the Z vector determining the rank-one modification of the diagonal matrix. Used when the original matrix is dense.

## Function/Subroutine Documentation

### subroutine slaeda (integer N, integer TLVLS, integer CURLVL, integer CURPBM, integer, dimension( * ) PRMPTR, integer, dimension( * ) PERM, integer, dimension( * ) GIVPTR, integer, dimension( 2, * ) GIVCOL, real, dimension( 2, * ) GIVNUM, real, dimension( * ) Q, integer, dimension( * ) QPTR, real, dimension( * ) Z, real, dimension( * ) ZTEMP, integer INFO)

**SLAEDA** used by sstedc. Computes the Z vector determining the rank-one modification of the diagonal matrix. Used when the original matrix is dense.

**Purpose:**

SLAEDA computes the Z vector corresponding to the merge step in the CURLVLth step of the merge process with TLVLS steps for the CURPBMth problem.

**Parameters:***N*N is INTEGER The dimension of the symmetric tridiagonal matrix. N >= 0.

*TLVLS*TLVLS is INTEGER The total number of merging levels in the overall divide and conquer tree.

*CURLVL*CURLVL is INTEGER The current level in the overall merge routine, 0 <= curlvl <= tlvls.

*CURPBM*CURPBM is INTEGER The current problem in the current level in the overall merge routine (counting from upper left to lower right).

*PRMPTR*PRMPTR is INTEGER array, dimension (N lg N) Contains a list of pointers which indicate where in PERM a level's permutation is stored. PRMPTR(i+1) - PRMPTR(i) indicates the size of the permutation and incidentally the size of the full, non-deflated problem.

*PERM*PERM is INTEGER array, dimension (N lg N) Contains the permutations (from deflation and sorting) to be applied to each eigenblock.

*GIVPTR*GIVPTR is INTEGER array, dimension (N lg N) Contains a list of pointers which indicate where in GIVCOL a level's Givens rotations are stored. GIVPTR(i+1) - GIVPTR(i) indicates the number of Givens rotations.

*GIVCOL*GIVCOL is INTEGER array, dimension (2, N lg N) Each pair of numbers indicates a pair of columns to take place in a Givens rotation.

*GIVNUM*GIVNUM is REAL array, dimension (2, N lg N) Each number indicates the S value to be used in the corresponding Givens rotation.

*Q*Q is REAL array, dimension (N**2) Contains the square eigenblocks from previous levels, the starting positions for blocks are given by QPTR.

*QPTR*QPTR is INTEGER array, dimension (N+2) Contains a list of pointers which indicate where in Q an eigenblock is stored. SQRT( QPTR(i+1) - QPTR(i) ) indicates the size of the block.

*Z*Z is REAL array, dimension (N) On output this vector contains the updating vector (the last row of the first sub-eigenvector matrix and the first row of the second sub-eigenvector matrix).

*ZTEMP*ZTEMP is REAL array, dimension (N)

*INFO*INFO is INTEGER = 0: successful exit. < 0: if INFO = -i, the i-th argument had an illegal value.

**Author:**Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

**Date:**December 2016

**Contributors:**Jeff Rutter, Computer Science Division, University of California at Berkeley, USA

Definition at line 168 of file slaeda.f.

## Author

Generated automatically by Doxygen for LAPACK from the source code.

## Referenced By

The man page slaeda(3) is an alias of slaeda.f(3).