我如何确定函数何时处于“下溢边缘”?

计算科学 计算机算术
2021-11-29 03:01:10

用户hardmath提供了一个很好的概述,介绍了在计算两个函数的乘积时如何处理溢出,其中一个函数可能会溢出:https ://scicomp.stackexchange.com/a/20913/9466

答案还讨论了涉及的特殊情况erf功能,在问题中作为示例进行了讨论,因此对处理进行了讨论erf函数下溢:

作为进一步的预防措施,我们可能希望在评估时防止下溢erfc(x). 双精度正常值的指数范围下降到二进制(2 的幂)1022. 渐近:

erfc(x)O(1/x)ex2

因此,当我们处于指数下溢的边缘时x25.

我想了解如何提出x25价值。我可能在这里遗漏了一些数学背景,因此只需指出可以帮助我理解如何得出此类估计的主题即可,

1个回答

双精度浮点运算中,数字21022是可以表示的最小(正常)正数。计算任何较小的正数都会导致精度损失,因为它不能表示为浮点值。这要么意味着计算出的数字将是非正规的(部分精度损失),或者它可能会被舍入为零(完全损失精度)。

在 erfc 的情况下,您可以求解最大的x这样erfc(x)不会下溢 - 这样erfc(x)可以完全准确地表示。这是通过(数值)求解方程来完成的

erfc(x)=21022,x=26.54,
或更容易通过求解近似方程
ex2=21022,x=1022log2=26.62.
号码25然后是对何时可能发生问题的方便估计 - 大多数例程可能会在实际限制之前开始给出错误结果。