diff options
| author | y-jan137 <yousefjan24000@gmail.com> | 2026-03-14 14:49:46 +0300 |
|---|---|---|
| committer | y-jan137 <yousefjan24000@gmail.com> | 2026-03-14 14:49:46 +0300 |
| commit | 7db0d82731ababdf0b2f4d986dd54da3b4650954 (patch) | |
| tree | 145564ba45b9ae74a7eeebc319027c730c7177bc /include | |
| parent | 5ac9489c079f3f1a0ba1d2d8385001ada83a13b8 (diff) | |
Add triangular solve
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 |