请问复化Simpson公式用C语言代码写如何降低截断误差

这是我写的代码,数值分析书上说当步长h减半,复化Simpson误差减至原有误差的1/16说明这是对的,但是我的不行,达不到这个要求


#include 
#include 

double f(double x){//f函数
    return exp(x)*cos(x);
}

double Simpson(double a, double b, int n){
    double h = (b-a)/n, fa=f(a),fb=f(b),ss=fa+fb,x=a;//ss总和
    double f0,f1;
    for(int i = 0; i < n; i++){  //0<= k <= n-1
        x+=h/2.0;//k+1/2
        f0=f(x);
        ss+=4.0*f0;
        if(i>=1){
        x+=h/2.0;//k+1/2+1/2
        f1=f(x);
        ss+=2*f1;
        }
    }
    ss=h*ss/6.0;
    return ss;
}

int main(){
    int n;  //区间等分数
    double x=-12.0703463164;
    double a = 0.000001,s,ss;
    double b = 3.14159265358;
    printf("n:");
    scanf("%d",&n);
    s=Simpson(a,b,n);
    printf("answer = %f\n", s);
    ss=fabs(x-s);
    printf("误差:%f\n",ss);
    return 0;
}