PLASMA
2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
|
void CORE_dlaed2_compressq | ( | int | n, |
int | n1, | ||
const int * | INDX, | ||
const int * | ctot, | ||
const double * | Q, | ||
int | LDQ, | ||
double * | Q2, | ||
int | start, | ||
int | end | ||
) |
CORE_dlaed2_compressq - Copy a set of vectors from the Q matrix into the compressed Q2 matrix. Q2 matrix is oragnized as follow:
Q2 = ( q1_1 mix1 0 def1 ) ( 0 mix2 q2 def2 ) and stored in memory by columns in the order (q1_1, mix1, mix2, q2, def), with q1 and q2 the non deflated values, of the two subproblems, (mix1, mix2) the mixed eigenvalues and def the deflated eiegnvalues.
Rk: Note that here we follow the same order that LAPACK dlaed2 routine, so the copy from Q to Q2 is done such that Q2 is filled in a continuous manner.
[in] | n | n specifies the dimension of the symmetric tridiagonal matrix |
[in] | n1 | n1 specifies the location of the last eigenvalue of the first subproblem min(1, n) <= n1 <= n/2 |
[in] | start | start specifies the first sorted column index to be considered by this kernel. |
[in] | end | end specifies the last column index to be considered by this kernel. start <= end <= n. |
[in] | INDX | The permutation array used to sort Q into Q2. Array of dimension n, but only INDX[i] for start <= i < end are referenced. |
[in] | ctot | ctot[i] is the number of columns of type i, as defined with INDX. 0- number of colums with non-zero in the upper half only 1- number of dense colums 2- number of colums with non-zero in the lower half only 3- number of deflated columns |
[in] | Q | On entry, Q contains the eigenvectors in the uncompressed form. WARNING: Q is the pointer to the full matrix even if only a subset of vectors will be extract. |
[in] | LDQ | LDQ specifies the leading dimension of Q |
[out] | Q2 | On exit, columns start to end from Q2 stores the eigenvectors in the compressed form and sorted by type. WARNING: Q2 is the pointer to the full matrix even if only columns start to end are touched. |