LAEDA - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English
template<typename T>
void laeda(integer *n, integer *tlvls, integer *curlvl, integer *curpbm, integer *prmptr, integer *perm, integer *givptr, integer *givcol, float *givnum, float *q, integer *qptr, float *z, float *ztemp, integer *info)#

LAEDA used by sstedc. Computes the Z vector determining the rank-one

modification of the diagonal matrix. Used when the original matrix is dense.

Purpose:

 LAEDA 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[in]

    N is INTEGER

    The dimension of the symmetric tridiagonal matrix. N >= 0.

  • TLVLS[in]

    TLVLS is INTEGER

    The total number of merging levels in the overall divide and conquer tree.

  • CURLVL[in]

    CURLVL is INTEGER

    The current level in the overall merge routine, 0 <= curlvl <= tlvls.

  • CURPBM[in]

    CURPBM is INTEGER

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

  • PRMPTR[in]

    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[in]

    PERM is INTEGER array, dimension (N lg N)

    Contains the permutations (from deflation and sorting) to be applied to each eigenblock.

  • GIVPTR[in]

    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[in]

    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[in]

    GIVNUM is REAL array, dimension (2, N lg N)

    Each number indicates the S value to be used in the corresponding Givens rotation.

  • Q[in]

    Q is REAL array, dimension (N**2)

    Contains the square eigenblocks from previous levels, the starting positions for blocks are given by QPTR.

  • QPTR[in]

    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[out]

    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[out] ZTEMP is REAL array, dimension (N)

  • INFO[out]

    INFO is INTEGER

    = 0: successful exit.

    < 0: if INFO = -i, the i-th argument had an illegal value.