PLASMA  2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
void CORE_cgeqp3_larfg ( PLASMA_desc  A,
int  ii,
int  jj,
int  i,
int  j,
PLASMA_Complex32_t *  tau,
PLASMA_Complex32_t *  beta 
)

CORE_cgeqp3_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.)

Parameters
[in,out]ADescription 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]iiIndex of block row of A to start in.
[in]jjIndex of block column of A.
[in]iIndex of row within ii-th block row to start in.
[in]jIndex of column within jj-th block column.
[out]tauThe scalar tau.
[out]betaThe scalar beta.