36#ifndef __GECODE_INT_ARITHMETIC_HH__
37#define __GECODE_INT_ARITHMETIC_HH__
122namespace Gecode {
namespace Int {
namespace Arithmetic {
248namespace Gecode {
namespace Int {
namespace Arithmetic {
259 template<
class VA,
class VB,
bool tiebreak>
294namespace Gecode {
namespace Int {
namespace Arithmetic {
305 bool even(
void)
const;
311 template<
class IntType>
312 IntType
pow(IntType
x)
const;
314 int tpow(
int x)
const;
332 static bool even(
int m);
334 bool powgr(
long long int r,
int x)
const;
336 bool powle(
long long int r,
int x)
const;
341 bool even(
void)
const;
347 template<
class IntType>
348 IntType
pow(IntType
x)
const;
350 int tpow(
int x)
const;
361namespace Gecode {
namespace Int {
namespace Arithmetic {
368 template<
class VA,
class VB,
class Ops>
419 template<
class VA,
class VB,
class Ops>
485namespace Gecode {
namespace Int {
namespace Arithmetic {
493 template<
class Ops,
bool minus>
545 template<
class Ops,
bool minus>
611namespace Gecode {
namespace Int {
namespace Arithmetic {
619 template<
class View, PropCond pc>
647 template<
class VA,
class VB,
class VC>
702 template<
class VA,
class VB,
class VC>
769namespace Gecode {
namespace Int {
namespace Arithmetic {
776 template<
class VA,
class VB,
class VC>
BinaryPropagator(Space &home, BinaryPropagator &p)
Home class for posting propagators
AbsBnd(Space &home, AbsBnd &p)
Constructor for cloning p.
static ExecStatus post(Home home, View x0, View x1)
Post bounds consistent propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
AbsDom(Space &home, AbsDom &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
static ExecStatus post(Home home, View x0, View x1)
Post domain consistent propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
IdxViewArray< VA > x
Map of index and views.
VB y
Position of maximum view (maximal argument)
ArgMax(Space &home, ArgMax &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
static ExecStatus post(Home home, IdxViewArray< VA > &x, VB y)
Post propagator .
virtual size_t dispose(Space &home)
Delete propagator and return its size.
virtual void reschedule(Space &home)
Schedule function.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
DivBnd(Space &home, DivBnd< View > &p)
Constructor for cloning p.
static ExecStatus post(Home home, View x0, View x1, View x2)
Post propagator (rounding towards 0)
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, View x0, View x1, View x2)
Post propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
DivMod(Space &home, DivMod< View > &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, VA x0, VB x1, VC x2)
Post propagator (rounding towards 0)
virtual Actor * copy(Space &home)
Copy propagator during cloning.
DivPlusBnd(Home home, VA x0, VB x1, VC x2)
Constructor for posting.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
MaxBnd(Space &home, MaxBnd &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, View x0, View x1, View x2)
Post propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
static ExecStatus post(Home home, View x0, View x1, View x2)
Post propagator .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
MaxDom(Space &home, MaxDom &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
MultBnd(Space &home, MultBnd &p)
Constructor for cloning p.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
static ExecStatus post(Home home, IntView x0, IntView x1, IntView x2)
Post propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
static ExecStatus post(Home home, IntView x0, IntView x1, IntView x2)
Post propagator .
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
MultDom(Space &home, MultDom &p)
Constructor for cloning p.
static ExecStatus post(Home home, VA x0, VB x1, VC x2)
Post propagator .
MultPlusBnd(Home home, VA x0, VB x1, VC x2)
Constructor for posting.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
static ExecStatus post(Home home, VA x0, VB x1, VC x2)
Post propagator .
MultPlusDom(Home home, VA x0, VB x1, VC x2)
Constructor for posting.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
MultZeroOne(Space &home, MultZeroOne< View, pc > &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, View x0, View x1)
Post propagator .
static RelTest equal(View x, int n)
Test whether x is equal to n.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
NaryMaxBnd(Space &home, NaryMaxBnd &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, ViewArray< View > &x, View y)
Post propagator .
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, ViewArray< View > &x, View y)
Post propagator .
NaryMaxDom(Space &home, NaryMaxDom &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
NrootBnd(Space &home, NrootBnd< Ops > &p)
Constructor for cloning p.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
NrootDom(Space &home, NrootDom< Ops > &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
NrootPlusBnd(Space &home, NrootPlusBnd< Ops, minus > &p)
Constructor for cloning p.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
NrootPlusDom(Space &home, NrootPlusDom< Ops, minus > &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
PowBnd(Space &home, PowBnd &p)
Constructor for cloning p.
static ExecStatus post(Home home, IntView x0, IntView x1, Ops ops)
Post propagator.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
PowDom(Space &home, PowDom< Ops > &p)
Constructor for cloning p.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
int cnroot(int x) const
Return where x must be non-negative and .
int tpow(int x) const
Return where truncated to integer limits.
bool powgr(long long int r, int x) const
Test whether .
IntType pow(IntType x) const
Return where .
int exp(void) const
Return exponent.
bool powle(long long int r, int x) const
Test whether .
int n
The exponent and root index.
PowOps(int n)
Initialize with exponent n.
int fnroot(int x) const
Return where x must be non-negative and .
bool even(void) const
Return whether exponent is even.
static ExecStatus post(Home home, VA x0, VB x1, Ops ops)
Post propagator.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
PowPlusBnd(Home home, VA x0, VB x1, const Ops &ops)
Constructor for posting.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, VA x0, VB x1, Ops ops)
Post propagator.
PowPlusDom(Home home, VA x0, VB x1, const Ops &ops)
Constructor for posting.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
Operations for square and square-root propagators.
int tpow(int x) const
Return truncated to integer limits.
int fnroot(int x) const
Return where x must be non-negative and .
bool even(void) const
Return whether exponent is even.
IntType pow(IntType x) const
Return .
int cnroot(int x) const
Return where x must be non-negative and .
int exp(void) const
Return exponent.
An array of IdxView pairs.
Integer view for integer variables.
MixBinaryPropagator(Space &home, MixBinaryPropagator &p)
MixTernaryPropagator(Space &home, MixTernaryPropagator &p)
NaryOnePropagator(Space &home, NaryOnePropagator &p)
ModEventDelta med
A set of modification events (used during propagation)
Propagator(Home home)
Constructor for posting.
TernaryPropagator(Space &home, TernaryPropagator &p)
#define GECODE_INT_EXPORT
int ModEventDelta
Modification event deltas.
Numerical (arithmetic) propagators.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
RelTest
Result of testing relation.
Gecode toplevel namespace
Post propagator for SetVar SetOpType SetVar SetRelType r
Post propagator for SetVar x