18#include <nlohmann/json.hpp>
23 template <
typename DataType>
49 template <
typename OtherType,
typename = std::enable_if_t<std::is_arithmetic_v<OtherType>>>
55 template <
typename OtherType,
typename = std::enable_if_t<std::is_arithmetic_v<OtherType>>>
61 template <
typename OtherType,
typename = std::enable_if_t<std::is_arithmetic_v<OtherType>>>
67 template <
typename OtherType,
typename = std::enable_if_t<std::is_arithmetic_v<OtherType>>>
73 template <
typename OtherType,
typename = std::enable_if_t<std::is_arithmetic_v<OtherType>>>
87 template <
typename DataType>
90 auto new_value =
left.value *
right.value;
93 return { new_value, new_error };
96 template <
typename DataType>
99 auto new_value = numerator.value / denominator.value;
100 auto new_error = std::sqrt(numerator.error * numerator.error +
101 denominator.error * denominator.error * new_value * new_value) /
103 return { new_value, std::abs(new_error) };
106 template <
typename DataType>
109 auto new_value =
left.value +
right.value;
112 return { new_value, new_err };
115 template <
typename DataType>
118 auto new_value =
left.value -
right.value;
121 return { new_value, new_err };
124 template <
typename DataType>
131 template <
typename DataType>
138 template <
typename DataType>
141 json_obj = nlohmann::ordered_json{
142 {
"value", value.
value },
143 {
"error", value.
error },
147 template <
typename DataType>
150 json_obj.at(
"value").get_to(value.
value);
151 json_obj.at(
"error").get_to(value.
error);
auto operator*(ValueError< DataType > left, ValueError< DataType > right) -> ValueError< DataType >
auto operator+(ValueError< DataType > left, ValueError< DataType > right) -> ValueError< DataType >
ValueError< float > ValueErrorF
void from_json(const nlohmann::ordered_json &json_obj, MinMaxValue< DataType > &value)
auto operator/(ValueError< DataType > numerator, ValueError< DataType > denominator) -> ValueError< DataType >
auto operator-=(ValueError< DataType > &left, const ValueError< DataType > &right) -> ValueError< DataType > &
ValueError< int > ValueErrorI
void to_json(nlohmann::ordered_json &json_obj, const MinMaxValue< DataType > &value)
auto operator+=(ValueError< DataType > &left, const ValueError< DataType > &right) -> ValueError< DataType > &
auto operator-(ValueError< DataType > left, ValueError< DataType > right) -> ValueError< DataType >
ValueError< double > ValueErrorD
auto operator+(OtherType other) const -> ValueError< DataType >
auto operator-(OtherType val) const -> ValueError< DataType >
void operator-=(OtherType other)
auto operator*(OtherType other) const -> ValueError< DataType >
auto operator-() const -> ValueError< DataType >
ClassDefNV(ValueError, 1)
constexpr ValueError(DataType val, DataType err)
auto operator/(OtherType other) const -> ValueError< DataType >