Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge back the master trunk into the smpi branch
[simgrid.git] / testsuite / surf / lmm_usage.c
index 97a2228..61b3ad7 100644 (file)
@@ -1,8 +1,7 @@
-/*     $Id$     */
-
 /* A few tests for the maxmin library                                       */
 
-/* Copyright (c) 2004 Arnaud Legrand. All rights reserved.                  */
+/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team.
+ * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 #include "xbt/module.h"
 #include <math.h>
 
-XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test, "Messages specific for surf example");
+XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test,
+                             "Messages specific for surf example");
 
-#define PRINT_VAR(var) DEBUG1(#var " = %g",lmm_variable_getvalue(var));
-#define SHOW_EXPR(expr) DEBUG1(#expr " = %g",expr);
+#define PRINT_VAR(var) XBT_DEBUG(#var " = %g",lmm_variable_getvalue(var));
+#define SHOW_EXPR(expr) XBT_DEBUG(#expr " = %g",expr);
 
 /*                               */
 /*        ______                 */
@@ -122,7 +122,7 @@ void test1(method_t method)
     lmm_set_default_protocol_function(func_reno_f, func_reno_fpi,
                                       func_reno_fpi);
 
-  Sys = lmm_system_new();
+  Sys = lmm_system_new(1);
   L1 = lmm_constraint_new(Sys, (void *) "L1", a);
   L2 = lmm_constraint_new(Sys, (void *) "L2", b);
   L3 = lmm_constraint_new(Sys, (void *) "L3", a);
@@ -152,7 +152,7 @@ void test1(method_t method)
     lmm_solve(Sys);
   } else if (method == LAGRANGE_VEGAS) {
     double x = 3 * a / 4 - 3 * b / 8 +
-      sqrt(9 * b * b + 4 * a * a - 4 * a * b) / 8;
+        sqrt(9 * b * b + 4 * a * a - 4 * a * b) / 8;
     /* Computed with mupad and D_f=1.0 */
     double max_deviation = 0.0;
     if (x > a) {
@@ -164,23 +164,25 @@ void test1(method_t method)
 
     lagrange_solve(Sys);
 
-    max_deviation = MAX(max_deviation, fabs(lmm_variable_getvalue(R_1) - x));
-    max_deviation = MAX(max_deviation, fabs(lmm_variable_getvalue(R_3) - x));
     max_deviation =
-      MAX(max_deviation, fabs(lmm_variable_getvalue(R_2) - (b - a + x)));
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_1) - x));
+    max_deviation =
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_3) - x));
+    max_deviation =
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_2) - (b - a + x)));
     max_deviation =
-      MAX(max_deviation, fabs(lmm_variable_getvalue(R_1_2_3) - (a - x)));
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_1_2_3) - (a - x)));
 
     if (max_deviation > MAXMIN_PRECISION) {
-      WARN1("Max Deviation from optimal solution : %g", max_deviation);
-      WARN1("Found x = %1.20f", x);
-      WARN2("Deviation from optimal solution (R_1 = %g): %1.20f", x,
+      XBT_WARN("Max Deviation from optimal solution : %g", max_deviation);
+      XBT_WARN("Found x = %1.20f", x);
+      XBT_WARN("Deviation from optimal solution (R_1 = %g): %1.20f", x,
             lmm_variable_getvalue(R_1) - x);
-      WARN2("Deviation from optimal solution (R_2 = %g): %1.20f",
+      XBT_WARN("Deviation from optimal solution (R_2 = %g): %1.20f",
             b - a + x, lmm_variable_getvalue(R_2) - (b - a + x));
-      WARN2("Deviation from optimal solution (R_3 = %g): %1.20f", x,
+      XBT_WARN("Deviation from optimal solution (R_3 = %g): %1.20f", x,
             lmm_variable_getvalue(R_3) - x);
-      WARN2("Deviation from optimal solution (R_1_2_3 = %g): %1.20f",
+      XBT_WARN("Deviation from optimal solution (R_1_2_3 = %g): %1.20f",
             a - x, lmm_variable_getvalue(R_1_2_3) - (a - x));
     }
   } else if (method == LAGRANGE_RENO) {
@@ -197,27 +199,29 @@ void test1(method_t method)
       x = a;
     lagrange_solve(Sys);
 
-    max_deviation = MAX(max_deviation, fabs(lmm_variable_getvalue(R_1) - x));
-    max_deviation = MAX(max_deviation, fabs(lmm_variable_getvalue(R_3) - x));
     max_deviation =
-      MAX(max_deviation, fabs(lmm_variable_getvalue(R_2) - (b - a + x)));
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_1) - x));
+    max_deviation =
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_3) - x));
+    max_deviation =
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_2) - (b - a + x)));
     max_deviation =
-      MAX(max_deviation, fabs(lmm_variable_getvalue(R_1_2_3) - (a - x)));
+        MAX(max_deviation, fabs(lmm_variable_getvalue(R_1_2_3) - (a - x)));
 
     if (max_deviation > MAXMIN_PRECISION) {
-      WARN1("Max Deviation from optimal solution : %g", max_deviation);
-      WARN1("Found x = %1.20f", x);
-      WARN2("Deviation from optimal solution (R_1 = %g): %1.20f", x,
+      XBT_WARN("Max Deviation from optimal solution : %g", max_deviation);
+      XBT_WARN("Found x = %1.20f", x);
+      XBT_WARN("Deviation from optimal solution (R_1 = %g): %1.20f", x,
             lmm_variable_getvalue(R_1) - x);
-      WARN2("Deviation from optimal solution (R_2 = %g): %1.20f",
+      XBT_WARN("Deviation from optimal solution (R_2 = %g): %1.20f",
             b - a + x, lmm_variable_getvalue(R_2) - (b - a + x));
-      WARN2("Deviation from optimal solution (R_3 = %g): %1.20f", x,
+      XBT_WARN("Deviation from optimal solution (R_3 = %g): %1.20f", x,
             lmm_variable_getvalue(R_3) - x);
-      WARN2("Deviation from optimal solution (R_1_2_3 = %g): %1.20f",
+      XBT_WARN("Deviation from optimal solution (R_1_2_3 = %g): %1.20f",
             a - x, lmm_variable_getvalue(R_1_2_3) - (a - x));
     }
   } else {
-    xbt_assert0(0, "Invalid method");
+    xbt_die( "Invalid method");
   }
 
   PRINT_VAR(R_1_2_3);
@@ -225,6 +229,10 @@ void test1(method_t method)
   PRINT_VAR(R_2);
   PRINT_VAR(R_3);
 
+  lmm_variable_free(Sys, R_1_2_3);
+  lmm_variable_free(Sys, R_1);
+  lmm_variable_free(Sys, R_2);
+  lmm_variable_free(Sys, R_3);
   lmm_system_free(Sys);
 }
 
@@ -246,7 +254,7 @@ void test2(method_t method)
     lmm_set_default_protocol_function(func_reno_f, func_reno_fp,
                                       func_reno_fpi);
 
-  Sys = lmm_system_new();
+  Sys = lmm_system_new(1);
   CPU1 = lmm_constraint_new(Sys, (void *) "CPU1", 200.0);
   CPU2 = lmm_constraint_new(Sys, (void *) "CPU2", 100.0);
 
@@ -269,12 +277,14 @@ void test2(method_t method)
   } else if (method == LAGRANGE_RENO) {
     lagrange_solve(Sys);
   } else {
-    xbt_assert0(0, "Invalid method");
+    xbt_die("Invalid method");
   }
 
   PRINT_VAR(T1);
   PRINT_VAR(T2);
 
+  lmm_variable_free(Sys, T1);
+  lmm_variable_free(Sys, T2);
   lmm_system_free(Sys);
 }
 
@@ -303,7 +313,6 @@ void test3(method_t method)
     1, 1, 1, 1, 1
   };
 
-  /*A = xbt_new0(double*, links + 5); */
   A = xbt_new0(double *, links + 5);
 
   for (i = 0; i < links + 5; i++) {
@@ -394,7 +403,7 @@ void test3(method_t method)
     lmm_set_default_protocol_function(func_reno_f, func_reno_fp,
                                       func_reno_fpi);
 
-  Sys = lmm_system_new();
+  Sys = lmm_system_new(1);
 
 
 
@@ -417,7 +426,7 @@ void test3(method_t method)
   for (j = 0; j < 16; j++) {
     tmp_name[i + j] = bprintf("X_%03d", j);
     tmp_var[j] =
-      lmm_variable_new(Sys, (void *) tmp_name[i + j], 1.0, -1.0, 15);
+        lmm_variable_new(Sys, (void *) tmp_name[i + j], 1.0, -1.0, 15);
     lmm_update_variable_weight(Sys, tmp_var[j], 1.0);
   }
 
@@ -441,17 +450,24 @@ void test3(method_t method)
   } else if (method == LAGRANGE_RENO) {
     lagrange_solve(Sys);
   } else {
-    xbt_assert0(0, "Invalid method");
+    xbt_die("Invalid method");
   }
 
   for (j = 0; j < 16; j++) {
     PRINT_VAR(tmp_var[j]);
   }
 
-  free(tmp_var);
-  free(tmp_cnst);
-  free(tmp_name);
+  for (j = 0; j < 16; j++)
+    lmm_variable_free(Sys, tmp_var[j]);
+  xbt_free(tmp_var);
+  xbt_free(tmp_cnst);
+  for (i = 0; i < 31; i++)
+    xbt_free(tmp_name[i]);
+  xbt_free(tmp_name);
   lmm_system_free(Sys);
+  for (i = 0; i < links + 5; i++)
+    xbt_free(A[i]);
+  xbt_free(A);
 }
 
 #ifdef __BORLANDC__
@@ -462,28 +478,28 @@ int main(int argc, char **argv)
 {
   xbt_init(&argc, argv);
 
-  INFO0("***** Test 1 (Max-Min)");
+  XBT_INFO("***** Test 1 (Max-Min)");
   test1(MAXMIN);
-  INFO0("***** Test 1 (Lagrange - Vegas)");
+  XBT_INFO("***** Test 1 (Lagrange - Vegas)");
   test1(LAGRANGE_VEGAS);
-  INFO0("***** Test 1 (Lagrange - Reno)");
+  XBT_INFO("***** Test 1 (Lagrange - Reno)");
   test1(LAGRANGE_RENO);
 
 
 
-  INFO0("***** Test 2 (Max-Min)");
+  XBT_INFO("***** Test 2 (Max-Min)");
   test2(MAXMIN);
-  INFO0("***** Test 2 (Lagrange - Vegas)");
+  XBT_INFO("***** Test 2 (Lagrange - Vegas)");
   test2(LAGRANGE_VEGAS);
-  INFO0("***** Test 2 (Lagrange - Reno)");
+  XBT_INFO("***** Test 2 (Lagrange - Reno)");
   test2(LAGRANGE_RENO);
 
 
-  INFO0("***** Test 3 (Max-Min)");
+  XBT_INFO("***** Test 3 (Max-Min)");
   test3(MAXMIN);
-  INFO0("***** Test 3 (Lagrange - Vegas)");
+  XBT_INFO("***** Test 3 (Lagrange - Vegas)");
   test3(LAGRANGE_VEGAS);
-  INFO0("***** Test 3 (Lagrange - Reno)");
+  XBT_INFO("***** Test 3 (Lagrange - Reno)");
   test3(LAGRANGE_RENO);
 
   return 0;