QuasiTrsm

Solve for X in the linear system

T#X=Y

or

XT#=Y

where T is quasi-triangular and A# is defined to be one of {A,AT,AH}. The algorithm is very similar to that of Trsm().

Note that the term quasi-triangular is in the context of real Schur decompositions, which produce triangular matrices with mixes of 1×1 and 2×2 diagonal blocks.

The following routines overwrite the columns of X with the solutions to the quasi-triangular linear systems.

Note

There is no corresponding BLAS routine, but it is a natural extension of Trsm.

Note

For best performance, T and X should be in [MC,MR] distributions.

C++ API

void QuasiTrsm(LeftOrRight side, UpperOrLower uplo, Orientation orientation, F alpha, const Matrix<F> &T, Matrix<F> &X, bool checkIfSingular = false)
void QuasiTrsm(LeftOrRight side, UpperOrLower uplo, Orientation orientation, F alpha, const AbstractDistMatrix<F> &T, AbstractDistMatrix<F> &X, bool checkIfSingular = false)

C API

ElError ElQuasiTrsm_s(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstMatrix_s A, ElMatrix_s B)
ElError ElQuasiTrsm_d(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, double alpha, ElConstMatrix_d A, ElMatrix_d B)
ElError ElQuasiTrsm_c(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, complex_float alpha, ElConstMatrix_c A, ElMatrix_c B)
ElError ElQuasiTrsm_z(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, complex_double alpha, ElConstMatrix_z A, ElMatrix_z B)
ElError ElQuasiTrsmDist_s(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, float alpha, ElConstDistMatrix_s A, ElDistMatrix_s B)
ElError ElQuasiTrsmDist_d(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, double alpha, ElConstDistMatrix_d A, ElDistMatrix_d B)
ElError ElQuasiTrsmDist_c(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, complex_float alpha, ElConstDistMatrix_c A, ElDistMatrix_c B)
ElError ElQuasiTrsmDist_z(ElLeftOrRight side, ElUpperOrLower uplo, ElOrientation orientation, complex_double alpha, ElConstDistMatrix_z A, ElDistMatrix_z B)

Python API

QuasiTrsm(side, uplo, orient, alpha, A, B)