Anti-Harassment Tools/SecurePoll Improvements/Test Results/12 9 5000 1830523430

Comments
SecurePoll and OpenSTV disagree on elected candidates, due to differences in how we eliminate candidates and precision.

SecurePoll elects candidates 1, 2, 3, 4, 5, 6, 7, 8.

OpenSTV elects candidates 1, 2, 3, 4, 5, 6, 7, 8 and 9. Candidate 9 is partially elected at random. In round 43 candidates 9, 10, 11 and 12 are tied on equal votes, and 12 is eliminated at random. Only in round 49 does candidate 9 have more votes than the remaining candidates and so goes on to win a seat. If candidate 9 were eliminated in round 43, this wouldn't be the case.

Based on my own calculations using bc, in round 139 candidate 9 should have ~9.8609955E-17 votes transferred to them. This seems to be too small for PHP to handle in this case, and so candidate 9 is eliminated along with 10, 11 and 12 by SecurePoll.

Election setup

 * Candidates: 12
 * Seats: 9
 * Votes: 5000

Actual results latest
Output from SecurePoll : /actual

Output from SecurePoll : https://github.com/dominic998/SecurePoll-Test-Data/blob/main/test_data/12_9_5000_1830523430.blt.php

SecurePoll tally page: https://vote.wikimedia.beta.wmflabs.org/wiki/Special:SecurePoll/tally/1649

Actual results archive
/archive

Expected
Output from OpenSTV: /expected

Files

 * blt: https://github.com/dominic998/SecurePoll-Test-Data/blob/main/test_data/12_9_5000_1830523430.blt

Environment

 * Where you tested: local docker and beta
 * Latest version of SecurePoll tested: 3.0.0 (624ef32) 00:10, 28 September 2021.