Generated on Thu Apr 11 13:59:24 2019 for Gecode by doxygen 1.6.3

float.hh File Reference

#include <climits>
#include <cfloat>
#include <iostream>
#include <functional>
#include <gecode/kernel.hh>
#include <gecode/int.hh>
#include <gecode/support/auto-link.hpp>
#include <gecode/third-party/boost/numeric/interval.hpp>
#include <gecode/float/exception.hpp>
#include <gecode/float/nextafter.hpp>
#include <gecode/float/num.hpp>
#include <gecode/float/rounding.hpp>
#include <gecode/float/val.hpp>
#include <gecode/float/limits.hpp>
#include <gecode/float/var-imp.hpp>
#include <gecode/float/view.hpp>
#include <gecode/float/array-traits.hpp>
#include <gecode/float/array.hpp>
#include <gecode/float/channel.hpp>
#include <gecode/float/branch/traits.hpp>
#include <gecode/float/branch/afc.hpp>
#include <gecode/float/branch/action.hpp>
#include <gecode/float/branch/chb.hpp>
#include <gecode/float/branch/var.hpp>
#include <gecode/float/branch/val.hpp>
#include <gecode/float/branch/assign.hpp>
#include <gecode/float/branch.hpp>
#include <gecode/float/trace/trace-view.hpp>
#include <gecode/float/trace/delta.hpp>
#include <gecode/float/trace/traits.hpp>
#include <gecode/float/trace.hpp>

Go to the source code of this file.

Classes

class  Gecode::Float::Rounding
 Floating point rounding policy. More...
class  Gecode::FloatVal
 Float value type. More...
class  Gecode::FloatVar
 Float variables. More...
class  Gecode::FloatValArgs
 Passing float arguments. More...
class  Gecode::FloatVarArgs
 Passing float variables. More...
class  Gecode::FloatVarArray
 Float variable array. More...
class  Gecode::FloatNumBranch
 Value description class for branching. More...
class  Gecode::FloatAFC
 Recording AFC information for float variables. More...
class  Gecode::FloatAction
 Recording actions for float variables. More...
class  Gecode::FloatCHB
 Recording CHB for float variables. More...
class  Gecode::FloatVarBranch
 Which variable to select for branching. More...
class  Gecode::FloatValBranch
 Which values to select for branching first. More...
class  Gecode::FloatAssign
 Which values to select for assignment. More...
class  Gecode::FloatTraceDelta
 Trace delta information for float variables. More...
class  Gecode::StdFloatTracer
 Standard float variable tracer. More...

Namespaces

namespace  Gecode::Float
 

Floating point numbers.


namespace  Gecode
 

Gecode toplevel namespace


namespace  Gecode::Float::Limits
 

Numerical limits for floating point variables.


Defines

#define GECODE_FLOAT_EXPORT
#define GECODE_LIBRARY_NAME   "Float"

Typedefs

typedef double Gecode::FloatNum
 Floating point number base type.
typedef
gecode_boost::numeric::interval_lib::rounded_arith_opp
< FloatNum > 
Gecode::Float::RoundingBase
 Rounding Base class (optimized version).
typedef std::function< bool(const
Space &home, FloatVar x, int i)> 
Gecode::FloatBranchFilter
 Branch filter function type for float variables.
typedef std::function< double(const
Space &home, FloatVar x, int i)> 
Gecode::FloatBranchMerit
 Branch merit function type for float variables.
typedef std::function
< FloatNumBranch(const Space
&home, FloatVar x, int i)> 
Gecode::FloatBranchVal
 Branch value function type for float variables.
typedef std::function< void(Space
&home, unsigned int a,
FloatVar x, int i,
FloatNumBranch nl)> 
Gecode::FloatBranchCommit
 Branch commit function type for float variables.
typedef std::function< void(const
Space &home, const Brancher &b,
unsigned int a, FloatVar x,
int i, const FloatNumBranch &n,
std::ostream &o)> 
Gecode::FloatVarValPrint
 Function type for explaining branching alternatives for float variables.
typedef ViewTracer
< Float::FloatView > 
Gecode::FloatTracer
 Tracer for float variables.
typedef ViewTraceRecorder
< Float::FloatView > 
Gecode::FloatTraceRecorder
 Trace recorder for float variables.

Enumerations

enum  Gecode::FloatRelType {
  Gecode::FRT_EQ, Gecode::FRT_NQ, Gecode::FRT_LQ, Gecode::FRT_LE,
  Gecode::FRT_GQ, Gecode::FRT_GR
}
 

Relation types for floats.

More...

Functions

FloatNum Gecode::pi_half_lower (void)
 Return lower bound of $\pi/2$.
FloatNum Gecode::pi_half_upper (void)
 Return upper bound of $\pi/2$.
FloatNum Gecode::pi_lower (void)
 Return lower bound of $\pi$.
FloatNum Gecode::pi_upper (void)
 Return upper bound of $\pi$.
FloatNum Gecode::pi_twice_lower (void)
 Return lower bound of $2\pi$.
FloatNum Gecode::pi_twice_upper (void)
 Return upper bound of $2\pi$.
bool Gecode::Float::Limits::valid (const FloatVal &n)
 Return whether float n is a valid number.
void Gecode::Float::Limits::check (const FloatVal &n, const char *l)
 Check whether float n is a valid number, otherwise throw out of limits exception with information l.
void Gecode::dom (Home home, FloatVar x, FloatVal n)
 Propagates $x=n$.
void Gecode::dom (Home home, const FloatVarArgs &x, FloatVal n)
 Propagates $ x_i=n$ for all $0\leq i<|x|$.
void Gecode::dom (Home home, FloatVar x, FloatNum l, FloatNum m)
 Propagates $ l\leq x\leq u$.
void Gecode::dom (Home home, const FloatVarArgs &x, FloatNum l, FloatNum u)
 Propagates $ l\leq x_i\leq u$ for all $0\leq i<|x|$.
void Gecode::dom (Home home, FloatVar x, FloatVal n, Reify r)
 Post domain consistent propagator for $ (x=n) \equiv r$.
void Gecode::dom (Home home, FloatVar x, FloatNum l, FloatNum u, Reify r)
 Post domain consistent propagator for $ (l\leq x \leq u) \equiv r$.
void Gecode::dom (Home home, FloatVar x, FloatVar d)
 Constrain domain of x according to domain of d.
void Gecode::dom (Home home, const FloatVarArgs &x, const FloatVarArgs &d)
 Constrain domain of $ x_i $ according to domain of $ d_i $ for all $0\leq i<|x|$.
void Gecode::rel (Home home, FloatVar x0, FloatRelType frt, FloatVar x1)
 Post propagator for $ x_0 \sim_{frt} x_1$.
void Gecode::rel (Home home, FloatVar x, FloatRelType frt, FloatVal c)
 Propagates $ x \sim_{frt} c$.
void Gecode::rel (Home home, FloatVar x, FloatRelType frt, FloatVal c, Reify r)
 Post propagator for $(x \sim_{frt} c)\equiv r$.
void Gecode::rel (Home home, FloatVar x0, FloatRelType frt, FloatVar x1, Reify r)
 Post propagator for $(x_0 \sim_{frt} x_1)\equiv r$.
void Gecode::rel (Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
 Propagates $ x_i \sim_{frt} c $ for all $0\leq i<|x|$.
void Gecode::rel (Home home, const FloatVarArgs &x, FloatRelType frt, FloatVar y)
 Propagates $ x_i \sim_{frt} y $ for all $0\leq i<|x|$.
void Gecode::ite (Home home, BoolVar b, FloatVar x, FloatVar y, FloatVar z)
 Post propagator for if-then-else constraint.
void Gecode::min (Home home, FloatVar x0, FloatVar x1, FloatVar x2)
 Post propagator for $ \min\{x_0,x_1\}=x_2$.
void Gecode::min (Home home, const FloatVarArgs &x, FloatVar y)
 Post propagator for $ \min x=y$ If x is empty, an exception of type Float::TooFewArguments is thrown.
void Gecode::max (Home home, FloatVar x0, FloatVar x1, FloatVar x2)
 Post propagator for $ \max\{x_0,x_1\}=x_2$.
void Gecode::max (Home home, const FloatVarArgs &x, FloatVar y)
 Post propagator for $ \max x=y$ If x is empty, an exception of type Float::TooFewArguments is thrown.
void Gecode::abs (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ |x_0|=x_1$.
void Gecode::mult (Home home, FloatVar x0, FloatVar x1, FloatVar x2)
 Post propagator for $x_0\cdot x_1=x_2$.
void Gecode::sqr (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $x_0\cdot x_0=x_1$.
void Gecode::sqrt (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $\sqrt{x_0}=x_1$.
void Gecode::pow (Home home, FloatVar x0, int n, FloatVar x1)
 Post propagator for ${x_0}^{n}=x_1$ for $n 0$.
void Gecode::nroot (Home home, FloatVar x0, int n, FloatVar x1)
 Post propagator for ${x_0}^{1/n}=x_1$ for $n 0$.
void Gecode::div (Home home, FloatVar x0, FloatVar x1, FloatVar x2)
 Post propagator for $x_0\ \mathrm{div}\ x_1=x_2$.
void Gecode::exp (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{exp}(x_0)=x_1$.
void Gecode::log (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{log}_e(x_0)=x_1$.
void Gecode::pow (Home home, FloatNum base, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathit{base}^{x_0}=x_1$.
void Gecode::log (Home home, FloatNum base, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{log}_{\mathit{base}}(x_0)=x_1$.
void Gecode::asin (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{asin}(x_0)=x_1$.
void Gecode::sin (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{sin}(x_0)=x_1$.
void Gecode::acos (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{acos}(x_0)=x_1$.
void Gecode::cos (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{cos}(x_0)=x_1$.
void Gecode::atan (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{atan}(x_0)=x_1$.
void Gecode::tan (Home home, FloatVar x0, FloatVar x1)
 Post propagator for $ \mathrm{tan}(x_0)=x_1$.
void Gecode::linear (Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
 Post propagator for $\sum_{i=0}^{|x|-1}x_i\sim_{frt} c$.
void Gecode::linear (Home home, const FloatVarArgs &x, FloatRelType frt, FloatVar y)
 Post propagator for $\sum_{i=0}^{|x|-1}x_i\sim_{frt} y$.
void Gecode::linear (Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c, Reify r)
 Post propagator for $\left(\sum_{i=0}^{|x|-1}x_i\sim_{frt} c\right)\equiv r$.
void Gecode::linear (Home home, const FloatVarArgs &x, FloatRelType frt, FloatVar y, Reify r)
 Post propagator for $\left(\sum_{i=0}^{|x|-1}x_i\sim_{frt} y\right)\equiv r$.
void Gecode::linear (Home home, const FloatValArgs &a, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
 Post propagator for $\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_{frt} c$.
void Gecode::linear (Home home, const FloatValArgs &a, const FloatVarArgs &x, FloatRelType frt, FloatVar y)
 Post propagator for $\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_{frt} y$.
void Gecode::linear (Home home, const FloatValArgs &a, const FloatVarArgs &x, FloatRelType frt, FloatVal c, Reify r)
 Post propagator for $\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_{frt} c\right)\equiv r$.
void Gecode::linear (Home home, const FloatValArgs &a, const FloatVarArgs &x, FloatRelType frt, FloatVar y, Reify r)
 Post propagator for $\left(\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_{frt} y\right)\equiv r$.
void Gecode::channel (Home home, FloatVar x0, IntVar x1)
 Post propagator for channeling a float and an integer variable $ x_0 = x_1$.
void Gecode::channel (Home home, IntVar x0, FloatVar x1)
 Post propagator for channeling a float and an integer variable $ x_0 = x_1$.
void Gecode::channel (Home home, FloatVar x0, BoolVar x1)
 Post propagator for channeling a float and a Boolean variable $ x_0 = x_1$.
void Gecode::channel (Home home, BoolVar x0, FloatVar x1)
 Post propagator for channeling a float and a Boolean variable $ x_0 = x_1$.
void Gecode::wait (Home home, FloatVar x, std::function< void(Space &home)> c)
 Execute c when x becomes assigned.
void Gecode::wait (Home home, const FloatVarArgs &x, std::function< void(Space &home)> c)
 Execute c when all variables in x become assigned.
FloatVarBranch Gecode::FLOAT_VAR_NONE (void)
 Select first unassigned variable.
FloatVarBranch Gecode::FLOAT_VAR_RND (Rnd r)
 Select random variable (uniform distribution, for tie breaking).
FloatVarBranch Gecode::FLOAT_VAR_MERIT_MIN (FloatBranchMerit bm, BranchTbl tbl=nullptr)
 Select variable with least merit according to branch merit function bm.
FloatVarBranch Gecode::FLOAT_VAR_MERIT_MAX (FloatBranchMerit bm, BranchTbl tbl=nullptr)
 Select variable with highest merit according to branch merit function bm.
FloatVarBranch Gecode::FLOAT_VAR_DEGREE_MIN (BranchTbl tbl=nullptr)
 Select variable with smallest degree.
FloatVarBranch Gecode::FLOAT_VAR_DEGREE_MAX (BranchTbl tbl=nullptr)
 Select variable with largest degree.
FloatVarBranch Gecode::FLOAT_VAR_AFC_MIN (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with smallest accumulated failure count with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_AFC_MIN (FloatAFC a, BranchTbl tbl=nullptr)
 Select variable with smallest accumulated failure count.
FloatVarBranch Gecode::FLOAT_VAR_AFC_MAX (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with largest accumulated failure count with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_AFC_MAX (FloatAFC a, BranchTbl tbl=nullptr)
 Select variable with largest accumulated failure count.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_MIN (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with lowest action with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_MIN (FloatAction a, BranchTbl tbl=nullptr)
 Select variable with lowest action.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_MAX (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with highest action with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_MAX (FloatAction a, BranchTbl tbl=nullptr)
 Select variable with highest action.
FloatVarBranch Gecode::FLOAT_VAR_CHB_MIN (BranchTbl tbl=nullptr)
 Select variable with lowest CHB Q-score.
FloatVarBranch Gecode::FLOAT_VAR_CHB_MIN (FloatCHB a, BranchTbl tbl=nullptr)
 Select variable with lowest CHB Q-score.
FloatVarBranch Gecode::FLOAT_VAR_CHB_MAX (BranchTbl tbl=nullptr)
 Select variable with highest CHB Q-score.
FloatVarBranch Gecode::FLOAT_VAR_CHB_MAX (FloatCHB a, BranchTbl tbl=nullptr)
 Select variable with highest CHB Q-score.
FloatVarBranch Gecode::FLOAT_VAR_MIN_MIN (BranchTbl tbl=nullptr)
 Select variable with smallest min.
FloatVarBranch Gecode::FLOAT_VAR_MIN_MAX (BranchTbl tbl=nullptr)
 Select variable with largest min.
FloatVarBranch Gecode::FLOAT_VAR_MAX_MIN (BranchTbl tbl=nullptr)
 Select variable with smallest max.
FloatVarBranch Gecode::FLOAT_VAR_MAX_MAX (BranchTbl tbl=nullptr)
 Select variable with largest max.
FloatVarBranch Gecode::FLOAT_VAR_SIZE_MIN (BranchTbl tbl=nullptr)
 Select variable with smallest domain size.
FloatVarBranch Gecode::FLOAT_VAR_SIZE_MAX (BranchTbl tbl=nullptr)
 Select variable with largest domain size.
FloatVarBranch Gecode::FLOAT_VAR_DEGREE_SIZE_MIN (BranchTbl tbl=nullptr)
 Select variable with smallest degree divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_DEGREE_SIZE_MAX (BranchTbl tbl=nullptr)
 Select variable with largest degree divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_AFC_SIZE_MIN (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with smalllest accumulated failure count divided by domain size with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_AFC_SIZE_MIN (FloatAFC a, BranchTbl tbl=nullptr)
 Select variable with smallest accumulated failure count divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_AFC_SIZE_MAX (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with largest accumulated failure count divided by domain size with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_AFC_SIZE_MAX (FloatAFC a, BranchTbl tbl=nullptr)
 Select variable with largest accumulated failure count divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_SIZE_MIN (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with smallest action divided by domain size with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_SIZE_MIN (FloatAction a, BranchTbl tbl=nullptr)
 Select variable with smallest action divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_SIZE_MAX (double d=1.0, BranchTbl tbl=nullptr)
 Select variable with largest action divided by domain size with decay factor d.
FloatVarBranch Gecode::FLOAT_VAR_ACTION_SIZE_MAX (FloatAction a, BranchTbl tbl=nullptr)
 Select variable with largest action divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_CHB_SIZE_MIN (BranchTbl tbl=nullptr)
 Select variable with smallest CHB Q-score divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_CHB_SIZE_MIN (FloatCHB c, BranchTbl tbl=nullptr)
 Select variable with smallest CHB Q-score divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_CHB_SIZE_MAX (BranchTbl tbl=nullptr)
 Select variable with largest CHB Q-score divided by domain size.
FloatVarBranch Gecode::FLOAT_VAR_CHB_SIZE_MAX (FloatCHB a, BranchTbl tbl=nullptr)
 Select variable with largest CHB Q-score divided by domain size.
FloatValBranch Gecode::FLOAT_VAL_SPLIT_MIN (void)
 Select values not greater than mean of smallest and largest value.
FloatValBranch Gecode::FLOAT_VAL_SPLIT_MAX (void)
 Select values greater than mean of smallest and largest value.
FloatValBranch Gecode::FLOAT_VAL_SPLIT_RND (Rnd r)
 Select values randomly which are not greater or not smaller than mean of largest and smallest value.
FloatValBranch Gecode::FLOAT_VAL (FloatBranchVal v, FloatBranchCommit c)
FloatAssign Gecode::FLOAT_ASSIGN_MIN (void)
 Select median value of the lower part.
FloatAssign Gecode::FLOAT_ASSIGN_MAX (void)
 Select median value of the upper part.
FloatAssign Gecode::FLOAT_ASSIGN_RND (Rnd r)
 Select median value of a randomly chosen part.
FloatAssign Gecode::FLOAT_ASSIGN (FloatBranchVal v, FloatBranchCommit c)
void Gecode::branch (Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatValBranch vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
 Branch over x with variable selection vars and value selection vals.
void Gecode::branch (Home home, const FloatVarArgs &x, TieBreak< FloatVarBranch > vars, FloatValBranch vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
 Branch over x with tie-breaking variable selection vars and value selection vals.
void Gecode::branch (Home home, FloatVar x, FloatValBranch vals, FloatVarValPrint vvp=nullptr)
 Branch over x with value selection vals.
void Gecode::assign (Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatAssign vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
 Assign all x with variable selection vars and value selection vals.
void Gecode::assign (Home home, const FloatVarArgs &x, TieBreak< FloatVarBranch > vars, FloatAssign vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
 Assign all x with tie-breaking variable selection vars and value selection vals.
void Gecode::assign (Home home, FloatVar x, FloatAssign vals, FloatVarValPrint vvp=nullptr)
 Assign x with value selection vals.
void Gecode::branch (Home home, const FloatVarArgs &x, FloatValBranch vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
 Branch over x with value selection vals.
void Gecode::assign (Home home, const FloatVarArgs &x, FloatAssign vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
 Assign all x with value selection vals.
void Gecode::relax (Home home, const FloatVarArgs &x, const FloatVarArgs &sx, Rnd r, double p)
void Gecode::trace (Home home, const FloatVarArgs &x, TraceFilter tf, int te=(TE_INIT|TE_PRUNE|TE_FIX|TE_FAIL|TE_DONE), FloatTracer &t=StdFloatTracer::def)
 Create a tracer for float variables.
void Gecode::trace (Home home, const FloatVarArgs &x, int te=(TE_INIT|TE_PRUNE|TE_FIX|TE_FAIL|TE_DONE), FloatTracer &t=StdFloatTracer::def)
 Create a tracer for float variables.

Variables

const FloatNum Gecode::Float::Limits::max = std::numeric_limits<FloatNum>::max()
 Largest allowed float value.
const FloatNum Gecode::Float::Limits::min = -max
 Smallest allowed float value.

Define Documentation

#define GECODE_FLOAT_EXPORT

Definition at line 68 of file float.hh.

#define GECODE_LIBRARY_NAME   "Float"

Definition at line 75 of file float.hh.