Java中StrictMath.exp是否与Math.exp拥有相同的误差保证?
能否100%证明StrictMath.exp与Math.exp具备相同的误差保证?
可以100%证明两者的误差保证一致,理由如下:
Math.exp的明确约束
Java官方对Math.exp(x)的接口规定清晰:计算结果必须落在精确值的1 ulp范围内,且具备半单调性。StrictMath.exp的底层实现约束
StrictMath.exp(x)的文档明确说明它遵循fdlibm 5.3的IEEE 754核心函数实现;而fdlibm官方文档对exp函数的误差要求是始终小于1 ulp。“小于1 ulp”是比“在1 ulp范围内”更严格的约束,自然完全满足Math.exp的误差要求。关于半单调性的补充
虽然StrictMath.exp的接口未直接声明半单调性,但fdlibm的exp实现本身符合IEEE 754规范,而IEEE 754要求基本数学函数具备单调性(半单调性是其弱化形式),因此StrictMath.exp也必然满足半单调性要求。
综上,StrictMath.exp的误差保证完全覆盖Math.exp的要求,两者误差特性一致,你的优化策略的正确性可得到充分保障。
内容的提问来源于stack exchange,提问作者otmar
相关产品推荐
相关产品推荐

