}
void lmm_print(lmm_system_t sys)
+
{
lmm_constraint_t cnst = NULL;
lmm_element_t elem = NULL;
}
DEBUG1("%s",trace_buf);
trace_buf[0]='\000';
- xbt_assert3((sum<=cnst->bound), "Incorrect value (%f is not smaller than %f): %g",
+ xbt_assert3(!double_positive(sum-cnst->bound), "Incorrect value (%f is not smaller than %f): %g",
sum,cnst->bound,sum-cnst->bound);
}
xbt_swag_foreach(var, var_list) {
if(var->bound>0) {
DEBUG4("'%p'(%f) : %f (<=%f)",var,var->weight,var->value, var->bound);
- xbt_assert0((var->value<=var->bound), "Incorrect value");
+ xbt_assert0(!double_positive(var->value-var->bound), "Incorrect value");
}
else
DEBUG3("'%p'(%f) : %f",var,var->weight,var->value);
*/
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;
+/* if(x == 0) x = 10e-8; */
return var->df/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;
+/* if(x == 0) x = 10e-8; */
return var->df/x;
}
*/
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;
+/* 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.");
+ xbt_assert0(var->df>0.0,"Don't call me with stupid values!");
// \sqrt{3/2} = 0.8164965808
return (0.8164965808 / var->df) * atan( (0.8164965808 / var->df)*x );
}
*/
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);
+ xbt_assert0(var->df>0.0,"Don't call me with stupid values!");
+ xbt_assert0(x>0.0,"Don't call me with stupid values!");
- //avoid a disaster value of res_fpi
- if(res_fpi < 0.0) return 0.0;
- else return sqrt(res_fpi);
+ res_fpi = 1/(var->df*var->df*x) - 2/(3*var->df*var->df);
+ if(res_fpi<=0.0) return 0.0;
+ xbt_assert0(res_fpi>0.0,"Don't call me with stupid values!");
+ return sqrt(res_fpi);
}
/*
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;
+ xbt_assert0(var->df>0.0,"Don't call me with stupid values!");
+ xbt_assert0(x>0.0,"Don't call me with stupid values!");
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
+ xbt_assert0(res_fpip>0.0,"Don't call me with stupid values!");
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);
+ return -(1.0/critical_test);
}