85 return (m >= x.
min()) && (m <= x.
max()) &&
92 virtual bool run(
void) {
95 const FloatNum i = std::numeric_limits<FloatNum>::infinity();
96 const FloatNum d = std::numeric_limits<FloatNum>::denorm_min();
97 const FloatVal negative(-m, -m / 2.0);
101 const FloatVal closest(3.07187504409887e-53,
102 7.805365587017815e-45);
103 return valid(negative) && valid(positive) && valid(mixed) &&
104 (closest.
med() == 3.902682808868283e-45) &&
110 !std::signbit(
FloatVal(-0.0,0.0).med()) &&
FloatNum med(void) const
Return median of float value.
friend FloatVal max(const FloatVal &x, const FloatVal &y)
friend FloatVal min(const FloatVal &x, const FloatVal &y)
bool tight(void) const
Test whether float is tight.
Reification specification.
Base(std::string s)
Create and register test with name s.
Base class for assignments
Test whether testing infrastructure for float variables works
virtual void post(Gecode::Space &, Gecode::FloatVarArray &, Gecode::Reify)
Post reified constraint on x for r.
virtual void post(Gecode::Space &, Gecode::FloatVarArray &)
Post constraint on x.
Basic(Gecode::FloatNum n, Gecode::FloatNum s)
Initialize test.
Basic(Gecode::FloatVal v, Gecode::FloatNum s)
Initialize test.
virtual MaybeType solution(const Assignment &) const
Check whether x is a solution.
double FloatNum
Floating point number base type.
const FloatNum max
Largest allowed float value.
Gecode toplevel namespace
MaybeType
Type for comparisons and solutions.
#define GECODE_NEVER
Assert that this command is never executed.