#include <stdio.h>
#include <math.h>
double f(double x) { return exp(-x)-x*x; }
double df(double x) { return -exp(-x)-2*x; }
int main()
{
double x, y, dy, dx;
int i;
x = 1.0;
printf(" i x f(x) f'(x)\n");
printf("--: ------------------------ ------------------------ ------------------------\n");
for (i = 0;; i++) {
y = f(x);
dy = df(x);
printf("%2d: %24.17g %24.17g %24.17g\n", i, x, y, dy);
if (i >= 10 || y == 0) break;
if (dy == 0) {
printf("Keisan funou.");
abort();
}
dx = -y / dy;
if (fabs(dx) < fabs(x) * 1e-17) {
printf("%2d: %24.17g\n", i + 1, x + dx);
break;
}
x += dx;
}
return 0;
}