36 namespace Gecode {
namespace Int {
namespace Arithmetic {
44 return new (home)
MultBnd(home,*
this);
60 if (
pos(
x2))
goto rewrite_ppp;
61 if (
neg(
x2))
goto rewrite_npn;
65 if (
pos(
x2))
goto rewrite_nnp;
66 if (
neg(
x2))
goto rewrite_pnn;
96 if (
pos(
x2))
goto rewrite_ppp;
97 if (
neg(
x2))
goto rewrite_pnn;
117 if (
pos(
x2))
goto rewrite_nnp;
118 if (
neg(
x2))
goto rewrite_npn;
154 if (
pos(x1) ||
pos(x2))
goto post_ppp;
155 if (
neg(x1) ||
neg(x2))
goto post_pnn;
156 }
else if (
neg(x0)) {
157 if (
neg(x1) ||
pos(x2))
goto post_nnp;
158 if (
pos(x1) ||
neg(x2))
goto post_npn;
159 }
else if (
pos(x1)) {
160 if (
pos(x2))
goto post_ppp;
161 if (
neg(x2))
goto post_npn;
162 }
else if (
neg(x1)) {
163 if (
pos(x2))
goto post_nnp;
164 if (
neg(x2))
goto post_pnn;
173 (void)
new (home)
MultBnd(home,x0,x1,x2);
198 return new (home)
MultDom(home,*
this);
223 if (
pos(
x2))
goto rewrite_ppp;
224 if (
neg(
x2))
goto rewrite_npn;
228 if (
pos(
x2))
goto rewrite_nnp;
229 if (
neg(
x2))
goto rewrite_pnn;
259 if (
pos(
x2))
goto rewrite_ppp;
260 if (
neg(
x2))
goto rewrite_pnn;
280 if (
pos(
x2))
goto rewrite_nnp;
281 if (
neg(
x2))
goto rewrite_npn;
307 return prop_mult_dom<IntView>(home,*
this,
x0,
x1,
x2);
321 if (
pos(x1) ||
pos(x2))
goto post_ppp;
322 if (
neg(x1) ||
neg(x2))
goto post_pnn;
323 }
else if (
neg(x0)) {
324 if (
neg(x1) ||
pos(x2))
goto post_nnp;
325 if (
pos(x1) ||
neg(x2))
goto post_npn;
326 }
else if (
pos(x1)) {
327 if (
pos(x2))
goto post_ppp;
328 if (
neg(x2))
goto post_npn;
329 }
else if (
neg(x1)) {
330 if (
pos(x2))
goto post_nnp;
331 if (
neg(x2))
goto post_pnn;
340 (void)
new (home)
MultDom(home,x0,x1,x2);
int val(void) const
Return assigned value (only if assigned)
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
bool any(const View &x)
Test whether x is neither positive nor negative.
static ExecStatus post(Home home, View x0, View x1)
Post propagator .
ExecStatus ES_SUBSUMED(Propagator &p)
const FloatNum max
Largest allowed float value.
ModEvent eq(Space &home, int n)
Restrict domain values to be equal to n.
ExecStatus ES_NOFIX_PARTIAL(Propagator &p, const ModEventDelta &med)
Propagator p has not computed partial fixpoint
static ExecStatus post(Home home, VA x0, VB x1, VC x2)
Post propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
long long int mll(long long int x, long long int y)
Multiply x and .
IntType floor_div_xx(IntType x, IntType y)
Compute .
static ExecStatus post(Home home, IntView x0, IntView x1, IntView x2)
Post propagator .
Base-class for both propagators and branchers.
Gecode::FloatVal c(-8, 8)
virtual Actor * copy(Space &home)
Copy propagator during cloning.
const FloatNum min
Smallest allowed float value.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
Domain consistent positive multiplication propagator.
ModEvent lq(Space &home, int n)
Restrict domain values to be less or equal than n.
int med(void) const
Return median of domain (greatest element not greater than the median)
ModEventDelta med
A set of modification events (used during propagation)
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
struct Gecode::@593::NNF::@62::@63 b
For binary nodes (and, or, eqv)
Operations for square and square-root propagators.
int min(void) const
Return minimum of domain.
IntType floor_div_xp(IntType x, IntType y)
Compute where y is non-negative.
IntType ceil_div_xp(IntType x, IntType y)
Compute where y is non-negative.
IntType ceil_div_xx(IntType x, IntType y)
Compute .
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
MultBnd(Space &home, MultBnd &p)
Constructor for cloning p.
Integer view for integer variables.
bool assigned(void) const
Test whether view is assigned.
const Gecode::ModEvent ME_INT_DOM
Domain operation has changed the domain.
static ExecStatus post(Home home, IntView x0, IntView x1, IntView x2)
Post propagator .
static ModEvent me(const ModEventDelta &med)
Return modification event for view type in med.
bool pos(const View &x)
Test whether x is postive.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
ModEvent gq(Space &home, int n)
Restrict domain values to be greater or equal than n.
Propagation has not computed fixpoint.
static PropCost ternary(PropCost::Mod m)
Three variables for modifier pcm.
Gecode toplevel namespace
int max(void) const
Return maximum of domain.
Domain consistent multiplication propagator.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
int ModEventDelta
Modification event deltas.
Home class for posting propagators
struct Gecode::@593::NNF::@62::@64 a
For atomic nodes.
bool neg(const View &x)
Test whether x is negative.
static ExecStatus post(Home home, VA x0, VB x1, VC x2)
Post propagator .
Bounds consistent positive multiplication propagator.
IntRelType swap(IntRelType irt)
Return swapped relation type of irt.