Trr2k

Triangular rank-2k update: performs \(E := \alpha A^\# B^\sharp + \beta C^\Diamond D^\triangle + \gamma E\), where only the triangle of E specified by uplo is modified, and the orientation of each input matrix, e.g., \(A^\# \in \{A,A^T,A^H\}\), is determined by orientationOfX for each \(X \in \left\{A,B,C,D\right\}\).

Note

There is no corresponding BLAS routine, but it is a natural generalization of “symmetric” and “Hermitian” updates.

Note

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

C++ API

void Trr2k(UpperOrLower uplo, Orientation orientationOfA, Orientation orientationOfB, Orientation orientationOfC, Orientation orientationOfD, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, const Matrix<T> &C, const Matrix<T> &D, T gamma, Matrix<T> &E)
void Trr2k(UpperOrLower uplo, Orientation orientationOfA, Orientation orientationOfB, Orientation orientationOfC, Orientation orientationOfD, T alpha, const AbstractDistMatrix<T> &A, const AbstractDistMatrix<T> &B, T beta, const AbstractDistMatrix<T> &C, const AbstractDistMatrix<T> &D, T gamma, AbstractDistMatrix<T> &E)

C API

ElError ElTrr2k_s(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, float alpha, ElConstMatrix_s A, ElConstMatrix_s B, float beta, ElConstMatrix_s C, ElConstMatrix_s D, float gamma, ElMatrix_s E)
ElError ElTrr2k_d(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, double alpha, ElConstMatrix_d A, ElConstMatrix_d B, double beta, ElConstMatrix_d C, ElConstMatrix_d D, double gamma, ElMatrix_d E)
ElError ElTrr2k_c(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, complex_float alpha, ElConstMatrix_c A, ElConstMatrix_c B, complex_float beta, ElConstMatrix_c C, ElConstMatrix_c D, complex_float gamma, ElMatrix_c E)
ElError ElTrr2k_z(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, complex_double alpha, ElConstMatrix_z A, ElConstMatrix_z B, complex_double beta, ElConstMatrix_z C, ElConstMatrix_z D, complex_double gamma, ElMatrix_z E)
ElError ElTrr2kDist_s(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, float alpha, ElConstDistMatrix_s A, ElConstDistMatrix_s B, float beta, ElConstDistMatrix_s C, ElConstDistMatrix_s D, float gamma, ElDistMatrix_s E)
ElError ElTrr2kDist_d(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, double alpha, ElConstDistMatrix_d A, ElConstDistMatrix_d B, double beta, ElConstDistMatrix_d C, ElConstDistMatrix_d D, double gamma, ElDistMatrix_d E)
ElError ElTrr2kDist_c(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, complex_float alpha, ElConstDistMatrix_c A, ElConstDistMatrix_c B, complex_float beta, ElConstDistMatrix_c C, ElConstDistMatrix_c D, complex_float gamma, ElDistMatrix_c E)
ElError ElTrr2kDist_z(ElUpperOrLower uplo, ElOrientation orientA, ElOrientation orientB, ElOrientation orientC, ElOrientation orientD, complex_double alpha, ElConstDistMatrix_z A, ElConstDistMatrix_z B, complex_double beta, ElConstDistMatrix_z C, ElConstDistMatrix_z D, complex_double gamma, ElDistMatrix_z E)

Python API

Trr2k(uplo, orientA, orientB, orientC, orientD, alpha, A, B, beta, C, D, gamma, E)