#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef double (*FUNC)(double);
double integ(FUNC f, const double a, const double b, const int n){
int i;
const double dx = (b - a)/n;
double total = 0.0;
for (i = 0; i < n; i++){
const double x = -(a + (i+0.5)*dx);
total += f(x)*dx;
}
return total;
}
int main(void){
const double a = 0;
const double b = 0.49;
const double sval
= 1-exp(-b
); int i;
printf("Integration of exp(-x) for [%.2f, %.2f] and errors\n",a
, b
); for(i = 0; i < 7; i++){
const int div = (int)pow(10, i
); const double xi
= integ
(exp, a
, b
, div); const double err = sval - xi;
}
printf("strict value = %.15f\n", sval
);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPG1hdGguaD4KCnR5cGVkZWYgZG91YmxlICgqRlVOQykoZG91YmxlKTsKCmRvdWJsZSBpbnRlZyhGVU5DIGYsIGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgYiwgY29uc3QgaW50IG4pewoJaW50IGk7Cgljb25zdCBkb3VibGUgZHggPSAoYiAtIGEpL247Cglkb3VibGUgdG90YWwgPSAwLjA7CgkKCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspewoJCWNvbnN0IGRvdWJsZSB4ID0gLShhICsgKGkrMC41KSpkeCk7CgkJdG90YWwgKz0gZih4KSpkeDsKCX0KCQoJcmV0dXJuIHRvdGFsOwp9CgppbnQgbWFpbih2b2lkKXsKCWNvbnN0IGRvdWJsZSBhID0gMDsKCWNvbnN0IGRvdWJsZSBiID0gMC40OTsKCWNvbnN0IGRvdWJsZSBzdmFsID0gMS1leHAoLWIpOwoJaW50IGk7CgkKCXByaW50ZigiSW50ZWdyYXRpb24gb2YgZXhwKC14KSBmb3IgWyUuMmYsICUuMmZdIGFuZCBlcnJvcnNcbiIsYSwgYik7Cglmb3IoaSA9IDA7IGkgPCA3OyBpKyspewoJCWNvbnN0IGludCBkaXYgPSAoaW50KXBvdygxMCwgaSk7CgkJY29uc3QgZG91YmxlIHhpID0gaW50ZWcoZXhwLCBhLCBiLCBkaXYpOwoJCWNvbnN0IGRvdWJsZSBlcnIgPSBzdmFsIC0geGk7CgkJcHJpbnRmKCIlN2QgJS4xNWYgJS4xNWVcbiIsIGRpdiwgeGksIGVycik7Cgl9CgkKCXByaW50Zigic3RyaWN0IHZhbHVlID0gJS4xNWZcbiIsIHN2YWwpOwoJCglyZXR1cm4gMDsKfQo=