[PPL-devel] [GIT] ppl/ppl(floating_point): Adapted test files to new representation of interval abstract stores.

Roberto Amadini r.amadini at virgilio.it
Tue Sep 22 16:38:59 CEST 2009


Module: ppl/ppl
Branch: floating_point
Commit: 2b4f0299f6b37e644ac34f43601d0bfbbc6cf7e1
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=2b4f0299f6b37e644ac34f43601d0bfbbc6cf7e1

Author: Roberto Amadini <r.amadini at virgilio.it>
Date:   Tue Sep 22 16:37:05 2009 +0200

Adapted test files to new representation of interval abstract stores.

---

 .../floatingpointexpr1.cc                          |   66 ++++++++------------
 tests/Floating_Point_Expression/octagonalshape2.cc |   22 +++---
 2 files changed, 38 insertions(+), 50 deletions(-)

diff --git a/tests/Floating_Point_Expression/floatingpointexpr1.cc b/tests/Floating_Point_Expression/floatingpointexpr1.cc
index 6763b9d..f39bca0 100644
--- a/tests/Floating_Point_Expression/floatingpointexpr1.cc
+++ b/tests/Floating_Point_Expression/floatingpointexpr1.cc
@@ -81,22 +81,10 @@ typedef Opposite_Floating_Point_Expression<db_r_oc,
                                            float_ieee754_single> opp_fpeds;
 typedef Opposite_Floating_Point_Expression<db_r_oc,
                                            float_ieee754_double> opp_fpedd;
-
-typedef Floating_Point_Expression<fl_r_oc,
-                    float_ieee754_single>::FP_Interval_Abstract_Store sstr;
-typedef Floating_Point_Expression<db_r_oc,
-                    float_ieee754_single>::FP_Interval_Abstract_Store dstr;
-
 typedef Floating_Point_Expression<fl_r_oc,
                 float_ieee754_single>::FP_Linear_Form_Abstract_Store lsstr;
 typedef Floating_Point_Expression<db_r_oc,
                 float_ieee754_single>::FP_Linear_Form_Abstract_Store ldstr;
-
-typedef Floating_Point_Expression<fl_r_oc,
-                    float_ieee754_double>::FP_Interval_Abstract_Store sdtr;
-typedef Floating_Point_Expression<db_r_oc,
-                    float_ieee754_double>::FP_Interval_Abstract_Store ddtr;
-
 typedef Floating_Point_Expression<fl_r_oc,
                 float_ieee754_double>::FP_Linear_Form_Abstract_Store lsdtr;
 typedef Floating_Point_Expression<db_r_oc,
@@ -138,7 +126,7 @@ test02() {
   div_fpess div(num, den);
   try {
     Float_Interval_Linear_Form result;
-    div.linearize(sstr(), lsstr(), result);
+    div.linearize(Box<fl_r_oc>(0), lsstr(), result);
   }
   catch (Linearization_Failed e) {
     nout << "*** Linearization failed due to division by zero. ***" << endl;
@@ -150,9 +138,9 @@ test02() {
 // Tests multiplication by zero.
 bool
 test03() {
-  sstr store_fl;
-  store_fl[0] = fl_r_oc(0);
-  store_fl[1] = fl_r_oc(10);
+  Box<fl_r_oc> store_fl(2);
+  store_fl.set_interval(Variable(0), fl_r_oc(0));
+  store_fl.set_interval(Variable(1), fl_r_oc(10));
   con_fpess* con_fl = new con_fpess(5, 6);
   var_fpess* var0_fl = new var_fpess(0);
   var_fpess* var1_fl = new var_fpess(1);
@@ -168,9 +156,9 @@ test03() {
        << known_result_fl << endl;
   bool ok_fl = (result_fl == known_result_fl);
 
-  dstr store_db;
-  store_db[0] = db_r_oc(0);
-  store_db[1] = db_r_oc(4);
+  Box<db_r_oc> store_db(2);
+  store_db.set_interval(Variable(0), db_r_oc(0));
+  store_db.set_interval(Variable(1), db_r_oc(4));
   con_fpedd* con_db = new con_fpedd(5, 6);
   var_fpedd* var0_db = new var_fpedd(0);
   var_fpedd* var1_db = new var_fpedd(1);
@@ -199,7 +187,7 @@ test04() {
   store_fl[0] = known_result_fl;
   var_fpesd var_fl(0);
   Float_Interval_Linear_Form result_fl;
-  var_fl.linearize(sdtr(), store_fl, result_fl);
+  var_fl.linearize(Box<fl_r_oc>(0), store_fl, result_fl);
 
   nout << "*** known_result_fl ***" << endl
        << known_result_fl << endl;
@@ -211,7 +199,7 @@ test04() {
   store_db[0] = known_result_db;
   var_fpedd var_db(0);
   Double_Interval_Linear_Form result_db;
-  var_db.linearize(ddtr(), store_db, result_db);
+  var_db.linearize(Box<db_r_oc>(0), store_db, result_db);
 
   nout << "*** known_result_db ***" << endl
        << known_result_db << endl;
@@ -223,10 +211,10 @@ test04() {
 // Tests the linearization of A + B.
 bool
 test05() {
-  dstr store;
   db_r_oc tmp;
-  store[0] = tmp;
-  store[1] = tmp;
+  Box<db_r_oc> store(2);
+  store.set_interval(Variable(0), tmp);
+  store.set_interval(Variable(1), tmp);
   var_fpeds* var0 = new var_fpeds(0);
   var_fpeds* var1 = new var_fpeds(1);
   sum_fpeds sum(var0, var1);
@@ -253,10 +241,10 @@ test05() {
 // Tests the linearization of A - B.
 bool
 test06() {
-  sstr store;
   fl_r_oc tmp;
-  store[0] = tmp;
-  store[1] = tmp;
+  Box<fl_r_oc> store(2);
+  store.set_interval(Variable(0), tmp);
+  store.set_interval(Variable(1), tmp);
   var_fpess* var0 = new var_fpess(0);
   var_fpess* var1 = new var_fpess(1);
   dif_fpess dif(var0, var1);
@@ -283,11 +271,11 @@ test06() {
 // Tests the linearization of A * B where A = [0, 1] and B = [2, 2].
 bool
 test07() {
-  sstr store;
+  Box<fl_r_oc> store(2);
   fl_r_oc tmp(0);
   tmp.join_assign(1);
-  store[0] = tmp;
-  store[1] = fl_r_oc(2);
+  store.set_interval(Variable(0), tmp);
+  store.set_interval(Variable(1), fl_r_oc(2));
   var_fpess* var0 = new var_fpess(0);
   var_fpess* var1 = new var_fpess(1);
   mul_fpess mul(var0, var1);
@@ -309,14 +297,14 @@ test07() {
   return result == known_result;
 }
 
-// Tests the linearization of A / B where A = [1, 4] and B = [2, 2].
+// Tests the linearization of A / B where A = [0, 1] and B = [2, 2].
 bool
 test08() {
-  ddtr store;
+  Box<db_r_oc> store(2);
   db_r_oc tmp(0);
   tmp.join_assign(1);
-  store[0] = tmp;
-  store[1] = db_r_oc(2);
+  store.set_interval(Variable(0), tmp);
+  store.set_interval(Variable(1), db_r_oc(2));
   var_fpedd* var0 = new var_fpedd(0);
   var_fpedd* var1 = new var_fpedd(1);
   div_fpedd div(var0, var1);
@@ -341,10 +329,10 @@ test08() {
 // Tests the linearization of [1/4, 1/2] * (-A) where A = [1, 10].
 bool
 test09() {
-  sdtr store;
+  Box<fl_r_oc> store(1);
   fl_r_oc tmp(1);
   tmp.join_assign(10);
-  store[0] = tmp;
+  store.set_interval(Variable(0), tmp);
   con_fpesd* con = new con_fpesd(1 / 4.0, 1 / 2.0);
   var_fpesd* var0 = new var_fpesd(0);
   opp_fpesd* opp = new opp_fpesd(var0);
@@ -381,7 +369,7 @@ test10() {
   con_fpess* con3 = new con_fpess(0, 0);
   mul_fpess mul(con3, sum);
   Float_Interval_Linear_Form result;
-  mul.linearize(sstr(), lsstr(), result);
+  mul.linearize(Box<fl_r_oc>(), lsstr(), result);
 
   nout << "*** known_result1 ***" << endl
        << known_result1 << endl;
@@ -398,7 +386,7 @@ test10() {
   con_fpedd* con6 = new con_fpedd(0, 0);
   mul_fpedd mul2(sum2, con6);
   Double_Interval_Linear_Form result2;
-  mul2.linearize(ddtr(), lddtr(), result2);
+  mul2.linearize(Box<db_r_oc>(), lddtr(), result2);
 
   nout << "*** known_result2 ***" << endl
        << known_result2 << endl;
@@ -414,7 +402,7 @@ test10() {
 
   bool ok3 = false;
   try {
-    mul3.linearize(ddtr(), lddtr(), result2);
+    mul3.linearize(Box<db_r_oc>(), lddtr(), result2);
   }
   catch (Linearization_Failed e) {
     nout << "*** Linearization failed due to overflow. ***" << endl;
diff --git a/tests/Floating_Point_Expression/octagonalshape2.cc b/tests/Floating_Point_Expression/octagonalshape2.cc
index cbba75d..a3f2785 100644
--- a/tests/Floating_Point_Expression/octagonalshape2.cc
+++ b/tests/Floating_Point_Expression/octagonalshape2.cc
@@ -23,8 +23,6 @@ site: http://www.cs.unipr.it/ppl/ . */
 
 #include "ppl_test.hh"
 
-typedef Floating_Point_Expression<db_r_oc, float_ieee754_double>::FP_Interval_Abstract_Store ddtr;
-
 namespace {
 
 // tests trivial cases
@@ -412,13 +410,13 @@ bool
 test11() {
   Variable A(0);
   Variable B(1);
-  ddtr store;
+  Box<db_r_oc> store(2);
   db_r_oc tmp(-2.5);
   tmp.join_assign(3.5);
-  store[0] = tmp;
+  store.set_interval(A, tmp);
   tmp.lower() = -4;
   tmp.upper() = 4;
-  store[1] = tmp;
+  store.set_interval(B, tmp);
   Octagonal_Shape<double> oc1(2);
   oc1.add_constraint(A <= 2);
   oc1.add_constraint(B <= 2);
@@ -426,25 +424,27 @@ test11() {
   oc1.add_constraint(2*B >= -3);
   oc1.refine_fp_interval_abstract_store(store);
 
-  nout << "*** store[0] ***" << endl
-       << store[0] << endl;
+  tmp = store.get_interval(A);
+  nout << "*** store.get_interval(A) ***" << endl
+       << tmp << endl;
 
   db_r_oc known_result1(-2.5);
   known_result1.join_assign(2);
   nout << "*** known_result1 ***" << endl
        << known_result1 << endl;
 
-  bool ok1 = (store[0] == known_result1);
+  bool ok1 = (tmp == known_result1);
 
-  nout << "*** store[1] ***" << endl
-       << store[1] << endl;
+  tmp = store.get_interval(B);
+  nout << "*** store.get_interval(B) ***" << endl
+       << tmp << endl;
 
   db_r_oc known_result2(-1.5);
   known_result2.join_assign(2);
   nout << "*** known_result2 ***" << endl
        << known_result2 << endl;
 
-  bool ok2 = (store[1] == known_result2);
+  bool ok2 = (tmp == known_result2);
 
   return ok1 && ok2;
 }




More information about the PPL-devel mailing list