diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linalg_error.hpp | 6 | ||||
| -rw-r--r-- | include/triangular_solve.hpp | 22 |
2 files changed, 28 insertions, 0 deletions
diff --git a/include/linalg_error.hpp b/include/linalg_error.hpp index 8258899..25c48ad 100644 --- a/include/linalg_error.hpp +++ b/include/linalg_error.hpp @@ -16,4 +16,10 @@ public: : LinAlgError(message) {} }; +class SingularMatrixError : public LinAlgError { +public: + explicit SingularMatrixError(const std::string& message) + : LinAlgError(message) {} +}; + } // namespace linalg diff --git a/include/triangular_solve.hpp b/include/triangular_solve.hpp new file mode 100644 index 0000000..632f225 --- /dev/null +++ b/include/triangular_solve.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include <cstddef> + +#include "matrix.hpp" +#include "vector.hpp" + +namespace linalg { + +Vector forward_substitution( + const Matrix& lower, + const Vector& rhs, + double singular_tolerance = 1e-12, + bool unit_diagonal = false); + +Vector backward_substitution( + const Matrix& upper, + const Vector& rhs, + double singular_tolerance = 1e-12, + bool unit_diagonal = false); + +} // namespace linalg |