visual-c-std :: isfinite在MSVC上
C 11和C 11标准定义了
std::isfinite 功能. Visual Studio 2012似乎并没有提供它作为的一部分 cmath或math.h,但是有amp_math.h seems to provide this function. isd是否与std :: isfinite可互换?该 解决方法
正如Marius已经指出的那样,来自amp_math.h的isfinite将用于C AMP,它是与CUDA或OpenCL类似的多核架构上的并行计算的MS扩展.而且由于此功能只能用于实际的AMP限制功能(通常是GPU内核),因此对您而言并不常用.
不幸VS 2012不支持C11数学和浮点控制功能.但是,一旦你认识到你在VC上实现了特殊的代码,你可以使用< float.h>中的 VC的标准库有other such functions,因为缺乏C11 / C99支持(如_isnan等). (为什么他们拒绝在这些功能前面删除那个下划线,并在_controlfp周围放置一个简单的< cfenv>包装器,从而更接近完成C 11的支持是一个完全不同的问题.) 编辑:除此之外,检查INF和NaNs的直接方法也可能会起作用: template<typename T> bool isfinite(T arg) { return arg == arg && arg != std::numeric_limits<T>::infinity() && arg != -std::numeric_limits<T>::infinity(); } 但是,当然也有可能陷入信号NaN的同样的暗示(尽管我不得不承认,我不太熟悉信号NaNs和浮点异常的复杂性). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |