From 7db0d82731ababdf0b2f4d986dd54da3b4650954 Mon Sep 17 00:00:00 2001 From: y-jan137 Date: Sat, 14 Mar 2026 14:49:46 +0300 Subject: Add triangular solve --- include/linalg_error.hpp | 6 ++++++ include/triangular_solve.hpp | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 include/triangular_solve.hpp (limited to 'include') 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 + +#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 -- cgit v1.2.3