#include <iostream>
#include <cmath>
using namespace std;
// f(x)
double f(double x)
{
return x * atan(x) - 0.5 * log(1 + x * x);
}
//f'(x) -- похідна
double df(double x)
{
return atan(x) + x/(1+x*x) - (x)/(1+x*x);
//atan(x) + x/(1+x*x) - x/(1+x*x) = просто atan(x)
//але залишимо формально
}
int main()
{
double a, b;
cin>>a>>b;
double eps;
cin>>eps;
int it = 0;
while (fabs(b - a) > eps)
{
it++;
double c = (a + b) / 2.0;
double d = df(c);
if (fabs(d) < eps) //попадання в точку мінімуму
{
a = b = c;
break;
}
if (d > 0)
b = c; //мінімум лівіше
else
a = c; //мінімум правіше
}
double xmin = (a + b)/2.0;
cout<<"xmin = "<<xmin<<endl;
cout<<"iterations = "<<it<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKLy8gZih4KQpkb3VibGUgZihkb3VibGUgeCkKewogICByZXR1cm4geCAqIGF0YW4oeCkgLSAwLjUgKiBsb2coMSArIHggKiB4KTsKfQoKCi8vZicoeCkgLS0g0L/QvtGF0ZbQtNC90LAKZG91YmxlIGRmKGRvdWJsZSB4KQp7CiAgIHJldHVybiBhdGFuKHgpICsgeC8oMSt4KngpIC0gKHgpLygxK3gqeCk7CiAgIC8vYXRhbih4KSArIHgvKDEreCp4KSAtIHgvKDEreCp4KSA9INC/0YDQvtGB0YLQviBhdGFuKHgpCiAgIC8v0LDQu9C1INC30LDQu9C40YjQuNC80L4g0YTQvtGA0LzQsNC70YzQvdC+Cn0KCgppbnQgbWFpbigpCnsKICAgZG91YmxlIGEsIGI7CiAgIGNpbj4+YT4+YjsKICAgZG91YmxlIGVwczsKICAgY2luPj5lcHM7CgoKICAgaW50IGl0ID0gMDsKCgogICB3aGlsZSAoZmFicyhiIC0gYSkgPiBlcHMpCiAgIHsKICAgICAgIGl0Kys7CiAgICAgICBkb3VibGUgYyA9IChhICsgYikgLyAyLjA7CiAgICAgICBkb3VibGUgZCA9IGRmKGMpOwoKCiAgICAgICBpZiAoZmFicyhkKSA8IGVwcykgLy/Qv9C+0L/QsNC00LDQvdC90Y8g0LIg0YLQvtGH0LrRgyDQvNGW0L3RltC80YPQvNGDCiAgICAgICB7CiAgICAgICAgICAgYSA9IGIgPSBjOwogICAgICAgICAgIGJyZWFrOwogICAgICAgfQoKCiAgICAgICBpZiAoZCA+IDApCiAgICAgICAgICAgYiA9IGM7IC8v0LzRltC90ZbQvNGD0Lwg0LvRltCy0ZbRiNC1CiAgICAgICBlbHNlCiAgICAgICAgICAgYSA9IGM7IC8v0LzRltC90ZbQvNGD0Lwg0L/RgNCw0LLRltGI0LUKICAgfQoKCiAgIGRvdWJsZSB4bWluID0gKGEgKyBiKS8yLjA7CiAgIGNvdXQ8PCJ4bWluID0gIjw8eG1pbjw8ZW5kbDsKICAgY291dDw8Iml0ZXJhdGlvbnMgPSAiPDxpdDw8ZW5kbDsKICAgcmV0dXJuIDA7Cn0K