Guest User

Untitled

a guest
Jul 21st, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define m5D(ptr, idx0, idx1, idx2, idx3, idx4, dim1, dim2, dim3, dim4)
  6. ptr[((((idx0 * dim1)+idx1)*dim2+idx2)*dim3+idx3)*dim4 + idx4]
  7. *ptr
  8. #define D_A 2
  9. #define D_B 3
  10. #define D_C 4
  11. #define D_D 5
  12. #define D_E 6
  13.  
  14.  
  15.  
  16. int main(void)
  17. {
  18. int ix0, ix1, ix2, ix3, ix4, temp;
  19. double bar[D_A][D_B][D_C][D_D][D_E];
  20. int foo[D_A][D_B][D_C][D_D][D_E];
  21. /* seed random # generator */
  22. srand((unsigned)time(NULL));
  23. /* store all values before testing any */
  24. for (ix0 = 0; ix0 < D_A; ++ix0)
  25. for (ix1 = 0; ix1 < D_B; ++ix1)
  26. for (ix2 = 0; ix2 < D_C; ++ix2)
  27. for (ix3 = 0; ix3 < D_D; ++ix3)
  28. for (ix4 = 0; ix4 < D_E; ++ix4)
  29. {
  30. foo[ix0][ix1][ix2][ix3][ix4] = rand();
  31. //bar[ix0][ix1][ix2][ix3][ix4] = rand() + rand() / 321.0;
  32. }
  33. /* Test all stored values. */
  34. for (ix0 = 0; ix0 < D_A; ++ix0)
  35. for (ix1 = 0; ix1 < D_B; ++ix1)
  36. for (ix2 = 0; ix2 < D_C; ++ix2)
  37. for (ix3 = 0; ix3 < D_D; ++ix3)
  38. for (ix4 = 0; ix4 < D_E; ++ix4)
  39. {
  40. if (m5D((int *)foo, ix0, ix1, ix2, ix3, ix4, D_B, D_C,
  41. D_D, D_E) != foo[ix0][ix1][ix2][ix3][ix4])
  42. {
  43. fprintf(stderr, "Error: foo[%d][%d][%d][%d][%d]n",
  44. ix0, ix1, ix2, ix3, ix4);
  45. return EXIT_FAILURE;
  46. }
  47. }
  48. printf("The number please %pn", m5D((int *)foo, ix0, ix1, ix2, ix3, ix4, D_B, D_C,D_D, D_E));
  49. printf("Success!n");
  50. return EXIT_SUCCESS;
  51. }
  52.  
  53. #define m5D(ptr, idx0, idx1, idx2, idx3, idx4, dim1, dim2, dim3, dim4)
  54. ((ptr)[(idx0)][(idx1)][(idx2)][(idx3)][(idx4)])
  55.  
  56. printf("The number please %dn", m5D(foo, ix0, ix1, ix2, ix3, ix4, D_B, D_C,D_D, D_E));
  57.  
  58. ptr[((((idx0 * dim1)+idx1)*dim2+idx2)*dim3+idx3)*dim4 + idx4]
  59.  
  60. #define m5D(ptr, idx0, idx1, idx2, idx3, idx4, dim1, dim2, dim3, dim4)
  61. ptr[((((idx0 * dim1)+idx1)*dim2+idx2)*dim3+idx3)*dim4 + idx4]
  62. ...
  63. m5D(foo, ix0, ix1, ix2, ix3, ix4, D_B, D_C,D_D, D_E)
  64.  
  65. #define m5D(ptr, idx0, idx1, idx2, idx3, idx4, dim1, dim2, dim3, dim4)
  66. (ptr)[(((((idx0) * (dim1))+(idx1))*(dim2)+(idx2))*(dim3)+(idx3))*(dim4) + (idx4)]
Add Comment
Please, Sign In to add comment