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

#include "mpi.h"
#include "ParallelDriver.h"

using namespace functions::oo;
using namespace integrators::oo;

int
main (int argc, char *argv[])
{
  double
    value;
  int
    count = 100;
  double
    lowerBound = 0.0,
    upperBound = 1.0;
  int myid;

  //if (argc > 1)
  //  count = atoi (argv[1]);     // Number of sampling points

  MPI_Init(&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &myid);

  functions::Function * function = new PiFunction ();
  integrators::Integrator * integrator;

  // parallel integrator
  integrator = new ParallelIntegrator ();
  integrator->setFunction (function);
  value = integrator->integrate (lowerBound, upperBound, count);
  if (myid == 0) {
    printf ("ParallelIntegrator: integral = %f\n", value);
  }
  delete integrator;

  MPI_Finalize();

  return 0;
}