#include <iostream>
#include <cmath>
using namespace std;
double f(double x) {
return x * x * x - x - 2;
}
int main() {
double a = 1, b = 2, c;
int iterations = 20;
if (f(a) * f(b) >= 0) {
cout << "Invalid interval!" << endl;
return 0;
}
for (int i = 0; i < iterations; i++) {
c = (a * f(b) - b * f(a)) / (f(b) - f(a));
if (f(c) == 0.0) break;
else if (f(a) * f(c) < 0) b = c;
else a = c;
}
cout << "Root = " << c << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHggKiB4ICogeCAtIHggLSAyOwp9CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBhID0gMSwgYiA9IDIsIGM7CiAgICBpbnQgaXRlcmF0aW9ucyA9IDIwOwoKICAgIGlmIChmKGEpICogZihiKSA+PSAwKSB7CiAgICAgICAgY291dCA8PCAiSW52YWxpZCBpbnRlcnZhbCEiIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKICAgICAgICBjID0gKGEgKiBmKGIpIC0gYiAqIGYoYSkpIC8gKGYoYikgLSBmKGEpKTsKICAgICAgICBpZiAoZihjKSA9PSAwLjApIGJyZWFrOwogICAgICAgIGVsc2UgaWYgKGYoYSkgKiBmKGMpIDwgMCkgYiA9IGM7CiAgICAgICAgZWxzZSBhID0gYzsKICAgIH0KCiAgICBjb3V0IDw8ICJSb290ID0gIiA8PCBjIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQoKCg==