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;
Propagator for inequality to Boolean sum with coefficients
void post_neg_unit(Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, IntView y, int c)
Inverse implication for reification.
void eliminate(Term< BoolView > *t, int &n, long long int &d)
Eliminate assigned views.
union Gecode::@579::NNF::@61 u
Union depending on nodetype t.
bool one(const Gecode::FloatValArgs &a)
Check whether has only one coefficients.
Propagator for integer disequal to Boolean sum (cardinality)
Propagator for equality to Boolean sum (cardinality)
Propagator for equality to Boolean sum with coefficients
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
Gecode::FloatVal c(-8, 8)
Propagator for greater or equal to Boolean sum (cardinality)
Exception: Unknown relation passed as argument
Gecode::IntArgs i(4, 1, 2, 3, 4)
IntRelType neg(IntRelType irt)
Return negated relation type of irt.
int n
Number of negative literals for node type.
IntRelType
Relation types for integers.
Propagator for integer less or equal to Boolean sum (cardinality)
Propagator for integer equal to Boolean sum (cardinality)
int gcd(int a, int b)
Compute the greatest common divisor of a and b.
Reification specification.
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.
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.
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Propagator for reified integer less or equal to Boolean sum (cardinality)
Propagator for reified integer equal to Boolean sum (cardinality)
Propagator for disequality to Boolean sum with coefficients
Post propagator for SetVar SetOpType SetVar SetRelType r
IntPropLevel
Propagation levels for integer propagators.
Post propagator for f(x \diamond_{\mathit{op}} y) \sim_r z \f$ void rel(Home home
Integer view for integer variables.
Post propagator for SetVar SetOpType SetVar y
Array of scale Boolean views.
void estimate(Term< View > *t, int n, int c, int &l, int &u)
Estimate lower and upper bounds.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Coefficient and Boolean view.
Post propagator for SetVar x
#define GECODE_ME_FAIL(me)
Check whether modification event me 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)
Gecode toplevel namespace
Implication for reification.
Propagator for disequality to Boolean sum (cardinality)
void post(Home home, Term< BoolView > *t, int n, IntRelType irt, IntView x, int c, IntPropLevel)
Post propagator for linear constraint over Booleans.
void check(int n, const char *l)
Check whether n is in range, otherwise throw out of limits with information l.
Home class for posting propagators
#define GECODE_ES_FAIL(es)
Check whether execution status es is failed, and fail space home.
#define GECODE_NEVER
Assert that this command is never executed.
ScaleBool * fst(void) const
Return pointer to first element.
void post_pos_unit(Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, IntView y, int c)
Equivalence for reification (default)
Boolean view for Boolean variables.