template<in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat, class BinaryDivideOp>
void triangular_matrix_matrix_left_solve(InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X, BinaryDivideOp divide);
template<class ExecutionPolicy,
in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat, class BinaryDivideOp>
void triangular_matrix_matrix_left_solve(ExecutionPolicy&& exec,
InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X, BinaryDivideOp divide);
template<in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat>
void triangular_matrix_matrix_left_solve(InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X);
template<class ExecutionPolicy, in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat>
void triangular_matrix_matrix_left_solve(ExecutionPolicy&& exec,
InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X);
template<in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat, class BinaryDivideOp>
void triangular_matrix_matrix_right_solve(InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X, BinaryDivideOp divide);
template<class ExecutionPolicy,
in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat, class BinaryDivideOp>
void triangular_matrix_matrix_right_solve(ExecutionPolicy&& exec,
InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X, BinaryDivideOp divide);
template<in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat>
void triangular_matrix_matrix_right_solve(InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X);
template<class ExecutionPolicy, in-matrix InMat1, class Triangle, class DiagonalStorage,
in-matrix InMat2, out-matrix OutMat>
void triangular_matrix_matrix_right_solve(ExecutionPolicy&& exec,
InMat1 A, Triangle t, DiagonalStorage d,
InMat2 B, OutMat X);