给出两个浮点数x和y,假设所有浮点运算符合IEEE754标准,并且某个实现平方根函数sqrt(),
设a,b是两个(精确的)实数,并且x = op(a),y = op(b),其中op()表示将实数四舍五入到其浮点表示。然后是以下问题:(*表示浮点乘法)
如果对上述部分或全部内容,答案为否,则
答案 0 :(得分:3)
IEEE 754要求符合规范的实现提供平方根和操作,以便从正确舍入的十进制转换为浮点数:
除下述规定外,本标准的所有符合要求的实施应为所有支持的算术格式提供本节中列出的操作。返回由此标准指定的数值结果的每个计算操作都应该执行,就好像它首先产生一个正确到无限精度和无界范围的中间结果,然后根据需要舍入该中间结果以适合目标的格式...
舍入模式最常用于舍入到最接近的可表示值。在平局的情况下,它使用偶数低位舍入到该值。该轮的一个变种与零相关。
关于问题1,假设x
< y
但sqrt(x)
> sqrt(y)
。由于平方根是单调的,因此sqrt(x)
必须更接近y
的数学平方根而不是sqrt(y)
或sqrt(y)
必须更接近{的数学平方根{1}}比x
更高。所以这会违反舍入规则。
其他舍入规则在特定方向上舍入到最接近的数字,朝向+无穷大,朝向-infinity或朝向零。无效的sqrt(x)
结果也会违反这些舍入规则。
请注意,许多平台将声称使用IEEE 754格式,但这并不意味着它们符合IEEE 754操作规则,包括平方根和从十进制到浮点的转换。
问题2是相同的。
问题3保持相同的推理(应用两次:sqrt
弱单调,op
弱单调)受 a 和 b的限制是非负数(或者数量很小,sqrt
[或x
]为零,即使 a [或 b 由于转换过程中的舍入,因此是负数)。否则,您可以 a < b ,但y
不成立,因为sqrt(x) <= sqrt(y)
是NaN,不小于或等于任何东西。
问题4成立,现在应用了三次弱单调性。