[PPL-devel] [GIT] ppl/ppl(master): Corrected/improved a few tests in BD_Shape/ frequency1.cc.

Enea Zaffanella zaffanella at cs.unipr.it
Fri Mar 19 08:56:25 CET 2010


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

Author: Enea Zaffanella <zaffanella at cs.unipr.it>
Date:   Fri Mar 19 08:55:40 2010 +0100

Corrected/improved a few tests in BD_Shape/frequency1.cc.

---

 tests/BD_Shape/frequency1.cc |   51 ++++++++++++++++++++++++++++++++----------
 1 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/tests/BD_Shape/frequency1.cc b/tests/BD_Shape/frequency1.cc
index 8075fb6..7c420b6 100644
--- a/tests/BD_Shape/frequency1.cc
+++ b/tests/BD_Shape/frequency1.cc
@@ -46,7 +46,11 @@ test01() {
   bool ok = (!bds1.frequency(A, num1, den1, valn1, vald1)
              && !bds2.frequency(A, num2, den2, valn2, vald2));
   print_constraints(bds1, "*** bds1 ***");
+  nout << "num1 " << num1 << ", den1 " << den1 << endl;
+  nout << "valn1 " << valn1 << ", vald1 " << vald1 << endl;
   print_constraints(bds2, "*** bds2 ***");
+  nout << "num2 " << num2 << ", den2 " << den2 << endl;
+  nout << "valn2 " << valn2 << ", vald2 " << vald2 << endl;
 
   return ok;
 }
@@ -66,11 +70,16 @@ test02() {
   Coefficient den2;
   Coefficient valn2;
   Coefficient vald2;
-  bool ok = (bds1.frequency(Linear_Expression(3), num1, den1, valn1, vald1)
+  Linear_Expression three(3);
+  bool ok = (bds1.frequency(three, num1, den1, valn1, vald1)
              && num1 == 0 && den1 == 1 && valn1 == 3 && vald1 == 1
-             && !bds2.frequency(Linear_Expression(3), num2, den2, valn2, vald2));
+             && !bds2.frequency(three, num2, den2, valn2, vald2));
   print_constraints(bds1, "*** bds1 ***");
+  nout << "num1 " << num1 << ", den1 " << den1 << endl;
+  nout << "valn1 " << valn1 << ", vald1 " << vald1 << endl;
   print_constraints(bds2, "*** bds2 ***");
+  nout << "num2 " << num2 << ", den2 " << den2 << endl;
+  nout << "valn2 " << valn2 << ", vald2 " << vald2 << endl;
 
   return ok;
 }
@@ -90,6 +99,8 @@ test03() {
   bool ok = (bds.frequency(Linear_Expression(A), num, den, valn, vald)
              && num == 0 && den == 1 && valn == 0 && vald == 1);
   print_constraints(bds, "*** bds ***");
+  nout << "num " << num << ", den " << den << endl;
+  nout << "valn " << valn << ", vald " << vald << endl;
 
   return ok;
 }
@@ -108,6 +119,8 @@ test04() {
   Coefficient vald;
   bool ok = (!bds.frequency(Linear_Expression(A), num, den, valn, vald));
   print_constraints(bds, "*** bds ***");
+  nout << "num " << num << ", den " << den << endl;
+  nout << "valn " << valn << ", vald " << vald << endl;
 
   return ok;
 }
@@ -127,6 +140,8 @@ test05() {
   Coefficient vald;
   bool ok = (!bds.frequency(Linear_Expression(B), num, den, valn, vald));
   print_constraints(bds, "*** bds ***");
+  nout << "num " << num << ", den " << den << endl;
+  nout << "valn " << valn << ", vald " << vald << endl;
 
   return ok;
 }
@@ -137,7 +152,7 @@ test06() {
   Variable B(1);
 
   TBD_Shape bds(2);
-  bds.add_constraint(2*A == 1);
+  bds.add_constraint(A == 1);
   bds.add_constraint(B == 2);
 
   Coefficient num;
@@ -145,8 +160,10 @@ test06() {
   Coefficient valn;
   Coefficient vald;
   bool ok = (bds.frequency(Linear_Expression(A + B - 3), num, den, valn, vald)
-             && num == 0 && den == 1 && valn == -1 && vald == 2);
+             && num == 0 && den == 1 && valn == 0 && vald == 1);
   print_constraints(bds, "*** bds ***");
+  nout << "num " << num << ", den " << den << endl;
+  nout << "valn " << valn << ", vald " << vald << endl;
 
   return ok;
 }
@@ -166,6 +183,8 @@ test07() {
   Coefficient vald;
   bool ok = (!bds.frequency(Linear_Expression(A - B), num, den, valn, vald));
   print_constraints(bds, "*** bds ***");
+  nout << "num " << num << ", den " << den << endl;
+  nout << "valn " << valn << ", vald " << vald << endl;
 
   return ok;
 }
@@ -177,8 +196,8 @@ test08() {
   Variable C(2);
 
   TBD_Shape bds(3);
-  bds.add_constraint(2*A - 2*B == 1);
-  bds.add_constraint(3*C == 2);
+  bds.add_constraint(2*A - 2*B == 2);
+  bds.add_constraint(3*C == 3);
   bds.add_constraint(B <= 2);
 
   Coefficient num;
@@ -187,8 +206,10 @@ test08() {
   Coefficient vald;
   bool ok = (bds.frequency(Linear_Expression(A - B + C + 1),
                            num, den, valn, vald)
-             && num == 0 && den == 1 && valn == 13 && vald == 6);
+             && num == 0 && den == 1 && valn == 3 && vald == 1);
   print_constraints(bds, "*** bds ***");
+  nout << "num " << num << ", den " << den << endl;
+  nout << "valn " << valn << ", vald " << vald << endl;
 
   return ok;
 }
@@ -200,18 +221,24 @@ test09() {
   Variable C(2);
 
   TBD_Shape bds(3);
-  bds.add_constraint(2*A - 2*B == 1);
-  bds.add_constraint(2*C == 1);
+  bds.add_constraint(4*A - 4*B == 1);
+  bds.add_constraint(3*C == 1);
   bds.add_constraint(B <= 2);
 
   Coefficient num;
   Coefficient den;
   Coefficient valn;
   Coefficient vald;
-  bool ok = (bds.frequency(Linear_Expression(A - B + C + 1),
-                           num, den, valn, vald)
-             && num == 0 && den == 1 && valn == 2 && vald == 1);
+  bool discrete = bds.frequency(Linear_Expression(A - B),
+                                num, den, valn, vald);
+  // If the shape is based on an integral coefficient type, then
+  // approximations will induce non discreteness of the linear expression.
+  bool ok = std::numeric_limits<TBD_Shape::coefficient_type_base>::is_integer
+    ? (!discrete && num == 0 && den == 0 && valn == 0 && vald == 0)
+    : (discrete && num == 0 && den == 1 && valn == 1 && vald == 4);
   print_constraints(bds, "*** bds ***");
+  nout << "num " << num << ", den " << den << endl;
+  nout << "valn " << valn << ", vald " << vald << endl;
 
   return ok;
 }




More information about the PPL-devel mailing list