-/* $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);
/* */
/* ______ */
typedef enum {
MAXMIN,
LAGRANGE_RENO,
- LAGRANGE_VEGAS,
+ LAGRANGE_VEGAS
} method_t;
static double dichotomy(double func(double), double min, double max,
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);
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) {
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) {
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);
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);
}
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);
} 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);
}
1, 1, 1, 1, 1
};
- /*A = xbt_new0(double*, links + 5); */
A = xbt_new0(double *, links + 5);
for (i = 0; i < links + 5; i++) {
lmm_set_default_protocol_function(func_reno_f, func_reno_fp,
func_reno_fpi);
- Sys = lmm_system_new();
+ Sys = lmm_system_new(1);
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);
}
} 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__
{
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;