As defined in IEEE-754 comparisons with NAN should always yield false, this works:
#define __STDC_WANT_DEC_FP__
#include <dfp754.h>
if (0.4dd > nand64("")) {
return 1;
}
return 0;
Now, __builtin_expect is to give advice to the compiler about the outcome of a boolean expression, it shouldn't change the code path at all, however it does:
#define __STDC_WANT_DEC_FP__
#include <dfp754.h>
if (__builtin_expect(0.4dd > nand64(""), 0)) {
return 1;
}
return 0;
This snippet compiled with icc (ICC) 17.0.4 20170411 will now return 1.