gpt4 book ai didi

c++ - 用于测试目的 : which floating point (IEEE754 32b) numbers are "special"?

转载 作者:搜寻专家 更新时间:2023-10-31 01:25:16 24 4
gpt4 key购买 nike

我打算测试跨平台 SIMD library更详细。

作为其中的一部分,我想确保我测试了很多 float 的极端情况以获得一致的行为。

我只能想出几个,比如

  • 零和负零,
  • 正负无穷大,
  • NaN 的多个版本,
  • 非规范化数字

现在,尤其是最后两点让我头疼:我什至不确定我是否理解使 (32b) 浮点为 NaN 的二进制表示,更不用说不同类型之间的区别(似乎有三种这些,安静的,信号和“普通”NaN,但我真的不确定他们是否有自己的代表)。

此外,非规范化数字的指数全为零,尾数非零。

有没有办法以编程方式生成所有这些特殊数字(好的,+zero 很简单,只需将 32 位 0-int 解释为 float )?我正在研究 C(99) 和 C++(11) 库,所以任何一个都可以。

最佳答案

which floating point (IEEE754 32b) numbers are "special"?

  • zero and negative zero,
  • the positive and negative infinites,
  • multiple versions of NaN,
  • denormalized numbers

差不多就是这样,尽管没有“普通”的 nan。其他可能对测试很重要的数字:无法准确表示所有连续整数的值范围。将产生特殊值的值对。最小(正常)和最大正可表示值。

Is there a way of programmatically generating all these special numbers

有些很容易用 std::numeric_limits 生成。它有安静的nan、信号nan、无穷大、最小正态和非正态的成员函数。

可以使用 uint32_t 生成其他(例如具有任意负载的 nan),其位掩码符合 IEEE 规范,可以在浮点上进行 memcpy。请注意,可能存在模糊系统,其中整数和 float 的字节顺序不同,在这种情况下,位掩码将不是人们所期望的。

关于c++ - 用于测试目的 : which floating point (IEEE754 32b) numbers are "special"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125108/

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