[PPL-devel] [GIT] ppl/ppl(floating_point): Added two tests;
Fabio Biselli
fabio.biselli at studenti.unipr.it
Tue Sep 29 12:59:23 CEST 2009
Module: ppl/ppl
Branch: floating_point
Commit: 6b0038a621b7c3eb5d18ad1174d9bc05525900d3
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=6b0038a621b7c3eb5d18ad1174d9bc05525900d3
Author: Fabio Biselli <fabio.biselli at studenti.unipr.it>
Date: Tue Sep 29 14:57:47 2009 +0200
Added two tests;
Fixed a bug in left_one_var_refine() function.
---
src/BD_Shape.templates.hh | 2 +-
tests/Floating_Point_Expression/Makefile.am | 5 ++-
tests/Floating_Point_Expression/bdshape2.cc | 49 ++++++++++++++++++++++++--
3 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/src/BD_Shape.templates.hh b/src/BD_Shape.templates.hh
index 657a1c4..46ba6b7 100644
--- a/src/BD_Shape.templates.hh
+++ b/src/BD_Shape.templates.hh
@@ -4485,7 +4485,7 @@ BD_Shape<T>
const FP_Interval_Type& right_c = right.inhomogeneous_term();
sub_assign_r(c_plus_minus_a_minus, right_c.upper(), left_a.lower(),
ROUND_UP);
- add_dbm_constraint(left_w_id+1, right_w_id+1, c_plus_minus_a_minus);
+ add_dbm_constraint(right_w_id+1, left_w_id+1, c_plus_minus_a_minus);
return;
}
if (is_left_coeff_one && is_right_coeff_minus_one) {
diff --git a/tests/Floating_Point_Expression/Makefile.am b/tests/Floating_Point_Expression/Makefile.am
index fd77e8a..941c905 100644
--- a/tests/Floating_Point_Expression/Makefile.am
+++ b/tests/Floating_Point_Expression/Makefile.am
@@ -51,7 +51,8 @@ $(top_builddir)/src/libppl.la \
@extra_libraries@
ORIGINAL_TESTS = \
-digitalfilters1
+digitalfilters1 \
+bdshape2
#bdshape1 \
#floatingpointexpr1 \
@@ -134,6 +135,8 @@ print_INSTANCES:
digitalfilters1_SOURCES = digitalfilters1.cc
+bdshape2_SOURCE = bdshape2.cc
+
#polyhedron2_SOURCES = polyhedron2.cc
#polyhedron1_SOURCES = polyhedron1.cc
diff --git a/tests/Floating_Point_Expression/bdshape2.cc b/tests/Floating_Point_Expression/bdshape2.cc
index f4b4b47..fab904b 100644
--- a/tests/Floating_Point_Expression/bdshape2.cc
+++ b/tests/Floating_Point_Expression/bdshape2.cc
@@ -107,7 +107,7 @@ test03() {
Variable A(0);
Variable B(1);
- FP_Octagonal_Shape bd1(3);
+ FP_Octagonal_Shape bd1(2);
bd1.add_constraint(A <= 2);
bd1.add_constraint(A - B <= 3);
bd1.add_constraint(B <= 2);
@@ -138,10 +138,51 @@ test03() {
return ok1 && ok2;
}
+
+// tests [-0.5, 1] + A <= [2.5, 5] + B and [2.5, 5] + B <= [-0.5, 1] + A
+bool
+test04() {
+ Variable A(0);
+ Variable B(1);
+
+ FP_BD_Shape bd1(2);
+ bd1.add_constraint(A <= 2);
+ bd1.add_constraint(A - B <= 3);
+ bd1.add_constraint(B <= 2);
+ FP_BD_Shape known_result(bd1);
+ FP_Interval tmp(-0.5);
+ tmp.join_assign(1);
+ FP_Linear_Form l1(A);
+ l1 += tmp;
+ FP_Linear_Form l2(B);
+ tmp.lower() = 2.5;
+ tmp.upper() = 5;
+ l2 += tmp;
+ bd1.refine_with_linear_form_inequality(l1, l2);
+ print_constraints(bd1, "*** [-0.5, 1] + A <= [2.5, 5] + B ***");
+
+ known_result.add_constraint(2*A - 2*B <= 11);
+ print_constraints(known_result, "*** known_result ***");
+
+ bool ok1 = (bd1 == known_result);
+
+ bd1.refine_with_linear_form_inequality(l2, l1);
+ print_constraints(bd1, "*** [2.5, 5] + B <= [-0.5, 1] + A ***");
+
+ known_result.add_constraint((2*B) - (2*A) <= -3);
+ print_constraints(known_result, "*** known_result2 ***");
+
+ bool ok2 = (bd1 == known_result);
+
+ return ok1 && ok2;
+
+}
+
} // namespace
BEGIN_MAIN
- DO_TEST(test01);
- DO_TEST(test02);
-// DO_TEST(test03);
+//DO_TEST(test01);
+//DO_TEST(test02);
+//DO_TEST(test03);
+ DO_TEST(test04);
END_MAIN
More information about the PPL-devel
mailing list