/*
 * numerical integration example, as discussed in textbook:  
 *
 * compute pi by approximating the area under the curve f(x) = 4 / (1 + x*x)
 * between 0 and 1.
 *
 * sequential version.
 */
#include <stdio.h>
#include <stdlib.h>
#include "timer.h"      /* has get_time() */
#define NUM_STEPS 100000000

/* main program */

int main(int argc, char *argv[]) {

    double start_time, end_time;
    int i;
    double x, pi;
    double sum = 0.0;
    double step = 1.0/(double) NUM_STEPS; 

    /* record start time */
    start_time = get_time();

    /* do computation */
    for (i=0; i < NUM_STEPS; ++i) {
        x = (i+0.5)*step;
        sum = sum + 4.0/(1.0+x*x);
    }
    pi = step * sum;

    /* record end time */
    end_time = get_time();

    /* print results */
    printf("sequential program results:\n");
    printf("pi = %g  (%17.15f)\n",pi, pi);
    printf("time to compute = %g seconds\n", end_time - start_time);

    return EXIT_SUCCESS;
}