[PPL-devel] [GIT] ppl/ppl(floating_point): Added two simple tests.

Fabio Bossi bossi at cs.unipr.it
Tue Jul 27 16:22:36 CEST 2010


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

Author: Fabio Bossi <bossi at cs.unipr.it>
Date:   Tue Jul 27 16:13:24 2010 +0200

Added two simple tests.

---

 tests/Concrete_Expression/linearize.cc |   43 ++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/tests/Concrete_Expression/linearize.cc b/tests/Concrete_Expression/linearize.cc
index 14897c1..d382749 100644
--- a/tests/Concrete_Expression/linearize.cc
+++ b/tests/Concrete_Expression/linearize.cc
@@ -42,8 +42,51 @@ test01() {
   return false;
 }
 
+// Tests multiplication by zero.
+bool
+test02() {
+  FP_Interval_Abstract_Store store(2);
+  store.set_interval(Variable(0), FP_Interval(0));
+  store.set_interval(Variable(1), FP_Interval(10));
+  Floating_Point_Constant<C_Expr> con("5.5", 4);
+  Approximable_Reference<C_Expr> var0(0);
+  Approximable_Reference<C_Expr> var1(1);
+  Binary_Operator<C_Expr> dif(Binary_Operator<C_Expr>::SUB, &var1, &con);
+  Binary_Operator<C_Expr> mul(Binary_Operator<C_Expr>::MUL, &dif, &var0);
+  FP_Linear_Form result;
+  linearize(mul, store, FP_Linear_Form_Abstract_Store(), result);
+
+  FP_Linear_Form known_result(compute_absolute_error<FP_Interval>(ANALYZED_FP_FORMAT));
+
+  nout << "*** known_result ***" << endl
+       << known_result << endl;
+  bool ok = (result == known_result);
+
+  return ok;
+}
+
+// Tests linearization of variables in a given linear form abstract store.
+bool
+test03() {
+  FP_Linear_Form_Abstract_Store store;
+  Variable A(0);
+  FP_Linear_Form known_result = FP_Linear_Form(A);
+  store[0] = known_result;
+  Approximable_Reference<C_Expr> var(0);
+  FP_Linear_Form result;
+  linearize(var, FP_Interval_Abstract_Store(0), store, result);
+
+  nout << "*** known_result ***" << endl
+       << known_result << endl;
+  bool ok = (result == known_result);
+
+  return ok;
+}
+
 } // namespace
 
 BEGIN_MAIN
   DO_TEST(test01);
+  DO_TEST(test02);
+  DO_TEST(test03);
 END_MAIN




More information about the PPL-devel mailing list