Go to the documentation of this file.
40 namespace Gecode {
namespace Int {
namespace Arithmetic {
48 return new (home)
MultBnd(home,share,*
this);
64 if (
pos(
x2))
goto rewrite_ppp;
65 if (
neg(
x2))
goto rewrite_npn;
69 if (
pos(
x2))
goto rewrite_nnp;
70 if (
neg(
x2))
goto rewrite_pnn;
100 if (
pos(
x2))
goto rewrite_ppp;
101 if (
neg(
x2))
goto rewrite_pnn;
121 if (
pos(
x2))
goto rewrite_nnp;
122 if (
neg(
x2))
goto rewrite_npn;
160 }
else if (
neg(
x0)) {
163 }
else if (
pos(
x1)) {
164 if (
pos(
x2))
goto post_ppp;
165 if (
neg(
x2))
goto post_npn;
166 }
else if (
neg(
x1)) {
167 if (
pos(
x2))
goto post_nnp;
168 if (
neg(
x2))
goto post_pnn;
202 return new (home)
MultDom(home,share,*
this);
227 if (
pos(
x2))
goto rewrite_ppp;
228 if (
neg(
x2))
goto rewrite_npn;
232 if (
pos(
x2))
goto rewrite_nnp;
233 if (
neg(
x2))
goto rewrite_pnn;
263 if (
pos(
x2))
goto rewrite_ppp;
264 if (
neg(
x2))
goto rewrite_pnn;
284 if (
pos(
x2))
goto rewrite_nnp;
285 if (
neg(
x2))
goto rewrite_npn;
311 return prop_mult_dom<IntView>(home,*
this,
x0,
x1,
x2);
327 }
else if (
neg(
x0)) {
330 }
else if (
pos(
x1)) {
331 if (
pos(
x2))
goto post_ppp;
332 if (
neg(
x2))
goto post_npn;
333 }
else if (
neg(
x1)) {
334 if (
pos(
x2))
goto post_nnp;
335 if (
neg(
x2))
goto post_pnn;
static ExecStatus post(Home home, VA x0, VB x1, VC x2)
Post propagator .
long long int mll(long long int x, long long int y)
Multiply x and \y.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Bounds consistent positive multiplication propagator.
bool assigned(void) const
Test whether view is assigned.
bool pos(const View &x)
Test whether x is postive.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
ExecStatus ES_SUBSUMED(Propagator &p)
int min(void) const
Return minimum of domain.
Operations for square and square-root propagators.
bool same(const CachedView< View > &x, const CachedView< View > &y)
static ExecStatus post(Home home, IntView x0, IntView x1, IntView x2)
Post propagator .
static ExecStatus post(Home home, VA x0, VB x1, VC x2)
Post propagator .
const FloatNum min
Smallest allowed float value.
ExecStatus ES_NOFIX_PARTIAL(Propagator &p, const ModEventDelta &med)
Propagator p has not computed partial fixpoint
Base-class for both propagators and branchers.
IntType floor_div_xp(IntType x, IntType y)
Compute where y is non-negative.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
MultDom(Space &home, bool share, MultDom &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
IntType ceil_div_xp(IntType x, IntType y)
Compute where y is non-negative.
Gecode toplevel namespace
Domain consistent positive multiplication propagator.
int max(void) const
Return maximum of domain.
static ExecStatus post(Home home, IntView x0, IntView x1, IntView x2)
Post propagator .
int val(void) const
Return assigned value (only if assigned)
IntType floor_div_xx(IntType x, IntType y)
Compute .
Home class for posting propagators
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
static ModEvent me(const ModEventDelta &med)
Return modification event for view type in med.
MultBnd(Space &home, bool share, MultBnd &p)
Constructor for cloning p.
bool any(const View &x)
Test whether x is neither positive nor negative.
ModEventDelta med
A set of modification events (used during propagation)
IntRelType swap(IntRelType irt)
Return swapped relation type of irt.
static ExecStatus post(Home home, View x0, View x1)
Post propagator .
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.
IntType ceil_div_xx(IntType x, IntType y)
Compute .
static PropCost ternary(PropCost::Mod m)
Three variables for modifier pcm.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
bool neg(const View &x)
Test whether x is negative.
Integer view for integer variables.
#define GECODE_ME_CHECK(me)
Check whether modification event me is failed, and forward failure.
ModEvent lq(Space &home, int n)
Restrict domain values to be less or equal than n.
Gecode::FloatVal c(-8, 8)
ModEvent gq(Space &home, int n)
Restrict domain values to be greater or equal than n.
int med(void) const
Return median of domain (greatest element not greater than the median)
int ModEventDelta
Modification event deltas.
@ ES_NOFIX
Propagation has not computed fixpoint.
const Gecode::ModEvent ME_INT_DOM
Domain operation has changed the domain.
#define GECODE_REWRITE(prop, post)
Rewrite propagator by executing post function.
@ ES_OK
Execution is okay.
const FloatNum max
Largest allowed float value.
ModEvent eq(Space &home, int n)
Restrict domain values to be equal to n.
virtual Actor * copy(Space &home, bool share)
Copy propagator during cloning.