#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], x0, x1, fx, dfx, E, err;
 
    cout << "ENTER THE TOTAL NO. OF POWER: ";
    cin >> n;
 
    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 << "\nIter\t x\t\t f(x)\t\t f'(x)\t\t Error\t\t %Error";
    cout << "\n***********************************************\n";
 
    for (int i = 1; i <= 20; i++)
    {
        fx = f(co, n, x0);
        dfx = df(co, n, x0);
 
        if (dfx == 0) {
            cout << "Division by zero! Stopping.\n";
            return 0;
        }
 
        x1 = x0 - fx / dfx;
        err = fabs((x1 - x0) / x1);
 
        cout << fixed << setprecision(6);
        cout << setw(5) << i << "\t"       << setw(10) << x1 << "\t"  << setw(10) << fx << "\t"<< setw(10) << dfx << "\t"
             << setw(10) << err<< "\t"
             << setw(10) << err* 100 << endl;
        if (err< E) {
            cout << "\n***********************************************";
            cout << "\nTHE ROOT OF EQUATION IS " << x1 << endl;
            cout << "***********************************************\n";
            return 0;
        }
        x0 = x1;
    }
 
    return 0;
}
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZG91YmxlIGYoZG91YmxlIGNvW10sIGludCBuLCBkb3VibGUgeCkgCnsKICAgIGRvdWJsZSByZXN1bHQgPSBjb1swXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV07CiAgICByZXR1cm4gcmVzdWx0Owp9CiAKZG91YmxlIGRmKGRvdWJsZSBjb1tdLCBpbnQgbiwgZG91YmxlIHgpCnsKICAgIGRvdWJsZSByZXN1bHQgPSBjb1swXSAqIG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV0gKiAobiAtIGkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQogCmludCBtYWluKCkKewogICAgaW50IG47CiAgICBkb3VibGUgY29bMjBdLCB4MCwgeDEsIGZ4LCBkZngsIEUsIGVycjsKIAogICAgY291dCA8PCAiRU5URVIgVEhFIFRPVEFMIE5PLiBPRiBQT1dFUjogIjsKICAgIGNpbiA+PiBuOwogCiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCAieF4iIDw8IGkgPDwgIiA6ICI7CiAgICAgICAgY2luID4+IGNvW2ldOwogICAgfQogCiAgICBjb3V0IDw8ICJcbkVudGVyIGluaXRpYWwgZ3Vlc3MgeDA6ICI7CiAgICBjaW4gPj4geDA7CiAgICBjb3V0IDw8ICJFbnRlciB0b2xlcmFuY2UgKGUuZy4gMC4wMDAxKTogIjsKICAgIGNpbiA+PiBFOwogCiAgICBjb3V0IDw8ICJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsKICAgIGNvdXQgPDwgIlxuSXRlclx0IHhcdFx0IGYoeClcdFx0IGYnKHgpXHRcdCBFcnJvclx0XHQgJUVycm9yIjsKICAgIGNvdXQgPDwgIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiI7CiAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDIwOyBpKyspCiAgICB7CiAgICAgICAgZnggPSBmKGNvLCBuLCB4MCk7CiAgICAgICAgZGZ4ID0gZGYoY28sIG4sIHgwKTsKIAogICAgICAgIGlmIChkZnggPT0gMCkgewogICAgICAgICAgICBjb3V0IDw8ICJEaXZpc2lvbiBieSB6ZXJvISBTdG9wcGluZy5cbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KIAogICAgICAgIHgxID0geDAgLSBmeCAvIGRmeDsKICAgICAgICBlcnIgPSBmYWJzKCh4MSAtIHgwKSAvIHgxKTsKIAogICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgICAgIGNvdXQgPDwgc2V0dyg1KSA8PCBpIDw8ICJcdCIgICAgICAgPDwgc2V0dygxMCkgPDwgeDEgPDwgIlx0IiAgPDwgc2V0dygxMCkgPDwgZnggPDwgIlx0Ijw8IHNldHcoMTApIDw8IGRmeCA8PCAiXHQiCiAgICAgICAgICAgICA8PCBzZXR3KDEwKSA8PCBlcnI8PCAiXHQiCiAgICAgICAgICAgICA8PCBzZXR3KDEwKSA8PCBlcnIqIDEwMCA8PCBlbmRsOwogICAgICAgIGlmIChlcnI8IEUpIHsKICAgICAgICAgICAgY291dCA8PCAiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiI7CiAgICAgICAgICAgIGNvdXQgPDwgIlxuVEhFIFJPT1QgT0YgRVFVQVRJT04gSVMgIiA8PCB4MSA8PCBlbmRsOwogICAgICAgICAgICBjb3V0IDw8ICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIHgwID0geDE7CiAgICB9CiAKICAgIHJldHVybiAwOwp9