fork download
  1.  
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include<cmath>
  5. #include <mpi.h>
  6.  
  7. using namespace std;
  8.  
  9. double f(double x)
  10. { return (((2 + x)/(2 - x));}
  11.  
  12. double g(double x)
  13. { return (x * x * x * x);}
  14.  
  15. int main(int argc, char *argv[])
  16. { int r, p,i,n=1000000000;
  17. double sum, sumg, sumf,hf, hg,t,af=0.0,bf=1.0, ag =1.0, bg =2.0;
  18. MPI_Status st;
  19. MPI_Init(&argc,&argv);
  20. MPI_Comm_rank(MPI_COMM_WORLD,&r);
  21. MPI_Comm_size(MPI_COMM_WORLD,&p);
  22. printf("r = %d, p = %d\n",r,p);
  23. if (r==0)
  24. t=MPI_Wtime();
  25. MPI_Barrier(MPI_COMM_WORLD);
  26. sumf=0; hf=(bf-af)/n;
  27. sumg=0; hg=(bg-ag)/n;
  28. for(i=r;i<=n;i+=p){
  29. double xf1 = af + i * hf;
  30. double xf2 = af + (i + 1) * hf;
  31. double xg1 = ag + i * hg;
  32. double xg2 = ag + (i + 1) * hg;
  33. sumf+=0.5 * (xf2 - xf1) * (f(xf1) + f(xf2));
  34. sumg+=0.5 * (xg2 - xg1) * (g(xg1) + f(xg2));
  35. }
  36.  
  37. if (r!=0) {
  38. MPI_Send(&sumf,1,MPI_DOUBLE,0,1,MPI_COMM_WORLD);
  39. MPI_Send(&sumg,1,MPI_DOUBLE,0,2,MPI_COMM_WORLD);}
  40. if (r==0)
  41. { double sf;
  42. double sg;
  43. for(i=1;i<p;i++)
  44. {
  45. MPI_Recv(&sf,1,MPI_DOUBLE,i,1,MPI_COMM_WORLD,&st);
  46. MPI_Recv(&sg,1,MPI_DOUBLE,i,2,MPI_COMM_WORLD,&st);
  47. sumf+=sf;
  48. sumg+=sg;
  49. }
  50. sum = sumf * sumg;
  51. t=MPI_Wtime()-t;
  52. printf("Произведение интегралов = %lf,\n Время работы программы = %lf c.\n",sum, t);
  53. }
  54. MPI_Finalize();
  55. }
Success #stdin #stdout #stderr 0.26s 40572KB
stdin
public class q1{
  }
stdout
Standard output is empty
stderr
Error: unexpected symbol in "using namespace"
Execution halted