正如我们所知,“不完全符合IEEE754,但速度更快”的做法是存在的。这是编译器可选的功能(与floating-point model
或floating-point behavior
相关的选项)。但是,IEEE 754的哪些要求是永远不能违反的?是否有任何附录描述这些方面(即“优化IEEE754实现可以走多远?”)。
发布于 2020-12-03 22:37:03
发布于 2020-12-03 23:04:53
正如我们所知,存在“不完全符合IEEE754,但速度更快”的做法。这是编译器可选的功能(与浮点模型或浮点行为相关的选项)。但是,IEEE 754的哪些要求是永远不能违反的?
这主要是为了讨论在“不完全”这个词不再合适之前,你能得到多少好处。如果你想从字面上理解,你可以只有一个符号位(符合IEEE 754),没有其他符号位(没有指数,没有意义),仍然说“不完全符合”,并且在技术上是正确的;但在这种情况下,大多数人会抱怨“不完全符合”的数量如此接近“不符合”,这是误导性的。
为了避免误导,“不完全兼容”更接近于“在实践中对大多数事情都足够兼容”,但这实际上取决于实现,应该这样解释(例如,可能应该理解为“阅读编译器手册”)。
请注意,通常“不完全兼容”实际上意味着它假装次法线为零,和/或信号NaNs不受支持,和/或精度高于其应有的精度(例如,80位浮点用于中间结果,导致比完全兼容时更准确的最终结果)。
此外,编译器通常会提供第三个更快(甚至更不兼容)的“快速数学”选项,并且在这种情况下不要使用“不完全兼容”一词。当这种情况发生时,“不完全符合”在“快速数学”和“完全符合”之间更有意义。
https://stackoverflow.com/questions/65127894
复制相似问题