[ create a new paste ] login | about

Link: http://codepad.org/isC09tu6    [ raw code | output | fork ]

C, pasted on Nov 28:
#include<stdio.h>
#include<math.h>

double yFunc(double x)
{
	return x+0.5;
}

double circleFunc(double x)
{
	return pow(x, 2.0) + pow(yFunc(x), 2.0) -1.0;
}

double differCircleFunc(double x)
{
	return 4.0 * x + 1.0;
}

static const double EPS = 10e-16;
int count;
double newton(double (*f)(), double (*df)(), double init)
{
	count = 0;
	double x, old_x;
	x = init;
        old_x = init + 100.0;
	for(;fabs(x-old_x)>EPS;)
	{
		count++;
		old_x = x;
		x = old_x - f(old_x)/df(old_x);
	}

	return x;
}

int main()
{
	double result_x = newton(circleFunc, differCircleFunc, 0.0);
	double result_y = yFunc(result_x);
	printf("i:%d x:%.16f y:%.16f", count, result_x, result_y);
}


Output:
1
2
i:7 x:0.4114378277661476 y:0.9114378277661477
Exited: ExitFailure 45


Create a new paste based on this one


Comments: