17 value_type lo = lowest;
18 value_type
hi = heighest;
20 constexpr interval()
noexcept =
default;
25 [[nodiscard]]
constexpr bool operator==(
interval const &,
interval const &)
noexcept =
default;
27 constexpr interval(value_type lo, value_type
hi) noexcept : lo(lo),
hi(
hi)
32 constexpr interval(value_type rhs) noexcept : lo(rhs),
hi(rhs)
38 [[nodiscard]]
constexpr bool finite() const noexcept
40 return lo != min and
hi != max;
43 constexpr interval &operator++() noexcept
45 lo = lo == min ? min : saturated_inc(lo);
46 hi = saturated_inc(
hi);
50 constexpr interval &operator--() noexcept
52 lo = saturated_dec(lo);
53 hi =
hi == max ? max : saturated_dec(
hi);
57 constexpr interval operator++(
int)
noexcept
64 constexpr interval operator--(
int)
noexcept
71 constexpr interval &operator+=(interval
const &rhs)
noexcept
73 return *
this = *
this + rhs;
76 constexpr interval &operator-=(interval
const &rhs)
noexcept
78 return *
this = *
this - rhs;
81 [[nodiscard]]
constexpr friend interval operator-(interval
const &rhs)
noexcept
83 hilet r_lo = lhs.hi ==
max ?
min : saturated_neg(lhs.hi);
84 hilet r_hi = lhs.lo ==
min ?
max : saturated_neg(lhs.lo);
88 [[nodiscard]]
constexpr friend interval operator+(interval
const &lhs, interval
const &rhs)
noexcept
90 hilet r_lo = lhs.lo ==
min or rhs.lo ==
min ?
min : saturated_add(lhs.lo, rhs.lo);
91 hilet r_hi = lhs.hi ==
max or rhs.hi ==
max ?
max : saturated_add(lhs.hi, rhs.hi);
95 [[nodiscard]]
constexpr friend interval operator-(interval
const &lhs, interval
const &rhs)
noexcept
97 hilet r_lo = lhs.lo ==
min or rhs.hi ==
min ?
max : saturated_sub(lhs.lo, rhs.hi);
98 hilet r_hi = lhs.hi ==
max or rhs.lo ==
min ?
max : saturated_sub(lhs.hi, rhs.lo);
102 [[nodiscard]]
constexpr friend interval abs(interval
const &rhs)
noexcept
104 auto r_lo = saturated_abs(rhs.lo);
105 auto r_hi = saturated_abs(rhs.hi);
112 [[nodiscard]]
constexpr friend interval
min(interval
const &lhs,interval
const &rhs)
noexcept
114 auto r_lo =
std::min(lhs.lo, rhs.lo);
119 [[nodiscard]]
constexpr friend interval
max(interval
const &lhs,interval
const &rhs)
noexcept
122 auto r_hi =
std::max(lhs.hi, rhs.hi);
#define hi_axiom(expression,...)
Specify an axiom; an expression that is true.
Definition assert.hpp:238