#include <stdio.h>
#include <math.h>
 
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, i, iteration = 1, maxIter = 20;
    double co[20], x0, x1, fx, dfx, E, error;
 
    printf("ENTER THE TOTAL NO. OF POWER::: ");
    scanf("%d", &n);
 
    for (i = 0; i <= n; i++) {
        printf("x^%d :: ", i);
        scanf("%lf", &co[i]);
    }
 
    printf("\nTHE POLYNOMIAL IS ::: ");
    for (i = n; i >= 0; i--)
        printf("%.2lfx^%d ", co[n - i], i);
    printf("\n");
 
    printf("\nEnter initial guess x0: ");
    scanf("%lf", &x0);
    printf("Enter tolerance (e.g. 0.0001): ");
    scanf("%lf", &E);
 
    printf("\n***********************************************");
    printf("\nIteration\t x\t\t f(x)\t\t f'(x)\t\t Error\t\t %%Error");
    printf("\n***********************************************\n");
 
    while (iteration <= maxIter) {
        fx = f(co, n, x0);
        dfx = df(co, n, x0);
        if (dfx == 0) {
            printf("Division by zero!\n");
            return 0;
        }
        x1 = x0 - fx / dfx;
        error = fabs((x1 - x0) / x1);
        printf("%5d\t%10.6lf\t%10.6lf\t%10.6lf\t%10.6lf\t%10.6lf\n",
               iteration, x1, fx, dfx, error, error * 100);
        if (error < E)
            break;
        x0 = x1;
        iteration++;
    }
 
    printf("\n***********************************************");
    printf("\nTHE ROOT OF EQUATION IS %.8lf", x1);
    printf("\n***********************************************\n");
    return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgpkb3VibGUgZihkb3VibGUgY29bXSwgaW50IG4sIGRvdWJsZSB4KSB7CiAgICBkb3VibGUgcmVzdWx0ID0gY29bMF07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogeCArIGNvW2ldOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKZG91YmxlIGRmKGRvdWJsZSBjb1tdLCBpbnQgbiwgZG91YmxlIHgpIHsKICAgIGRvdWJsZSByZXN1bHQgPSBjb1swXSAqIG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV0gKiAobiAtIGkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbiwgaSwgaXRlcmF0aW9uID0gMSwgbWF4SXRlciA9IDIwOwogICAgZG91YmxlIGNvWzIwXSwgeDAsIHgxLCBmeCwgZGZ4LCBFLCBlcnJvcjsKCiAgICBwcmludGYoIkVOVEVSIFRIRSBUT1RBTCBOTy4gT0YgUE9XRVI6OjogIik7CiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgZm9yIChpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICBwcmludGYoInheJWQgOjogIiwgaSk7CiAgICAgICAgc2NhbmYoIiVsZiIsICZjb1tpXSk7CiAgICB9CgogICAgcHJpbnRmKCJcblRIRSBQT0xZTk9NSUFMIElTIDo6OiAiKTsKICAgIGZvciAoaSA9IG47IGkgPj0gMDsgaS0tKQogICAgICAgIHByaW50ZigiJS4ybGZ4XiVkICIsIGNvW24gLSBpXSwgaSk7CiAgICBwcmludGYoIlxuIik7CgogICAgcHJpbnRmKCJcbkVudGVyIGluaXRpYWwgZ3Vlc3MgeDA6ICIpOwogICAgc2NhbmYoIiVsZiIsICZ4MCk7CiAgICBwcmludGYoIkVudGVyIHRvbGVyYW5jZSAoZS5nLiAwLjAwMDEpOiAiKTsKICAgIHNjYW5mKCIlbGYiLCAmRSk7CgogICAgcHJpbnRmKCJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CiAgICBwcmludGYoIlxuSXRlcmF0aW9uXHQgeFx0XHQgZih4KVx0XHQgZicoeClcdFx0IEVycm9yXHRcdCAlJUVycm9yIik7CiAgICBwcmludGYoIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOwoKICAgIHdoaWxlIChpdGVyYXRpb24gPD0gbWF4SXRlcikgewogICAgICAgIGZ4ID0gZihjbywgbiwgeDApOwogICAgICAgIGRmeCA9IGRmKGNvLCBuLCB4MCk7CiAgICAgICAgaWYgKGRmeCA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiRGl2aXNpb24gYnkgemVybyFcbiIpOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgeDEgPSB4MCAtIGZ4IC8gZGZ4OwogICAgICAgIGVycm9yID0gZmFicygoeDEgLSB4MCkgLyB4MSk7CiAgICAgICAgcHJpbnRmKCIlNWRcdCUxMC42bGZcdCUxMC42bGZcdCUxMC42bGZcdCUxMC42bGZcdCUxMC42bGZcbiIsCiAgICAgICAgICAgICAgIGl0ZXJhdGlvbiwgeDEsIGZ4LCBkZngsIGVycm9yLCBlcnJvciAqIDEwMCk7CiAgICAgICAgaWYgKGVycm9yIDwgRSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgeDAgPSB4MTsKICAgICAgICBpdGVyYXRpb24rKzsKICAgIH0KCiAgICBwcmludGYoIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiKTsKICAgIHByaW50ZigiXG5USEUgUk9PVCBPRiBFUVVBVElPTiBJUyAlLjhsZiIsIHgxKTsKICAgIHByaW50ZigiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7CiAgICByZXR1cm4gMDsKfQo=