#include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv) {
double precision=10000000;
//precision=100 ;
int myrank,proccount;
double pi,pi_final;
int mine,sign, licznik, sign2;
int i;
// Initialize MPI
MPI_Init(&argc, &argv);
// find out my rank
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
// find out the number of processes in MPI_COMM_WORLD
MPI_Comm_size(MPI_COMM_WORLD, &proccount);
// now distribute the required precision
if (precision<proccount) {
printf("Precision smaller than the number of processes - try again.");
MPI_Finalize();
return -1;
}
// each process performs computations on its part
pi=0;
licznik=0;
mine=-1;
//
sign2=-1;
mine+=(myrank*proccount*2)+2;
if(proccount%2==1)
{
if(myrank%2==1)
{
sign2=1;
}
}
for(;mine<precision;)
{
sign2=sign2*(-1);
if(licznik==proccount)
{
licznik=0;
mine+=((proccount-1)*(proccount)*2);
int i2=0;
if((proccount%2)!=0)
{
for(i2;i2<proccount;i2++)
{
//sign2=sign2*(-1);
//printf("\nvvvvvvvvvvvvvvvv");
}
}
//mine+=(2*2*(proccount+1));
}
//if(myrank==2) printf("\nProcess mryank: %d sign2: %d mine: %d, procca: %d \n\n", myrank,sign2,mine, proccount);
pi+=sign2/(double)mine;
mine+=2;
licznik++;
}
/*
mine=myrank*2+1;
sign=(((mine-1)/2)%2)?-1:1;
for (;mine<precision;) {
// printf("\nProcess %d %d %d", myrank,sign,mine);
// fflush(stdout);
pi+=sign/(double)mine;
mine+=2*proccount;
sign=(((mine-1)/2)%2)?-1:1;
} */
// now merge the numbers to rank 0
MPI_Reduce(&pi,&pi_final,1,
MPI_DOUBLE,MPI_SUM,0,
MPI_COMM_WORLD);
if (!myrank) {
pi_final*=4;
printf("\n\n\npi=%.20f",pi_final
);
}
// Shut down MPI
MPI_Finalize();
return 0;
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}