From c2c36bb9b8f9f004079e2eb3064ccd25191ada87 Mon Sep 17 00:00:00 2001 From: alegrand Date: Thu, 19 Jul 2007 13:01:10 +0000 Subject: [PATCH] moving lagrange functions for Vegas and Reno to their right location git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3871 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/surf/lagrange.c | 90 +++++++++++++++++++++++++++++++++++++++++++++ src/surf/maxmin.c | 88 -------------------------------------------- 2 files changed, 90 insertions(+), 88 deletions(-) diff --git a/src/surf/lagrange.c b/src/surf/lagrange.c index cfabb336ee..34a0df7c7e 100644 --- a/src/surf/lagrange.c +++ b/src/surf/lagrange.c @@ -465,3 +465,93 @@ double diff_aux(lmm_variable_t var, double x) XBT_OUT; return result; } + + +/**************** Vegas and Reno functions *************************/ +/* + * 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>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 ); +} + +/* + * 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>0.0,"Don't call me with stupid values!"); + xbt_assert0(x>0.0,"Don't call me with stupid values!"); + + 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); +} + +/* + * 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>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); + 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)); + + return -(1.0/critical_test); +} diff --git a/src/surf/maxmin.c b/src/surf/maxmin.c index b91599c244..eb9ff1ec96 100644 --- a/src/surf/maxmin.c +++ b/src/surf/maxmin.c @@ -647,91 +647,3 @@ void lmm_set_default_protocol_functions(double (* func_f) (lmm_variable_t var 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>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 ); -} - -/* - * 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>0.0,"Don't call me with stupid values!"); - xbt_assert0(x>0.0,"Don't call me with stupid values!"); - - 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); -} - -/* - * 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>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); - 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)); - - return -(1.0/critical_test); -} -- 2.20.1