-
Notifications
You must be signed in to change notification settings - Fork 224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Argument checks incorrect because of nan
.
#1010
Comments
The issue with assertions is that they are debug only, once the program is built with -D_NDEBUG=1 they disappear.
True, however it is common for programs to be compiled with options (often the default for release builds) where the NaN's are assumed to simply not exist and these assumptions no longer hold. Besides which |
Yes that's much better. That's what I used in #1003.
That's true. They also don't print out the values of the things being compared. What's really needed IMO, are macros with the following properties:
So, essentially Boost Test macros, but for runtime use. |
When checking input arguments, it's common to want
min <= max
. If this statement is not true, the program needs to error. One way to make sure the statement is true is to assert that it is true. E.g., with:BOOST_MATH_ASSERT(min <= max);
A common way of checking the assertion that
min <= max
in the Boost codebase is to use the construction:The first approach has three advantages over the second approach:
nan
. E.g.,gives
x0 = nan
, even though the lower bound isinf
.NOTE:
The six comparison operators are:
==
,<
,<=
,>
,>=
, and!=
. For all comparison operators besides!=
, if one or both of the arguments arenan
, the result isfalse
according to the IEEE standard.The text was updated successfully, but these errors were encountered: