#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; }