Symm

Symmetric matrix-matrix multiplication: updates \(C := \alpha A B + \beta C\), or \(C := \alpha B A + \beta C\), depending upon whether side is set to LEFT or RIGHT, respectively. In both of these types of updates, \(A\) is implicitly symmetric and only the triangle specified by uplo is accessed.

Note

For best performance, A, B, and C should all be in [MC,MR] distributions.

C++ API

void Symm(LeftOrRight side, UpperOrLower uplo, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, Matrix<T> &C, bool conjugate = false)
void Symm(LeftOrRight side, UpperOrLower uplo, T alpha, const AbstractDistMatrix<T> &A, const AbstractDistMatrix<T> &B, T beta, AbstractDistMatrix<T> &C, bool conjugate = false)

C API

ElError ElSymm_s(ElLeftOrRight side, ElUpperOrLower uplo, float alpha, ElConstMatrix_s A, ElConstMatrix_s B, float beta, ElMatrix_s C)
ElError ElSymm_d(ElLeftOrRight side, ElUpperOrLower uplo, double alpha, ElConstMatrix_d A, ElConstMatrix_d B, double beta, ElMatrix_d C)
ElError ElSymm_c(ElLeftOrRight side, ElUpperOrLower uplo, complex_float alpha, ElConstMatrix_c A, ElConstMatrix_c B, complex_float beta, ElMatrix_c C)
ElError ElSymm_z(ElLeftOrRight side, ElUpperOrLower uplo, complex_double alpha, ElConstMatrix_z A, ElConstMatrix_z B, complex_double beta, ElMatrix_z C)
ElError ElSymmDist_s(ElLeftOrRight side, ElUpperOrLower uplo, float alpha, ElConstDistMatrix_s A, ElConstDistMatrix_s B, float beta, ElDistMatrix_s C)
ElError ElSymmDist_d(ElLeftOrRight side, ElUpperOrLower uplo, double alpha, ElConstDistMatrix_d A, ElConstDistMatrix_d B, double beta, ElDistMatrix_d C)
ElError ElSymmDist_c(ElLeftOrRight side, ElUpperOrLower uplo, complex_float alpha, ElConstDistMatrix_c A, ElConstDistMatrix_c B, complex_float beta, ElDistMatrix_c C)
ElError ElSymmDist_z(ElLeftOrRight side, ElUpperOrLower uplo, complex_double alpha, ElConstDistMatrix_z A, ElConstDistMatrix_z B, complex_double beta, ElDistMatrix_z C)

Python API

Symm(side, uplo, alpha, A, B, beta, C, conjugate=False)