Go to the documentation of this file.
43 namespace Gecode {
namespace Int {
namespace Linear {
51 }
else if (
t[
i].
x.zero()) {
80 for (
int i=n_p;
i--; )
89 for (
int i=n_p;
i--; )
98 for (
int i=n_p;
i--; )
107 for (
int i=n_p;
i--; )
126 for (
int i=n_p;
i--; )
134 for (
int i=n_p;
i--; )
142 for (
int i=n_p;
i--; )
150 for (
int i=n_p;
i--; )
168 for (
int i=n_p;
i--; )
190 for (
int i=n_p;
i--; )
213 for (
int i=n_p;
i--; )
235 for (
int i=n_p;
i--; )
266 for (
int i=n_n;
i--; )
276 for (
int i=n_n;
i--; )
286 for (
int i=n_n;
i--; )
295 for (
int i=n_n;
i--; )
314 for (
int i=n_n;
i--; )
322 for (
int i=n_n;
i--; )
330 for (
int i=n_n;
i--; )
338 for (
int i=n_n;
i--; )
356 for (
int i=n_n;
i--; )
378 for (
int i=n_n;
i--; )
401 for (
int i=n_n;
i--; )
423 for (
int i=n_n;
i--; )
454 for (
int i=n_p;
i--; ) {
461 for (
int i=n_n;
i--; ) {
468 ::
post(home,b_p,b_n,
y,
c)));
472 ::
post(home,b_p,b_n,
y,
c)));
476 ::
post(home,b_p,b_n,
y,
c)));
482 ::
post(home,b_n,b_p,m,-
c)));
499 for (
int i=n_p;
i--; ) {
506 for (
int i=n_n;
i--; ) {
514 ::
post(home,b_p,b_n,
y,
c)));
519 ::
post(home,b_p,b_n,
y,
c)));
524 ::
post(home,b_p,b_n,
y,
c)));
529 ::
post(home,b_n,b_p,
y,-
c)));
550 bool unit = normalize<BoolView>(
t,
n,t_p,n_p,t_n,n_n,
gcd);
554 c =
static_cast<int>(
d);
569 long long int sl =
static_cast<long long int>(
x.max())+
c;
570 long long int su =
static_cast<long long int>(
x.min())+
c;
571 for (
int i=n_p;
i--; )
573 for (
int i=n_n;
i--; )
579 if (unit && (n_n == 0)) {
582 }
else if (unit && (n_p == 0)) {
628 if (
r.var().zero()) {
642 bool unit = normalize<BoolView>(
t,
n,t_p,n_p,t_n,n_n,
gcd);
650 if ((
d %
gcd) != 0) {
658 if ((
d %
gcd) == 0) {
675 c =
static_cast<int>(
d);
680 case IRT_EQ: fail = (0 !=
c);
break;
681 case IRT_NQ: fail = (0 ==
c);
break;
682 case IRT_GQ: fail = (0 <
c);
break;
683 case IRT_LQ: fail = (0 >
c);
break;
698 long long int sl =
c;
699 long long int su =
c;
700 for (
int i=n_p;
i--; )
702 for (
int i=n_n;
i--; )
708 if (unit && (n_n == 0)) {
711 }
else if (unit && (n_p == 0)) {
720 for (
int i=n_n;
i--; )
721 t_n[
i].
a = -t_n[
i].
a;
void post_all(Home home, Term< BoolView > *t, int n, IntRelType irt, View x, int c)
void rewrite(IntRelType &r, long long int &d)
Rewrite non-strict relations.
Post propagator for SetVar x
IntRelType
Relation types for integers.
bool zero(void) const
Test whether view is assigned to be zero.
Propagator for reified integer equal to Boolean sum (cardinality)
Post propagator for SetVar SetOpType SetVar y
Propagator for integer disequal to Boolean sum (cardinality)
Propagator for reified integer less or equal to Boolean sum (cardinality)
@ RM_PMI
Inverse implication for reification.
#define GECODE_ES_FAIL(es)
Check whether execution status es is failed, and fail space home.
Class for describing linear term .
void post_mixed(Home home, Term< BoolView > *t_p, int n_p, Term< BoolView > *t_n, int n_n, IntRelType irt, IntView y, int c)
@ IRT_GQ
Greater or equal ( )
Propagator for inequality to Boolean sum with coefficients
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
@ RM_IMP
Implication for reification.
Gecode::IntArgs i(4, 1, 2, 3, 4)
bool one(void) const
Test whether view is assigned to be one.
void check(int n, const char *l)
Check whether n is in range, otherwise throw out of limits with information l.
IntPropLevel
Propagation levels for integer propagators.
IntType floor_div_xp(IntType x, IntType y)
Compute where y is non-negative.
union Gecode::@579::NNF::@61 u
Union depending on nodetype t.
Propagator for integer less or equal to Boolean sum (cardinality)
Propagator for integer equal to Boolean sum (cardinality)
void post_neg_unit(Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, IntView y, int c)
void eliminate(Term< BoolView > *t, int &n, long long int &d)
Eliminate assigned views.
Boolean view for Boolean variables.
IntType ceil_div_xp(IntType x, IntType y)
Compute where y is non-negative.
Gecode toplevel namespace
int gcd(int a, int b)
Compute the greatest common divisor of a and b.
Propagator for equality to Boolean sum (cardinality)
Reification specification.
@ RM_EQV
Equivalence for reification (default)
Home class for posting propagators
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
void post_pos_unit(Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, IntView y, int c)
Propagator for equality to Boolean sum with coefficients
Propagator for greater or equal to Boolean sum (cardinality)
Post propagator for SetVar SetOpType SetVar SetRelType r
Array of scale Boolean views.
bool one(const Gecode::FloatValArgs &a)
Check whether has only one coefficients.
#define GECODE_NEVER
Assert that this command is never executed.
IntRelType neg(IntRelType irt)
Return negated relation type of irt.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Propagator for disequality to Boolean sum with coefficients
Integer view for integer variables.
#define GECODE_ME_FAIL(me)
Check whether modification event me is failed, and fail space home.
void estimate(Term< View > *t, int n, int c, int &l, int &u)
Estimate lower and upper bounds.
Exception: Unknown relation passed as argument
void post(Home home, Term< BoolView > *t, int n, IntRelType irt, IntView x, int c, IntPropLevel)
Post propagator for linear constraint over Booleans.
Post propagator for f(x \diamond_{\mathit{op}} y) \sim_r z \f$ void rel(Home home
Gecode::FloatVal c(-8, 8)
int n
Number of negative literals for node type.
ScaleBool * fst(void) const
Return pointer to first element.
Coefficient and Boolean view.
Propagator for disequality to Boolean sum (cardinality)
@ IRT_LQ
Less or equal ( )