Safe Haskell | Safe |
---|---|

Language | Haskell2010 |

## Synopsis

- largestRemainder :: RealFrac a => [a] -> [Int]
- largestRemainderScaled :: RealFrac a => Int -> [a] -> [Int]
- highestAveragesScaled :: RealFrac a => [a] -> Int -> [a] -> [Int]
- dHondtDivisors :: Num a => [a]
- sainteLagueDivisors :: Num a => [a]

# Documentation

largestRemainder :: RealFrac a => [a] -> [Int] Source #

This function rounds values such that the sum of the rounded values matches the rounded sum of the original values.

Also known as Hare-Niemeyer method. https://en.wikipedia.org/wiki/Largest_remainder_method

Input values must be non-negative, otherwise `properFraction`

bites us.

largestRemainderScaled :: RealFrac a => Int -> [a] -> [Int] Source #

`largestRemainderScaled s xs`

scales and rounds the values in `xs`

such that their sum becomes `s`

.

E.g. `largestRemainderScaled 100 [1,2,3]`

returns integral percentages proportional to 1:2:3.

highestAveragesScaled :: RealFrac a => [a] -> Int -> [a] -> [Int] Source #

https://en.wikipedia.org/wiki/Highest_averages_method

In `highestAveragesScaled divs s xs`

,
`divs`

must be an infinite list of strictly increasing positive numbers.
E.g. `highestAveragesScaled dHondtDivisors s xs`

runs the d'Hondt method.

dHondtDivisors :: Num a => [a] Source #

sainteLagueDivisors :: Num a => [a] Source #