[PPL-devel] [GIT] ppl/ppl(floating_point): Added test for unary minus and multiplication by constant.
Roberto Amadini
r.amadini at virgilio.it
Tue Sep 8 14:04:59 CEST 2009
Module: ppl/ppl
Branch: floating_point
Commit: c508c610981bd3590bb5dec574481e28b24ae865
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=c508c610981bd3590bb5dec574481e28b24ae865
Author: Roberto Amadini <r.amadini at virgilio.it>
Date: Tue Sep 8 14:00:38 2009 +0200
Added test for unary minus and multiplication by constant.
---
.../floatingpointexpr1.cc | 34 ++++++++++++++++++-
1 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/tests/Floating_Point_Expression/floatingpointexpr1.cc b/tests/Floating_Point_Expression/floatingpointexpr1.cc
index a5014b0..d2ac873 100644
--- a/tests/Floating_Point_Expression/floatingpointexpr1.cc
+++ b/tests/Floating_Point_Expression/floatingpointexpr1.cc
@@ -224,7 +224,7 @@ test05() {
bool
test06() {
sstr store;
- fl_r_oc tmp = fl_r_oc(0);
+ fl_r_oc tmp(0);
tmp.join_assign(1);
store[0] = tmp;
store[1] = fl_r_oc(2);
@@ -256,7 +256,7 @@ test06() {
bool
test07() {
ddtr store;
- db_r_oc tmp = db_r_oc(0);
+ db_r_oc tmp(0);
tmp.join_assign(1);
store[0] = tmp;
store[1] = db_r_oc(2);
@@ -281,6 +281,35 @@ test07() {
return result == known_result;
}
+// Tests the linearization of [1/4, 1/2] * (-A) where A = [1, 10].
+bool
+test08() {
+ sdtr store;
+ fl_r_oc tmp(1);
+ tmp.join_assign(10);
+ store[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);
+ mul_fpesd mul(con, opp);
+ Float_Interval_Linear_Form result;
+ mul.linearize(store, lsdtr(), result);
+
+ Variable A(0);
+ Float_Interval_Linear_Form known_result = Float_Interval_Linear_Form(A);
+ float exp = pow(2, -53);
+ tmp = fl_r_oc(-1 / 2.0 - exp);
+ tmp.join_assign(-1 / 4.0 + exp);
+ known_result *= tmp;
+ tmp = fl_r_oc(-std::numeric_limits<float>::denorm_min());
+ tmp.join_assign(std::numeric_limits<float>::denorm_min());
+ known_result += tmp;
+
+ nout << "*** known_result ***" << endl
+ << known_result << endl;
+ return result == known_result;
+}
+
} // namespace
BEGIN_MAIN
@@ -291,4 +320,5 @@ BEGIN_MAIN
DO_TEST(test05);
DO_TEST(test06);
DO_TEST(test07);
+ DO_TEST(test08);
END_MAIN
More information about the PPL-devel
mailing list