Although Microsoft blogs claim otherwise using std::isnan
in my code still does generate calls to c++ runtime instead of inlined ucomiss
.
Now I worked around that with x!=x
check(since perf matters to me in this piece of code), but that made me wonder... If x!=x
is a way to check for NaNess would that not be an easy way to implement std::isnan
?
But from what I know gcc/clang use intrinsics (and msvc is trying). Why would they bother if it can be efficiently implemented as a normal function?
So I am a bit confused since one of the answers on SO claims that it is the only way selfcomparison can return false.