Fix failed build with compile flag: -Werror=float-equal (#741)#770
Open
artem-sharipov wants to merge 1 commit intoThrowTheSwitch:masterfrom
Open
Fix failed build with compile flag: -Werror=float-equal (#741)#770artem-sharipov wants to merge 1 commit intoThrowTheSwitch:masterfrom
artem-sharipov wants to merge 1 commit intoThrowTheSwitch:masterfrom
Conversation
df803c8 to
8c26b85
Compare
Author
|
The force push only for verified signature of commit. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 is the fix for issue #741.
Briefly, compilation with the
-Werror=float-equalflag failed.The cause of the errors was the direct comparison of a floating-point number to another number in three places in the source, two of which are listed in the issue #741. The third error location is the implementation of the number check for NaN -
UNITY_IS_NAN(n). In fact, a check of the formn != nallows us to determine whether a numbernis a NaN when there is no way to useisnan(). In this case, a direct comparison of a floating-point number is acceptable because the number is being compared to itself, but the compiler flag does not make an exception in this case, so the implementation of the NaN check has been changed.Elsewhere in the code, the value
epsilonwas introduced to solve the problem.epsilonis the error by which one number can be equal to another number. This error occurs because of the finite precision of the computer system's representation of real numbers. For this reason, floating point numbers cannot be directly compared using the==and!=operators. The numericalepsiloncorresponds to the precision of the representation of floating point numbers, which is determined by the data type (floatordouble).The presence of the problem was verified as follows:
examples/example_1/makefileI added the lineCFLAGS += -Werror=float-equal;examples/example_1/;-Werror=float-equalcompiler flag, please fix it. #741.After making the changes to the code, I repeated step 2 and checked that there were no more build errors.