]> git.sesse.net Git - narabu/commitdiff
Fix some voting problems in the tally shader.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 16 Oct 2017 19:43:24 +0000 (21:43 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 16 Oct 2017 19:44:23 +0000 (21:44 +0200)
coded.dat
tally.shader

index bb889f2769d257268d1a9143699e2b0a13d95f05..a81138917ee68b42279ee1b4130f012bcade8d81 100644 (file)
Binary files a/coded.dat and b/coded.dat differ
index 1623a1dd06e845af873ba62adcdaa177ffe87c4e..0d6d09ec70bd7d562313fabe98bdf6008d5ab366 100644 (file)
@@ -73,7 +73,7 @@ void main()
 
        // Apply corrections one by one, greedily, until we are at the exact right sum.
        if (actual_sum > prob_scale) {
-               float loss = -true_prob * log2(new_val / (new_val - 1));
+               float loss = true_prob * log2(new_val / float(new_val - 1));
 
                voting_areas[i] = 0xffffffff;
                memoryBarrierShared();
@@ -101,11 +101,11 @@ void main()
 
                        if (my_vote == voting_areas[vote_no]) {
                                --new_val;
-                               loss = -true_prob * log2(new_val / (new_val - 1));
+                               loss = true_prob * log2(new_val / float(new_val - 1));
                        }
                }
        } else {
-               float benefit = true_prob * log2(new_val / (new_val + 1));
+               float benefit = -true_prob * log2(new_val / float(new_val + 1));
 
                voting_areas[i] = 0;
                memoryBarrierShared();
@@ -130,7 +130,7 @@ void main()
 
                        if (my_vote == voting_areas[vote_no]) {
                                ++new_val;
-                               benefit = true_prob * log2(new_val / (new_val + 1));
+                               benefit = -true_prob * log2(new_val / float(new_val + 1));
                        }
                }
        }