#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKZG91YmxlIHRyYXBleihkb3VibGUoKmYpKGRvdWJsZSksIGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGVwcykKewogICAgZG91YmxlIG9sZF9pID0gMCwgbmV3X2kgPSBvbGRfaSsyKmVwczsKICAgIGZvcih1bnNpZ25lZCBpbnQgbiA9IDE7IGFicyhuZXdfaS1vbGRfaSkgPiBlcHM7IG4gKj0gMikKICAgIHsKICAgICAgICBvbGRfaSA9IG5ld19pOwogICAgICAgIGRvdWJsZSBoID0gKGItYSkvbiwgcyA9IC0oZihhKSArIGYoYikpLzI7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8PSBuOyArK2kpCiAgICAgICAgICAgIHMgKz0gZihhICsgaSpoKTsKICAgICAgICBuZXdfaSA9IHMqaDsKICAgIH0KICAgIHJldHVybiBuZXdfaTsKfQoKZG91YmxlIHkoZG91YmxlIHgpIAp7IAogICAgeCA9IGxvZyh4KS94L3g7CiAgICByZXR1cm4gc3FydCgxK3gqeCk7IAp9CgppbnQgbWFpbigpCnsKICAgIGNvdXQgPDwgdHJhcGV6KHksMSwyLjcxODI4MTgyODQ1OTA0NSwxZS01KSA8PCBlbmRsOwp9Cg==