fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/types.h>
  4. #include <omp.h>
  5. #include <unistd.h>
  6. #include <time.h>
  7. #include <math.h>
  8. #define N 100000
  9.  
  10. void pi1()
  11. {
  12. long double pi = (double)4/3;
  13. long double tmp2;
  14. long long int i = 2;
  15. long int limit = N;
  16. for(i=2; i<limit; ++i)
  17. {
  18. tmp2 = (double)(4*i*i)/(4*i*i-1);
  19. pi = pi * tmp2;
  20. }
  21. printf("liczba pi (mnozenie) = %.30Lf\n", 2.0*pi);
  22. }
  23.  
  24. void pi2()
  25. {
  26. long double pi = 0;
  27. long double tmp1;
  28. long int i = 0;
  29. long int limit = N;
  30. for(i = 0; i<limit; ++i)
  31. {
  32. if(i % 2 == 0)
  33. {
  34. tmp1 = (double)(1)/(2*i+1);
  35. }
  36. else
  37. {
  38. tmp1 = (double)(-1)/(2*i+1);
  39. }
  40. pi = pi + tmp1;
  41. }
  42. printf("liczba pi (dodawanie) = %.30Lf\n", 4.0*pi);
  43. }
  44.  
  45. void pi3()
  46. {
  47. long double pi_mnoz = (double)4/3;
  48. long double pi_dod = 0;
  49. long double tmp1, tmp2;
  50. long long int i = 0;
  51. long int limit = N;
  52. for(i = 0; i<limit; ++i)
  53. {
  54. if(i % 2 == 0)
  55. {
  56. tmp1 = (double)(1)/(2*i+1);
  57. }
  58. else
  59. {
  60. tmp1 = (double)(-1)/(2*i+1);
  61. }
  62.  
  63. if (i >= 2)
  64. {
  65. tmp2 = (double)(4*i*i)/(4*i*i-1);
  66. pi_mnoz = pi_mnoz * tmp2;
  67. }
  68.  
  69. pi_dod = pi_dod + tmp1;
  70. }
  71. printf("\nwersja polaczona:\n");
  72. printf("liczba pi (dodawanie) = %.30Lf\n", 4.0*pi_dod);
  73. printf("liczba pi (mnozenie) = %.30Lf\n", 2.0*pi_mnoz);
  74. }
  75.  
  76.  
  77. int main()
  78. {
  79. clock_t t1 = time(NULL), t2, t3;
  80. //omp_set_num_threads(8);
  81. printf("\nN = %d\n", N);
  82.  
  83. printf("\noddzielnie:\n");
  84. pi1();
  85. pi2();
  86. t2 = time(NULL);
  87. printf("=> Liczone oddzielnie: %f\n", difftime(t2, t1));
  88.  
  89. pi3();
  90. t3 = time(NULL);
  91. printf("=> Liczone razem: %f.\n",difftime(t3, t2));
  92.  
  93. return 0;
  94. }
Success #stdin #stdout 0.01s 2248KB
stdin
stdout
N = 100000

oddzielnie:
liczba pi (mnozenie)  = 3.141584799578706571707847894359
liczba pi (dodawanie) = 3.141582653589793491756207433063
=> Liczone oddzielnie: 0.000000

wersja polaczona:
liczba pi (dodawanie) = 3.141582653589793491756207433063
liczba pi (mnozenie)  = 3.141584799578706571707847894359
=> Liczone razem: 0.000000.