43 #ifdef GECODE_HAS_MPFR
48 namespace Test {
namespace Float {
51 namespace Trigonometric {
61 return eq(
sin(x[0]), x[1]);
80 return eq(
sin(x[0]), x[1]);
106 return eq(
sin(x[0]), x[0]);
122 return eq(
cos(x[0]), x[1]);
141 return eq(
cos(x[0]), x[1]);
167 return eq(
cos(x[0]), x[0]);
183 return eq(
tan(x[0]), x[1]);
202 return eq(
tan(x[0]), x[1]);
228 return eq(
tan(x[0]), x[0]);
244 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
246 return eq(
asin(x[0]), x[1]);
265 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
267 return eq(
asin(x[0]), x[1]);
271 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
295 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
297 return eq(
asin(x[0]), x[0]);
313 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
315 return eq(
acos(x[0]), x[1]);
334 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
336 return eq(
acos(x[0]), x[1]);
340 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
364 if ((x[0].
min() > 1.0) || (x[0].
max() < -1.0))
366 return eq(
acos(x[0]), x[0]);
382 return eq(
atan(x[0]), x[1]);
401 return eq(
atan(x[0]), x[1]);
427 return eq(
atan(x[0]), x[0]);
static MaybeType eq(Gecode::FloatVal x, Gecode::FloatVal y)
Whether x and y are equal.
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
ACosXY acos_xy_b("B", b, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
CosXYSol cos_xy_sol_b("B", b, step)
CosXX(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ATanXY(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
Test for cosinus constraint
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
virtual bool extendAssignement(Assignment &x) const
Extend assignment x.
virtual bool extendAssignement(Assignment &x) const
Extend assignment x.
bool subset(const FloatVal &x, const FloatVal &y)
virtual bool extendAssignement(Assignment &x) const
Extend assignment x.
const FloatNum max
Largest allowed float value.
ATanXY atan_xy_a("A", a, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
ACosXY(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
TanXX tan_xx_a("A", a, step)
Test for atangent constraint with shared variables
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
ACosXX(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
TanXX tan_xx_b("B", b, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
TanXYSol tan_xy_sol_a("A", a, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
CosXY(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ATanXY atan_xy_c("C", c, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
TanXY tan_xy_a("A", a, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
CosXYSol cos_xy_sol_c("C", c, step)
virtual bool extendAssignement(Assignment &x) const
Extend assignment x.
Gecode::FloatVal b(9, 12)
Test for sinus constraint where solution is ensured
Test for cosinus constraint where solution is ensured
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
const Gecode::FloatNum step
SinXX sin_xx_b("B", b, step)
SinXX sin_xx_a("A", a, step)
virtual bool extendAssignement(Assignment &x) const
Extend assignment x.
ATanXX atan_xx_a("A", a, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
Test for tangent constraint with shared variables
CosXYSol(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
Test for tangent constraint where solution is ensured
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
ASinXYSol asin_xy_sol_c("C", c, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
Test for acosinus constraint
ACosXYSol acos_xy_sol_b("B", b, step)
virtual void set(int i, const Gecode::FloatVal &val)=0
Set assignment to value val for variable i.
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
TanXX(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ASinXYSol(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ATanXYSol atan_xy_sol_c("C", c, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
CosXY cos_xy_c("C", c, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
SinXY sin_xy_a("A", a, step)
CosXX cos_xx_c("C", c, step)
const FloatNum min
Smallest allowed float value.
TanXYSol tan_xy_sol_c("C", c, step)
TanXY(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
SinXY sin_xy_b("B", b, step)
SinXY(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ASinXY asin_xy_a("A", a, step)
ACosXYSol(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
SinXX sin_xx_c("C", c, step)
CosXYSol cos_xy_sol_a("A", a, step)
CosXX cos_xx_b("B", b, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
TanXY tan_xy_b("B", b, step)
TanXX tan_xx_c("C", c, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
Test for atangent constraint
ACosXX acos_xx_c("C", c, step)
ACosXX acos_xx_b("B", b, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
SinXYSol sin_xy_sol_b("B", b, step)
const Gecode::FloatNum step2
Test for tangent constraint
Test for asinus constraint with shared variables
ASinXYSol asin_xy_sol_a("A", a, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
Gecode::FloatVal a(-8, 5)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
Test for acosinus constraint where solution is ensured
ACosXY acos_xy_c("C", c, step)
ASinXX asin_xx_c("C", c, step)
void asin(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
ATanXYSol(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
ACosXYSol acos_xy_sol_a("A", a, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
ACosXY acos_xy_a("A", a, step)
ACosXX acos_xx_a("A", a, step)
CosXX cos_xx_a("A", a, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
ASinXX asin_xx_a("A", a, step)
void cos(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
ASinXY asin_xy_b("B", b, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
Gecode::FloatVal c(-8, 8)
Node * x
Pointer to corresponding Boolean expression node.
Test for sinus constraint with shared variables
void tan(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
ASinXX(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
Gecode::FloatVal dom
Domain of variables.
ATanXYSol atan_xy_sol_a("A", a, step)
TanXYSol tan_xy_sol_b("B", b, step)
Test for atangent constraint where solution is ensured
MaybeType
Type for comparisons and solutions.
CosXY cos_xy_a("A", a, step)
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
virtual bool extendAssignement(Assignment &x) const
Extend assignment x.
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
ASinXY(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ATanXYSol atan_xy_sol_b("B", b, step)
ATanXX atan_xx_b("B", b, step)
SinXYSol(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
SinXX(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ASinXY asin_xy_c("C", c, step)
ATanXY atan_xy_b("B", b, step)
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
TanXYSol(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
ASinXYSol asin_xy_sol_b("B", b, step)
Test for cosinus constraint with shared variables
void sin(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
Test for asinus constraint where solution is ensured
Test for asinus constraint
ATanXX atan_xx_c("C", c, step)
void acos(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
ASinXX asin_xx_b("B", b, step)
Test for sinus constraint
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
ACosXYSol acos_xy_sol_c("C", c, step)
double FloatNum
Floating point number base type.
SinXY sin_xy_c("C", c, step)
TanXY tan_xy_c("C", c, step)
CosXY cos_xy_b("B", b, step)
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
void atan(Home home, FloatVar x0, FloatVar x1)
Post propagator for .
ATanXX(const std::string &s, const Gecode::FloatVal &d, Gecode::FloatNum st)
Create and register test.
virtual MaybeType solution(const Assignment &x) const
Test whether x is solution
SinXYSol sin_xy_sol_a("A", a, step)
bool flip(void)
Flip a coin and return true or false randomly.
virtual void post(Gecode::Space &home, Gecode::FloatVarArray &x)
Post constraint on x.
Base class for assignments
Test for acosinus constraint with shared variables
SinXYSol sin_xy_sol_c("C", c, step)