#include <bits/stdc++.h>
using namespace std;
 
double f(double co[], int n, double x)
{
    double result = co[0];
    for (int i = 1; i <= n; i++)
        result = result * x + co[i];
    return result;
}
 
double df(double co[], int n, double x) 
{
    double result = co[0] * (n);
    for (int i = 1; i < n; i++)
        result = result * x + co[i] * (n - i);
    return result;
}
 
int main() {
    int n;                   
    double co[20];        
    double x0, x1, fx, dfx, E, error;
    int iteration = 1, maxIter = 20;
 
    cout << "ENTER THE TOTAL NO. OF POWER::: ";
    cin >> n;
 
    cout << endl;
    for (int i = 0; i <= n; i++)
    {
        cout << "x^" << i << " :: ";
        cin >> co[i];
    }
 
    cout << "\nEnter initial guess x0: ";
    cin >> x0;
    cout << "Enter tolerance (e.g. 0.0001): ";
    cin >> E;
 
    cout << "\n***********************************************";
    cout << "\nIteration\t x\t\t f(x)\t\t f'(x)\t\t Error\t\t %Error";
    cout << "\n***********************************************\n";
 
    do
    {
        fx = f(co, n, x0);
        dfx = df(co, n, x0);
 
        if (dfx == 0) 
        {
            cout << "Division by zero!.\n";
            return 0;
        }
 
        x1 = x0 - fx / dfx;
        error = fabs((x1 - x0) / x1);
 
        cout << fixed << setprecision(6);
        cout << setw(5) << iteration << "\t"
             << setw(10) << x1 << "\t"
             << setw(10) << fx << "\t"
             << setw(10) << dfx << "\t"
             << setw(10) << error << "\t"
             << setw(10) << error * 100 << endl;
 
        if (error < E)
            break;
 
        x0 = x1;
        iteration++;
 
    } while (iteration <= maxIter);
 
    cout << "\n***********************************************";
    cout << "\nTHE ROOT OF EQUATION IS " << x1 << endl;
    cout << "***********************************************\n";
 
    return 0;
}
 
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgY29bXSwgaW50IG4sIGRvdWJsZSB4KQp7CiAgICBkb3VibGUgcmVzdWx0ID0gY29bMF07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogeCArIGNvW2ldOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKZG91YmxlIGRmKGRvdWJsZSBjb1tdLCBpbnQgbiwgZG91YmxlIHgpIAp7CiAgICBkb3VibGUgcmVzdWx0ID0gY29bMF0gKiAobik7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV0gKiAobiAtIGkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsgICAgICAgICAgICAgICAgICAgCiAgICBkb3VibGUgY29bMjBdOyAgICAgICAgCiAgICBkb3VibGUgeDAsIHgxLCBmeCwgZGZ4LCBFLCBlcnJvcjsKICAgIGludCBpdGVyYXRpb24gPSAxLCBtYXhJdGVyID0gMjA7CgogICAgY291dCA8PCAiRU5URVIgVEhFIFRPVEFMIE5PLiBPRiBQT1dFUjo6OiAiOwogICAgY2luID4+IG47CgogICAgY291dCA8PCBlbmRsOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGNvdXQgPDwgInheIiA8PCBpIDw8ICIgOjogIjsKICAgICAgICBjaW4gPj4gY29baV07CiAgICB9CgogICAgY291dCA8PCAiXG5FbnRlciBpbml0aWFsIGd1ZXNzIHgwOiAiOwogICAgY2luID4+IHgwOwogICAgY291dCA8PCAiRW50ZXIgdG9sZXJhbmNlIChlLmcuIDAuMDAwMSk6ICI7CiAgICBjaW4gPj4gRTsKCiAgICBjb3V0IDw8ICJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsKICAgIGNvdXQgPDwgIlxuSXRlcmF0aW9uXHQgeFx0XHQgZih4KVx0XHQgZicoeClcdFx0IEVycm9yXHRcdCAlRXJyb3IiOwogICAgY291dCA8PCAiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsKCiAgICBkbwogICAgewogICAgICAgIGZ4ID0gZihjbywgbiwgeDApOwogICAgICAgIGRmeCA9IGRmKGNvLCBuLCB4MCk7CgogICAgICAgIGlmIChkZnggPT0gMCkgCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICJEaXZpc2lvbiBieSB6ZXJvIS5cbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgeDEgPSB4MCAtIGZ4IC8gZGZ4OwogICAgICAgIGVycm9yID0gZmFicygoeDEgLSB4MCkgLyB4MSk7CgogICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgICAgIGNvdXQgPDwgc2V0dyg1KSA8PCBpdGVyYXRpb24gPDwgIlx0IgogICAgICAgICAgICAgPDwgc2V0dygxMCkgPDwgeDEgPDwgIlx0IgogICAgICAgICAgICAgPDwgc2V0dygxMCkgPDwgZnggPDwgIlx0IgogICAgICAgICAgICAgPDwgc2V0dygxMCkgPDwgZGZ4IDw8ICJcdCIKICAgICAgICAgICAgIDw8IHNldHcoMTApIDw8IGVycm9yIDw8ICJcdCIKICAgICAgICAgICAgIDw8IHNldHcoMTApIDw8IGVycm9yICogMTAwIDw8IGVuZGw7CgogICAgICAgIGlmIChlcnJvciA8IEUpCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICB4MCA9IHgxOwogICAgICAgIGl0ZXJhdGlvbisrOwoKICAgIH0gd2hpbGUgKGl0ZXJhdGlvbiA8PSBtYXhJdGVyKTsKCiAgICBjb3V0IDw8ICJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsKICAgIGNvdXQgPDwgIlxuVEhFIFJPT1QgT0YgRVFVQVRJT04gSVMgIiA8PCB4MSA8PCBlbmRsOwogICAgY291dCA8PCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiI7CgogICAgcmV0dXJuIDA7Cn0K