我的任务是使以下功能尽可能精确(速度不是目标)。我必须使用float和middle rectangles 的方法。你能建议点什么吗?实际上,我认为,这一切都是为了最大限度地减少浮点舍入误差。这就是我所做的:
typedef float T;
T integrate(T left, T right, long N, T (*func)(T)) {
long i = 0;
T result = 0.0;
T interval = right - left;
for(i = 0; i < N; i++) {
result += func(left + interval * (i + 0.5) / N) * interval / N;
}
return result;
}