Trsm

Triangular solve with multiple right-hand sides: performs \(C := \alpha A^{-\#} B\), or \(C := \alpha B A^{-\#}\), depending upon whether side was chosen to be LEFT or RIGHT, respectively. Whether \(A\) is treated as lower or upper triangular is determined by uplo, and \(A^{-\#}\) can be \(A^{-1}\), \(A^{-T}\), or \(A^{-H}\) (and diag determines whether \(A\) is treated as unit-diagonal or not).

Note

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

C++ API

void Trsm(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, F alpha, const Matrix<F> &A, Matrix<F> &B)
void Trsm(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, F alpha, const AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &B)

C API

ElError ElTrsm_s(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, float alpha, ElConstMatrix_s A, ElMatrix_s B)
ElError ElTrsm_d(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, double alpha, ElConstMatrix_d A, ElMatrix_d B)
ElError ElTrsm_c(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, complex_float alpha, ElConstMatrix_c A, ElMatrix_c B)
ElError ElTrsm_z(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, complex_double alpha, ElConstMatrix_z A, ElMatrix_z B)
ElError ElTrsmDist_s(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, float alpha, ElConstDistMatrix_s A, ElDistMatrix_s B)
ElError ElTrsmDist_d(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, double alpha, ElConstDistMatrix_d A, ElDistMatrix_d B)
ElError ElTrsmDist_c(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, complex_float alpha, ElConstDistMatrix_c A, ElDistMatrix_c B)
ElError ElTrsmDist_z(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, ElUnitOrNonUnit diag, complex_double alpha, ElConstDistMatrix_z A, ElDistMatrix_z B)

Python API

Trsm(side, uplo, orient, diag, alpha, A, B)