Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
just warn me when a value is weird. This is just a printing function, not an assertin...
[simgrid.git] / src / surf / maxmin.c
index 98ce3a2..8419d5c 100644 (file)
@@ -176,10 +176,9 @@ lmm_variable_t lmm_variable_new(lmm_system_t sys, void *id,
   var->value = 0.0;
   var->df    = 0.0;
 
-  var->func_f    = func_f_def;
-  var->func_fp   = func_fp_def;
+  var->func_f  = func_f_def;
+  var->func_fp  = func_fp_def;
   var->func_fpi  = func_fpi_def;
-  var->func_fpip = func_fpip_def;
 
   if(weight) xbt_swag_insert_at_head(var,&(sys->variable_set));
   else xbt_swag_insert_at_tail(var,&(sys->variable_set));
@@ -387,15 +386,18 @@ void lmm_print(lmm_system_t sys)
     }
     DEBUG1("%s",trace_buf);
     trace_buf[0]='\000';
-    xbt_assert3(!double_positive(sum-cnst->bound), "Incorrect value (%f is not smaller than %f): %g",
-               sum,cnst->bound,sum-cnst->bound);
+    if(double_positive(sum-cnst->bound))
+      WARN3("Incorrect value (%f is not smaller than %f): %g",
+              sum,cnst->bound,sum-cnst->bound);
   }
 
   /* Printing Result */
   xbt_swag_foreach(var, var_list) {
     if(var->bound>0) {
       DEBUG4("'%p'(%f) : %f (<=%f)",var,var->weight,var->value, var->bound);
-      xbt_assert0(!double_positive(var->value-var->bound), "Incorrect value");
+      if(double_positive(var->value-var->bound))
+        WARN2("Incorrect value (%f is not smaller than %f",
+                 var->value, var->bound);
     }
     else 
       DEBUG3("'%p'(%f) : %f",var,var->weight,var->value);
@@ -624,123 +626,3 @@ lmm_constraint_t lmm_get_next_active_constraint(lmm_system_t sys, lmm_constraint
 }
 
 
-
-/** \brief Attribute the value bound to var->bound.
- * 
- *  \param func_f    default function f associated with the chosen protocol flavor
- *  \param func_fp   partial differential of f (f prime, f')
- *  \param func_fpi  inverse of the partial differential of f (f prime inverse, (f')^{-1})
- *  \param func_fpip partial differential of the inverse of the partial differential of f (f prime inverse prime, ((f')^{-1})')
- * 
- *  Set default functions to the ones passed as parameters. This is a polimorfism in C pure, enjoy the roots of programming.
- *
- */
-void lmm_set_default_protocol_functions(double (* func_f)    (lmm_variable_t var, double x),
-                                       double (* func_fp)   (lmm_variable_t var, double x),
-                                       double (* func_fpi)  (lmm_variable_t var, double x),
-                                       double (* func_fpip) (lmm_variable_t var, double x))
-                                       
-{
-  func_f_def    = func_f;
-  func_fp_def   = func_fp;
-  func_fpi_def  = func_fpi;
-  func_fpip_def = func_fpip;
-}
-
-
-/*
- * NOTE for Reno: all functions consider the network
- * coeficient (alpha) equal to 1.
- */
-
-/*
- * For Vegas f: $\alpha_f d_f \log\left(x_f\right)$
- */
-double func_vegas_f(lmm_variable_t var, double x){
-  return var->df * log(x);
-}
-
-/*
- * For Vegas fp: $\frac{\alpha D_f}{x}$
- */
-double func_vegas_fp(lmm_variable_t var, double x){
-  //avoid a disaster value - c'est du bricolage mais ca marche
-/*   if(x == 0) x = 10e-8; */
-  return var->df/x;
-}
-
-/*
- * For Vegas fpi: $\frac{\alpha D_f}{x}$
- */
-double func_vegas_fpi(lmm_variable_t var, double x){
-  //avoid a disaster value - c'est du bricolage mais ca marche
-/*   if(x == 0) x = 10e-8; */
-  return var->df/x;
-}
-
-/*
- * For Vegas fpip: $-\frac{\alpha D_f}{x^2}$
- */
-double func_vegas_fpip(lmm_variable_t var, double x){
-  //avoid a disaster value - c'est du bricolage mais ca marche
-/*   if(x == 0) x = 10e-8; */
-  return -( var->df/(x*x) ) ;
-}
-
-
-/*
- * For Reno f: $\frac{\sqrt{\frac{3}{2}}}{D_f} \arctan\left(\sqrt{\frac{3}{2}}x_f D_f\right)$
- */
-double func_reno_f(lmm_variable_t var, double x){
-  xbt_assert0( var->df, "Please report this bug.");
-  // \sqrt{3/2} = 0.8164965808
-  return (0.8164965808 / var->df) * atan( (0.8164965808 / var->df)*x );
-}
-
-/*
- * For Reno fp: $\frac{3}{3 {D_f}^2 x^2 + 2}$
- */
-double func_reno_fp(lmm_variable_t var, double x){
-  return 3 / (3*var->df*var->df*x*x + 2);
-}
-
-/*
- * For Reno fpi: $\sqrt{\frac{1}{{D_f}^2 x} - \frac{2}{3{D_f}^2}}$
- */
-double func_reno_fpi(lmm_variable_t var, double x){
-  double res_fpi; 
-  xbt_assert0( var->df, "Please report this bug.");
-
-  //avoid a disaster value - c'est du bricolage mais ca marche pas ....
-/*   if(x == 0) x = 10e-16; */
-  res_fpi = 1/(var->df*var->df*x) - 2/(3*var->df*var->df);
-
-  //avoid a disaster value of res_fpi
-  if(res_fpi < 0.0) return 0.0;
-  else return sqrt(res_fpi);
-}
-
-/*
- * For Reno fpip:  $-\frac{1}{2 {D_f}^2 x^2\sqrt{\frac{1}{{D_f}^2 x} - \frac{2}{3{D_f}^2}}}$
- */
-double func_reno_fpip(lmm_variable_t var, double x){
-  double res_fpip; 
-  double critical_test;
-
-  xbt_assert0(var->df,"Please report this bug.");
-
-  //avoid division by zero - c'est du bricolage mais ca marche
-/*   if(x == 0) x = 10e-16; */
-
-  res_fpip = 1/(var->df*var->df*x) - 2/(3*var->df*var->df);
-  
-  //avoid square root of negative number
-  if(res_fpip < 0.0) return 0.0;
-
-  //avoid division by zero
-  critical_test = (2*var->df*var->df*x*x*sqrt(res_fpip));
-
-/*   if(critical_test == 0.0) return 0.0; */
-/*   else */ return -(1/critical_test);
-}