aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authory-jan137 <yousefjan24000@gmail.com>2026-03-14 14:49:46 +0300
committery-jan137 <yousefjan24000@gmail.com>2026-03-14 14:49:46 +0300
commit7db0d82731ababdf0b2f4d986dd54da3b4650954 (patch)
tree145564ba45b9ae74a7eeebc319027c730c7177bc /include
parent5ac9489c079f3f1a0ba1d2d8385001ada83a13b8 (diff)
Add triangular solve
Diffstat (limited to 'include')
-rw-r--r--include/linalg_error.hpp6
-rw-r--r--include/triangular_solve.hpp22
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