Floating point IEEE浮点算法提供了哪些约束?
在以下断言(对于兼容实现)中,哪些断言是有保证的,哪些不是Floating point IEEE浮点算法提供了哪些约束?,floating-point,standards,ieee-754,Floating Point,Standards,Ieee 754,在以下断言(对于兼容实现)中,哪些断言是有保证的,哪些不是 a+b是有限的==>a+b=b+a a*b是有限的==>a*b=b*a a是有限的==>a=-a a是有限的==>a-a=0 a是有限的==>0*a=0 a-b=0==>a=b a=b==>a-b=0 a=b,c+a是有限的==>c+a=c+b a> b==>a-b>0 a-b>0==>a>b (请编辑此问题,使列表涵盖更多内容并具有有机的外观。)无穷大上的算术确实遵循明确的规则,因此我将此问题概括为包含无限大的情况。我假设您使用=表示
(请编辑此问题,使列表涵盖更多内容并具有有机的外观。)无穷大上的算术确实遵循明确的规则,因此我将此问题概括为包含无限大的情况。我假设您使用
=
表示IEEE浮点算法中的比较结果,因此NaN=NaN
为false
a+b=b+a
如果输入都是有限数或具有相同符号的无穷大,则为True。如果其中一个是NaN,或者它们是相反符号的无穷大,则为False,因为它们的和将是NaNa*b=b*a
除非其中一个输入为NaN,或输入为0和无穷大,否则为True。同样,这些案例使结果成为一个不确定因素a=-a
True,除非a
是NaNa-a=0
为True,除非a
为NaN或无穷大0*a=0
为True,除非a
为NaN或无穷大a-b=0==>a=b
Truea-b
等于某物时,排除输入为NaN或等号无穷大的情况,在这种情况下,a-b
将为NaN。在这种情况下,=
的解释很重要。如果输入是相反的符号零,它们的差值也是零,并且它们在浮点算术规则下比较相等a=b==>a-b=0
True,除非它们是相同的无穷大。在这种情况下,他们比较相等,但他们的差异是一个NaNa=b
表示两个输入都不是NaNa=b==>c+a=c+b
如果c
是一个NaN,或者输入都是无限的,并且c
与a
和b
具有相反的符号,则a=b=/code>为False。在所有其他情况下都是如此a=b
表示两者都不是NaN
a>b==>a-b>0
True<代码>a>b表示两个输入都不是NaNa-b>0==>a>b
True<代码>a-b>0表示两个输入都不是NaN“=”是指“位相同”(如果你想在C或C++编译器中应用这些转换,提供严格的IEEE-75绑定),或者你是指IEEE-74定义的“相等”谓词(例如,0和0比较为“相等”),一个NANN和其他任何比较不“相等”的谓词。?请编辑以回答@njuffa的问题?就目前而言,这个问题太模糊,无法回答。(例如,在7中,如果<代码> < < /代码>和<代码> b>代码>是按位相同的浮点,则以舍入负无穷舍入模式,<代码> A -B < /代码>将为负零。从该问题中不清楚是否认为“代码> A -B=0 < /COD>在这种情况下得到满足。”我想这里有用的问题不是每个
==>
符号的RHS上的两个表达式在某种语言提供的比较操作中是否相等,而是它们在一段代码中是否可以互换。为此,你可能会认为任何两个NANS可以互相交换(很少有人真正关心NANG符号或有效载荷),但是你不想考虑<代码> 0 和<代码> -0 < /C> >是可互换的。