C和C ++标准的数学精度要求

在C和C ++标准中,是否需要在math.h对浮点(即sqrtexplogsin ,…)进行数学运算才能返回数值最佳解?

对于给定的(精确且有效的)输入,通常显然不是这些函数的精确浮点输出。 但输出是否必须是最接近数学上精确值的可表示值?

如果没有,是否有任何关于精度的要求(可能是平台特定的/在其他标准中?),以便我能够在我的代码中对计算错误进行最坏情况估计? 现代实施的数值误差的典型限制是什么?

不,而且有充分的理由。 通常,您需要无限精度(和无限时间)来确定精确的数学结果。 现在大多数时候你只需要几次额外的迭代来确定用于舍入的足够位,但是这个额外位的数量取决于确切的结果(简单地说:当结果接近.5 ULP时)。 即使确定所需的额外迭代次数也非常重要。 因此,要求确切的结果远比实用的方法慢得多。