Go to the documentation of this file.
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;
156 }
else if (
neg(
x0)) {
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;
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);
323 }
else if (
neg(
x0)) {
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;
struct Gecode::@602::NNF::@65::@66 b
For binary nodes (and, or, eqv)
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.
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, MultDom &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
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 .
struct Gecode::@602::NNF::@65::@67 a
For atomic nodes.
Home class for posting propagators
static ModEvent me(const ModEventDelta &med)
Return modification event for view type in med.
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 .
MultBnd(Space &home, MultBnd &p)
Constructor for cloning p.
IntType ceil_div_xx(IntType x, IntType y)
Compute .
static PropCost ternary(PropCost::Mod m)
Three variables for modifier pcm.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
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.
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.
const FloatNum max
Largest allowed float value.
ModEvent eq(Space &home, int n)
Restrict domain values to be equal to n.