Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include <omp.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main(int argc, char *argv[]) {
  6.  
  7. int n = 8, m = 3;
  8. int k, j, i;
  9. int vector[8] = { 4, 8, 5, 2, 10, 6, 9, 11 };
  10.  
  11. int *b;
  12. int *a;
  13.  
  14. a = calloc(2 * n , sizeof(int));
  15. b = calloc(2 * n , sizeof(int));
  16.  
  17. printf("\n");
  18. for (i = n; i < 2 * n; i++) {
  19. a[i] = vector[i - 8];
  20. }
  21. for (k = m-1; k >= 0; k--) {
  22. #pragma omp parallel for num_threads(1<<k)
  23. for (j = (1 << k); j <= ((1 << (k + 1)) - 1); j++)
  24. a[j] = a[2 * j] + a[2 * j + 1];
  25. }
  26. printf("A[1]=%d\n\n", a[1]);
  27.  
  28. b[1] = a[1];
  29.  
  30. for (k = 1; k <= m; k++) {
  31. #pragma omp parallel for num_threads(1<<k)
  32. for (j = (1 << k); j <= ((1 << (k + 1)) - 1); j++) {
  33. if (j % 2 == 1) {
  34. b[j] = b[(j - 1) / 2];
  35. } else {
  36. b[j] = b[j / 2] - a[j + 1];
  37. }
  38. }
  39. }
  40. for (i = 1; i < 2 * n; i++) {
  41. printf("B[%i]=%d \n", i, b[i]);
  42. }
  43. printf("\n");
  44. free(b);
  45. free(a);
  46.  
  47. return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement