#include <iostream>
#include <cmath>
using namespace std;


double trapez(double(*f)(double), double a, double b, double eps)
{
    double old_i = 0, new_i = old_i+2*eps;
    for(unsigned int n = 1; abs(new_i-old_i) > eps; n *= 2)
    {
        old_i = new_i;
        double h = (b-a)/n, s = -(f(a) + f(b))/2;
        for(int i = 0; i <= n; ++i)
            s += f(a + i*h);
        new_i = s*h;
    }
    return new_i;
}

double y(double x) 
{ 
    x = log(x)/x/x;
    return sqrt(1+x*x); 
}

int main()
{
    cout << trapez(y,1,2.718281828459045,1e-5) << endl;
}
