[PPL-devel] [GIT] ppl/ppl(floating_point): Improved tests. Now they all pass and reach the maximum coverage.
Roberto Amadini
r.amadini at virgilio.it
Wed Sep 23 21:24:00 CEST 2009
Module: ppl/ppl
Branch: floating_point
Commit: 102eb141ca6f56abb3b38bcfb9d724f1f6c8f7c8
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=102eb141ca6f56abb3b38bcfb9d724f1f6c8f7c8
Author: Roberto Amadini <r.amadini at virgilio.it>
Date: Wed Sep 23 21:23:38 2009 +0200
Improved tests. Now they all pass and reach the maximum coverage.
---
.../floatingpointexpr1.cc | 85 ++++++++++----------
tests/Floating_Point_Expression/octagonalshape2.cc | 7 +-
2 files changed, 43 insertions(+), 49 deletions(-)
diff --git a/tests/Floating_Point_Expression/floatingpointexpr1.cc b/tests/Floating_Point_Expression/floatingpointexpr1.cc
index 63c978a..25b7b14 100644
--- a/tests/Floating_Point_Expression/floatingpointexpr1.cc
+++ b/tests/Floating_Point_Expression/floatingpointexpr1.cc
@@ -47,24 +47,25 @@ test01() {
// Tests multiplication by zero.
bool
test02() {
- FP_Interval_Abstract_Store store_fl(2);
- store_fl.set_interval(Variable(0), FP_Interval(0));
- store_fl.set_interval(Variable(1), FP_Interval(10));
- Con_FP_Expression* con_fl = new Con_FP_Expression(5, 6);
- Var_FP_Expression* var0_fl = new Var_FP_Expression(0);
- Var_FP_Expression* var1_fl = new Var_FP_Expression(1);
- Dif_FP_Expression* dif_fl = new Dif_FP_Expression(var1_fl, con_fl);
- Mul_FP_Expression mul_fl(dif_fl, var0_fl);
- FP_Linear_Form result_fl;
- mul_fl.linearize(store_fl, FP_Linear_Form_Abstract_Store(), result_fl);
- FP_Interval kr_fl(-FP_Expression::absolute_error);
- kr_fl.join_assign(FP_Expression::absolute_error);
- FP_Linear_Form known_result_fl(kr_fl);
-
- nout << "*** known_result_fl ***" << endl
- << known_result_fl << endl;
- bool ok_fl = (result_fl == known_result_fl);
+ FP_Interval_Abstract_Store store(2);
+ store.set_interval(Variable(0), FP_Interval(0));
+ store.set_interval(Variable(1), FP_Interval(10));
+ Con_FP_Expression* con = new Con_FP_Expression(5, 6);
+ Var_FP_Expression* var0 = new Var_FP_Expression(0);
+ Var_FP_Expression* var1 = new Var_FP_Expression(1);
+ Dif_FP_Expression* dif = new Dif_FP_Expression(var1, con);
+ Mul_FP_Expression mul(dif, var0);
+ FP_Linear_Form result;
+ mul.linearize(store, FP_Linear_Form_Abstract_Store(), result);
+ FP_Interval kr(-FP_Expression::absolute_error);
+ kr.join_assign(FP_Expression::absolute_error);
+ FP_Linear_Form known_result(kr);
+
+ nout << "*** known_result ***" << endl
+ << known_result << endl;
+ bool ok = (result == known_result);
+ return ok; /*
FP_Interval_Abstract_Store store_db(2);
store_db.set_interval(Variable(0), FP_Interval(0));
store_db.set_interval(Variable(1), FP_Interval(4));
@@ -84,24 +85,25 @@ test02() {
<< known_result_db << endl;
bool ok_db = (result_db == known_result_db);
- return ok_fl && ok_db;
+ return ok_fl && ok_db; */
}
// Tests linearization of variables in a given linear form abstract store.
bool
test03() {
- FP_Linear_Form_Abstract_Store store_fl;
+ FP_Linear_Form_Abstract_Store store;
Variable A(0);
- FP_Linear_Form known_result_fl = FP_Linear_Form(A);
- store_fl[0] = known_result_fl;
- Var_FP_Expression var_fl(0);
- FP_Linear_Form result_fl;
- var_fl.linearize(FP_Interval_Abstract_Store(0), store_fl, result_fl);
+ FP_Linear_Form known_result = FP_Linear_Form(A);
+ store[0] = known_result;
+ Var_FP_Expression var(0);
+ FP_Linear_Form result;
+ var.linearize(FP_Interval_Abstract_Store(0), store, result);
- nout << "*** known_result_fl ***" << endl
- << known_result_fl << endl;
- bool ok_fl = (result_fl == known_result_fl);
+ nout << "*** known_result ***" << endl
+ << known_result << endl;
+ bool ok = (result == known_result);
+ return ok; /*
FP_Linear_Form_Abstract_Store store_db;
FP_Linear_Form known_result_db =
FP_Linear_Form(A);
@@ -114,7 +116,7 @@ test03() {
<< known_result_db << endl;
bool ok_db = (result_db == known_result_db);
- return ok_fl && ok_db;
+ return ok_fl && ok_db; */
}
// Tests the linearization of A + B.
@@ -129,22 +131,18 @@ test04() {
Sum_FP_Expression sum(var0, var1);
FP_Linear_Form result;
sum.linearize(store, FP_Linear_Form_Abstract_Store(), result);
- nout << result << endl;
Variable A(0);
Variable B(1);
FP_Linear_Form known_result = FP_Linear_Form(A);
ANALYZER_FP_FORMAT exp = pow(2,
-static_cast<ANALYZER_FP_FORMAT>(ANALYZED_FP_FORMAT::MANTISSA_BITS));
- nout << exp << endl;
tmp = FP_Interval(1);
tmp -= exp;
FP_Interval tmp2(1);
tmp2 += exp;
tmp.join_assign(tmp2);
- nout << tmp << endl;
known_result *= tmp;
known_result += tmp * FP_Linear_Form(B);
- nout << FP_Expression::absolute_error << endl;
tmp = FP_Interval(-FP_Expression::absolute_error);
tmp.join_assign(FP_Expression::absolute_error);
known_result += tmp;
@@ -289,13 +287,12 @@ test08() {
// Tests linearization of multiplication by unbounded operands.
bool
test09() {
- ANALYZER_FP_FORMAT max_fl = std::numeric_limits<ANALYZER_FP_FORMAT>::max();
- FP_Interval min_fl = FP_Interval(
- -FP_Expression::absolute_error);
- min_fl.join_assign(FP_Expression::absolute_error);
- FP_Linear_Form known_result1 = FP_Linear_Form(min_fl);
+ ANALYZER_FP_FORMAT max = std::numeric_limits<ANALYZER_FP_FORMAT>::max();
+ FP_Interval min = FP_Interval(-FP_Expression::absolute_error);
+ min.join_assign(FP_Expression::absolute_error);
+ FP_Linear_Form known_result1 = FP_Linear_Form(min);
Con_FP_Expression* con1 = new Con_FP_Expression(0, 0);
- Con_FP_Expression* con2 = new Con_FP_Expression(0, max_fl);
+ Con_FP_Expression* con2 = new Con_FP_Expression(0, max);
Sum_FP_Expression* sum = new Sum_FP_Expression(con1, con2);
Con_FP_Expression* con3 = new Con_FP_Expression(0, 0);
Mul_FP_Expression mul(con3, sum);
@@ -306,14 +303,14 @@ test09() {
nout << "*** known_result1 ***" << endl
<< known_result1 << endl;
bool ok1 = (known_result1 == result);
-
+/*
ANALYZER_FP_FORMAT max_db = std::numeric_limits<ANALYZER_FP_FORMAT>::max();
FP_Interval min_db = FP_Interval(
-FP_Expression::absolute_error);
- min_db.join_assign(FP_Expression::absolute_error);
- FP_Linear_Form known_result2 = FP_Linear_Form(min_db);
+ min_db.join_assign(FP_Expression::absolute_error); */
+ FP_Linear_Form known_result2 = FP_Linear_Form(min);
Con_FP_Expression* con4 = new Con_FP_Expression(0, 0);
- Con_FP_Expression* con5 = new Con_FP_Expression(0, max_db);
+ Con_FP_Expression* con5 = new Con_FP_Expression(0, max);
Sum_FP_Expression* sum2 = new Sum_FP_Expression(con4, con5);
Con_FP_Expression* con6 = new Con_FP_Expression(0, 0);
Mul_FP_Expression mul2(sum2, con6);
@@ -326,10 +323,10 @@ test09() {
bool ok2 = (known_result2 == result2);
Con_FP_Expression* con7 = new Con_FP_Expression(0, 0);
- Con_FP_Expression* con8 = new Con_FP_Expression(0, max_db);
+ Con_FP_Expression* con8 = new Con_FP_Expression(0, max);
Sum_FP_Expression* sum3 = new Sum_FP_Expression(con7, con8);
Con_FP_Expression* con9 = new Con_FP_Expression(0, 0);
- Con_FP_Expression* con10 = new Con_FP_Expression(0, max_db);
+ Con_FP_Expression* con10 = new Con_FP_Expression(0, max);
Sum_FP_Expression* sum4 = new Sum_FP_Expression(con9, con10);
Mul_FP_Expression mul3(sum3, sum4);
diff --git a/tests/Floating_Point_Expression/octagonalshape2.cc b/tests/Floating_Point_Expression/octagonalshape2.cc
index 0111f23..5a869ec 100644
--- a/tests/Floating_Point_Expression/octagonalshape2.cc
+++ b/tests/Floating_Point_Expression/octagonalshape2.cc
@@ -404,10 +404,8 @@ test10() {
}
// tests Octagonal_Shape<T>::refine_fp_interval_abstract_store
-// FIXME: this test should be parametric according to the floating point
-// format of analyzer and analyzed.
bool
-test11() { /*
+test11() {
Variable A(0);
Variable B(1);
FP_Interval_Abstract_Store store(2);
@@ -446,8 +444,7 @@ test11() { /*
bool ok2 = (tmp == known_result2);
- return ok1 && ok2; */
- return true;
+ return ok1 && ok2;
}
} //namespace
More information about the PPL-devel
mailing list