1

我想知道,对于以下情况,IEEE 标准是否保证使用符合标准的任何 cpu 的所有可能情况(不包括 NaN 和无穷大):

  • 交换性:x # y = y # x
  • 关联性: (x # y) # z = x # (y # z)
  • x - x = 0(x - x == 0.0f 总是返回 true 吗?)
  • x * 0 = 0(x * 0.0f == 0.0f 总是返回 true 吗?)
  • x * 1 = x(x * 1.0f == x 总是返回 true 吗?)
  • x / x = 1.0f (x / x == 1.0f 是否总是返回 true?当然 x = 0 除外)

(# 表示所有操作:+ - * /)

4

1 回答 1

6
  1. 交换性:+并且*是保证的,除非任何一个参数是NaN. -并且/不是可交换的,除以0.0给你+Inf, -Inf, 或NaN根据分子。在这里,我不考虑有符号零

  2. 关联性。绝对不。两个小数加上一个大数就是一个反例。

  3. x - x0除非xNaN, +Inf, 或-Inf在这种情况下是NaN.

  4. x * 00除非xNaN, +Inf, 或-Inf在这种情况下是NaN.

  5. x * 1x除非xNaN在这种情况下 是NaN

  6. x / x1除非 x 是0.0, +Inf, -Inf, 或者NaN在这种情况下它是NaN.

注意 (5) 的细微差别。

于 2017-07-27T12:30:24.020 回答