[英]Largest representable negative floating-point number
什么是与平台无关的指定最大可表示负浮点数的方法?
我们在PS3的SPU上运行时发现了一个破解的算法,但在为PPU编译时工作正常:
float x = -FLT_MAX;
/* stuff */
if (x > 0.0f) {
// If x is unchanged, code is executed on SPU
}
从本质上讲,是否有明确定义的负面等效FLT_MAX
?
你想要std::numeric_limits::lowest()
,但它只是c ++ 0x,所以目前不是非常跨平台。
你肯定不希望std::numeric_limits::min()
- 这是最小的量级,而不是最远的负数。
如果您想要的东西总是小于所有其他双打,请使用-numeric_limits<double>::infinity()
。
不知道/ * stuff * /中的内容,我认为你的问题不能完全解决。
这里有关于浮点计算固有问题的一组很好的幻灯片: http : //realtimecollisiondetection.net/pubs/GDC07_Ericson_Physics_Tutorial_Numerical_Robustness.ppt - 对于你的问题来源,你可能会有一些提示。
SPU上的IEEE 754单精度浮点与PPU上的不一样 - 在http://cell.scei.co.jp/e_download.html提供的SPU ISA文档的第9章中有完整的解释。还包括单精度浮点数的最大幅度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.