3#ifndef pRC_ALGORITHMS_SOLVER_FORWARD_SUBSTITUTION_H
4#define pRC_ALGORITHMS_SOLVER_FORWARD_SUBSTITUTION_H
22 requires(RA::Dimension == 2 &&
23 (RB::Dimension == 1 || RB::Dimension == 2)) &&
41 [&L, &
x](
auto const k,
auto const... indices)
43 if(
x(k, indices...) !=
zero())
45 x(k, indices...) /= L(k, k);
46 for(
Index i = k + 1;
i < RB::size(0); ++
i)
48 x(
i, indices...) -=
x(k, indices...) * L(
i, k);
63 return forward<XB>(b);
Definition forward_substitution.hpp:15
constexpr auto operator()(XA &&A, XB &&b) const
Definition forward_substitution.hpp:25
Definition concepts.hpp:25
Definition concepts.hpp:31
Definition concepts.hpp:19
Definition declarations.hpp:45
int i
Definition gmock-matchers-comparisons_test.cc:603
int x
Definition gmock-matchers-containers_test.cc:376
static void error(Xs &&...args)
Definition log.hpp:14
Restrict
Definition restrict.hpp:9
Hint
Definition hint.hpp:9
Transform
Definition transform.hpp:9
Definition backward_substitution.hpp:13
static constexpr auto transform(X &&a)
Definition transform.hpp:15
static constexpr Conditional< C, RemoveConstReference< X >, RemoveConst< X > > copy(X &&a)
Definition copy.hpp:13
static constexpr auto restrict(X &&a)
Definition restrict.hpp:15
Size Index
Definition basics.hpp:32
std::remove_reference_t< T > RemoveReference
Definition basics.hpp:41
static constexpr auto isLowerTriangular(X &&a, TT const &tolerance=NumericLimits< TT >::tolerance())
Definition is_lower_triangular.hpp:14
static constexpr auto isApprox(XE &&expected, XA &&approx, TT const &tolerance=NumericLimits< TT >::tolerance())
Definition is_approx.hpp:14
constexpr auto cDebugLevel
Definition config.hpp:48
static constexpr auto range(F &&f, Xs &&...args)
Definition range.hpp:18
static constexpr auto zero()
Definition zero.hpp:12
static constexpr decltype(auto) eval(X &&a)
Definition eval.hpp:12