42 #ifndef __GECODE_FLOAT_HH__ 43 #define __GECODE_FLOAT_HH__ 58 #if !defined(GECODE_STATIC_LIBS) && \ 59 (defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER)) 61 #ifdef GECODE_BUILD_FLOAT 62 #define GECODE_FLOAT_EXPORT __declspec( dllexport ) 64 #define GECODE_FLOAT_EXPORT __declspec( dllimport ) 69 #ifdef GECODE_GCC_HAS_CLASS_VISIBILITY 70 #define GECODE_FLOAT_EXPORT __attribute__ ((visibility("default"))) 72 #define GECODE_FLOAT_EXPORT 78 #ifndef GECODE_BUILD_FLOAT 79 #define GECODE_LIBRARY_NAME "Float" 84 #include <gecode/third-party/boost/numeric/interval.hpp> 132 namespace Gecode {
namespace Float {
135 #if defined(_MSC_VER) && (defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP > 0))) 142 typedef gecode_boost::numeric::interval_lib::rounded_arith_std<FloatNum>
148 typedef gecode_boost::numeric::interval_lib::rounded_arith_opp<FloatNum>
202 #ifdef GECODE_HAS_MPFR 285 namespace Gecode {
namespace Float {
291 bool subset(
const FloatVal&
x,
const FloatVal&
y);
301 bool overlap(
const FloatVal&
x,
const FloatVal&
y);
307 FloatVal
intersect(
const FloatVal&
x,
const FloatVal&
y);
312 FloatVal
hull(
const FloatVal&
x,
const FloatVal&
y);
373 template<
class Char,
class Traits>
374 friend std::basic_ostream<Char,Traits>&
375 operator <<(std::basic_ostream<Char,Traits>& os,
const FloatVal&
x);
390 #ifdef GECODE_HAS_MPFR 420 typedef gecode_boost::numeric::interval_lib::save_state<Float::Rounding>
R;
422 typedef gecode_boost::numeric::interval_lib::checking_strict<FloatNum>
P;
424 typedef gecode_boost::numeric::interval
426 gecode_boost::numeric::interval_lib::policies<R, P> >
467 bool tight(
void)
const;
681 template<
class Char,
class Traits>
682 std::basic_ostream<Char,Traits>&
683 operator <<(std::basic_ostream<Char,Traits>& os,
const FloatVal&
x);
742 #ifdef GECODE_HAS_MPFR 839 namespace Gecode {
namespace Float {
943 template<
class Char,
class Traits>
944 std::basic_ostream<Char,Traits>&
945 operator <<(std::basic_ostream<Char,Traits>& os,
const FloatVar&
x);
967 template<
class InputIterator>
996 template<
class InputIterator>
1087 dom(Home home, FloatVar
x, FloatVal
n);
1090 dom(Home home,
const FloatVarArgs&
x, FloatVal
n);
1099 dom(Home home, FloatVar
x, FloatVal
n, Reify
r);
1105 dom(Home home, FloatVar
x, FloatVar
d);
1108 dom(Home home,
const FloatVarArgs&
x,
const FloatVarArgs&
d);
1153 ite(Home home, BoolVar
b, FloatVar
x, FloatVar
y, FloatVar
z);
1169 min(Home home, FloatVar x0, FloatVar x1, FloatVar x2);
1174 min(Home home,
const FloatVarArgs&
x, FloatVar
y);
1178 max(Home home, FloatVar x0, FloatVar x1, FloatVar x2);
1183 max(Home home,
const FloatVarArgs&
x, FloatVar
y);
1188 abs(Home home, FloatVar x0, FloatVar x1);
1193 mult(Home home, FloatVar x0, FloatVar x1, FloatVar x2);
1198 sqr(Home home, FloatVar x0, FloatVar x1);
1203 sqrt(Home home, FloatVar x0, FloatVar x1);
1208 pow(Home home, FloatVar x0,
int n, FloatVar x1);
1213 nroot(Home home, FloatVar x0,
int n, FloatVar x1);
1218 div(Home home, FloatVar x0, FloatVar x1, FloatVar x2);
1219 #ifdef GECODE_HAS_MPFR 1223 exp(Home home, FloatVar x0, FloatVar x1);
1227 log(Home home, FloatVar x0, FloatVar x1);
1239 asin(Home home, FloatVar x0, FloatVar x1);
1243 sin(Home home, FloatVar x0, FloatVar x1);
1247 acos(Home home, FloatVar x0, FloatVar x1);
1251 cos(Home home, FloatVar x0, FloatVar x1);
1255 atan(Home home, FloatVar x0, FloatVar x1);
1259 tan(Home home, FloatVar x0, FloatVar x1);
1271 linear(Home home,
const FloatVarArgs&
x,
1277 linear(Home home,
const FloatVarArgs&
x,
1283 linear(Home home,
const FloatVarArgs&
x,
1289 linear(Home home,
const FloatVarArgs&
x,
1298 linear(Home home,
const FloatValArgs&
a,
const FloatVarArgs&
x,
1307 linear(Home home,
const FloatValArgs&
a,
const FloatVarArgs&
x,
1316 linear(Home home,
const FloatValArgs&
a,
const FloatVarArgs&
x,
1325 linear(Home home,
const FloatValArgs&
a,
const FloatVarArgs&
x,
1336 channel(Home home, FloatVar x0, IntVar x1);
1339 channel(Home home, IntVar x0, FloatVar x1);
1342 channel(Home home, FloatVar x0, BoolVar x1);
1345 channel(Home home, BoolVar x0, FloatVar x1);
1364 wait(Home home, FloatVar
x, std::function<
void(Space& home)>
c);
1367 wait(Home home,
const FloatVarArgs&
x, std::function<
void(Space& home)>
c);
1387 typedef std::function<bool(const Space& home, FloatVar x, int i)>
1400 typedef std::function<double(const Space& home, FloatVar x, int i)>
1426 typedef std::function<FloatNumBranch(const Space& home, FloatVar x, int i)>
1440 typedef std::function<void(
Space& home,
unsigned int a,
1590 typedef std::function<void(
const Space &home,
const Brancher&
b,
1592 FloatVar
x,
int i,
const FloatNumBranch&
n,
1865 branch(Home home,
const FloatVarArgs&
x,
1866 FloatVarBranch vars, FloatValBranch vals,
1875 branch(Home home,
const FloatVarArgs&
x,
1876 TieBreak<FloatVarBranch> vars, FloatValBranch vals,
1885 branch(Home home, FloatVar
x, FloatValBranch vals,
1894 assign(Home home,
const FloatVarArgs&
x, FloatAssign vals,
1903 assign(Home home, FloatVar
x, FloatAssign vals,
1933 relax(Home home,
const FloatVarArgs&
x,
const FloatVarArgs& sx,
#define GECODE_FLOAT_EXPORT
FloatNum pi_half_upper(void)
Return upper bound of .
FloatAction & operator=(const FloatAction &a)
Assignment operator.
Select values greater than mean of smallest and largest value.
FloatVal operator-(const FloatVal &x)
With smallest degree divided by domain size.
FloatVarBranch FLOAT_VAR_CHB_SIZE_MIN(BranchTbl tbl)
Select variable with smallest CHB Q-score divided by domain size.
FloatNum atanh_down(FloatNum x)
Return lower bound of hyperbolic arctangent of x (domain: )
FloatNum tanh_up(FloatNum x)
Return upper bound of hyperbolic tangent of x (domain: )
Variables as interfaces to variable implementations.
FloatNum add_down(FloatNum x, FloatNum y)
Return lower bound of x plus y (domain: )
FloatNum asinh_down(FloatNum x)
Return lower bound of hyperbolic arcsine of x (domain: )
Select
Which value selection.
Tracer that process view trace information.
FloatVarArgs(int n)
Allocate array with n elements.
Which values to select for branching first.
void mult(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
FloatVarArgs(const std::vector< FloatVar > &a)
Initialize from vector a.
With smallest domain size.
FloatNum div_up(FloatNum x, FloatNum y)
Return upper bound of x divided y (domain: )
FloatVarBranch(void)
Initialize with strategy SEL_NONE.
FloatNum mul_down(FloatNum x, FloatNum y)
Return lower bound of x times y (domain: )
FloatValBranch FLOAT_VAL_SPLIT_MAX(void)
Select values greater than mean of smallest and largest value.
FloatVarArgs(const FloatVarArgs &a)
Initialize from variable argument array a (copy elements)
bool valid(const FloatVal &n)
Return whether float n is a valid number.
With largest domain size.
union Gecode::@579::NNF::@61 u
Union depending on nodetype t.
FloatNum cosh_down(FloatNum x)
Return lower bound of hyperbolic cosine of x (domain: )
bool subset(const FloatVal &x, const FloatVal &y)
void branch(Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatValBranch vals, FloatBranchFilter bf, FloatVarValPrint vvp)
Branch over x with variable selection vars and value selection vals.
With largest CHB Q-score divided by domain size.
With smallest accumulated failure count divided by domain size.
FloatNum asinh_up(FloatNum x)
Return upper bound of hyperbolic arcsine of x (domain: )
void log(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
friend bool operator>(const FloatVal &x, const FloatVal &y)
void channel(Home home, FloatVar x0, IntVar x1)
Post propagator for channeling a float and an integer variable .
const FloatNum max
Largest allowed float value.
FloatNum int_down(FloatNum x)
Return next downward-rounded integer of x (domain: )
FloatVarBranch FLOAT_VAR_CHB_SIZE_MAX(BranchTbl tbl)
Select variable with largest CHB Q-score divided by domain size.
FloatVal operator/(const FloatVal &x, const FloatVal &y)
Select select(void) const
Return selection strategy.
ViewTraceRecorder< Float::FloatView > FloatTraceRecorder
Trace recorder for float variables.
FloatAssign FLOAT_ASSIGN_MAX(void)
Select median value of the upper part.
Recording actions for float variables.
FloatNum tanh_down(FloatNum x)
Return lower bound of hyperbolic tangent of x (domain: )
FloatNum max(void) const
Return maximum of domain.
void init(Home home, const FloatVarArgs &x, double d=1.0, FloatBranchMerit bm=nullptr)
Initialize for float variables x with decay factor d.
FloatVarBranch FLOAT_VAR_DEGREE_MAX(BranchTbl tbl)
Select variable with largest degree.
friend FloatVal cosh(const FloatVal &x)
FloatVal fmod(const FloatVal &x, const FloatVal &y)
friend FloatVal exp(const FloatVal &x)
FloatVal & operator/=(const FloatNum &n)
Divide by n.
void max(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
void abs(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatVarBranch FLOAT_VAR_AFC_SIZE_MIN(double d, BranchTbl tbl)
Select variable with smalllest accumulated failure count divided by domain size with decay factor d...
void nroot(Home home, FloatVar x0, int n, FloatVar x1)
Post propagator for for $n 0$.
bool overlap(const FloatVal &x, const FloatVal &y)
friend FloatVal sqr(const FloatVal &x)
Select median value of a randomly chosen part.
void pow(Home home, FloatVar x0, int n, FloatVar x1)
Post propagator for for $n 0$.
FloatVar(void)
Default constructor.
bool singleton(void) const
Test whether float is a singleton.
FloatAssign FLOAT_ASSIGN_MIN(void)
Select median value of the lower part.
friend FloatVal sinh(const FloatVal &x)
Select s
Which value to select.
void dom(Home home, FloatVar x, FloatVal n)
Propagates .
void expand(Home home, const FloatVarArgs &x)
Expand AFC, action, and CHB.
void linear(Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
Post propagator for .
FloatVal hull(const FloatVal &x, const FloatVal &y)
bool zero_in(void) const
Test whether zero is included.
FloatNum sqrt_down(FloatNum x)
Return lower bound of square root of x (domain: )
friend FloatVal fmod(const FloatVal &x, const FloatVal &y)
With largest accumulated failure count.
FloatNum asin_up(FloatNum x)
Return upper bound of arcsine of x (domain: )
Which variable to select for branching.
FloatVal & operator-=(const FloatNum &n)
Subtract by n.
gecode_boost::numeric::interval_lib::checking_strict< FloatNum > P
Used checking policy.
Select values randomly which are not greater or not smaller than mean of largest and smallest value...
Select select(void) const
Return selection strategy.
static FloatVal pi_twice(void)
Return .
Select
Which variable selection.
FloatNum sinh_up(FloatNum x)
Return upper bound of hyperbolic sine of x (domain: )
friend FloatVal acos(const FloatVal &x)
FloatNum sqrt_up(FloatNum x)
Return upper bound of square root of x (domain: )
friend FloatVal asin(const FloatVal &x)
gecode_boost::numeric::interval< FloatNum, gecode_boost::numeric::interval_lib::policies< R, P > > FloatValImpType
Implementation type for float value.
Return maximum FloatNum max(void) const
With highest CHB Q-score.
FloatVal val(void) const
Return assigned value.
FloatValBranch FLOAT_VAL(FloatBranchVal v, FloatBranchCommit c)
bool in(FloatNum n) const
Test whether n is included.
FloatVarBranch FLOAT_VAR_ACTION_SIZE_MIN(double d, BranchTbl tbl)
Select variable with smallest action divided by domain size with decay factor d.
ExecStatus prune(Space &home, ViewArray< VX > &x, ConstIntView)
FloatVarBranch FLOAT_VAR_NONE(void)
Select first unassigned variable.
FloatVal(void)
Default constructor.
friend bool operator<=(const FloatVal &x, const FloatVal &y)
FloatVarBranch FLOAT_VAR_DEGREE_MIN(BranchTbl tbl)
Select variable with smallest degree.
FloatVarBranch FLOAT_VAR_MERIT_MIN(FloatBranchMerit bm, BranchTbl tbl)
Select variable with least merit according to branch merit function bm.
static FloatVal hull(FloatNum x, FloatNum y)
Return hull of x and y.
Select s
Which value to select.
FloatValBranch FLOAT_VAL_SPLIT_RND(Rnd r)
Select values randomly which are not greater or not smaller than mean of largest and smallest value...
With smallest action divided by domain size.
FloatValImpType x
Implementation of float value.
FloatNum min(void) const
Return minimum of domain.
FloatNum pi_twice_lower(void)
Return lower bound of .
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
Gecode::FloatVal c(-8, 8)
FloatVarBranch FLOAT_VAR_SIZE_MAX(BranchTbl tbl)
Select variable with largest domain size.
FloatNum log_down(FloatNum x)
Return lower bound of logarithm of x (domain: )
int p
Number of positive literals for node type.
Standard float variable tracer.
bool proper_subset(const FloatVal &x, const FloatVal &y)
const FloatNum min
Smallest allowed float value.
FloatNum size(void) const
Return size of domain (distance between maximum and minimum)
FloatVarBranch FLOAT_VAR_DEGREE_SIZE_MIN(BranchTbl tbl)
Select variable with smallest degree divided by domain size.
Gecode::IntArgs i(4, 1, 2, 3, 4)
FloatNum n
The middle value for branching.
Class for AFC (accumulated failure count) management.
FloatNum asin_down(FloatNum x)
Return lower bound of arcsine of x (domain: )
int n
Number of negative literals for node type.
FloatNum sin_up(FloatNum x)
Return upper bound of sine of x (domain: )
FloatNum int_up(FloatNum x)
Return next upward-rounded integer of x (domain: )
Argument array for non-primitive types.
FloatVarArgs(const VarArray< FloatVar > &a)
Initialize from variable array a (copy elements)
FloatVal & operator*=(const FloatNum &n)
Multiply by n.
FloatAssign FLOAT_ASSIGN_RND(Rnd r)
Select median value of a randomly chosen part.
FloatVal sinh(const FloatVal &x)
FloatNum pi_twice_upper(void)
Return upper bound of .
FloatVal intersect(const FloatVal &x, const FloatVal &y)
Value description class for branching.
friend bool operator==(const FloatVal &x, const FloatVal &y)
FloatValArgs(void)
Allocate empty array.
FloatVal operator+(const FloatVal &x)
name Access Return minimum FloatNum min(void) const
void sqr(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatRelType
Relation types for floats.
FloatNum log_up(FloatNum x)
Return upper bound of logarithm of x (domain: )
void init(Home home, const FloatVarArgs &x, double d=1.0)
Initialize for float variables x with decay factor d.
bool operator!=(const FloatVal &x, const FloatVal &y)
static FloatValArgs create(int n, FloatVal start, int inc=1)
Allocate array with n elements such that for all .
New view Float::FloatView n
friend FloatVal cos(const FloatVal &x)
bool tight(void) const
Test whether float is tight.
FloatVal domain(void) const
Return domain.
name Constructor Initialize with old trace view a new view a and delta a d FloatTraceDelta(Float::FloatTraceView o, Float::FloatView n, const Delta &d)
FloatNum cos_down(FloatNum x)
Return lower bound of cosine of x (domain: )
Output stream to use std::ostream & os
void sqrt(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
std::function< double(const Space &home, double w, double b)> BranchTbl
Tie-break limit function.
void wait(Home home, FloatVar x, std::function< void(Space &home)> c)
Execute c when x becomes assigned.
Class for CHB management.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
bool l
Whether to try the lower or upper half first.
friend FloatVal nroot(const FloatVal &x, int n)
FloatVal cosh(const FloatVal &x)
FloatVarArray(void)
Default constructor (array of size 0)
friend FloatVal operator*(const FloatVal &x, const FloatVal &y)
FloatNum pi_half_lower(void)
Return lower bound of .
FloatNum med(void) const
Return median of float value.
FloatValBranch FLOAT_VAL_SPLIT_MIN(void)
Select values not greater than mean of smallest and largest value.
std::function< void(Space &home, unsigned int a, FloatVar x, int i, FloatNumBranch nl)> FloatBranchCommit
Branch commit function type for float variables.
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
FloatVarBranch FLOAT_VAR_AFC_MIN(double d, BranchTbl tbl)
Select variable with smallest accumulated failure count with decay factor d.
FloatNum atanh_up(FloatNum x)
Return upper bound of hyperbolic arctangent of x (domain: )
static FloatVal pi(void)
Return lower bound of .
FloatNum med(void) const
Return median of domain.
FloatVal & operator=(const FloatNum &n)
Assignment operator.
friend FloatVal atanh(const FloatVal &x)
With largest accumulated failure count divided by domain size.
int n
Number of variables (size)
friend FloatVal tanh(const FloatVal &x)
void asin(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatVarBranch FLOAT_VAR_RND(Rnd r)
Select random variable (uniform distribution, for tie breaking)
ViewTracer< Float::FloatView > FloatTracer
Tracer for float variables.
With smallest CHB Q-score divided by domain size.
FloatAFC(void)
Construct as not yet initialized.
Select values not greater than mean of smallest and largest value.
FloatVarArgs(InputIterator first, InputIterator last)
Initialize from InputIterator first and last.
Floating point rounding policy.
Random (uniform, for tie breaking)
FloatNum tan_up(FloatNum x)
Return upper bound of tangent of x (domain: )
Recording CHB for float variables.
FloatNum atan_up(FloatNum x)
Return upper bound of arctangent of x (domain: )
Float view for float variables.
FloatVarBranch FLOAT_VAR_SIZE_MIN(BranchTbl tbl)
Select variable with smallest domain size.
bool in(const FloatVal &n) const
Test whether n is contained in domain.
FloatVarBranch FLOAT_VAR_MIN_MAX(BranchTbl tbl)
Select variable with largest min.
FloatVal & operator+=(const FloatNum &n)
Increment by n.
Post propagator for SetVar SetOpType SetVar SetRelType r
void check(const FloatVal &n, const char *l)
Check whether float n is a valid number, otherwise throw out of limits exception with information l...
Propagator for recording view trace information.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
FloatNum cos_up(FloatNum x)
Return upper bound of cosine of x (domain: )
void cos(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
friend FloatVal asinh(const FloatVal &x)
Trace delta information for float variables.
FloatNum acosh_up(FloatNum x)
Return upper bound of hyperbolic arccosine of x (domain: )
Post propagator for SetVar SetOpType SetVar y
friend FloatVal abs(const FloatVal &x)
Value branching information.
void div(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
void relax(Home home, const FloatVarArgs &x, const FloatVarArgs &sx, Rnd r, double p)
const double base
Base for geometric restart sequence.
FloatVal operator*(const FloatVal &x, const FloatVal &y)
Variable branching information.
name Constructor Initialize with old trace view a o
FloatNum atan_down(FloatNum x)
Return lower bound of arctangent of x (domain: )
FloatNum max(void) const
Return upper bound.
Rounding(void)
Default constructor (configures full rounding mode)
Generic domain change information to be supplied to advisors.
FloatNum sub_down(FloatNum x, FloatNum y)
Return lower bound of x minus y (domain: )
Select median value of the upper part.
FloatNum acosh_down(FloatNum x)
Return lower bound of hyperbolic arccosine of x (domain: )
void tan(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
With smallest accumulated failure count.
Select
Which value selection.
Select s
Which variable to select.
static FloatVal pi_half(void)
Return .
friend FloatVal tan(const FloatVal &x)
Rnd r
Random number generator.
bool operator>=(const FloatVal &x, const FloatVal &y)
FloatVal acosh(const FloatVal &x)
FloatVarBranch FLOAT_VAR_AFC_MAX(double d, BranchTbl tbl)
Select variable with largest accumulated failure count with decay factor d.
friend FloatVal operator+(const FloatVal &x)
FloatNum div_down(FloatNum x, FloatNum y)
Return lower bound of x divided by y (domain: )
FloatNum min(void) const
Return lower bound.
FloatNum exp_up(FloatNum x)
Return upper bound of exponential of x (domain: )
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
FloatNum acos_up(FloatNum x)
Return upper bound of arccossine of x (domain: )
std::function< bool(const Space &home, FloatVar x, int i)> FloatBranchFilter
Branch filter function type for float variables.
With largest degree divided by domain size.
FloatVarBranch FLOAT_VAR_ACTION_MIN(double d, BranchTbl tbl)
Select variable with lowest action with decay factor d.
friend FloatVal acosh(const FloatVal &x)
FloatVal atanh(const FloatVal &x)
Select select(void) const
Return selection strategy.
friend bool operator<(const FloatVal &x, const FloatVal &y)
FloatVal asinh(const FloatVal &x)
FloatVarBranch FLOAT_VAR_CHB_MIN(BranchTbl tbl)
Select variable with lowest CHB Q-score.
friend FloatVal pow(const FloatVal &x, int n)
gecode_boost::numeric::interval_lib::rounded_arith_opp< FloatNum > RoundingBase
Rounding Base class (optimized version)
Which values to select for assignment.
Delta information const Delta & d
Post propagator for SetVar x
FloatNum cosh_up(FloatNum x)
Return upper bound of hyperbolic cosine of x (domain: )
friend FloatVal sqrt(const FloatVal &x)
FloatNum exp_down(FloatNum x)
Return lower bound of exponential of x (domain: )
void assign(FloatNum const &l, FloatNum const &u)
Assign lower bound l and upper bound u.
FloatAssign FLOAT_ASSIGN(FloatBranchVal v, FloatBranchCommit c)
FloatValBranch(Select s=SEL_SPLIT_MIN)
Initialize with selection strategy s.
void trace(Home home, const FloatVarArgs &x, TraceFilter tf, int te, FloatTracer &t)
Create a tracer for float variables.
gecode_boost::numeric::interval_lib::save_state< Float::Rounding > R
Used rounding policies.
Select median value of the lower part.
bool operator>(const FloatVal &x, const FloatVal &y)
FloatVarBranch FLOAT_VAR_MIN_MIN(BranchTbl tbl)
Select variable with smallest min.
FloatNum sinh_down(FloatNum x)
Return lower bound of hyperbolic sine of x (domain: )
FloatNum sub_up(FloatNum x, FloatNum y)
Return upper bound of x minus y (domain: )
std::function< void(const Space &home, const Brancher &b, unsigned int a, FloatVar x, int i, const FloatNumBranch &n, std::ostream &o)> FloatVarValPrint
Function type for explaining branching alternatives for float variables.
friend FloatVal operator/(const FloatVal &x, const FloatVal &y)
friend bool operator!=(const FloatVal &x, const FloatVal &y)
bool operator<(const FloatVal &x, const FloatVal &y)
bool operator==(const FloatVal &x, const FloatVal &y)
bool operator<=(const FloatVal &x, const FloatVal &y)
With largest action divided by domain size.
FloatNum add_up(FloatNum x, FloatNum y)
Return upper bound of x plus y (domain: )
Gecode toplevel namespace
Argument array for variables.
friend FloatVal log(const FloatVal &x)
FloatNum size(void) const
Return size of float value (distance between maximum and minimum)
FloatCHB(void)
Construct as not yet initialized.
void sin(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatNum acos_down(FloatNum x)
Return lower bound of arccosine of x (domain: )
Class for action management.
FloatVarArgs(void)
Allocate empty array.
friend FloatVal sin(const FloatVal &x)
FloatVarBranch FLOAT_VAR_ACTION_SIZE_MAX(double d, BranchTbl tbl)
Select variable with largest action divided by domain size with decay factor d.
friend FloatVal atan(const FloatVal &x)
FloatVarBranch FLOAT_VAR_AFC_SIZE_MAX(double d, BranchTbl tbl)
Select variable with largest accumulated failure count divided by domain size with decay factor d...
void acos(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
void exp(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatNum pi_lower(void)
Return lower bound of .
FloatNum mul_up(FloatNum x, FloatNum y)
Return upper bound of x times y (domain: )
void assign(Home home, const FloatVarArgs &x, FloatAssign fa, FloatBranchFilter bf, FloatVarValPrint vvp)
Assign all x with value selection vals.
FloatVarBranch FLOAT_VAR_MAX_MAX(BranchTbl tbl)
Select variable with largest max.
FloatAFC & operator=(const FloatAFC &a)
Assignment operator.
FloatVal tanh(const FloatVal &x)
Home class for posting propagators
FloatVarBranch FLOAT_VAR_MERIT_MAX(FloatBranchMerit bm, BranchTbl tbl)
Select variable with highest merit according to branch merit function bm.
double tbl(const Gecode::Space &, double w, double b)
Test function for tie-break limit function.
FloatVarBranch FLOAT_VAR_ACTION_MAX(double d, BranchTbl tbl)
Select variable with highest action with decay factor d.
void init(Home home, const FloatVarArgs &x, FloatBranchMerit bm=nullptr)
Initialize for float variables x.
double FloatNum
Floating point number base type.
FloatVarBranch FLOAT_VAR_MAX_MIN(BranchTbl tbl)
Select variable with smallest max.
friend FloatVal operator-(const FloatVal &x)
Shared array with arbitrary number of elements.
FloatVarBranch FLOAT_VAR_DEGREE_SIZE_MAX(BranchTbl tbl)
Select variable with largest degree divided by domain size.
~Rounding(void)
Destructor (restores previous rounding mode)
std::function< FloatNumBranch(const Space &home, FloatVar x, int i)> FloatBranchVal
Branch value function type for float variables.
void ite(Home home, BoolVar b, FloatVar x, FloatVar y, FloatVar z)
Post propagator for if-then-else constraint.
FloatAssign(Select s=SEL_MIN)
Initialize with selection strategy s.
FloatNum median(FloatNum x, FloatNum y)
Return median of x and y (domain: )
std::function< double(const Space &home, FloatVar x, int i)> FloatBranchMerit
Branch merit function type for float variables.
FloatCHB & operator=(const FloatCHB &chb)
Assignment operator.
void atan(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
FloatNum sin_down(FloatNum x)
Return lower bound of sine of x (domain: )
friend bool operator>=(const FloatVal &x, const FloatVal &y)
Recording AFC information for float variables.
FloatNum tan_down(FloatNum x)
Return lower bound of tangent of x (domain: )
FloatVal * a
Element array.
Select value according to user-defined functions.
FloatNum pi_upper(void)
Return upper bound of .
FloatAction(void)
Construct as not yet initialized.
FloatVarBranch FLOAT_VAR_CHB_MAX(BranchTbl tbl)
Select variable with highest CHB Q-score.
Select value according to user-defined functions.