f()为被积函数
double simpson( double l , double r )
{
double mid = (l+r)/2;
return (f(l)+4*f(mid)+f(r))*(r-l)/6.0;
}
double asr( double l , double r )
{
double mid = (l+r)/2;
double res = simpson( l , r );
if ( fabs( res-simpson( l , mid )-simpson( mid , r ) )<eps )
return res;
else
return asr( l , mid )+asr( mid , r );
}