#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
double f(double x)
{
    return x * x * x - 4; 
}
 
int main()
{
    double x0, x1, x2, f0, f1, f2;
 
    int maxi = 10;     
    double t = 0.0001;   
 
    cout << "Enter the value of x0: ";
    cin >> x0;
    cout << "Enter the value of x1: ";
    cin >> x1;
 
    f0 = f(x0);
    f1 = f(x1);
 
    if (f0 * f1 > 0) {
        cout << "\nInvalid interval!.\n";
        return 0;
    }
 
    cout << "\n-------------------------------------------------------------";
    cout << "\nIteration\t x0\t\t x1\t\t x2\t\t f0\t\t f1\t\t f2";
    cout << "\n-------------------------------------------------------------\n";
 
    int i = 1;
    while (i <= maxi) {
        x2 = x0 - (f0 * (x1 - x0)) / (f1 - f0);
        f2 = f(x2);
 
        cout << fixed << setprecision(6);
        cout << setw(3) << i << "\t"
             << x0 << "\t" << x1 << "\t" << x2 << "\t"
             << f0 << "\t" << f1 << "\t" << f2 << endl;
 
        if (fabs(f2) < t) { 
            break;
        }
 
        if (f0 * f2 < 0) {
            x1 = x2;
            f1 = f2;
        } else {
            x0 = x2;
            f0 = f2;
        }
 
        i++;
    }
 
    cout << "\nApproximate root = " << x2 << endl;
    return 0;
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiB4ICogeCAqIHggLSA0OyAKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgeDAsIHgxLCB4MiwgZjAsIGYxLCBmMjsKICAgCiAgICBpbnQgbWF4aSA9IDEwOyAgICAgCiAgICBkb3VibGUgdCA9IDAuMDAwMTsgICAKCiAgICBjb3V0IDw8ICJFbnRlciB0aGUgdmFsdWUgb2YgeDA6ICI7CiAgICBjaW4gPj4geDA7CiAgICBjb3V0IDw8ICJFbnRlciB0aGUgdmFsdWUgb2YgeDE6ICI7CiAgICBjaW4gPj4geDE7CgogICAgZjAgPSBmKHgwKTsKICAgIGYxID0gZih4MSk7CgogICAgaWYgKGYwICogZjEgPiAwKSB7CiAgICAgICAgY291dCA8PCAiXG5JbnZhbGlkIGludGVydmFsIS5cbiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgY291dCA8PCAiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjsKICAgIGNvdXQgPDwgIlxuSXRlcmF0aW9uXHQgeDBcdFx0IHgxXHRcdCB4Mlx0XHQgZjBcdFx0IGYxXHRcdCBmMiI7CiAgICBjb3V0IDw8ICJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CgogICAgaW50IGkgPSAxOwogICAgd2hpbGUgKGkgPD0gbWF4aSkgewogICAgICAgIHgyID0geDAgLSAoZjAgKiAoeDEgLSB4MCkpIC8gKGYxIC0gZjApOwogICAgICAgIGYyID0gZih4Mik7CgogICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgICAgIGNvdXQgPDwgc2V0dygzKSA8PCBpIDw8ICJcdCIKICAgICAgICAgICAgIDw8IHgwIDw8ICJcdCIgPDwgeDEgPDwgIlx0IiA8PCB4MiA8PCAiXHQiCiAgICAgICAgICAgICA8PCBmMCA8PCAiXHQiIDw8IGYxIDw8ICJcdCIgPDwgZjIgPDwgZW5kbDsKCiAgICAgICAgaWYgKGZhYnMoZjIpIDwgdCkgeyAKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoZjAgKiBmMiA8IDApIHsKICAgICAgICAgICAgeDEgPSB4MjsKICAgICAgICAgICAgZjEgPSBmMjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB4MCA9IHgyOwogICAgICAgICAgICBmMCA9IGYyOwogICAgICAgIH0KCiAgICAgICAgaSsrOwogICAgfQoKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgPDwgeDIgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==