最近我对IEEE754标准下溢的定义感到困惑。我们知道,如果一个实现不支持次正规数,那么可以表示的最小数是 MinNorm = 1.0 * 2^-126。对于任何操作,如果其结果小于 MinNorm,将被视为下溢。但是如果一个实现支持次正规数,那么可以表示的最小数是 MinSubnorm = 1.0 * 2^-149。现在的问题是:如果运算的结果小于 MinNorm,它是否是下溢?小于 MinSubnorm 怎么样?
现在我正在实现一个支持次正常数的 FPU。我们假设舍入前的结果严格在 -MinNorm 和 +MinNorm 之间,并且在舍入后也会小于 MinNorm(可以用次正规数表示)。我会认为它是什么?下溢还是非下溢?如果我需要设置下溢的状态位?
我在网上找到了一些信息,但意见分歧如下:
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/underflow.html 当您执行的操作小于最小非零数时,就会发生下溢。在 IEEE 754 单精度中,这意味着一个值(即绝对值)小于 1.0 x 2-149。
http://en.wikipedia.org/wiki/Arithmetic_underflow 当浮点运算的真实结果在幅度上小于可表示为正常浮点数的最小值时(即接近零),可能会发生算术下溢。目标数据类型