IEEE浮点运算提供了哪些约束?

时间:2016-12-13 04:59:09

标签: floating-point standards ieee-754

在以下断言中,(对于符合要求的实现)哪些是保证的,哪些不是?

  1. a + b是有限的==> A + B = B + A
  2. a * b是有限的==> A * B = B * A
  3. a is finite ==> A = - ( - A)
  4. a is finite ==> A-A = 0
  5. a is finite ==> 0 * A = 0
  6. a-b = 0 ==> A = B
  7. a = b ==> A-B = 0
  8. a = b且c + a是有限的==> C + A = C + B
  9. a> b ==> A-B大于0
  10. a-b> 0 ==>一个&GT,B
  11. (请编辑此问题并使列表更加清晰,并且看起来很有用。)

1 个答案:

答案 0 :(得分:5)

关于无穷大的算法确实遵循明确的规则,所以我将这个问题概括为包括无限的情况。我假设您使用=表示IEEE浮点运算中的比较结果,因此NaN=NaN为假。

  1. a+b=b+a 如果输入都是有限数字,或者具有相同符号的无穷大,则为真。如果其中一个是NaN,或者它们是相反符号的无穷大,则为假,因为它们的总和将是NaN。

  2. a*b=b*a 除非其中一个输入是NaN,或者它们是0且无穷大,否则为真。同样,这些案例使结果成为NaN。

  3. a=-(-a)除非a是NaN,否则为真。

  4. a-a=0除非a是NaN或无穷大,否则为真。

  5. 0*a=0除非a是NaN或无穷大,否则为真。

  6. a-b=0 ==> a=b是的。 a-b等于某种东西,不包括输入为NaN,或者它们是等号的无穷大,a-b将是NaN的情况。这是=的解释很重要的情况。如果输入符号为零,则它们的差值也为零,并且它们在浮点算术规则下比较相等。

  7. a=b ==> a-b=0除非它们是无限的,否则为真。在这种情况下,他们比较相等,但他们的差异是NaN。 a=b表示输入都不是NaN。

  8. a=b ==> c+a=c+b如果c是NaN,或输入全部为无限且cab的符号相反,则为假。在所有其他情况下都是如此a=b表示它们都不是NaN。

  9. a>b ==> a-b>0是的。 a>b表示输入都不是NaN。

  10. a-b>0 ==> a>b是的。 a-b>0表示输入都不是NaN。