laeda#
Functions
-
void slaeda(const INT n, const INT tlvls, const INT curlvl, const INT curpbm, INT *prmptr, INT *perm, INT *givptr, INT *givcol, f32 *givnum, f32 *Q, INT *qptr, f32 *Z, f32 *ztemp, INT *info)#
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
innThe dimension of the symmetric tridiagonal matrix. n >= 0.
intlvlsThe total number of merging levels in the overall divide and conquer tree.
incurlvlThe current level in the overall merge routine, 0 <= curlvl <= tlvls.
incurpbmThe current problem in the current level in the overall merge routine (counting from upper left to lower right).
inprmptrInteger 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.
inpermInteger array, dimension (N lg N). Contains the permutations (from deflation and sorting) to be applied to each eigenblock.
ingivptrInteger 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.
ingivcolInteger array, dimension (2, N lg N). Each pair of numbers indicates a pair of columns to take place in a Givens rotation.
ingivnumDouble precision array, dimension (2, N lg N). Each number indicates the S value to be used in the corresponding Givens rotation.
inQDouble precision array, dimension (N**2). Contains the square eigenblocks from previous levels, the starting positions for blocks are given by QPTR.
inqptrInteger 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.
outZDouble precision 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).
outztempDouble precision array, dimension (N).
outinfo= 0: successful exit.
< 0: if info = -i, the i-th argument had an illegal value.
void slaeda(
const INT n,
const INT tlvls,
const INT curlvl,
const INT curpbm,
INT* prmptr,
INT* perm,
INT* givptr,
INT* givcol,
f32* givnum,
f32* Q,
INT* qptr,
f32* Z,
f32* ztemp,
INT* info
);
Functions
-
void dlaeda(const INT n, const INT tlvls, const INT curlvl, const INT curpbm, INT *prmptr, INT *perm, INT *givptr, INT *givcol, f64 *givnum, f64 *Q, INT *qptr, f64 *Z, f64 *ztemp, INT *info)#
DLAEDA 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
innThe dimension of the symmetric tridiagonal matrix. n >= 0.
intlvlsThe total number of merging levels in the overall divide and conquer tree.
incurlvlThe current level in the overall merge routine, 0 <= curlvl <= tlvls.
incurpbmThe current problem in the current level in the overall merge routine (counting from upper left to lower right).
inprmptrInteger 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.
inpermInteger array, dimension (N lg N). Contains the permutations (from deflation and sorting) to be applied to each eigenblock.
ingivptrInteger 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.
ingivcolInteger array, dimension (2, N lg N). Each pair of numbers indicates a pair of columns to take place in a Givens rotation.
ingivnumDouble precision array, dimension (2, N lg N). Each number indicates the S value to be used in the corresponding Givens rotation.
inQDouble precision array, dimension (N**2). Contains the square eigenblocks from previous levels, the starting positions for blocks are given by QPTR.
inqptrInteger 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.
outZDouble precision 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).
outztempDouble precision array, dimension (N).
outinfo= 0: successful exit.
< 0: if info = -i, the i-th argument had an illegal value.
void dlaeda(
const INT n,
const INT tlvls,
const INT curlvl,
const INT curpbm,
INT* prmptr,
INT* perm,
INT* givptr,
INT* givcol,
f64* givnum,
f64* Q,
INT* qptr,
f64* Z,
f64* ztemp,
INT* info
);