摘要 探讨双曲反正弦函数 asinh(x)的计算精度问题。
由计算机的错误计算(七十八)知,IEEE 754-2019 规定的 asinh(x)函数的定义域是实数域。其中函数的定义为
例1. 计算 asinh(-1.2399e-16) .
不妨在 Excel 的单元格中计算,则有:
若在Java中用定义编程:
import java.lang.Math;
public class Asinh{
public static void main(String[] args) {
double x = -1.2399e-16;
double result = Math.log(x + Math.sqrt(x * x + 1.0)); //asinh(x);
System.out.println(result);
}
}
则输出为 -1.1102230246251565E-16 .
然而,正确值为 -0.12399e-15(ISRealsoft 提供)。这样,Excel 的输出中,不含有正确的有效数字;而Java代码的输出中,只有1位正确数字。