#include <iostream>                    //id= 240242103
#include <cmath>
#include <iomanip>
using namespace std;
 
double f(double x) {
    return x*x*x - 4; // f(x) = x^3 - 4
}
 
int main() {
    double x0 = 1, x1 = 3, x2, f0, f1, f2, Ea, prev_x2;
    int iterations = 3;
 
    cout << fixed << setprecision(6);
    cout << "Iteration  x0        x1        x2        f0        f1        f2        Ea(%)\n";
    cout << "----------------------------------------------------------------------------\n";
 
    for (int i = 1; i <= iterations; i++) {
        f0 = f(x0);
        f1 = f(x1);
 
        // False Position formula
        x2 = x0 - f0*(x1 - x0)/(f1 - f0);
        f2 = f(x2);
 
        if (i == 1)
            Ea = 0;
        else
            Ea = fabs((x2 - prev_x2)/x2)*100;
 
        cout << i << "\t" << x0 << "\t" << x1 << "\t" << x2
             << "\t" << f0 << "\t" << f1 << "\t" << f2 << "\t" << Ea << endl;
 
        // Update interval according to algorithm
        if (f0*f2 < 0)
            x1 = x2;
        else
            x0 = x2;
 
        prev_x2 = x2; // save x2 for next iteration
    }
 
    cout << "\nApproximate root after " << iterations << " iterations = " << x2 << endl;
    return 0;
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPiAgICAgICAgICAgICAgICAgICAgLy9pZD0gMjQwMjQyMTAzCiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGlvbWFuaXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHgqeCp4IC0gNDsgLy8gZih4KSA9IHheMyAtIDQKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgeDAgPSAxLCB4MSA9IDMsIHgyLCBmMCwgZjEsIGYyLCBFYSwgcHJldl94MjsKICAgIGludCBpdGVyYXRpb25zID0gMzsKCiAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KTsKICAgIGNvdXQgPDwgIkl0ZXJhdGlvbiAgeDAgICAgICAgIHgxICAgICAgICB4MiAgICAgICAgZjAgICAgICAgIGYxICAgICAgICBmMiAgICAgICAgRWEoJSlcbiI7CiAgICBjb3V0IDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGl0ZXJhdGlvbnM7IGkrKykgewogICAgICAgIGYwID0gZih4MCk7CiAgICAgICAgZjEgPSBmKHgxKTsKCiAgICAgICAgLy8gRmFsc2UgUG9zaXRpb24gZm9ybXVsYQogICAgICAgIHgyID0geDAgLSBmMCooeDEgLSB4MCkvKGYxIC0gZjApOwogICAgICAgIGYyID0gZih4Mik7CgogICAgICAgIGlmIChpID09IDEpCiAgICAgICAgICAgIEVhID0gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIEVhID0gZmFicygoeDIgLSBwcmV2X3gyKS94MikqMTAwOwoKICAgICAgICBjb3V0IDw8IGkgPDwgIlx0IiA8PCB4MCA8PCAiXHQiIDw8IHgxIDw8ICJcdCIgPDwgeDIKICAgICAgICAgICAgIDw8ICJcdCIgPDwgZjAgPDwgIlx0IiA8PCBmMSA8PCAiXHQiIDw8IGYyIDw8ICJcdCIgPDwgRWEgPDwgZW5kbDsKCiAgICAgICAgLy8gVXBkYXRlIGludGVydmFsIGFjY29yZGluZyB0byBhbGdvcml0aG0KICAgICAgICBpZiAoZjAqZjIgPCAwKQogICAgICAgICAgICB4MSA9IHgyOwogICAgICAgIGVsc2UKICAgICAgICAgICAgeDAgPSB4MjsKCiAgICAgICAgcHJldl94MiA9IHgyOyAvLyBzYXZlIHgyIGZvciBuZXh0IGl0ZXJhdGlvbgogICAgfQoKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCBhZnRlciAiIDw8IGl0ZXJhdGlvbnMgPDwgIiBpdGVyYXRpb25zID0gIiA8PCB4MiA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K