如何解决理解 IEEE 754:为什么下溢取决于 Inexact?
注意:了解 IEEE 754。请耐心等待。
IEEE 754-2008(强调):
此外,在下溢的默认异常处理下,如果舍入结果不精确——也就是说,它不同于指数范围和精度无界时的计算结果——下溢标志将被引发并且不精确(见7.6) 应发出异常信号。 如果舍入结果是精确的,则不会引发标志并且不会发出不精确的异常信号。这是此标准中唯一一种异常信号接收默认处理但不引发相应标志的情况。这种下溢信号在默认处理下没有可观察到的影响。
据我所知:underflow == inexact && tiny
。
简单的问题:为什么 Underflow
依赖于 Inexact
?
即为什么如果产生完全次正规,则不会引发 Underflow
异常?这种行为的动机/理由是什么?
解决方法
异常通常表示无法提供理想的数学结果,并且它们会将问题的性质告知程序。
让异常产生陷阱的一个目的是让程序可以按照程序的目的定制的方式处理这种情况。例如,一个程序可能希望通过终止当前计算序列来处理溢出。另一个程序可能希望通过重新调整操作数并记录新比例来处理溢出,通过跟踪重新调整有效地实现其自己的扩展指数范围。另一个程序可能想要产生无穷大的结果。因此陷阱允许自定义程序行为。
在有意义的地方,已经提供了默认结果,例如为溢出产生无穷大,并且对默认结果没问题的程序可以关闭异常陷阱。他们可能会忽略异常或在计算序列结束时检查异常标志。
如果程序正在接受对下溢的默认处理,并且出现了不正常的结果但它是准确的,则无需通知程序,因为已经提供了理想的数学结果并且程序已表明它不想要对下溢采取任何特殊操作,例如重新调整结果。如果下溢标志被引发,并且程序在一系列计算结束时检查它,那将错误地表明可能发生了一些不正确的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。