Prevent VM_rint outputting negative zero #226
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As the name suggests,
VM_rint
rounding to an int should output a value that can actually be represented by an int, which negative zero can't.Previously values from -0.5 to 0.0, including +0, -0, and not -0.5, would round to -0. This meant rounding a value known to be non-negative could output negative zero. This function now outputs +0 for the aforementioned values.
If for whatever reason it's actually intentional that it can sometimes output -0, I'd suggest changing the diff to be just the following (below), so that at least
VM_rint(0.0) == 0.0
, rather thanVM_rint(0.0) == -0.0
. It'd then be functionally identical to C'sround
function as far as I can tell.Haven't tested the code, unable to, reviewer please do so.