/*
 ============================================================================
 Name        : helloMPIcpp.c
 Author      : Polly Parallel
 Version     :
 Copyright   : Your copyright notice
 Description : Compute Pi in MPI C++
 ============================================================================
 */
#include <math.h>
#include "mpi.h"
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    int n, rank, size, i;
    double PI25DT = 3.141592653589793238462643;
    double mypi, pi, h, sum, x;


    MPI::Init(argc, argv);
    size = MPI::COMM_WORLD.Get_size();
    rank = MPI::COMM_WORLD.Get_rank();

    MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);// test of MPI_form

    while (1) {
	if (rank == 0) {

		 cout << "Enter the number of intervals: (0 quits)"
				 << endl;
			    cin >> n;

	}

	MPI::COMM_WORLD.Bcast(&n, 1, MPI::INT, 0);
	if (n==0)
	    break;
	else {
	    h = 1.0 / (double) n;
	    sum = 0.0;
	    for (i = rank + 1; i <= n; i += size) {
		x = h * ((double)i - 0.5);
		sum += (4.0 / (1.0 + x*x));
	    }
	    mypi = h * sum;

	    MPI::COMM_WORLD.Reduce(&mypi, &pi, 1, MPI::DOUBLE,
				   MPI::SUM, 0);
	    if (rank == 0)
		cout << "pi is approximately " << pi
		     << ", Error is " << fabs(pi - PI25DT)
		     << endl;
	}
    }
    MPI::Finalize();
    return 0;
}

