浮点IEEE保证

Zer*_*30o 1 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)

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

Bat*_*eba 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)的细微差别.