X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=foosrank.cpp;fp=foosrank.cpp;h=4b44706fe67fd77bcacadbfbe4093281a4c734b8;hb=6de5990c86e41173169db2dd974ff0332b9d0ee6;hp=374bc13a1067fb924f06d6b810aaccffe062feec;hpb=4be9512cbccded915f224620c6e43dc6e1be53fd;p=foosball diff --git a/foosrank.cpp b/foosrank.cpp index 374bc13..4b44706 100644 --- a/foosrank.cpp +++ b/foosrank.cpp @@ -122,9 +122,10 @@ static void compute_opponent_rating_pdf(int k, int a, double mu2, double sigma2, func1[i].real() = func1[i].imag() = func2[i].real() = func2[i].imag() = 0.0; } + double invsigma2 = 1.0 / sigma2; for (int i = 0; i < sz; ++i) { double x1 = 0.0 + h*i; - double z = (x1 - mu2)/sigma2; + double z = (x1 - mu2) * invsigma2; func1[i].real() = exp(-(z*z/2.0)); double x2 = -3000.0 + h*i; @@ -372,11 +373,12 @@ static void compute_new_double_rating(double mu1, double sigma1, double mu2, dou double r1 = i * h; // iterate over r2 + double invsigma2 = 1.0 / sigma2; for (unsigned j = 0; j < curve.size(); ++j) { double r1plusr2 = curve[j].first; double r2 = r1plusr2 - r1; - double z = (r2 - mu2) / sigma2; + double z = (r2 - mu2) * invsigma2; double gaussian = exp(-(z*z/2.0)); sum += curve[j].second * gaussian; }