什么是平台无关的方法来指定最大的负浮点数?
我们发现了一个在PS3的SPU上运行时崩溃的算法,但是在为PPU编译时运行得很好:
float x = -FLT_MAX;
/* stuff */
if (x > 0.0f) {
// If x is unchanged, code is executed on SPU
}本质上,是否有一个定义良好的FLT_MAX的负等价物?
发布于 2010-09-03 23:26:31
在不知道/*内容*/的情况下,我认为您的问题无法在这里完全解决。
这里有一组关于浮点计算中固有问题的幻灯片:http://realtimecollisiondetection.net/pubs/GDC07_Ericson_Physics_Tutorial_Numerical_Robustness.ppt --可能会给您一些提示,说明问题的来源。
IEEE754单精度浮点在SPU上与在PPU上不同--在http://cell.scei.co.jp/e_download.html提供的SPU文档第9章中有一个完整的解释,其中还包括单个精确浮点数的最大幅度。
发布于 2010-09-03 06:07:09
您想要std::numeric_limits::lowest(),但它只是c++0x,所以目前还不太跨平台。
你绝对不想要std::numeric_limits::min() --这是最小的震级,而不是最远的负值。
如果您想要的东西总是少于所有其他双倍,请使用-numeric_limits<double>::infinity()。
https://stackoverflow.com/questions/3633284
复制相似问题