Miri: handling of SNaN inputs in f*::pow
operations
#142514
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.
fixes miri/#4286 and related to #138062 and miri/#4208.
For the following cases of the powf or powi operations, Miri returns either
1.0
or an arbitraryNaN
:powf(SNaN, 0.0)
powf(1.0, SNaN)
powi(SNaN, 0)
Also added a macro in
miri/tests/pass/float.rs
which conveniently checks if both are indeed returned from such an operation.Made these changes in the rust repo so I could test against stdlib, since these were impacted some time ago and were fixed in #138062. Tested with:
This was successful. This does take a while, so I recommend using
--no-doc
and separate use off32
orf64
The pr is somewhat split up into 3 main commits, which implement the cases described above. The first commit also introduces the macro, and the last commit is just a global refactor of some things.
r? @RalfJung