#include <bits/stdc++.h>
using namespace std;
 
double f(double x) {
    return 2 * x * x * x + 3 * x - 1;
}
 
double df(double x) {
    return 6 * x * x + 3;
}
 
int main() {
    double x0, x1, E = 1e-8;
    int i = 0;
    cout << "Enter initial guess: ";
    cin >> x0;
    cout << "Iter\t x0\t\t f(x0)\t\t f'(x0)\t\t x1\n";
    do {
        double f0 = f(x0);
        double df0 = df(x0);
        if (df0 == 0) {
            cout << "Derivative is zero. Cannot continue.\n";
            return 0;
        }
        x1 = x0 - f0 / df0;
        cout << ++i << "\t" << x0 << "\t" << f0 << "\t" << df0 << "\t" << x1 << "\n";
        if (fabs(x1 - x0) < E)
            break;
        x0 = x1;
    } while (true);
    cout << "\nApproximate root = " << x1 << endl;
    return 0;
}
 
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIDIgKiB4ICogeCAqIHggKyAzICogeCAtIDE7Cn0KCmRvdWJsZSBkZihkb3VibGUgeCkgewogICAgcmV0dXJuIDYgKiB4ICogeCArIDM7Cn0KCmludCBtYWluKCkgewogICAgZG91YmxlIHgwLCB4MSwgRSA9IDFlLTg7CiAgICBpbnQgaSA9IDA7CiAgICBjb3V0IDw8ICJFbnRlciBpbml0aWFsIGd1ZXNzOiAiOwogICAgY2luID4+IHgwOwogICAgY291dCA8PCAiSXRlclx0IHgwXHRcdCBmKHgwKVx0XHQgZicoeDApXHRcdCB4MVxuIjsKICAgIGRvIHsKICAgICAgICBkb3VibGUgZjAgPSBmKHgwKTsKICAgICAgICBkb3VibGUgZGYwID0gZGYoeDApOwogICAgICAgIGlmIChkZjAgPT0gMCkgewogICAgICAgICAgICBjb3V0IDw8ICJEZXJpdmF0aXZlIGlzIHplcm8uIENhbm5vdCBjb250aW51ZS5cbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICB4MSA9IHgwIC0gZjAgLyBkZjA7CiAgICAgICAgY291dCA8PCArK2kgPDwgIlx0IiA8PCB4MCA8PCAiXHQiIDw8IGYwIDw8ICJcdCIgPDwgZGYwIDw8ICJcdCIgPDwgeDEgPDwgIlxuIjsKICAgICAgICBpZiAoZmFicyh4MSAtIHgwKSA8IEUpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIHgwID0geDE7CiAgICB9IHdoaWxlICh0cnVlKTsKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgPDwgeDEgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==