把友情*_*在无盐 2 floating-point standards ieee-754
在以下断言中,(对于符合要求的实现)哪些是保证的,哪些不是?
(请编辑此问题并使列表覆盖更多并具有有机外观.)
关于无穷大的算法确实遵循明确的规则,所以我将这个问题概括为包括无限的情况.我假设您使用=
的是IEEE浮点运算中的比较结果,因此NaN=NaN
是错误的.
a+b=b+a
如果输入都是有限数字,或者具有相同符号的无穷大,则为真.如果其中一个是NaN,或者它们是相反符号的无穷大,则为假,因为它们的总和将是NaN.
a*b=b*a
除非其中一个输入是NaN,或者它们是0且无穷大,否则为真.同样,这些案例使结果成为NaN.
a=-(-a)
除非a
是NaN,否则为真.
a-a=0
除非a
是NaN或无穷大,否则为真.
0*a=0
除非a
是NaN或无穷大,否则为真.
a-b=0 ==> a=b
真正.a-b
等于某种东西不包括输入是NaN或者它们是等号的无穷大,其中的情况a-b
是NaN.这是一个解释=
事情的案例.如果输入符号为零,则它们的差值也为零,并且它们在浮点算术规则下比较相等.
a=b ==> a-b=0
除非它们是相同的无穷大,否则为真.在这种情况下,他们比较相等,但他们的差异是NaN.a=b
暗示输入都不是NaN.
a=b ==> c+a=c+b
假如果c
是NaN,或输入是所有无限的,并且c
具有从相反的符号a
和b
.在所有其他情况下都是如此 a=b
暗示它们都不是NaN.
a>b ==> a-b>0
真正.a>b
暗示输入都不是NaN.
a-b>0 ==> a>b
真正.a-b>0
暗示输入都不是NaN.