PLASMA
Parallel Linear Algebra Software for Multicore Architectures
tsmqr: Apply Householder reflectors from QR to a rectangular matrix of two tiles

Functions

 __attribute__ ((weak))
 

Detailed Description

Function Documentation

__attribute__ ( (weak)  )

Overwrites the general m1-by-n1 tile A1 and m2-by-n2 tile A2 with

                          side = PlasmaLeft        side = PlasmaRight

trans = PlasmaNoTrans Q * | A1 | | A1 A2 | * Q | A2 |

trans = Plasma_ConjTrans Q^H * | A1 | | A1 A2 | * Q^H | A2 |

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

Q = H(1) H(2) . . . H(k)

as returned by core_ctsqrt.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^H from the Left;
  • PlasmaRight : apply Q or Q^H from the Right.
[in]trans
  • PlasmaNoTrans : Apply Q;
  • Plasma_ConjTrans : Apply Q^H.
[in]m1The number of rows of the tile A1. m1 >= 0.
[in]n1The number of columns of the tile A1. n1 >= 0.
[in]m2The number of rows of the tile A2. m2 >= 0. m2 = m1 if side == PlasmaRight.
[in]n2The number of columns of the tile A2. n2 >= 0. n2 = n1 if side == PlasmaLeft.
[in]kThe number of elementary reflectors whose product defines the matrix Q.
[in]ibThe inner-blocking size. ib >= 0.
[in,out]A1On entry, the m1-by-n1 tile A1. On exit, A1 is overwritten by the application of Q.
[in]lda1The leading dimension of the array A1. lda1 >= max(1,m1).
[in,out]A2On entry, the m2-by-n2 tile A2. On exit, A2 is overwritten by the application of Q.
[in]lda2The leading dimension of the tile A2. lda2 >= max(1,m2).
[in]VThe i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_CTSQRT in the first k columns of its array argument V.
[in]ldvThe leading dimension of the array V. ldv >= 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.
workAuxiliary workspace array of length ldwork-by-n1 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,m1) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general m1-by-n1 tile A1 and m2-by-n2 tile A2 with

                          side = PlasmaLeft        side = PlasmaRight

trans = PlasmaNoTrans Q * | A1 | | A1 A2 | * Q | A2 |

trans = PlasmaTrans Q^T * | A1 | | A1 A2 | * Q^T | A2 |

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

Q = H(1) H(2) . . . H(k)

as returned by core_dtsqrt.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^T from the Left;
  • PlasmaRight : apply Q or Q^T from the Right.
[in]trans
  • PlasmaNoTrans : Apply Q;
  • PlasmaTrans : Apply Q^T.
[in]m1The number of rows of the tile A1. m1 >= 0.
[in]n1The number of columns of the tile A1. n1 >= 0.
[in]m2The number of rows of the tile A2. m2 >= 0. m2 = m1 if side == PlasmaRight.
[in]n2The number of columns of the tile A2. n2 >= 0. n2 = n1 if side == PlasmaLeft.
[in]kThe number of elementary reflectors whose product defines the matrix Q.
[in]ibThe inner-blocking size. ib >= 0.
[in,out]A1On entry, the m1-by-n1 tile A1. On exit, A1 is overwritten by the application of Q.
[in]lda1The leading dimension of the array A1. lda1 >= max(1,m1).
[in,out]A2On entry, the m2-by-n2 tile A2. On exit, A2 is overwritten by the application of Q.
[in]lda2The leading dimension of the tile A2. lda2 >= max(1,m2).
[in]VThe i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_DTSQRT in the first k columns of its array argument V.
[in]ldvThe leading dimension of the array V. ldv >= 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.
workAuxiliary workspace array of length ldwork-by-n1 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,m1) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general m1-by-n1 tile A1 and m2-by-n2 tile A2 with

                          side = PlasmaLeft        side = PlasmaRight

trans = PlasmaNoTrans Q * | A1 | | A1 A2 | * Q | A2 |

trans = PlasmaTrans Q^T * | A1 | | A1 A2 | * Q^T | A2 |

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

Q = H(1) H(2) . . . H(k)

as returned by core_stsqrt.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^T from the Left;
  • PlasmaRight : apply Q or Q^T from the Right.
[in]trans
  • PlasmaNoTrans : Apply Q;
  • PlasmaTrans : Apply Q^T.
[in]m1The number of rows of the tile A1. m1 >= 0.
[in]n1The number of columns of the tile A1. n1 >= 0.
[in]m2The number of rows of the tile A2. m2 >= 0. m2 = m1 if side == PlasmaRight.
[in]n2The number of columns of the tile A2. n2 >= 0. n2 = n1 if side == PlasmaLeft.
[in]kThe number of elementary reflectors whose product defines the matrix Q.
[in]ibThe inner-blocking size. ib >= 0.
[in,out]A1On entry, the m1-by-n1 tile A1. On exit, A1 is overwritten by the application of Q.
[in]lda1The leading dimension of the array A1. lda1 >= max(1,m1).
[in,out]A2On entry, the m2-by-n2 tile A2. On exit, A2 is overwritten by the application of Q.
[in]lda2The leading dimension of the tile A2. lda2 >= max(1,m2).
[in]VThe i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_STSQRT in the first k columns of its array argument V.
[in]ldvThe leading dimension of the array V. ldv >= 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.
workAuxiliary workspace array of length ldwork-by-n1 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,m1) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general m1-by-n1 tile A1 and m2-by-n2 tile A2 with

                          side = PlasmaLeft        side = PlasmaRight

trans = PlasmaNoTrans Q * | A1 | | A1 A2 | * Q | A2 |

trans = Plasma_ConjTrans Q^H * | A1 | | A1 A2 | * Q^H | A2 |

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

Q = H(1) H(2) . . . H(k)

as returned by core_ztsqrt.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^H from the Left;
  • PlasmaRight : apply Q or Q^H from the Right.
[in]trans
  • PlasmaNoTrans : Apply Q;
  • Plasma_ConjTrans : Apply Q^H.
[in]m1The number of rows of the tile A1. m1 >= 0.
[in]n1The number of columns of the tile A1. n1 >= 0.
[in]m2The number of rows of the tile A2. m2 >= 0. m2 = m1 if side == PlasmaRight.
[in]n2The number of columns of the tile A2. n2 >= 0. n2 = n1 if side == PlasmaLeft.
[in]kThe number of elementary reflectors whose product defines the matrix Q.
[in]ibThe inner-blocking size. ib >= 0.
[in,out]A1On entry, the m1-by-n1 tile A1. On exit, A1 is overwritten by the application of Q.
[in]lda1The leading dimension of the array A1. lda1 >= max(1,m1).
[in,out]A2On entry, the m2-by-n2 tile A2. On exit, A2 is overwritten by the application of Q.
[in]lda2The leading dimension of the tile A2. lda2 >= max(1,m2).
[in]VThe i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_ZTSQRT in the first k columns of its array argument V.
[in]ldvThe leading dimension of the array V. ldv >= 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.
workAuxiliary workspace array of length ldwork-by-n1 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,m1) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value