LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
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.
Download SLAEDA + dependencies [TGZ] [ZIP] [TXT]
!> !> 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. !>
[in] | N | !> N is INTEGER !> The dimension of the symmetric tridiagonal matrix. N >= 0. !> |
[in] | TLVLS | !> TLVLS is INTEGER !> The total number of merging levels in the overall divide and !> conquer tree. !> |
[in] | CURLVL | !> CURLVL is INTEGER !> The current level in the overall merge routine, !> 0 <= curlvl <= tlvls. !> |
[in] | CURPBM | !> CURPBM is INTEGER !> The current problem in the current level in the overall !> merge routine (counting from upper left to lower right). !> |
[in] | 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. !> |
[in] | PERM | !> PERM is INTEGER array, dimension (N lg N) !> Contains the permutations (from deflation and sorting) to be !> applied to each eigenblock. !> |
[in] | 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. !> |
[in] | 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. !> |
[in] | GIVNUM | !> GIVNUM is REAL array, dimension (2, N lg N) !> Each number indicates the S value to be used in the !> corresponding Givens rotation. !> |
[in] | Q | !> Q is REAL array, dimension (N**2) !> Contains the square eigenblocks from previous levels, the !> starting positions for blocks are given by QPTR. !> |
[in] | 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. !> |
[out] | 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). !> |
[out] | ZTEMP | !> ZTEMP is REAL array, dimension (N) !> |
[out] | INFO | !> INFO is INTEGER !> = 0: successful exit. !> < 0: if INFO = -i, the i-th argument had an illegal value. !> |
Definition at line 162 of file slaeda.f.