/// LSU EE 4720 -- Computer Architecture
//
//  Program that computes pi.
//
//  Intended to demonstrate differences in performance and CPI
//  with and without optimization.  (If your goal is to compute
//  pi to great precision, for example, 
//  3.14159265358979323846264338327950288419716939937510582097494,
//  then this program is NOT the way to do it, there are much
//  faster ways.)

#include <stdio.h>
#include <stdlib.h>

int
main(int argv, char **argc)
{
  double i;
  double sum = 0;
  const double default_iterations = 50000000;
  const double iterations =
    argv == 2 ? 1e6 * atoi(argc[1]) : default_iterations;
  const double sum_iterations = iterations * 2;

  for(i=1; i<sum_iterations;)
    {
      sum = sum + 4.0 / i;   i += 2;
      sum = sum - 4.0 / i;   i += 2;
    }

  printf("After %d iterations sum = %.8f\n", (int)(i-1)/2, sum);

  return 0;
}