Nab*_*bla 12 c c++ floating-point math.h
难道C和C++标准要求在数学运算math.h上的浮动点(即sqrt,exp,log,sin,...)返回数值最佳的解决方案?
对于给定的(精确且有效的)输入,通常显然不是这些函数的精确浮点输出.但输出是否必须是最接近数学上精确值的可表示值?
如果没有,是否有任何关于精度的要求(可能是平台特定的/在其他标准中?),以便我能够在我的代码中对计算错误进行最坏情况估计?现代实施的数值误差的典型限制是什么?
不,而且有充分的理由.通常,您需要无限精度(和无限时间)来确定精确的数学结果.现在大多数情况下,您只需要几次额外的迭代来确定用于舍入的足够位,但是这个额外位的数量取决于确切的结果(简单地说:当结果接近.5 ULP时).即使确定所需的额外迭代次数也非常重要.因此,要求确切的结果远比实用的方法慢得多.