#include #include int main(int argc, char **argv) { int my_rank, world_size, count=1, tag=6, head_node=0; float bigNum = 1.0e20, retVal, result=0.0; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); MPI_Comm_size(MPI_COMM_WORLD,&world_size); retVal = my_rank > 1 ? 1.0 : (2*my_rank - 1)*bigNum; if (my_rank == head_node) { result = retVal; while(count != world_size) { MPI_Recv(&retVal, 1, MPI_FLOAT, MPI_ANY_SOURCE, tag, MPI_COMM_WORLD, &status); result += retVal; ++count; } printf("The current wrong answer is %f\n", result); } else { MPI_Send(&retVal, 1, MPI_FLOAT, head_node, tag, MPI_COMM_WORLD); } MPI_Finalize(); return 0; }