シンプソン法による積分 C++

シンプソン法を式で表すとこのようになります。
シンプソン法の式
例の式を計算します。
#include <iostream>
#include <cmath>
using namespace std;
/*
コンパイルできないときは上の3行を次の2行に置き換えてください。
#include <iostream.h>
#include <math.h>
*/
/* nを大きくすると精度が上がる */
const int n = 10;
const double pi = 3.141592;

/* 積分する関数 f(x)
ここでは (exp(-x/0.2)-1)/x を積分 */
double f(double x){
    return (exp(-x/0.2)-1)/x;
}

/* 積分の範囲 x0からx_max  */
const double x0 = 0.0000001; // x0を0としないのは、xが0の時に発散するため
const double x_max = 1.0;

/* シンプソン法による積分計算 */
double simpson(double x0,double x_max){
    double delta = (x_max - x0)/n;
    double a;
    a = f(x0);
    a += f(x0 + delta * n);
    int i;
    for(i=1; i<n; i+=2){
        a += 4.0 * f(x0 + delta * i);
    }
    for(i=2; i<n; i+=2){
        a += 2.0 * f(x0 + delta * i);
    }
    return a*delta/3.0;
}

int main(){
    cout << simpson(x0,x_max) << endl;
    return 0;
 }

実行結果
-2.18788