pRC
multi-purpose Tensor Train library for C++
Loading...
Searching...
No Matches
solve.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_ALGORITHMS_SOLVE_H
4#define pRC_ALGORITHMS_SOLVE_H
5
13
14namespace pRC
15{
18 Operator::Hint H = Operator::Hint::None, class Solver, class XA,
20 static inline constexpr decltype(auto) solve(Solver &&solver, XA &&A,
21 XB &&b)
22 {
23 return forward<Solver>(solver).template operator()<T, R, H>(
25 }
26
29 Operator::Hint H = Operator::Hint::None, class Solver, class XA,
30 class XB, class XX, If<IsInvocable<Solver, XA, XB, XX>> = 0>
31 static inline constexpr decltype(auto) solve(Solver &&solver, XA &&A,
32 XB &&b, XX &&x0)
33 {
34 return forward<Solver>(solver).template operator()<T, R, H>(
36 }
37
40 Operator::Hint H = Operator::Hint::None, class Solver, class XA,
41 class XB, class VT, If<IsInvocable<Solver, XA, XB, VT>> = 0>
42 static inline constexpr decltype(auto) solve(Solver &&solver, XA &&A,
43 XB &&b, VT const &tolerance)
44 {
45 return forward<Solver>(solver).template operator()<T, R, H>(
46 forward<XA>(A), forward<XB>(b), tolerance);
47 }
48
51 Operator::Hint H = Operator::Hint::None, class Solver, class XA,
52 class XB, class XX, class VT,
54 static inline constexpr decltype(auto) solve(Solver &&solver, XA &&A,
55 XB &&b, XX &&x0, VT const &tolerance)
56 {
57 return forward<Solver>(solver).template operator()<T, R, H>(
58 forward<XA>(A), forward<XB>(b), forward<XX>(x0), tolerance);
59 }
60
61 template<class Solver, Operator::Transform T = Operator::Transform::None,
65 static inline constexpr decltype(auto) solve(XA &&A, XB &&b)
66 {
67 return solve<T, R, H>(Solver(), forward<XA>(A), forward<XB>(b));
68 }
69
70 template<class Solver, Operator::Transform T = Operator::Transform::None,
72 Operator::Hint H = Operator::Hint::None, class XA, class XB, class XX,
74 static inline constexpr decltype(auto) solve(XA &&A, XB &&b, XX &&x0)
75 {
76 return solve<T, R, H>(Solver(), forward<XA>(A), forward<XB>(b),
78 }
79
80 template<class Solver, Operator::Transform T = Operator::Transform::None,
82 Operator::Hint H = Operator::Hint::None, class XA, class XB, class VT,
84 static inline constexpr decltype(auto) solve(XA &&A, XB &&b,
85 VT const &tolerance)
86 {
87 return solve<T, R, H>(Solver(), forward<XA>(A), forward<XB>(b),
88 tolerance);
89 }
90
91 template<class Solver, Operator::Transform T = Operator::Transform::None,
93 Operator::Hint H = Operator::Hint::None, class XA, class XB, class XX,
95 static inline constexpr decltype(auto) solve(XA &&A, XB &&b, XX &&x0,
96 VT const &tolerance)
97 {
98 return solve<T, R, H>(Solver(), forward<XA>(A), forward<XB>(b),
99 forward<XX>(x0), tolerance);
100 }
101}
102#endif // pRC_ALGORITHMS_SOLVE_H
Restrict
This enum's elements denote a restriction of an operator.
Definition restrict.hpp:27
Hint
This enum's elements denote a hint regarding an operator.
Definition hint.hpp:30
Transform
This enum's elements denote a transformation done to an operator.
Definition transform.hpp:23
Definition cholesky.hpp:18
static constexpr Conditional< IsSatisfied< C >, RemoveConstReference< X >, X > copy(X &&a)
Definition copy.hpp:13
static constexpr decltype(auto) solve(Solver &&solver, XA &&A, XB &&b)
Definition solve.hpp:20