65 x = v.
x;
return *
this;
83 return gecode_boost::numeric::width(
x);
87 return gecode_boost::numeric::median(
x);
93 (nextafter(
x.lower(),
x.upper()) ==
x.upper()));
101 return gecode_boost::numeric::in(n,
x);
105 return gecode_boost::numeric::zero_in(
x);
114 FloatVal p(gecode_boost::numeric::interval_lib::pi_half<FloatValImpType>());
119 FloatVal p(gecode_boost::numeric::interval_lib::pi<FloatValImpType>());
124 FloatVal p(gecode_boost::numeric::interval_lib::pi_twice<FloatValImpType>());
130 x +=
n;
return *
this;
134 x -=
n;
return *
this;
138 x *=
n;
return *
this;
142 x /=
n;
return *
this;
147 x += v.
x;
return *
this;
151 x -= v.
x;
return *
this;
155 x *= v.
x;
return *
this;
159 x /= v.
x;
return *
this;
233 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
241 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
250 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
258 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
267 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
275 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
284 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
292 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
301 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
307 if (!gecode_boost::numeric::interval_lib::checking_strict<FloatNum>
308 ::is_empty(x.
x.lower(), x.
x.upper())) {
309 if ((x.
x.lower() == y) && (x.
x.upper() == y))
312 if (((x.
x.lower() == y) &&
313 (nextafter(x.
x.lower(),x.
x.upper()) == x.
x.upper())) ||
314 ((x.
x.upper() == y) &&
315 (nextafter(x.
x.upper(),x.
x.lower()) == x.
x.lower())))
324 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
332 }
catch (gecode_boost::numeric::interval_lib::comparison_error&) {
362 template<
class Char,
class Traits>
363 std::basic_ostream<Char,Traits>&
364 operator <<(std::basic_ostream<Char,Traits>& os,
const FloatVal&
x) {
414 #ifdef GECODE_HAS_MPFR
491 namespace Gecode {
namespace Float {
FloatVal operator-(const FloatVal &x)
SetExpr singleton(const LinIntExpr &e)
Singleton expression.
bool subset(const FloatVal &x, const FloatVal &y)
void log(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatVal operator/(const FloatVal &x, const FloatVal &y)
FloatVal fmod(const FloatVal &x, const FloatVal &y)
FloatVal & operator/=(const FloatNum &n)
Divide by n.
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
void abs(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
void nroot(Home home, FloatVar x0, int n, FloatVar x1)
Post propagator for for $n 0$.
bool overlap(const FloatVal &x, const FloatVal &y)
void pow(Home home, FloatVar x0, int n, FloatVar x1)
Post propagator for for $n 0$.
FloatVal hull(const FloatVal &x, const FloatVal &y)
FloatVal & operator-=(const FloatNum &n)
Subtract by n.
static FloatVal pi_twice(void)
Return .
gecode_boost::numeric::interval< FloatNum, gecode_boost::numeric::interval_lib::policies< R, P > > FloatValImpType
Implementation type for float value.
FloatVal(void)
Default constructor.
static FloatVal hull(FloatNum x, FloatNum y)
Return hull of x and y.
FloatValImpType x
Implementation of float value.
bool tight(void) const
Test whether float is tight.
bool singleton(void) const
Test whether float is a singleton.
int p
Number of positive literals for node type.
bool proper_subset(const FloatVal &x, const FloatVal &y)
Gecode::IntArgs i(4, 1, 2, 3, 4)
FloatNum med(void) const
Return median of float value.
int n
Number of negative literals for node type.
FloatVal & operator*=(const FloatNum &n)
Multiply by n.
FloatVal sinh(const FloatVal &x)
FloatNum min(void) const
Return lower bound.
FloatVal intersect(const FloatVal &x, const FloatVal &y)
FloatVal operator+(const FloatVal &x)
void sqr(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
bool operator!=(const FloatVal &x, const FloatVal &y)
void sqrt(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatVal cosh(const FloatVal &x)
static FloatVal pi(void)
Return lower bound of .
FloatVal & operator=(const FloatNum &n)
Assignment operator.
void asin(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatVal & operator+=(const FloatNum &n)
Increment by n.
union Gecode::@518::NNF::@57 u
Union depending on nodetype t.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
void cos(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatVal operator*(const FloatVal &x, const FloatVal &y)
Node * x
Pointer to corresponding Boolean expression node.
void tan(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
bool in(FloatNum n) const
Test whether n is included.
static FloatVal pi_half(void)
Return .
bool operator>=(const FloatVal &x, const FloatVal &y)
FloatVal acosh(const FloatVal &x)
bool zero_in(void) const
Test whether zero is included.
FloatVal atanh(const FloatVal &x)
FloatVal asinh(const FloatVal &x)
void assign(FloatNum const &l, FloatNum const &u)
Assign lower bound l and upper bound u.
bool operator>(const FloatVal &x, const FloatVal &y)
bool operator<(const FloatVal &x, const FloatVal &y)
bool operator==(const FloatVal &x, const FloatVal &y)
bool operator<=(const FloatVal &x, const FloatVal &y)
FloatNum size(void) const
Return size of float value (distance between maximum and minimum)
Gecode toplevel namespace
void sin(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
void acos(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
void exp(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
friend FloatVal max(const FloatVal &x, const FloatVal &y)
friend FloatVal min(const FloatVal &x, const FloatVal &y)
FloatVal tanh(const FloatVal &x)
FloatNum max(void) const
Return upper bound.
double FloatNum
Floating point number base type.
void atan(Home home, FloatVar x0, FloatVar x1)
Post propagator for .