直截了当地说,我的问题正如标题中所述:在使用C++编写的应用程序中,有没有一种方法可以检测到浮点数/双精度反范式是否被编译器/系统“规范化”(例如,槽DAZ、FTZ等)?
如果需要上下文,我要做的就是通过编程来检测最小的浮点数/双精度值。然而,这些结果取决于非正规是否被“规范化”:如果是,最小值由std的数值限制min()给出,否则由denorm_min()给出。
发布于 2016-08-11 02:53:29
您只需信任该实现即可返回the correct values for std::numeric_limits。如果为std::numeric_limits::has_denorm is std::denorm_present,则应假定常规C++运算符不会隐式规范化浮点值。
请注意,这是来自std::numeric_limits::has_iec559的单独查询,它测试IEC559/IEEE754浮点数的使用情况。因此,系统可以使用IEEE-754浮点数,但不支持非规范化浮点数。因此,总是将非正规化浮点数刷新为零的实现应该为has_denorm返回std::denorm_absent。
https://stackoverflow.com/questions/38881222
复制相似问题