PLASMA
2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
|
Go to the source code of this file.
Functions | |
int | CORE_slarfx2 (PLASMA_enum side, int N, float V, float TAU, float *C1, int LDC1, float *C2, int LDC2) |
int | CORE_slarfx2c (PLASMA_enum uplo, float V, float TAU, float *C1, float *C2, float *C3) |
int | CORE_slarfx2ce (PLASMA_enum uplo, float *V, float *TAU, float *C1, float *C2, float *C3) |
PLASMA core_blas kernel PLASMA is a software package provided by Univ. of Tennessee, Univ. of California Berkeley and Univ. of Colorado Denver
Definition in file core_slarfx_tbrd.c.
int CORE_slarfx2 | ( | PLASMA_enum | side, |
int | N, | ||
float | V, | ||
float | TAU, | ||
float * | C1, | ||
int | LDC1, | ||
float * | C2, | ||
int | LDC2 | ||
) |
CORE_slarfx2 applies a complex elementary reflector H to a complex m by n matrix C, from either the left or the right. H is represented in the form
H = I - tau * v * v'
where tau is a complex scalar and v is a complex vector.
If tau = 0, then H is taken to be the unit matrix
This version uses inline code if H has order < 11.
[in] | side |
|
[in] | N | The number of columns of C1 and C2 if side = PlasmaLeft. The number of rows of C1 and C2 if side = PlasmaRight. |
[in] | V | The float complex V in the representation of H. |
[in] | TAU | The value tau in the representation of H. |
[in,out] | C1 | dimension (LDC1,N), if side = PlasmaLeft dimension (LDC1,1), if side = PlasmaRight On entry, the m by n matrix C1. On exit, C1 is overwritten by the matrix H * C1 if SIDE = PlasmaLeft, or C1 * H if SIDE = PlasmaRight. |
[in] | LDC1 | The leading dimension of the array C1. LDC1 >= max(1,N), if side == PlasmaRight. LDC1 >= 1, otherwise. |
[in,out] | C2 | dimension (LDC2,N), if side = PlasmaLeft dimension (LDC2,1), if side = PlasmaRight On entry, the m by n matrix C2. On exit, C2 is overwritten by the matrix H * C2 if SIDE = PlasmaLeft, or C2 * H if SIDE = PlasmaRight. |
[in] | LDC2 | The leading dimension of the array C2. LDC2 >= max(1,N), if side == PlasmaRight. LDC2 >= 1, otherwise. |
PLASMA_SUCCESS | successful exit |
<0 | if -i, the i-th argument had an illegal value |
Definition at line 86 of file core_slarfx_tbrd.c.
References PLASMA_SUCCESS, PlasmaLeft, T2, TAU, and V.
int CORE_slarfx2c | ( | PLASMA_enum | uplo, |
float | V, | ||
float | TAU, | ||
float * | C1, | ||
float * | C2, | ||
float * | C3 | ||
) |
CORE_slarfx2c applies a complex elementary reflector H to a diagonal corner C=[C1, C2, C3], from both the left and the right side. C = H * C * H. It is used in the case of Hermetian. If PlasmaLower, a left apply is followed by a right apply. If PlasmaUpper, a right apply is followed by a left apply. H is represented in the form
This routine is a special code for a corner C diagonal block C1 C2 C3
H = I - tau * v * v'
where tau is a complex scalar and v is a complex vector.
If tau = 0, then H is taken to be the unit matrix
This version uses inline code if H has order < 11.
[in] | uplo | = PlasmaUpper: Upper triangle of A is stored; = PlasmaLower: Lower triangle of A is stored. |
[in] | V | The float complex V in the representation of H. |
[in] | TAU | The value tau in the representation of H. |
[in,out] | C1 | On entry, the element C1. On exit, C1 is overwritten by the result H * C * H. |
[in,out] | C2 | On entry, the element C2. On exit, C2 is overwritten by the result H * C * H. |
[in,out] | C3 | On entry, the element C3. On exit, C3 is overwritten by the result H * C * H. |
PLASMA_SUCCESS | successful exit |
<0 | if -i, the i-th argument had an illegal value |
Definition at line 185 of file core_slarfx_tbrd.c.
References PLASMA_SUCCESS, PlasmaLower, T2, TAU, and V.
int CORE_slarfx2ce | ( | PLASMA_enum | uplo, |
float * | V, | ||
float * | TAU, | ||
float * | C1, | ||
float * | C2, | ||
float * | C3 | ||
) |
CORE_slarfx2c applies a complex elementary reflector H to a diagonal corner C=[C1, C2, C3], from both the left and the right side. C = H * C * H. It is used in the case of general matrices, where it create a nnz at the NEW_NNZ position, then it eliminate it and update the reflector V and TAU. If PlasmaLower, a left apply is followed by a right apply. If PlasmaUpper, a right apply is followed by a left apply. H is represented in the form
This routine is a special code for a corner C diagonal block C1 NEW_NNZ C2 C3
H = I - tau * v * v'
where tau is a complex scalar and v is a complex vector.
If tau = 0, then H is taken to be the unit matrix
This version uses inline code if H has order < 11.
[in] | uplo | = PlasmaUpper: Upper triangle of A is stored; = PlasmaLower: Lower triangle of A is stored. |
[in,out] | V | On entry, the float complex V in the representation of H. On exit, the float complex V in the representation of H, updated by the elimination of the NEW_NNZ created by the left apply in case of PlasmaLower or the right apply in case of PlasmaUpper. |
[in] | TAU | On entry, the value tau in the representation of H. On exit, the value tau in the representation of H, updated by the elimination of the NEW_NNZ created by the left apply in case of PlasmaLower or the right apply in case of PlasmaUpper. |
[in,out] | C1 | On entry, the element C1. On exit, C1 is overwritten by the result H * C * H. |
[in,out] | C2 | On entry, the element C2. On exit, C2 is overwritten by the result H * C * H. |
[in,out] | C3 | On entry, the element C3. On exit, C3 is overwritten by the result H * C * H. |
PLASMA_SUCCESS | successful exit |
<0 | if -i, the i-th argument had an illegal value |
Definition at line 335 of file core_slarfx_tbrd.c.
References PLASMA_SUCCESS, PlasmaLower, PlasmaUpper, T2, and V.