han*_*nes 6 c c++ numerical cuda
在CUDA程序中,我最近从使用的测试转换为无限性
return x==INFINITY || x==-INFINITY;
Run Code Online (Sandbox Code Playgroud)
其中INFINITY
是从math.h中,至
return !isfinite(x);
Run Code Online (Sandbox Code Playgroud)
得到不同的结果,我感到非常惊讶.gnu.org建议他们实际应该表现得相似.我错过了什么吗?是不允许INFINITY
在CUDA内核中使用?
编辑:
我刚发现isinf
并注意到使用检查
return isinf(x);
Run Code Online (Sandbox Code Playgroud)
给出与INFINITY检查相同的结果.为什么不
isfinite(x)==!isinf(x)
呢?
isfinite(a)
是一样的!isnan(a) && !isinf(a)
.如果x
为NaN,那么这两个isfinite(x)
和isinf(x)
是假的.