#include <stdio.h>

double func(double x)
{
	return x * x - 2.;
}

double func2(double x)
{
	return x * x * x - 5.;
}

double newton(double x, double (*f)(double))
{
	int i;
	double d;

	for (i=0; i<10; i++) {
		d = (f(x + 0.01) - f(x)) / 0.01;
		x = x - f(x) / d;
	}

	return x;
}

int main()
{
	printf("%.15g\n", newton(1., func));
	printf("%.15g\n", newton(1., func2));

	return 0;
}
