fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. double trapez(double(*f)(double), double a, double b, double eps)
  7. {
  8. double old_i = 0, new_i = old_i+2*eps;
  9. for(unsigned int n = 1; abs(new_i-old_i) > eps; n *= 2)
  10. {
  11. old_i = new_i;
  12. double h = (b-a)/n, s = -(f(a) + f(b))/2;
  13. for(int i = 0; i <= n; ++i)
  14. s += f(a + i*h);
  15. new_i = s*h;
  16. }
  17. return new_i;
  18. }
  19.  
  20. double y(double x) { return sin(x)*cos(x*x); }
  21.  
  22. int main(int argc, char * argv[])
  23. {
  24. cout << setprecision(10) << trapez(y,0,5,1e-10) << endl;
  25. }
  26.  
Success #stdin #stdout 0.05s 5664KB
stdin
Standard input is empty
stdout
0.1003450675