*sigma_result = sigma;
}
-static void compute_new_rating(double mu1, double sigma1, double mu2, double sigma2, int score1, int score2, double *mu, double *sigma, double *probability)
+void compute_new_rating(double mu1, double sigma1, double mu2, double sigma2, int score1, int score2, double *mu, double *sigma, double *probability)
{
vector<pair<double, double> > curve;
--- /dev/null
+%module foosrank
+%{
+void fftw_import_wisdom_from_file(FILE*);
+void compute_new_rating(double mu1, double sigma1, double mu2, double sigma2, int score1, int score2, double *mu, double *sigma, double *probability);
+void startup() {
+ FILE *fp = fopen("fftw-wisdom", "rb");
+ if (fp != NULL) {
+ fftw_import_wisdom_from_file(fp);
+ fclose(fp);
+ }
+}
+%}
+%perlcode %{
+ sub import {
+ startup();
+ }
+%}
+
+//extern void import();
+extern void compute_new_rating(double, double, double, double, int, int, double *OUTPUT, double *OUTPUT, double *OUTPUT);
use CGI;
use CGI::Carp qw(fatalsToBrowser);
require 'foosball.pm';
+use foosrank;
no warnings 'once';
my $dryrun = 0;
$rd1 = foosball::apply_aging($rd1, $age1 / 86400.0);
$rd2 = foosball::apply_aging($rd2, $age2 / 86400.0);
- my ($newr1, $newrd1, $likelihood) = foosball::calc_rating($rating1, $rd1, $rating2, $rd2, $score1, $score2);
- my ($newr2, $newrd2) = foosball::calc_rating($rating2, $rd2, $rating1, $rd1, $score2, $score1);
+ my ($newr1, $newrd1, $likelihood) = foosrank::compute_new_rating($rating1, $rd1, $rating2, $rd2, $score1, $score2);
+ my ($newr2, $newrd2) = foosrank::compute_new_rating($rating2, $rd2, $rating1, $rd1, $score2, $score1);
$cll += log($likelihood);