Skip to content
Snippets Groups Projects
taylor.c 970 B
Newer Older
Bruce Cowan's avatar
Bruce Cowan committed
#include <stdio.h>
#include <time.h>

#define NUM_STEPS 1e9

static double
e_func (void)
{
	int i;
	double e = 1;
	double factorial = 1;

	printf ("e started\n");

	for (i = 1; i < NUM_STEPS; i++)
	{
		factorial *= i;
		e += 1.0 / factorial;
	}

	printf ("e done\n");
	return e;
}

static double
pi_func (void)
{
	int i;
	double pi = 0;

	printf ("pi started\n");

	for (i = 0; i < NUM_STEPS * 10; i++)
	{
		pi += 1.0 / (i * 4.0 + 1.0);
		pi -= 1.0 / (i * 4.0 + 3.0);
	}

	pi = pi * 4.0;

	printf ("pi done\n");
	return pi;
}

int 
main (void)
{
	double start, stop; /* times of beginning and end of procedure */
	double e, pi, product;

	/* start the timer */
	start = clock ();

	/* First we calculate e from its taylor expansion */
	e = e_func ();
  
	/* Then we calculate pi from its taylor expansion */
	pi = pi_func ();
  
	product = e * pi;

	stop = clock ();
	printf ("Reached result %f in %.3f seconds\n", product, (stop-start) / CLOCKS_PER_SEC);

	return 0;
}