Skip to content

Commit 5336f1d

Browse files
committed
Added support for missing flatzinc builtins array_float_element, float_lin_lt and float_lin_lt_reif
git-svn-id: file:///Users/tack/GecodeGitMigration/gecode-svn-mirror/gecode/trunk@14444 e85b7adc-8362-4630-8c63-7469d557c915
1 parent fdc17a0 commit 5336f1d

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

changelog.in

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ Date: 2015-01-20
7272
[DESCRIPTION]
7373
Yada! Yada!
7474

75+
[ENTRY]
76+
Module: flatzinc
77+
What: bug
78+
Rank: minor
79+
Thanks: Ahmed Kamal
80+
[DESCRIPTION]
81+
Added support for missing builtins array_float_element
82+
(by decomposition), float_lin_lt and float_lin_lt_reif.
83+
7584
[ENTRY]
7685
Module: search
7786
What: new

gecode/flatzinc/mznlib/redefinitions.mzn

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,11 @@ predicate float_tanh(var float: a, var float: b) =
7373

7474
predicate float_ne_reif(var float: a, var float: b, var bool: c) =
7575
not c <-> a==b;
76+
77+
predicate array_float_element(var int: b, array[int] of float: as, var float: c) =
78+
b in index_set(as) /\
79+
forall(d in index_set(as))( b = d -> as[d] = c );
80+
81+
predicate array_var_float_element(var int: b, array[int] of var float: as, var float: c) =
82+
b in index_set(as) /\
83+
forall(d in index_set(as))( b = d -> as[d] = c );

gecode/flatzinc/registry.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,10 +1991,17 @@ namespace Gecode { namespace FlatZinc {
19911991
void p_float_lin_le(FlatZincSpace& s, const ConExpr& ce, AST::Node* ann) {
19921992
p_float_lin_cmp(s,FRT_LQ,ce,ann);
19931993
}
1994+
void p_float_lin_lt(FlatZincSpace& s, const ConExpr& ce, AST::Node* ann) {
1995+
p_float_lin_cmp(s,FRT_LE,ce,ann);
1996+
}
19941997
void p_float_lin_le_reif(FlatZincSpace& s, const ConExpr& ce,
19951998
AST::Node* ann) {
19961999
p_float_lin_cmp_reif(s,FRT_LQ,ce,ann);
19972000
}
2001+
void p_float_lin_lt_reif(FlatZincSpace& s, const ConExpr& ce,
2002+
AST::Node* ann) {
2003+
p_float_lin_cmp_reif(s,FRT_LE,ce,ann);
2004+
}
19982005

19992006
void p_float_times(FlatZincSpace& s, const ConExpr& ce, AST::Node*) {
20002007
FloatVar x = s.arg2FloatVar(ce[0]);
@@ -2146,7 +2153,9 @@ namespace Gecode { namespace FlatZinc {
21462153
registry().add("float_lin_eq",&p_float_lin_eq);
21472154
registry().add("float_lin_eq_reif",&p_float_lin_eq_reif);
21482155
registry().add("float_lin_le",&p_float_lin_le);
2156+
registry().add("float_lin_lt",&p_float_lin_lt);
21492157
registry().add("float_lin_le_reif",&p_float_lin_le_reif);
2158+
registry().add("float_lin_lt_reif",&p_float_lin_lt_reif);
21502159

21512160
#ifdef GECODE_HAS_MPFR
21522161
registry().add("float_acos",&p_float_acos);

0 commit comments

Comments
 (0)