floating-point - 哪些浮点运算会产生安静/信号 NaN?

标签 floating-point nan ieee-754

我正在逻辑模拟器中设计 FPU,我需要知道哪些操作会生成两种 NaN(安静:qNaN 和信号:sNaN)

编辑:我发现像 0*infinity 这样的算术运算总是生成 qNaN(来源:http://www.savrola.com/resources/NaN.html)。然而,我仍然不知道的是,除了将变量设置为 sNaN 的位模式之外,是否还有其他方法可以获得 sNaN。

最佳答案

我假设您对要模拟的任何浮点规范都有某种教科书或规范。在那里寻找定义。
对于更一般的内容,您可以阅读:http://en.wikipedia.org/wiki/NaN
以下是维基百科关于 sNaN 的说法:

Signaling NaN
Signaling NaNs, or sNaNs, are special forms of a NaN that when consumed by most operations should raise an invalid exception and then, if appropriate, be "quieted" into a qNaN that may then propagate. They were introduced in IEEE 754. There have been several ideas for how these might be used

  • Filling uninitialized memory with signaling NaNs would produce an invalid exception if the data is used before it is initialized
  • Using an sNaN as a placeholder for a more complicated object, such as:
    • A representation of a number that has underflowed
    • A representation of a number that has overflowed
    • Number in a higher precision format
    • A complex number

关于floating-point - 哪些浮点运算会产生安静/信号 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680322/

相关文章:

python - 为什么 <class 'numpy.float64' > 类型的 nan 返回 -9223372036854775808 作为 int64?

floating-point - 为什么 0.1f 的最后一个二进制位四舍五入为 1?

c - C 实现中的浮点零(IEEE 754 不变量?)

c - 互补误差函数 erfcf() 的矢量化实现

rust - "Safe"奇数大小对齐向量的 SIMD 算法?

java - 使用 Jackson 将 float 格式化为定点

在不损失精度的情况下将 unsigned 转换为 double 到 unsigned

javascript - Angular 告诉我 float 不是数字

lua - Lua中#QNAN和#IND有什么区别

javascript - 如果输入 val = NaN 则发出警报?