Fix the Ord instance for FP and FloatingPoint #701
Merged
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 pull request fixes the Ord instance for FP and FloatingPoint. The operator
(>=)
and(<=)
will giveTrue
when comparingNaN
s.I originally thought that this comes from the underlying libBF library, as I've fixed a bug there yesterday. (GaloisInc/libBF-hs#32). However, after I switch to the fixed version, the bug is still there.
My theory for this bug in the sbv repo is that the instance derived by the compiler may look like this:
And the fix would be manually implementing the operators.