AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
value_type.h
1#ifndef PROBFD_VALUE_TYPE_H
2#define PROBFD_VALUE_TYPE_H
3
4#include "probfd/aliases.h"
5
6#include <limits>
7#include <string>
8
10namespace probfd {
11
13static constexpr value_t INFINITE_VALUE =
14 std::numeric_limits<double>::infinity();
15
17extern value_t g_epsilon;
18
19value_t fraction_to_value(int nom, int denom);
20value_t string_to_value(const std::string& str);
21value_t abs(value_t val);
22
23constexpr value_t double_to_value(double d)
24{
25 return d;
26}
27
29constexpr value_t operator"" _vt(long double value)
30{
31 return double_to_value(static_cast<double>(value));
32}
33
35constexpr value_t operator"" _vt(unsigned long long value)
36{
37 return double_to_value(static_cast<double>(value));
38}
39
42
45
48
51 const value_t value;
52 const value_t epsilon;
53
54 explicit approx_eq_to(value_t value, value_t epsilon = g_epsilon)
55 : value(value)
56 , epsilon(epsilon)
57 {
58 }
59
60 bool operator()(value_t other) const
61 {
62 return is_approx_equal(value, other);
63 }
64};
65
68 const value_t value;
69 const value_t epsilon;
70
71 explicit approx_neq_to(value_t value, value_t epsilon = g_epsilon)
72 : value(value)
73 , epsilon(epsilon)
74 {
75 }
76
77 bool operator()(value_t other) const
78 {
79 return !is_approx_equal(value, other);
80 }
81};
82
85 const value_t epsilon;
86
87 explicit approx_less(value_t epsilon = g_epsilon)
88 : epsilon(epsilon)
89 {
90 }
91
92 bool operator()(value_t left, value_t right) const
93 {
94 return is_approx_less(left, right);
95 }
96};
97
98} // namespace probfd
99
100#endif // PROBFD_VALUE_TYPE_H
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8
bool is_approx_less(value_t v1, value_t v2, value_t epsilon=g_epsilon)
Equivalent to .
bool is_approx_greater(value_t v1, value_t v2, value_t epsilon=g_epsilon)
Equivalent to .
double value_t
Typedef for the state value type.
Definition aliases.h:7
bool is_approx_equal(value_t v1, value_t v2, value_t epsilon=g_epsilon)
Equivalent to .
value_t g_epsilon
The default tolerance value for approximate comparisons.
Unary function object for approximate equality comparison.
Definition value_type.h:50
Unary function object for approximate inequality comparison.
Definition value_type.h:84
Unary function object for approximate inequality comparison.
Definition value_type.h:67