>>885 >>888
>>871
>x += dx;
は誤差が累積しませんか?であるならば、少々速度が犠牲になろうとも
for(i = 0; i < n; i++) {
x1 = a + ((b - a) * i ) / n;
x2 = a + ((b - a) * (i + 1)) / n;
f(x1), f(x2) ...

のほうがまし。
いや、せっかくx2を求めたんだから次のステップで使いまわすくらいはしてあげたほうがいいかもしれませんね。
http://ideone.com/iDR0K