C/C++中sqrt函数的保证精度

yep*_*ons 4 c precision math.h floating-accuracy sqrt

每个人都知道sqrt,从功能math.h/ cmath在C/C++ -它返回它的参数的平方根.当然,它必须有一些错误,因为不是每个数字都可以精确存储.但我保证结果有一定的精确度吗?例如,'它是可以用浮点类型表示的平方根的最佳近似值,or如果你计算结果的平方,它将尽可能接近初始参数使用给定的浮点类型?

C/C++标准有什么关于它的吗?

nwe*_*hof 8

对于C99,没有具体要求.但是大多数实现试图尽可能地支持附件F:IEC 60559浮点运算.它说:

定义的实现__STDC_IEC_559__应符合本附录中的规范.

和:

这些sqrt功能<math.h>提供IEC 60559平方根操作.

IEC 60559(相当于IEEE 754)说的基本操作如下sqrt:

除了二进制< - >十进制转换之外,每个操作都应该执行,就好像它首先产生一个正确到无限精度和无限范围的中间结果,然后强制这个中间结果以适应目标的格式.

最后一步包括根据几种舍入模式进行舍入,但结果必须始终是目标精度中最接近的可表示值.