#include <stdio.h>
#include <mpi.h>
#define N 10
int main(int argc, char *argv[]) {
int rank, size;
int array[N] = {4, 8, 2, 10, 6, 12, 3, 5, 7, 9};
int max, product, bitwise_and;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Reduce(&array, &max, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);
MPI_Reduce(&array, &product, 1, MPI_INT, MPI_PROD, 0, MPI_COMM_WORLD);
MPI_Reduce(&array, &bitwise_and, 1, MPI_INT, MPI_BAND, 0, MPI_COMM_WORLD);
if (rank == 0) {
printf("Max value: %d\n", max
); printf("Product of elements: %d\n", product
); printf("Bitwise AND: %d\n", bitwise_and
); }
MPI_Finalize();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtcGkuaD4KCiNkZWZpbmUgTiAxMAoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewogICAgaW50IHJhbmssIHNpemU7CiAgICBpbnQgYXJyYXlbTl0gPSB7NCwgOCwgMiwgMTAsIDYsIDEyLCAzLCA1LCA3LCA5fTsKICAgIGludCBtYXgsIHByb2R1Y3QsIGJpdHdpc2VfYW5kOwogICAgCiAgICBNUElfSW5pdCgmYXJnYywgJmFyZ3YpOwogICAgTVBJX0NvbW1fcmFuayhNUElfQ09NTV9XT1JMRCwgJnJhbmspOwogICAgTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnNpemUpOwogICAgCiAgICBNUElfUmVkdWNlKCZhcnJheSwgJm1heCwgMSwgTVBJX0lOVCwgTVBJX01BWCwgMCwgTVBJX0NPTU1fV09STEQpOwogICAgTVBJX1JlZHVjZSgmYXJyYXksICZwcm9kdWN0LCAxLCBNUElfSU5ULCBNUElfUFJPRCwgMCwgTVBJX0NPTU1fV09STEQpOwogICAgTVBJX1JlZHVjZSgmYXJyYXksICZiaXR3aXNlX2FuZCwgMSwgTVBJX0lOVCwgTVBJX0JBTkQsIDAsIE1QSV9DT01NX1dPUkxEKTsKICAgIAogICAgaWYgKHJhbmsgPT0gMCkgewogICAgICAgIHByaW50ZigiTWF4IHZhbHVlOiAlZFxuIiwgbWF4KTsKICAgICAgICBwcmludGYoIlByb2R1Y3Qgb2YgZWxlbWVudHM6ICVkXG4iLCBwcm9kdWN0KTsKICAgICAgICBwcmludGYoIkJpdHdpc2UgQU5EOiAlZFxuIiwgYml0d2lzZV9hbmQpOwogICAgfQogICAgCiAgICBNUElfRmluYWxpemUoKTsKICAgIHJldHVybiAwOwp9