Fix undefined behavior caused by a domain error on an sqrt call. #123
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.
This PR is a follow-up of #121.
Issue:
A call on
sqrt
on a negative number caused it to return a-nan
, and then it was casted to an integer, triggering undefined behavior.Test Case:
https://user-images.githubusercontent.com/3461126/225024410-286b1073-7d19-41b9-8c26-7641abe72579.svg
Fix:
The sqrt call is only performed on zero or positive values.
@sammycage Thanks for pointing out that I had forgotten to initialize
result
with a default value in case we must skip the computation. If zero is checked without a threshold, we can introduce defects into the generated image (using my test case). That is why I addedfabs(det) < DBL_EPSILON ? 0.0
.Best regards,
Manuel.