conv2AXPY.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //
  2. // File: conv2AXPY.cpp
  3. //
  4. // MATLAB Coder version : 4.3
  5. // C/C++ source code generated on : 12-Jan-2022 14:46:32
  6. //
  7. // Include Files
  8. #include "conv2AXPY.h"
  9. #include "CGaussianFilter.h"
  10. #include "GaussianFilter_emxutil.h"
  11. // Function Definitions
  12. //
  13. // Arguments : const emxArray_real_T *a
  14. // emxArray_real_T *c
  15. // Return Type : void
  16. //
  17. void conv2AXPYSameCMP(const emxArray_real_T *a, emxArray_real_T *c)
  18. {
  19. int32_T na;
  20. int32_T jcut;
  21. int32_T ub_loop;
  22. int32_T j;
  23. int32_T imax;
  24. int32_T imin;
  25. real_T bij;
  26. int32_T jbmax;
  27. int32_T jbmin;
  28. real_T cj;
  29. int32_T jb;
  30. int32_T ib;
  31. static const real_T b[25] = { 0.014418818362460822, 0.028084023356349175,
  32. 0.0350727008055935, 0.028084023356349175, 0.014418818362460822,
  33. 0.028084023356349175, 0.054700208300935887, 0.068312293270780214,
  34. 0.054700208300935887, 0.028084023356349175, 0.0350727008055935,
  35. 0.068312293270780214, 0.085311730190125085, 0.068312293270780214,
  36. 0.0350727008055935, 0.028084023356349175, 0.054700208300935887,
  37. 0.068312293270780214, 0.054700208300935887, 0.028084023356349175,
  38. 0.014418818362460822, 0.028084023356349175, 0.0350727008055935,
  39. 0.028084023356349175, 0.014418818362460822 };
  40. int32_T i;
  41. na = a->size[1];
  42. if (a->size[1] == 0) {
  43. c->size[0] = 1;
  44. c->size[1] = 0;
  45. } else {
  46. jcut = a->size[1] - 2;
  47. ub_loop = c->size[0] * c->size[1];
  48. c->size[0] = 1;
  49. c->size[1] = a->size[1];
  50. emxEnsureCapacity_real_T(c, ub_loop);
  51. ub_loop = a->size[1] - 1;
  52. #pragma omp parallel for \
  53. num_threads(omp_get_max_threads()) \
  54. private(imax,imin,bij,jbmax,jbmin,cj,jb,ib,i)
  55. for (j = 0; j <= ub_loop; j++) {
  56. cj = 0.0;
  57. if (j + 1 > 2) {
  58. jbmin = 0;
  59. } else {
  60. jbmin = 2 - j;
  61. }
  62. if (j + 1 < jcut) {
  63. jbmax = 4;
  64. } else {
  65. jbmax = (na - j) + 1;
  66. }
  67. for (jb = jbmin; jb <= jbmax; jb++) {
  68. for (ib = 0; ib < 5; ib++) {
  69. bij = b[(5 * (4 - jb) - ib) + 4];
  70. if (ib < 2) {
  71. imin = 3 - ib;
  72. imax = 1;
  73. } else {
  74. imin = 1;
  75. imax = 3 - ib;
  76. }
  77. for (i = imin; i <= imax; i++) {
  78. cj += bij * a->data[(j + jb) - 2];
  79. }
  80. }
  81. }
  82. c->data[j] = cj;
  83. }
  84. }
  85. }
  86. //
  87. // File trailer for conv2AXPY.cpp
  88. //
  89. // [EOF]
  90. //