#include #include #include using namespace std; int main([[maybe_unused]] int argc, [[maybe_unused]] char** argv) { MPI_Init(&argc, &argv); int limit{100'000'000}; int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); int id; MPI_Comm_rank(MPI_COMM_WORLD, &id); double pi{4}; double signTerm; int skip = 2*(world_size -1); if (id > 0) { pi = 0; int i{id * 2 + 1}; while (i < limit) { if (i%4 == 1) { signTerm = 4; } else { signTerm = -4; } pi += signTerm / static_cast(i); i += skip; } } double sum{0}; MPI_Reduce(&pi, &sum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (id == 0) { cout << setprecision(10); cout << "Pi is about " << sum << endl; } MPI_Finalize(); return 0; }