36 namespace Gecode {
namespace Float {
namespace Rel {
43 template<
class View0,
class View1>
48 template<
class View0,
class View1>
53 }
else if (x1.assigned()) {
55 }
else if (x0 != x1) {
65 template<
class View0,
class View1>
70 template<
class View0,
class View1>
77 template<
class View0,
class View1>
83 template<
class View0,
class View1>
88 }
else if (
x1.assigned()) {
94 }
while (
x0.min() !=
x1.min());
98 }
while (
x0.max() !=
x1.max());
102 assert(
x0.assigned() &&
x1.assigned());
123 }
else if (x.
size() > 2) {
126 for (
int i=x.
size();
i-- > 1; ) {
130 for (
int i=x.
size();
i--; ) {
162 assert(
x.size() > 2);
165 for (
int i = 0; ;
i++)
169 for (
int j =
x.size(); j--; )
178 for (
int i =
x.size();
i--; ) {
180 if (mn <
x[
i].
min()) {
187 for (
int i =
x.size();
i--; ) {
189 if (mx >
x[
i].
max()) {
204 template<
class View,
class CtrlView, ReifyMode rm>
209 template<
class View,
class CtrlView, ReifyMode rm>
223 (void)
new (home)
ReEq(home,x0,x1,b);
224 }
else if (rm !=
RM_IMP) {
231 template<
class View,
class CtrlView, ReifyMode rm>
236 template<
class View,
class CtrlView, ReifyMode rm>
242 template<
class View,
class CtrlView, ReifyMode rm>
277 template<
class View,
class CtrlView, ReifyMode rm>
283 template<
class View,
class CtrlView, ReifyMode rm>
289 }
else if (x.assigned()) {
304 template<
class View,
class CtrlView, ReifyMode rm>
309 template<
class View,
class CtrlView, ReifyMode rm>
315 template<
class View,
class CtrlView, ReifyMode rm>
Reified binary bounds consistent equality propagator.
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
Inverse implication for reification.
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
ExecStatus ES_SUBSUMED(Propagator &p)
ReEq(Space &home, ReEq &p)
Constructor for cloning p.
const FloatNum max
Largest allowed float value.
View0 x0
View of type View0.
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
bool overlap(const FloatVal &x, const FloatVal &y)
Reified binary propagator.
Binary bounds consistent equality propagator.
Eq(Space &home, Eq< View0, View1 > &p)
Constructor for cloning p.
ViewArray< View > x
Array of views.
Base-class for propagators.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
const Gecode::ModEvent ME_FLOAT_VAL
Domain operation has resulted in a value (assigned variable)
Propagation has computed fixpoint.
static PropCost unary(PropCost::Mod m)
Single variable for modifier pcm.
View1 x1
View of type View1.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
static ExecStatus post(Home home, View x, FloatVal c, CtrlView b)
Post bounds consistent propagator .
Base-class for both propagators and branchers.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Reified bounds consistent equality with float propagator.
static ExecStatus post(Home home, View0 x0, View1 x1)
Post bounds consistent propagator .
Binary bounds consistent disequality propagator.
NaryEq(Space &home, NaryEq< View > &p)
Constructor for cloning p.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
const FloatNum min
Smallest allowed float value.
int n
Number of negative literals for node type.
Gecode::IntArgs i({1, 2, 3, 4})
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
ModEventDelta med
A set of modification events (used during propagation)
struct Gecode::@593::NNF::@62::@63 b
For binary nodes (and, or, eqv)
static ExecStatus post(Home home, ViewArray< View > &x)
Post bounds consistent propagator .
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
ReEqFloat(Space &home, ReEqFloat &p)
Constructor for cloning p.
union Gecode::@593::NNF::@62 u
Union depending on nodetype t.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
RelTest rtest_eq(View x, View y)
Test whether views x and y are equal.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
bool assigned(View x, int v)
Whether x is assigned to value v.
static ExecStatus post(Home home, View x0, View x1, CtrlView b)
Post bounds consistent propagator .
static ExecStatus post(Home home, View0 x0, View1 x1)
Post bounds consistent propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Post propagator for SetVar x
void unique(void)
Remove all duplicate views from array (changes element order)
const Gecode::PropCond PC_FLOAT_BND
Propagate when minimum or maximum of a view changes.
FloatVal c
Float constant to check.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Gecode toplevel namespace
Implication for reification.
n-ary bounds consistent equality propagator
CtrlView b
Boolean control view.
Relation may hold or not.
int size(void) const
Return size of array (number of elements)
int ModEventDelta
Modification event deltas.
Home class for posting propagators
double FloatNum
Floating point number base type.
#define GECODE_NEVER
Assert that this command is never executed.