random: Fix γ-section implementation for Randomizer::getFloat() (#12402) The reference implementation of the "Drawing Random Floating-Point Numbers from an Interval" paper contains two m
random: Fix γ-section implementation for Randomizer::getFloat() (#12402) The reference implementation of the "Drawing Random Floating-Point Numbers from an Interval" paper contains two mistakes that will result in erroneous values being returned under certain circumstances: - For large values of `g` the multiplication of `k * g` might overflow to infinity. - The value of `ceilint()` might exceed 2^53, possibly leading to a rounding error when promoting `k` to double within the multiplication of `k * g`. This commit updates the implementation based on Prof. Goualard suggestions after reaching out to him. It will correctly handle inputs larger than 2^-1020 in absolute values. This limitation will be documented and those inputs possibly be rejected in a follow-up commit depending on performance concerns.
show more ...
|