Generated on Thu Jan 16 2025 00:00:00 for Gecode by doxygen 1.14.0
Gecode::Int::Linear Namespace Reference

Linear propagators More...

Classes

class  BoolNegTraits
 Traits for Boolean negation view. More...
class  BoolNegTraits< BoolView >
 Traits for Boolean negation view. More...
class  BoolNegTraits< NegBoolView >
 Traits for Boolean negation view. More...
class  DomEq
 Propagator for domain consistent n-ary linear equality More...
class  EmptyScaleBoolArray
 Empty array of scale Boolean views. More...
class  Eq
 Propagator for bounds consistent n-ary linear equality More...
class  EqBin
 Propagator for bounds consistent binary linear equality More...
class  EqBoolInt
 Propagator for integer equal to Boolean sum (cardinality) More...
class  EqBoolScale
 Propagator for equality to Boolean sum with coefficients More...
class  EqBoolView
 Propagator for equality to Boolean sum (cardinality) More...
class  EqTer
 Propagator for bounds consistent ternary linear equality More...
class  GqBin
 Propagator for bounds consistent binary linear greater or equal More...
class  GqBoolInt
 Propagator for integer less or equal to Boolean sum (cardinality) More...
class  GqBoolView
 Propagator for greater or equal to Boolean sum (cardinality) More...
class  Lin
 Base-class for n-ary linear propagators. More...
class  LinBin
 Base-class for binary linear propagators. More...
class  LinBoolInt
 Baseclass for integer Boolean sum. More...
class  LinBoolScale
 Base class for linear Boolean constraints with coefficients. More...
class  LinBoolView
 Base-class for Boolean linear propagators. More...
class  LinTer
 Base-class for ternary linear propagators. More...
class  Lq
 Propagator for bounds consistent n-ary linear less or equal More...
class  LqBin
 Propagator for bounds consistent binary linear less or equal More...
class  LqBoolScale
 Propagator for inequality to Boolean sum with coefficients More...
class  LqTer
 Propagator for bounds consistent ternary linear less or equal More...
class  NegSupportIter
 Support-based iterator for negative view. More...
class  NoView
 No view serves as filler for empty view arrays. More...
class  Nq
 Propagator for bounds consistent n-ary linear disequality More...
class  NqBin
 Propagator for bounds consistent binary linear disequality More...
class  NqBoolInt
 Propagator for integer disequal to Boolean sum (cardinality) More...
class  NqBoolScale
 Propagator for disequality to Boolean sum with coefficients More...
class  NqBoolView
 Propagator for disequality to Boolean sum (cardinality) More...
class  NqTer
 Propagator for bounds consistent ternary linear disquality More...
class  PosSupportIter
 Support-based iterator for positive view. More...
class  ReEq
 Propagator for reified bounds consistent n-ary linear equality More...
class  ReEqBin
 Propagator for reified bounds consistent binary linear equality More...
class  ReEqBoolInt
 Propagator for reified integer equal to Boolean sum (cardinality) More...
class  ReGqBoolInt
 Propagator for reified integer less or equal to Boolean sum (cardinality) More...
class  ReLin
 Base-class for reified n-ary linear propagators. More...
class  ReLinBin
 Base-class for reified binary linear propagators. More...
class  ReLinBoolInt
 Baseclass for reified integer Boolean sum. More...
class  ReLq
 Propagator for reified bounds consistent n-ary linear less or equal More...
class  ReLqBin
 Propagator for reified bounds consistent binary linear less or equal More...
class  ScaleBool
 Coefficient and Boolean view. More...
class  ScaleBoolArray
 Array of scale Boolean views. More...
class  SupportIter
 Base-class for support-based iterator. More...
class  SupportSet
 Set for support information More...
class  Term
 Class for describing linear term $a\cdot x$. More...
class  TermBySizePos
 Sort linear terms by coefficient size and original position. More...
class  TermByView
 Sort linear terms by view. More...

Enumerations

enum  BinMod {
  BM_X0_MIN = 1<<0 , BM_X0_MAX = 1<<1 , BM_X1_MIN = 1<<2 , BM_X1_MAX = 1<<3 ,
  BM_ALL = BM_X0_MIN|BM_X0_MAX|BM_X1_MIN|BM_X1_MAX
}
 Describe which view has been modified how. More...
enum  TerMod {
  TM_X0_MIN = 1<<0 , TM_X0_MAX = 1<<1 , TM_X1_MIN = 1<<2 , TM_X1_MAX = 1<<3 ,
  TM_X2_MIN = 1<<4 , TM_X2_MAX = 1<<5 , TM_ALL = TM_X0_MIN|TM_X0_MAX|TM_X1_MIN|TM_X1_MAX|TM_X2_MIN|TM_X2_MAX
}
 Describe which view has been modified how. More...

Functions

template<class View>
void estimate (Term< View > *t, int n, int c, int &l, int &u)
 Estimate lower and upper bounds.
void post (Home home, Term< IntView > *t, int n, IntRelType irt, int c, IntPropLevel=IPL_DEF)
 Post propagator for linear constraint over integers.
void post (Home home, Term< IntView > *t, int n, IntRelType irt, int c, Reify r, IntPropLevel=IPL_DEF)
 Post reified propagator for linear constraint.
void post (Home home, Term< BoolView > *t, int n, IntRelType irt, int c, IntPropLevel=IPL_DEF)
 Post propagator for linear constraint over Booleans.
void post (Home home, Term< BoolView > *t, int n, IntRelType irt, int c, Reify r, IntPropLevel=IPL_DEF)
 Post propagator for reified linear constraint over Booleans.
void post (Home home, Term< BoolView > *t, int n, IntRelType irt, IntView y, int c=0, IntPropLevel=IPL_DEF)
 Post propagator for linear constraint over Booleans.
void post (Home home, Term< BoolView > *t, int n, IntRelType irt, IntView y, Reify r, IntPropLevel=IPL_DEF)
 Post propagator for reified linear constraint over Booleans.
void eliminate (Term< BoolView > *t, int &n, long long int &d)
 Eliminate assigned views.
void rewrite (IntRelType &r, long long int &d)
 Rewrite non-strict relations.
void post_pos_unit (Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, IntView y, int c)
void post_pos_unit (Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, ZeroIntView, int c)
void post_pos_unit (Home home, Term< BoolView > *t_p, int n_p, IntRelType irt, int c, Reify r, IntPropLevel)
void post_neg_unit (Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, IntView y, int c)
void post_neg_unit (Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, ZeroIntView, int c)
void post_neg_unit (Home home, Term< BoolView > *t_n, int n_n, IntRelType irt, int c, Reify r, IntPropLevel)
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)
void post_mixed (Home home, Term< BoolView > *t_p, int n_p, Term< BoolView > *t_n, int n_n, IntRelType irt, ZeroIntView y, int c)
template<class View>
void post_all (Home home, Term< BoolView > *t, int n, IntRelType irt, View x, int c)
template<class P, class N>
bool isunit (ViewArray< P > &, ViewArray< N > &)
 Test if only unit-coefficient arrays used.
template<>
bool isunit (ViewArray< IntView > &, ViewArray< IntView > &)
template<>
bool isunit (ViewArray< IntView > &, ViewArray< NoView > &)
template<>
bool isunit (ViewArray< NoView > &, ViewArray< IntView > &)
template<class Val, class View>
void bounds_p (ModEventDelta med, ViewArray< View > &x, Val &c, Val &sl, Val &su)
template<class Val, class View>
void bounds_n (ModEventDelta med, ViewArray< View > &y, Val &c, Val &sl, Val &su)
template<class Val, class P, class N>
ExecStatus prop_bnd (Space &home, ModEventDelta med, Propagator &p, ViewArray< P > &x, ViewArray< N > &y, Val &c)
template<class Val, class P, class N>
Actoreqtobin (Space &, Propagator &, ViewArray< P > &, ViewArray< N > &, Val)
 Rewriting of equality to binary propagators.
template<class Val>
Actoreqtobin (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c)
template<class Val>
Actoreqtobin (Space &home, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c)
template<class Val>
Actoreqtobin (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c)
template<class Val, class P, class N>
Actoreqtoter (Space &, Propagator &, ViewArray< P > &, ViewArray< N > &, Val)
 Rewriting of equality to ternary propagators.
template<class Val>
Actoreqtoter (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c)
template<class Val>
Actoreqtoter (Space &home, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c)
template<class Val>
Actoreqtoter (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c)
template<class Val, class P, class N>
Actornqtobin (Space &, Propagator &, ViewArray< P > &, ViewArray< N > &, Val)
 Rewriting of disequality to binary propagators.
template<class Val>
Actornqtobin (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c)
template<class Val>
Actornqtobin (Space &home, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c)
template<class Val>
Actornqtobin (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c)
template<class Val, class P, class N>
Actornqtoter (Space &, Propagator &, ViewArray< P > &, ViewArray< N > &, Val)
 Rewriting of disequality to ternary propagators.
template<class Val>
Actornqtoter (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c)
template<class Val>
Actornqtoter (Space &home, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c)
template<class Val>
Actornqtoter (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c)
template<class Val, class P, class N>
Actorlqtobin (Space &, Propagator &, ViewArray< P > &, ViewArray< N > &, Val)
 Rewriting of inequality to binary propagators.
template<class Val>
Actorlqtobin (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c)
template<class Val>
Actorlqtobin (Space &home, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c)
template<class Val>
Actorlqtobin (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c)
template<class Val, class P, class N>
Actorlqtoter (Space &, Propagator &, ViewArray< P > &, ViewArray< N > &, Val)
 Rewriting of inequality to ternary propagators.
template<class Val>
Actorlqtoter (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< NoView > &, Val c)
template<class Val>
Actorlqtoter (Space &home, Propagator &p, ViewArray< NoView > &, ViewArray< IntView > &y, Val c)
template<class Val>
Actorlqtoter (Space &home, Propagator &p, ViewArray< IntView > &x, ViewArray< IntView > &y, Val c)
void eliminate (Term< IntView > *t, int &n, long long int &d)
 Eliminate assigned views.
void rewrite (IntRelType &irt, long long int &d, Term< IntView > *&t_p, int &n_p, Term< IntView > *&t_n, int &n_n)
 Rewrite all inequations in terms of IRT_LQ.
bool precision (Term< IntView > *t_p, int n_p, Term< IntView > *t_n, int n_n, long long int d)
 Decide the required precision and check for overflow.
template<class Val, class View>
void post_nary (Home home, ViewArray< View > &x, ViewArray< View > &y, IntRelType irt, Val c)
 Posting n-ary propagators.
template<class Val, class View>
void post_nary (Home home, ViewArray< View > &x, ViewArray< View > &y, IntRelType irt, Val c, Reify r)
 Posting reified n-ary propagators.
template<class CtrlView>
void posteqint (Home home, IntView &x, int c, CtrlView b, ReifyMode rm, IntPropLevel ipl)
int gcd (int a, int b)
 Compute the greatest common divisor of a and b.
template<class View>
bool normalize (Term< View > *t, int &n, Term< View > *&t_p, int &n_p, Term< View > *&t_n, int &n_n, int &g)
 Normalize linear integer constraints.
template<class Val, class View>
void bounds_p (ModEventDelta med, ViewArray< View > &x, Val &c, Val &sl, Val &su)
 Compute bounds information for positive views.
template<class Val, class View>
void bounds_n (ModEventDelta med, ViewArray< View > &y, Val &c, Val &sl, Val &su)
 Compute bounds information for negative views.
template<class Char, class Traits>
std::basic_ostream< Char, Traits > & operator<< (std::basic_ostream< Char, Traits > &os, const NoView &)
 Print integer variable view.

Detailed Description

Linear propagators

Enumeration Type Documentation

◆ BinMod

Describe which view has been modified how.

Enumerator
BM_X0_MIN 
BM_X0_MAX 
BM_X1_MIN 
BM_X1_MAX 
BM_ALL 

Definition at line 171 of file int-bin.hpp.

◆ TerMod

Describe which view has been modified how.

Enumerator
TM_X0_MIN 
TM_X0_MAX 
TM_X1_MIN 
TM_X1_MAX 
TM_X2_MIN 
TM_X2_MAX 
TM_ALL 

Definition at line 128 of file int-ter.hpp.

Function Documentation

◆ estimate()

template<class View>
void Gecode::Int::Linear::estimate ( Term< View > * t,
int n,
int c,
int & l,
int & u )
inline

Estimate lower and upper bounds.

Estimates the boundaries for a linear expression $\sum_{i=0}^{n-1}t_i + c$. If the boundaries exceed the limits as defined in Limits::Int, these boundaries are returned.

Parameters
tarray of linear terms
nsize of array
cconstant
llower bound
uupper bound

Definition at line 41 of file post.hpp.

◆ eliminate() [1/2]

void Gecode::Int::Linear::eliminate ( Term< BoolView > * t,
int & n,
long long int & d )
inline

Eliminate assigned views.

Definition at line 43 of file bool-post.cpp.

◆ rewrite() [1/2]

void Gecode::Int::Linear::rewrite ( IntRelType & r,
long long int & d )
inline

Rewrite non-strict relations.

Definition at line 55 of file bool-post.cpp.

◆ post_pos_unit() [1/3]

void Gecode::Int::Linear::post_pos_unit ( Home home,
Term< BoolView > * t_p,
int n_p,
IntRelType irt,
IntView y,
int c )
inline

Definition at line 69 of file bool-post.cpp.

◆ post_pos_unit() [2/3]

void Gecode::Int::Linear::post_pos_unit ( Home home,
Term< BoolView > * t_p,
int n_p,
IntRelType irt,
ZeroIntView ,
int c )
inline

Definition at line 115 of file bool-post.cpp.

◆ post_pos_unit() [3/3]

void Gecode::Int::Linear::post_pos_unit ( Home home,
Term< BoolView > * t_p,
int n_p,
IntRelType irt,
int c,
Reify r,
IntPropLevel  )
inline

Definition at line 156 of file bool-post.cpp.

◆ post_neg_unit() [1/3]

void Gecode::Int::Linear::post_neg_unit ( Home home,
Term< BoolView > * t_n,
int n_n,
IntRelType irt,
IntView y,
int c )
inline

Definition at line 255 of file bool-post.cpp.

◆ post_neg_unit() [2/3]

void Gecode::Int::Linear::post_neg_unit ( Home home,
Term< BoolView > * t_n,
int n_n,
IntRelType irt,
ZeroIntView ,
int c )
inline

Definition at line 303 of file bool-post.cpp.

◆ post_neg_unit() [3/3]

void Gecode::Int::Linear::post_neg_unit ( Home home,
Term< BoolView > * t_n,
int n_n,
IntRelType irt,
int c,
Reify r,
IntPropLevel  )
inline

Definition at line 344 of file bool-post.cpp.

◆ post_mixed() [1/2]

void Gecode::Int::Linear::post_mixed ( Home home,
Term< BoolView > * t_p,
int n_p,
Term< BoolView > * t_n,
int n_n,
IntRelType irt,
IntView y,
int c )
inline

Definition at line 443 of file bool-post.cpp.

◆ post_mixed() [2/2]

void Gecode::Int::Linear::post_mixed ( Home home,
Term< BoolView > * t_p,
int n_p,
Term< BoolView > * t_n,
int n_n,
IntRelType irt,
ZeroIntView y,
int c )
inline

Definition at line 488 of file bool-post.cpp.

◆ post_all()

template<class View>
void Gecode::Int::Linear::post_all ( Home home,
Term< BoolView > * t,
int n,
IntRelType irt,
View x,
int c )
inline

All coefficients are 1

Definition at line 534 of file bool-post.cpp.

◆ isunit() [1/4]

template<class P, class N>
bool Gecode::Int::Linear::isunit ( ViewArray< P > & ,
ViewArray< N > &  )
inline

Test if only unit-coefficient arrays used.

Definition at line 44 of file int-nary.hpp.

◆ isunit() [2/4]

template<>
bool Gecode::Int::Linear::isunit ( ViewArray< IntView > & ,
ViewArray< IntView > &  )
inline

Definition at line 47 of file int-nary.hpp.

◆ isunit() [3/4]

template<>
bool Gecode::Int::Linear::isunit ( ViewArray< IntView > & ,
ViewArray< NoView > &  )
inline

Definition at line 50 of file int-nary.hpp.

◆ isunit() [4/4]

template<>
bool Gecode::Int::Linear::isunit ( ViewArray< NoView > & ,
ViewArray< IntView > &  )
inline

Definition at line 53 of file int-nary.hpp.

◆ bounds_p() [1/2]

template<class Val, class View>
void Gecode::Int::Linear::bounds_p ( ModEventDelta med,
ViewArray< View > & x,
Val & c,
Val & sl,
Val & su )
related

Definition at line 140 of file int-nary.hpp.

◆ bounds_n() [1/2]

template<class Val, class View>
void Gecode::Int::Linear::bounds_n ( ModEventDelta med,
ViewArray< View > & y,
Val & c,
Val & sl,
Val & su )
related

Definition at line 161 of file int-nary.hpp.

◆ prop_bnd()

template<class Val, class P, class N>
ExecStatus Gecode::Int::Linear::prop_bnd ( Space & home,
ModEventDelta med,
Propagator & p,
ViewArray< P > & x,
ViewArray< N > & y,
Val & c )

Definition at line 183 of file int-nary.hpp.

◆ eqtobin() [1/4]

template<class Val, class P, class N>
Actor * Gecode::Int::Linear::eqtobin ( Space & ,
Propagator & ,
ViewArray< P > & ,
ViewArray< N > & ,
Val  )
inline

Rewriting of equality to binary propagators.

Definition at line 304 of file int-nary.hpp.

◆ eqtobin() [2/4]

template<class Val>
Actor * Gecode::Int::Linear::eqtobin ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< NoView > & ,
Val c )
inline

Definition at line 309 of file int-nary.hpp.

◆ eqtobin() [3/4]

template<class Val>
Actor * Gecode::Int::Linear::eqtobin ( Space & home,
Propagator & p,
ViewArray< NoView > & ,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 317 of file int-nary.hpp.

◆ eqtobin() [4/4]

template<class Val>
Actor * Gecode::Int::Linear::eqtobin ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 325 of file int-nary.hpp.

◆ eqtoter() [1/4]

template<class Val, class P, class N>
Actor * Gecode::Int::Linear::eqtoter ( Space & ,
Propagator & ,
ViewArray< P > & ,
ViewArray< N > & ,
Val  )
inline

Rewriting of equality to ternary propagators.

Definition at line 343 of file int-nary.hpp.

◆ eqtoter() [2/4]

template<class Val>
Actor * Gecode::Int::Linear::eqtoter ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< NoView > & ,
Val c )
inline

Definition at line 348 of file int-nary.hpp.

◆ eqtoter() [3/4]

template<class Val>
Actor * Gecode::Int::Linear::eqtoter ( Space & home,
Propagator & p,
ViewArray< NoView > & ,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 356 of file int-nary.hpp.

◆ eqtoter() [4/4]

template<class Val>
Actor * Gecode::Int::Linear::eqtoter ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 364 of file int-nary.hpp.

◆ nqtobin() [1/4]

template<class Val, class P, class N>
Actor * Gecode::Int::Linear::nqtobin ( Space & ,
Propagator & ,
ViewArray< P > & ,
ViewArray< N > & ,
Val  )
inline

Rewriting of disequality to binary propagators.

Definition at line 506 of file int-nary.hpp.

◆ nqtobin() [2/4]

template<class Val>
Actor * Gecode::Int::Linear::nqtobin ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< NoView > & ,
Val c )
inline

Definition at line 511 of file int-nary.hpp.

◆ nqtobin() [3/4]

template<class Val>
Actor * Gecode::Int::Linear::nqtobin ( Space & home,
Propagator & p,
ViewArray< NoView > & ,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 519 of file int-nary.hpp.

◆ nqtobin() [4/4]

template<class Val>
Actor * Gecode::Int::Linear::nqtobin ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 527 of file int-nary.hpp.

◆ nqtoter() [1/4]

template<class Val, class P, class N>
Actor * Gecode::Int::Linear::nqtoter ( Space & ,
Propagator & ,
ViewArray< P > & ,
ViewArray< N > & ,
Val  )
inline

Rewriting of disequality to ternary propagators.

Definition at line 545 of file int-nary.hpp.

◆ nqtoter() [2/4]

template<class Val>
Actor * Gecode::Int::Linear::nqtoter ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< NoView > & ,
Val c )
inline

Definition at line 550 of file int-nary.hpp.

◆ nqtoter() [3/4]

template<class Val>
Actor * Gecode::Int::Linear::nqtoter ( Space & home,
Propagator & p,
ViewArray< NoView > & ,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 558 of file int-nary.hpp.

◆ nqtoter() [4/4]

template<class Val>
Actor * Gecode::Int::Linear::nqtoter ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 566 of file int-nary.hpp.

◆ lqtobin() [1/4]

template<class Val, class P, class N>
Actor * Gecode::Int::Linear::lqtobin ( Space & ,
Propagator & ,
ViewArray< P > & ,
ViewArray< N > & ,
Val  )
inline

Rewriting of inequality to binary propagators.

Definition at line 655 of file int-nary.hpp.

◆ lqtobin() [2/4]

template<class Val>
Actor * Gecode::Int::Linear::lqtobin ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< NoView > & ,
Val c )
inline

Definition at line 660 of file int-nary.hpp.

◆ lqtobin() [3/4]

template<class Val>
Actor * Gecode::Int::Linear::lqtobin ( Space & home,
Propagator & p,
ViewArray< NoView > & ,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 668 of file int-nary.hpp.

◆ lqtobin() [4/4]

template<class Val>
Actor * Gecode::Int::Linear::lqtobin ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 676 of file int-nary.hpp.

◆ lqtoter() [1/4]

template<class Val, class P, class N>
Actor * Gecode::Int::Linear::lqtoter ( Space & ,
Propagator & ,
ViewArray< P > & ,
ViewArray< N > & ,
Val  )
inline

Rewriting of inequality to ternary propagators.

Definition at line 694 of file int-nary.hpp.

◆ lqtoter() [2/4]

template<class Val>
Actor * Gecode::Int::Linear::lqtoter ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< NoView > & ,
Val c )
inline

Definition at line 699 of file int-nary.hpp.

◆ lqtoter() [3/4]

template<class Val>
Actor * Gecode::Int::Linear::lqtoter ( Space & home,
Propagator & p,
ViewArray< NoView > & ,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 707 of file int-nary.hpp.

◆ lqtoter() [4/4]

template<class Val>
Actor * Gecode::Int::Linear::lqtoter ( Space & home,
Propagator & p,
ViewArray< IntView > & x,
ViewArray< IntView > & y,
Val c )
inline

Definition at line 715 of file int-nary.hpp.

◆ eliminate() [2/2]

void Gecode::Int::Linear::eliminate ( Term< IntView > * t,
int & n,
long long int & d )
inline

Eliminate assigned views.

Definition at line 44 of file int-post.cpp.

◆ rewrite() [2/2]

void Gecode::Int::Linear::rewrite ( IntRelType & irt,
long long int & d,
Term< IntView > *& t_p,
int & n_p,
Term< IntView > *& t_n,
int & n_n )
inline

Rewrite all inequations in terms of IRT_LQ.

Definition at line 56 of file int-post.cpp.

◆ precision()

bool Gecode::Int::Linear::precision ( Term< IntView > * t_p,
int n_p,
Term< IntView > * t_n,
int n_n,
long long int d )
inline

Decide the required precision and check for overflow.

Definition at line 79 of file int-post.cpp.

◆ post_nary() [1/2]

template<class Val, class View>
void Gecode::Int::Linear::post_nary ( Home home,
ViewArray< View > & x,
ViewArray< View > & y,
IntRelType irt,
Val c )
inline

Posting n-ary propagators.

Definition at line 158 of file int-post.cpp.

◆ post_nary() [2/2]

template<class Val, class View>
void Gecode::Int::Linear::post_nary ( Home home,
ViewArray< View > & x,
ViewArray< View > & y,
IntRelType irt,
Val c,
Reify r )
inline

Posting reified n-ary propagators.

Definition at line 416 of file int-post.cpp.

◆ posteqint()

template<class CtrlView>
void Gecode::Int::Linear::posteqint ( Home home,
IntView & x,
int c,
CtrlView b,
ReifyMode rm,
IntPropLevel ipl )
inline

Definition at line 480 of file int-post.cpp.

◆ gcd()

int Gecode::Int::Linear::gcd ( int a,
int b )
inline

Compute the greatest common divisor of a and b.

Definition at line 89 of file post.hpp.

◆ normalize()

template<class View>
bool Gecode::Int::Linear::normalize ( Term< View > * t,
int & n,
Term< View > *& t_p,
int & n_p,
Term< View > *& t_n,
int & n_n,
int & g )
inline

Normalize linear integer constraints.

Parameters
tarray of linear terms
nsize of array
t_parray of linear terms over integers with positive coefficients
n_pnumber of postive terms
t_narray of linear terms over integers with negative coefficients
n_nnumber of negative terms
gcdgreatest common divisor of all coefficients

Replaces all negative coefficients by positive coefficients.

  • Variables occuring multiply in the term array are replaced by a single occurence: for example, $ax+bx$ becomes $(a+b)x$.
  • If in the above simplification the value for $(a+b)$ (or for $a$ and $b$) exceeds the limits for integers as defined in Limits::Int, an exception of type Int::NumericalOverflow is thrown.
  • Divides all coefficients by their greatest common divisor and returns the gcd g

Returns true, if all coefficients are unit coefficients

Definition at line 126 of file post.hpp.