template<in-matrix InMat, class Triangle, class DiagonalStorage,
inout-matrix InOutMat, class BinaryDivideOp>
void triangular_matrix_matrix_left_solve(InMat A, Triangle t, DiagonalStorage d,
InOutMat B, BinaryDivideOp divide);
template<class ExecutionPolicy, in-matrix InMat, class Triangle, class DiagonalStorage,
inout-matrix InOutMat, class BinaryDivideOp>
void triangular_matrix_matrix_left_solve(ExecutionPolicy&& exec,
InMat A, Triangle t, DiagonalStorage d,
InOutMat B, BinaryDivideOp divide);
template<in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_matrix_left_solve(InMat A, Triangle t, DiagonalStorage d,
InOutMat B);
template<class ExecutionPolicy,
in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_matrix_left_solve(ExecutionPolicy&& exec,
InMat A, Triangle t, DiagonalStorage d,
InOutMat B);
template<in-matrix InMat, class Triangle, class DiagonalStorage,
inout-matrix InOutMat, class BinaryDivideOp>
void triangular_matrix_matrix_right_solve(InMat A, Triangle t, DiagonalStorage d,
InOutMat B, BinaryDivideOp divide);
template<class ExecutionPolicy, in-matrix InMat, class Triangle, class DiagonalStorage,
inout-matrix InOutMat, class BinaryDivideOp>
void triangular_matrix_matrix_right_solve(ExecutionPolicy&& exec,
InMat A, Triangle t, DiagonalStorage d,
InOutMat B, BinaryDivideOp divide);
template<in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_matrix_right_solve(InMat A, Triangle t, DiagonalStorage d, InOutMat B);
template<class ExecutionPolicy,
in-matrix InMat, class Triangle, class DiagonalStorage, inout-matrix InOutMat>
void triangular_matrix_matrix_right_solve(ExecutionPolicy&& exec,
InMat A, Triangle t, DiagonalStorage d,
InOutMat B);