PLASMA
2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
|
void CORE_zgeqp3_larfg | ( | PLASMA_desc | A, |
int | ii, | ||
int | jj, | ||
int | i, | ||
int | j, | ||
PLASMA_Complex64_t * | tau, | ||
PLASMA_Complex64_t * | beta | ||
) |
CORE_zgeqp3_larfg generates a Householder elementary reflector H, such that
H**H * x = [ beta ] and H**H * H = I. [ 0 ]
where alpha and beta are scalars, with beta real, and x is an n element vector. H is reperested in the form
H = I - tau * [ 1 ] * [ 1 v**H ], [ v ]
where tau is a scalar and v is an (n-1) element vector. If x[1:] = 0 and x[0] is real, then tau = 0 and H = I. Otherwise, 1 <= real(tau) <= 2 and abs(tau-1) <= 1.
Here, x = A[ ii*mb + i : m, jj*nb + j ]. That is, x is j-th column of the jj-th block-column of A, starting in the i-th row of the ii-th block-row of A, and going to the last row. Note that x spans multiple tiles of A.
This DIFFERS from LAPACK in that the 1.0 is stored explicitly in the top element of x and beta is stored separately. (Whereas in LAPACK, the 1.0 is implicit and beta is stored in the top element of x.)
[in,out] | A | Description of m by n matrix A. On entry, A[ ii*mb + i : m, jj*nb + j ] is the vector x. On exit, A[ ii*mb + i : m, jj*nb + j ] is overwritten with [ 1, v ]. |
[in] | ii | Index of block row of A to start in. |
[in] | jj | Index of block column of A. |
[in] | i | Index of row within ii-th block row to start in. |
[in] | j | Index of column within jj-th block column. |
[out] | tau | The scalar tau. |
[out] | beta | The scalar beta. |