liquid_feedback_core

changeset 370:794974af6d6d

Bugfix in "lf_update_suggestion_order" related to floating point error workaround
author jbe
date Sun Mar 17 16:15:28 2013 +0100 (2013-03-17)
parents cad83f274b79
children 8344753f2ac1
files lf_update_suggestion_order.c
line diff
     1.1 --- a/lf_update_suggestion_order.c	Sun Mar 17 16:06:16 2013 +0100
     1.2 +++ b/lf_update_suggestion_order.c	Sun Mar 17 16:15:28 2013 +0100
     1.3 @@ -33,7 +33,6 @@
     1.4  struct candidate {
     1.5    char *key;
     1.6    double score_per_step;
     1.7 -  int reaches_score;
     1.8    double score;
     1.9    int seat;
    1.10  };
    1.11 @@ -95,7 +94,6 @@
    1.12      if (remaining <= 1) break;
    1.13      for (i=0; i<candidate_count; i++) {
    1.14        candidates[i].score_per_step = 0.0;
    1.15 -      candidates[i].reaches_score = 0;
    1.16      }
    1.17      for (i=0; i<ballot_count; i++) {
    1.18        for (j=0; j<4; j++) {
    1.19 @@ -126,13 +124,14 @@
    1.20          max_scale = (1.0-candidates[i].score) / candidates[i].score_per_step;
    1.21          if (scale == 0.0 || max_scale <= scale) {
    1.22            scale = max_scale;
    1.23 -          candidates[i].reaches_score = 1;
    1.24          }
    1.25        }
    1.26      }
    1.27      for (i=0; i<candidate_count; i++) {
    1.28        if (candidates[i].score_per_step > 0.0) {
    1.29 -        if (candidates[i].reaches_score) {
    1.30 +        double max_scale;
    1.31 +        max_scale = (1.0-candidates[i].score) / candidates[i].score_per_step;
    1.32 +        if (max_scale == scale) {
    1.33            candidates[i].score = 1.0;
    1.34            remaining--;
    1.35          } else {

Impressum / About Us