cMHN 1.2
C++ library for learning MHNs with pRC
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
10
11namespace pRC
12{
15 Operator::Hint H = Operator::Hint::None, class Solver, class XA,
16 class XB>
17 requires IsInvocable<Solver, XA, XB>
18 static inline constexpr decltype(auto) solve(Solver &&solver, XA &&A,
19 XB &&b)
20 {
21 return forward<Solver>(solver).template operator()<T, R, H>(
22 forward<XA>(A), forward<XB>(b));
23 }
24
27 Operator::Hint H = Operator::Hint::None, class Solver, class XA,
28 class XB, class XX>
29 requires IsInvocable<Solver, XA, XB, XX>
30 static inline constexpr decltype(auto) solve(Solver &&solver, XA &&A,
31 XB &&b, XX &&x0)
32 {
33 return forward<Solver>(solver).template operator()<T, R, H>(
34 forward<XA>(A), forward<XB>(b), forward<XX>(x0));
35 }
36
39 Operator::Hint H = Operator::Hint::None, class Solver, class XA,
40 class XB, class VT>
41 requires IsInvocable<Solver, XA, XB, VT>
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>
53 requires IsInvocable<Solver, XA, XB, XX, 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,
63 Operator::Hint H = Operator::Hint::None, class XA, class XB>
64 requires IsInvocable<Solver, XA, XB>
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>
73 requires IsInvocable<Solver, XA, XB, 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),
77 forward<XX>(x0));
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>
83 requires IsInvocable<Solver, XA, XB, 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,
94 class VT>
95 requires IsInvocable<Solver, XA, XB, XX, VT>
96 static inline constexpr decltype(auto) solve(XA &&A, XB &&b, XX &&x0,
97 VT const &tolerance)
98 {
99 return solve<T, R, H>(Solver(), forward<XA>(A), forward<XB>(b),
100 forward<XX>(x0), tolerance);
101 }
102}
103#endif // pRC_ALGORITHMS_SOLVE_H
Definition value.hpp:12
pRC::Float<> T
Definition externs_nonTT.hpp:1
Restrict
Definition restrict.hpp:9
Hint
Definition hint.hpp:9
Transform
Definition transform.hpp:9
Definition cholesky.hpp:10
static constexpr decltype(auto) solve(Solver &&solver, XA &&A, XB &&b)
Definition solve.hpp:18