gpt4 book ai didi

c++ - 使用 C++,有没有办法检测编译器/系统是否将 floats/doubles 非规范化为 "normalized"?

转载 作者:太空狗 更新时间:2023-10-29 20:36:23 28 4
gpt4 key购买 nike

直接说,我的问题正如标题中所述:在使用 C++ 编写的应用程序中,是否有一种方法可以检测编译器/系统是否正在“规范化” float / double 非正规化(例如通过 DAZ 、自贸区等)?

如果需要上下文,我想要完成的是通过编程方式检测最小浮点/ double 值。然而,这些结果取决于非规范化是否被“规范化”:如果是,则最小值由 std 的数字限制 min() 给出,否则由 denorm_min() 给出。

最佳答案

您应该简单地信任实现返回 the correct values for std::numeric_limits .如果 std::numeric_limits<float>::has_denorm is std::denorm_present ,那么您应该假设常规 C++ 运算符不会隐式规范化浮点值。

请注意,这是来自 std::numeric_limits<float>::has_iec559 的单独查询,它测试 IEC-559/IEEE-754 float 的使用。因此系统可以使用 IEEE-754 float ,但不支持非规范化 float 。因此,始终将非规范化 float 刷新为零的实现应该返回 std::denorm_absent。对于 has_denorm .

关于c++ - 使用 C++,有没有办法检测编译器/系统是否将 floats/doubles 非规范化为 "normalized"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38881222/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com