PLASMA
Parallel Linear Algebra Software for Multicore Architectures
unmlq: Apply Householder reflectors from LQ to a tile

Functions

 __attribute__ ((weak))
 

Detailed Description

Function Documentation

__attribute__ ( (weak)  )

Overwrites the general complex m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = Plasma_ConjTrans Q^H * C C * Q^H

where Q is a unitary matrix defined as the product of k elementary reflectors

\[ Q = H(k) . . . H(2) H(1) \]

as returned by core_cgelqt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^H from the Left;
  • PlasmaRight : apply Q or Q^H from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • Plasma_ConjTrans : Transpose, apply Q^H.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,m) if SIDE = PlasmaLeft, (lda,n) if SIDE = PlasmaRight, The i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_cgelqt in the first k rows of its array argument A.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^H*C or C*Q^H or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-m if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,n) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general complex m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = PlasmaTrans Q^T * C C * Q^T

where Q is a orthogonal matrix defined as the product of k elementary reflectors

\[ Q = H(k) . . . H(2) H(1) \]

as returned by core_dgelqt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^T from the Left;
  • PlasmaRight : apply Q or Q^T from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • PlasmaTrans : Transpose, apply Q^T.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,m) if SIDE = PlasmaLeft, (lda,n) if SIDE = PlasmaRight, The i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_dgelqt in the first k rows of its array argument A.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^T*C or C*Q^T or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-m if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,n) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general complex m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = PlasmaTrans Q^T * C C * Q^T

where Q is a orthogonal matrix defined as the product of k elementary reflectors

\[ Q = H(k) . . . H(2) H(1) \]

as returned by core_sgelqt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^T from the Left;
  • PlasmaRight : apply Q or Q^T from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • PlasmaTrans : Transpose, apply Q^T.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,m) if SIDE = PlasmaLeft, (lda,n) if SIDE = PlasmaRight, The i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_sgelqt in the first k rows of its array argument A.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^T*C or C*Q^T or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-m if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,n) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general complex m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = Plasma_ConjTrans Q^H * C C * Q^H

where Q is a unitary matrix defined as the product of k elementary reflectors

\[ Q = H(k) . . . H(2) H(1) \]

as returned by core_zgelqt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^H from the Left;
  • PlasmaRight : apply Q or Q^H from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • Plasma_ConjTrans : Transpose, apply Q^H.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,m) if SIDE = PlasmaLeft, (lda,n) if SIDE = PlasmaRight, The i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_zgelqt in the first k rows of its array argument A.
[in]ldaThe leading dimension of the array A. lda >= max(1,k).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^H*C or C*Q^H or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-m if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,n) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value