#include <stdio.h>
#include <math.h>
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, f0, df0, E = 1e-8;
int i = 0;
printf("Enter initial guess: ");
scanf("%lf", &x0);
printf("Iter\t x0\t\t f(x0)\t\t f'(x0)\t\t x1\n");
do {
f0 = f(x0);
df0 = df(x0);
if (df0 == 0) {
printf("Derivative is zero. Cannot continue.\n");
return 0;
}
x1 = x0 - f0 / df0;
printf("%d\t%.6lf\t%.6lf\t%.6lf\t%.6lf\n", ++i, x0, f0, df0, x1);
if (fabs(x1 - x0) < E)
break;
x0 = x1;
} while (1);
printf("\nApproximate root = %.8lf\n", x1);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIDIgKiB4ICogeCAqIHggKyAzICogeCAtIDE7Cn0KCmRvdWJsZSBkZihkb3VibGUgeCkgewogICAgcmV0dXJuIDYgKiB4ICogeCArIDM7Cn0KCmludCBtYWluKCkgewogICAgZG91YmxlIHgwLCB4MSwgZjAsIGRmMCwgRSA9IDFlLTg7CiAgICBpbnQgaSA9IDA7CiAgICBwcmludGYoIkVudGVyIGluaXRpYWwgZ3Vlc3M6ICIpOwogICAgc2NhbmYoIiVsZiIsICZ4MCk7CiAgICBwcmludGYoIkl0ZXJcdCB4MFx0XHQgZih4MClcdFx0IGYnKHgwKVx0XHQgeDFcbiIpOwogICAgZG8gewogICAgICAgIGYwID0gZih4MCk7CiAgICAgICAgZGYwID0gZGYoeDApOwogICAgICAgIGlmIChkZjAgPT0gMCkgewogICAgICAgICAgICBwcmludGYoIkRlcml2YXRpdmUgaXMgemVyby4gQ2Fubm90IGNvbnRpbnVlLlxuIik7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICB4MSA9IHgwIC0gZjAgLyBkZjA7CiAgICAgICAgcHJpbnRmKCIlZFx0JS42bGZcdCUuNmxmXHQlLjZsZlx0JS42bGZcbiIsICsraSwgeDAsIGYwLCBkZjAsIHgxKTsKICAgICAgICBpZiAoZmFicyh4MSAtIHgwKSA8IEUpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIHgwID0geDE7CiAgICB9IHdoaWxlICgxKTsKICAgIHByaW50ZigiXG5BcHByb3hpbWF0ZSByb290ID0gJS44bGZcbiIsIHgxKTsKICAgIHJldHVybiAwOwp9Cg==