浮点IEEE保证

时间:2017-07-27 12:24:42

标签: floating-point standards operations ieee

我想知道,对于以下情况,如果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外)

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

1 个答案:

答案 0 :(得分:6)

  1. 交换性:+*是有保证的,除非两个参数都是NaN-/不是可交换的,按0.0划分,根据分子给您+Inf-InfNaN。在这里,我没有考虑签名的零

  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-InfNaN,在这种情况下为NaN {1}}。

  7. 注意(5)的细微差别。