摘要 探讨双曲余弦函数 cosh(x)的计算精度问题。
例1. 计算 cosh(300.70098) .
若用Java中函数计算:
import java.lang.Math;
public class Cosh{
public static void main(String[] args) {
double x = 300.70098;
double result = Math.cosh(x);
System.out.println(result);
}
}
则输出 1.957700813255709E130 .
若在Visual Studio 2010下用math库中函数计算:
#include "stdafx.h"
#include <math.h>
#include <stdlib.h>
double x=300.70098;
double y=cosh(x);
printf("%lf\n",y);
则前16位数字与Java给出的相同。
事实上,正确值为 0.1957700813255679e131(ISRealsoft 提供)。这样,二者均有3位错误数字,错误率均为 3/16 = 18.75% .