PLASMA 2.8.0 PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures

- Main Page
- Modules
- Data Types List

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] | 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.